Wikilivres
frwikibooks
https://fr.wikibooks.org/wiki/Accueil
MediaWiki 1.46.0-wmf.26
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/L'architecture de base d'un ordinateur
0
65780
765741
765366
2026-05-01T21:51:51Z
Mewtow
31375
/* Les microcontrôleurs */
765741
wikitext
text/x-wiki
Dans les chapitres précédents, nous avons vu comment représenter de l'information, la traiter et la mémoriser avec des circuits. Mais un ordinateur n'est pas qu'un amoncellement de circuits et est organisé d'une manière bien précise. Il est structuré autour de trois circuits principaux :
* un '''processeur''', qui manipule l'information et donne un résultat ;
* une '''mémoire''' qui mémorise les données à manipuler ;
* les '''entrées/sorties''', qui permettent à l'ordinateur de communiquer avec l'extérieur.
[[File:Architecture Von Neumann.png|centre|vignette|upright=2|Architecture d'un système à mémoire.]]
Pour faire simple, le processeur est un circuit qui s'occupe de faire des calculs. Rien d'étonnant à cela. Je rappelle que tout est codé par des nombres dans un ordinateur, ce qui fait que manipuler des nombres revient simplement à faire des calculs. Un ordinateur n'est donc qu'une grosse calculatrice améliorée, et le processeur est le composant qui fait les calculs.
La mémoire s'occupe purement de la mémorisation des données, des nombres sur lesquelles faire des calculs. Pour être plus précis, il y a deux mémoires : une pour les données proprement dites, une autre pour le programme à exécuter. La première est la '''mémoire RAM''', la seconde est la '''mémoire ROM'''. Nous détaillerons ce que sont ces deux mémoires dans la suite du chapitre, mais sachez que nous avions déjà rencontré ces deux types de mémoires dans les chapitres sur les registres et les mémoires adressables.
Les entrées-sorties permettent au processeur et à la mémoire de communiquer avec l'extérieur et d'échanger des informations avec des périphériques. Les '''périphériques''' regroupent, pour rappel, tout ce est branché sur un ordinateur, mais n'est pas à l'intérieur de celui-ci.
Le processeur, les mémoires et les entrées-sorties communiquent ensemble via un '''réseau d'interconnexions'''. Le terme est assez barbare, mais rien de compliqué sur le principe. C'est juste un ensemble de fils électriques qui relie les différents éléments d'un ordinateur. Les interconnexions sont souvent appelées le bus de communication, mais le terme est un abus de langage, comme on le verra plus bas.
Afin de simplifier les explications, on va supposer que le réseau d'interconnexion est le suivant. Tout est connecté au processeur. Il y a des interconnexions entre le processeur et la mémoire RAM, d'autres interconnexions entre processeur et mémoire ROM, et d'autres entre le processeur et les entrées-sorties. Nous verrons que d'autres réseaux d'interconnexions fusionnent certaines interconnexions, pour les partager entre la ROM et la RAM, par exemple. Mais pour le moment, gardez le schéma ci-dessous en tête.
[[File:Réseau d'interconnexion avec un processeur au centre.png|centre|vignette|upright=2|Réseau d'interconnexion avec un processeur au centre]]
==Les mémoires RAM et ROM==
La mémoire est le composant qui mémorise des informations, des données. Dans la majorité des cas, la mémoire est composée de plusieurs '''cases mémoire''', chacune mémorisant plusieurs bits, le nombre de bits étant identique pour toutes les cases mémoire. Dans le cas le plus simple, une case mémoire mémorise un '''octet''', un groupe de 8 bits. Mais les mémoires modernes mémorisent plusieurs octets par case mémoire : elles ont des cases mémoires de 16, 32 ou 64 bits, soit respectivement 2/4/8 octets. De rares mémoires assez anciennes utilisaient des cases mémoires contenant 1, 2, 3, 4, 5, 6 7, 13, 17, 23, 36 ou 48 bits. Mais ce n'était pas des mémoires électroniques, aussi nous allons les passer sous silence.
Tout ce qu'il faut savoir est que la quasi-totalité des mémoires électronique a un ou plusieurs octets par case mémoire. Pour simplifier, vous pouvez imaginer qu'une mémoire RAM est un regroupement de registre, chacun étant une case mémoire. C'est une description pas trop mauvaise pour décrire les mémoires RAM, qu'on abordera dans ce qui suit.
{|class="wikitable"
|+ Contenu d'une mémoire, case mémoire de 16 bits (deux octets)
|-
! Case mémoire N°1
| 0001 0110 1111 1110
|-
! Case mémoire N°2
| 1111 1110 0110 1111
|-
! Case mémoire N°3
| 0001 0000 0110 0001
|-
! Case mémoire N°4
| 1000 0110 0001 0000
|-
! Case mémoire N°5
| 1100 1010 0110 0001
|-
! ...
| ...
|-
! Case mémoire N°1023
| 0001 0110 0001 0110
|-
! Case mémoire N°1024
| 0001 0110 0001 0110
|}
Dans ce cours, il nous arrivera de partir du principe qu'il y a un octet par case mémoire, par souci de simplification. Mais ce ne sera pas systématique. De plus, il nous arrivera d'utiliser le terme adresse pour parler en réalité de la case mémoire associée, par métonymie.
===La capacité mémoire===
Bien évidemment, une mémoire ne peut stocker qu'une quantité finie de données. Et à ce petit jeu, certaines mémoires s'en sortent mieux que d'autres et peuvent stocker beaucoup plus de données que les autres. La '''capacité''' d'une mémoire correspond à la quantité d'informations que celle-ci peut mémoriser. Plus précisément, il s'agit du nombre maximal de bits qu'une mémoire peut contenir. Elle est le produit entre le nombre de cases mémoire, et la taille en bit d'une case mémoire.
Toutes les mémoires actuelles utilisant des cases mémoire d'un ou plusieurs octets, ce qui nous arrange pour compter la capacité d'une mémoire. Au lieu de compter cette capacité en bits, on préfère mesurer la capacité d'une mémoire avec le nombre d'octets qu'elle contient. Mais les mémoires des PC font plusieurs millions ou milliards d'octets. Pour se faciliter la tâche, on utilise des préfixes pour désigner les différentes capacités mémoires. Vous connaissez sûrement ces préfixes : kibioctets, mébioctets et gibioctets, notés respectivement Kio, Mio et Gio.
{|class="wikitable"
|-
!Préfixe!!Capacité mémoire en octets!!Puissance de deux
|-
||Kio||1024||2<sup>10</sup> octets
|-
||Mio||1 048 576||2<sup>20</sup> octets
|-
||Gio||1 073 741 824||2<sup>30</sup> octets
|}
On peut se demander pourquoi utiliser des puissances de 1024, et ne pas utiliser des puissances un peu plus communes ? Dans la majorité des situations, les électroniciens préfèrent manipuler des puissances de deux pour se faciliter la vie. Par convention, on utilise souvent des puissances de 1024, qui est la puissance de deux la plus proche de 1000. Or, dans le langage courant, kilo, méga et giga sont des multiples de 1000. Quand vous vous pesez sur votre balance et que celle-ci vous indique 58 kilogrammes, cela veut dire que vous pesez 58 000 grammes. De même, un kilomètre est égal à 1000 mètres, et non 1024 mètres.
Autrefois, on utilisait les termes kilo, méga et giga à la place de nos kibi, mebi et gibi, par abus de langage. Mais peu de personnes sont au courant de l'existence de ces nouvelles unités, et celles-ci sont rarement utilisées. Et cette confusion permet aux fabricants de disques durs de nous « arnaquer » : Ceux-ci donnent la capacité des disques durs qu'ils vendent en kilo, méga ou giga octets : l’acheteur croit implicitement avoir une capacité exprimée en kibi, mébi ou gibi octets, et se retrouve avec un disque dur qui contient moins de mémoire que prévu.
===Lecture et écriture : mémoires ROM et RWM===
Pour simplifier grandement, on peut grossièrement classer les mémoires en deux types : les ''Read Only Memory'' et les ''Read Write Memory'', aussi appelées mémoires ROM et mémoires RWM. Pour les '''mémoires ROM''', on ne peut pas modifier leur contenu. On peut y récupérer une donnée ou une instruction : on dit qu'on y accède en lecture. Mais on ne peut pas modifier les données qu'elles contiennent. Quant aux '''mémoires RWM''', on peut y accéder en lecture (récupérer une donnée stockée en mémoire), mais aussi en écriture : on peut stocker une donnée dans la mémoire, ou modifier une donnée existante.
Tout ordinateur contient au minimum une ROM et une RWM (souvent une mémoire RAM), les deux n'ont pas exactement le même rôle. Pour simplifier, la mémoire ROM mémorise le programme à exécuter, la mémoire RWM stocke des données. Il a existé des ordinateurs où la mémoire RWM était une mémoire magnétique, voire acoustique, mais ce n'est plus le cas de nos jours. Pour les ordinateurs modernes, la mémoire RWM est une mémoire électronique. Pour faire la différence avec ces anciennes mémoires RWM, elle est appelée la '''mémoire RAM'''. Il s'agit d'une mémoire qui stocke temporairement des données que le processeur doit manipuler (on dit qu'elle est volatile). Elle s'efface complètement quand on coupe l'alimentation de l'ordinateur.
Il existe d'autres différences entre mémoire RWM et RAM :
* la mémoire RWM peut ne pas être volatile et donc conserver les données écrites ;
* la mémoire RAM possède un temps d'accès constant aux données (quelle que soit l'adresse), ce qui n'est pas garanti pour les mémoires RWM.
Outre le programme à exécuter, la mémoire ROM peut mémoriser des constantes, des données qui ne changent pas. Elles ne sont jamais modifiées et gardent la même valeur quoi qu'il se passe lors de l'exécution du programme. En conséquence, elles ne sont jamais accédées en écriture durant l'exécution du programme, ce qui fait que leur place est dans une mémoire ROM. La mémoire RWM est alors destinée aux données temporaires, qui changent ou sont modifiées lors de l'exécution du programme, et qui sont donc manipulées aussi bien en lecture et en écriture. La mémoire RWM mémorise alors les variables du programme à exécuter, qui sont des données que le programme va manipuler. Pour les systèmes les plus simples, la mémoire RWM ne sert à rien de plus.
[[File:Espaces d'adressage sur une archi harvard modifiée.png|centre|vignette|upright=2.5|Espaces d'adressage sur une archi harvard modifiée]]
Pour donner un exemple de données stockées en ROM, on peut prendre l'exemple des anciennes consoles de jeu 8 et 16 bits. Les jeux vidéos sur ces consoles étaient placés dans des cartouches de jeu, précisément dans une mémoire ROM à l'intérieur de la cartouche de jeu. La ROM mémorisait non seulement le code du jeu, le programme du jeu vidéo, mais aussi les niveaux et les ''sprites'' et autres données graphiques.
Une conséquence est que les consoles 8/16 bits n'avaient pas besoin de beaucoup de RAM, comparé aux ordinateurs de l'époque, vu qu'une grande partie des données utiles étaient dans une ROM directement accessible par le processeur. À l'opposé, les micro-ordinateurs devaient copier les données d'un jeu depuis une disquette dans la mémoire RAM, ce qui demandait d'avoir plus de RAM. Le passage au support CD sur les consoles 32 bits a eu la même conséquence. Le processeur ne pouvant pas lire directement le CD à sa guise, il fallait copier les données du CD en RAM. D'où l'apparition de temps de chargement assez longs, inexistants sur support cartouche.
===L'adressage mémoire===
Sur une mémoire RAM ou ROM, on ne peut lire ou écrire qu'une case mémoire, qu'un registre à la fois : une lecture ou écriture ne peut lire ou modifier qu'une seule case mémoire. Techniquement, le processeur doit préciser à quel case mémoire il veut accéder à chaque lecture/écriture. Pour cela, chaque case mémoire se voit attribuer un nombre binaire unique, l''''adresse''', qui va permettre de le sélectionner et de l'identifier celle-ci parmi toutes les autres. En fait, on peut comparer une adresse à un numéro de téléphone (ou à une adresse d'appartement) : chacun de vos correspondants a un numéro de téléphone et vous savez que pour appeler telle personne, vous devez composer tel numéro. Les adresses mémoires en sont l'équivalent pour les cases mémoire.
[[File:Adressage mémoire.png|centre|vignette|upright=2|Exemple : on demande à la mémoire de sélectionner la case mémoire d'adresse 1002 et on récupère son contenu (ici, 17).]]
L'adresse mémoire est générée par le processeur. Le processeur peut parfaitement calculer des adresses, en extraire du programme qu'il exécute, et bien d'autres choses. Nous détaillerons d'ailleurs les mécanismes pour dans les chapitres portant sur les modes d'adressage du processeur. Mais pour le moment, nous avons juste besoin de savoir que c'est le processeur qui envoie des adresses aux mémoires RAM et ROM.
Les adresses générées par le processeur sont alors envoyées à la RAM ou la ROM via une connexion dédiée, un ensemble de fils qui connecte le processeur à la mémoire : le '''bus d'adresse mémoire'''. L'adresse sélectionne une case mémoire, le processeur peut alors récupérer la donnée dedans pour une lecture, écrire une donnée pour l'écriture. Pour cela, un second ensemble de fil connecte le processeur à la RAM/ROM, mais cette fois-ci pour échanger des données. Il s'agit du '''bus de données mémoire'''. Les deux sont souvent regroupés sous le terme de '''bus mémoire'''.
Un ordinateur contient toujours une RAM et une ROM, ce qui demande aux bus mémoire de s'adapter à la présence de deux mémoires. Il y a alors deux solutions, illustrées dans les deux schémas ci-dessous. Avec la première, il y a un seul bus mémoire partagé entre la RAM et la ROM, comme illustré ci-dessous. Une autre solution utilise deux bus séparés : un pour la RAM et un autre pour la ROM. Nous verrons les différences pratiques entre les deux à la fin du chapitre. Pour le moment, nous allons partir du principe qu'il y a un bus pour la mémoire ROM, et un autre bus pour la RAM.
[[File:CPT-System-Architecture-gapfill1-ANS.svg|centre|vignette|upright=2|Architecture avec une ROM et une RAM.]]
[[File:Réseau d'interconnexion avec un processeur au centre.png|centre|vignette|upright=2|Réseau d'interconnexion avec un processeur au centre]]
===L'alignement mémoire : introduction===
Plus haut, nous avions dit qu'il y a une adresse par case mémoire, chaque case mémoire contenant un ou plusieurs octets. Mais les processeurs modernes partent du principe que la mémoire a un octet par adresse, pas plus. Et ce même si la mémoire reliée au processeur utilise des cases mémoires de 2, 3, 4 octets ou plus. D'ailleurs, la majorité des mémoires RAM actuelle a des cases mémoires de 64 bits, soit 8 octets par case mémoire. Les raisons à cela sont multiple, mais nous les verrons en détail dans le chapitre sur l'alignement mémoire. Toujours est-il qu'il faut distinguer les '''adresses mémoire''' et les '''adresses d'octet''' gérées par le processeur.
Le processeur génère des adresses d'octet, qui permettent de sélectionner un octet bien précis. L'adresse d'octet permet de sélectionner un octet parmi tous les autres. Mais la mémoire ne comprend pas directement cette adresse d'octet. Heureusement, l'octet en question est dans une case mémoire bien précise, qui a elle-même une adresse mémoire bien précise. L'adresse d'octet est alors convertie en une adresse mémoire, qui sélectionne la case mémoire adéquate, celle qui contient l'octet voulu. La case mémoire entière est lue, puis le processeur ne récupère que les données adéquates. Pour cela, des circuits d'alignement mémoire se chargent de faire la conversion entre adresses du processeur et adresse mémoire. Nous verrons cela dans le détail dans le chapitre sur l'alignement mémoire.
Il existe des mémoires qui n'utilisent pas d'adresses mémoire, mais passons : ce sera pour la suite du cours.
==Le processeur==
Dans les ordinateurs, l'unité de traitement porte le nom de '''processeur''', ou encore de '''''Central Processing Unit''''', abrévié en CPU. Le rôle principal du processeur est de faire des calculs. La plupart des processeurs actuels supportent au minimum l'addition, la soustraction et la multiplication. Quelques processeurs ne gèrent pas la division, qui est une opération très gourmande en circuit, peu utilisée, très lente. Il arrive que des processeurs très peu performants ne gèrent pas la multiplication, mais c'est assez rare.
Un processeur ne fait pas que des calculs. Tout processeur est conçu pour effectuer un nombre limité d'opérations bien précises, comme des calculs, des échanges de données avec la mémoire, etc. Ces opérations sont appelées des '''instructions'''. Les plus intuitives sont les '''instructions arithmétiques''', qui font des calculs, comme l'addition, la soustraction, la multiplication, la division. Mais il y a aussi des '''instructions d'accès mémoire''', qui échangent des données entre la mémoire RAM et le processeur. Les autres instructions ne sont pas très intuitives, aussi passons-les sous silence pour le moment, tout deviendra plus clair dans les chapitres sur le processeur.
===Le processeur exécute un programme, une suite d'instructions===
Tout processeur est conçu pour exécuter une suite d'instructions dans l'ordre demandé, cette suite s'appelant un '''programme'''. Ce que fait le processeur est défini par la suite d'instructions qu'il exécute, par le programme qu'on lui demande de faire. Les instructions sont exécutées dans un ordre bien précis, les unes après les autres. L'ordre en question est décidé par le programmeur. La totalité des logiciels présents sur un ordinateur sont des programmes comme les autres.
Le programme à exécuter est stockée dans la mémoire de l'ordinateur. C'est ainsi que l'ordinateur est rendu programmable : modifier le contenu de la mémoire permet de changer le programme exécuté. Mine de rien, cette idée de stocker le programme en mémoire est ce qui a fait que l’informatique est ce qu'elle est aujourd’hui. C'est la définition même d'ordinateur : appareil programmable qui stocke son programme dans une mémoire modifiable.
Une instruction est codée comme les données : sous la forme de suites de bits. Telle suite de bit indique qu'il faut faire une addition, telle autre demande de faire une soustraction, etc. Pour simplifier, nous allons supposer qu'il y a une instruction par adresse mémoire. Sur la grosse majorité des ordinateurs, les instructions sont placées les unes à la suite des autres dans l'ordre où elles doivent être exécutées. Un programme informatique n'est donc qu'une vulgaire suite d'instructions stockée quelque part dans la mémoire de l'ordinateur.
{|class="wikitable"
|+ Exemple de programme informatique
|-
! Adresse
! Instruction
|-
! 0
| Copier le contenu de l'adresse 0F05 dans le registre numéro 5
|-
! 1
| Charger le contenu de l'adresse 0555 dans le registre numéro 4
|-
! 2
| Additionner ces deux nombres
|-
! 3
| Charger le contenu de l'adresse 0555
|-
! 4
| Faire en XOR avec le résultat antérieur
|-
! ...
| ...
|-
! 5464
| Instruction d'arrêt
|}
Pour exécuter une suite d'instructions dans le bon ordre, le processeur détermine à chaque cycle quelle est la prochaine instruction à exécuter. Pour cela, le processeur mémorise l'adresse de l'instruction en cours dans un registre : le '''Program Counter'''. Je rappelle que des instructions consécutives sont dans des adresses consécutives. Pour passer à la prochaine instruction, il suffit donc d'incrémenter le ''program counter''.
: Si une instruction prend plusieurs octets, plusieurs adresses, il suffit de l'incrémenter du nombre d'octets/adresses.
D'autres processeurs font autrement : chaque instruction précise l'adresse de la suivante, directement dans la suite de bit représentant l'instruction en mémoire. Ces processeurs n'ont pas besoin de calculer une adresse qui leur est fournie sur un plateau d'argent. Sur des processeurs aussi bizarres, pas besoin de stocker les instructions en mémoire dans l'ordre dans lesquelles elles sont censées être exécutées. Mais ces processeurs sont très très rares et peuvent être considérés comme des exceptions à la règle.
Nous venons de voir qu'un processeur contient un registre appelé le ''program counter''. Mais il n'est pas le seul. Pour pouvoir fonctionner, tout processeur doit mémoriser un certain nombre d’informations nécessaires à son fonctionnement, qui sont mémorisées dans des '''registres de contrôle'''. La plupart ont des noms assez barbares (registre d'état, ''program counter'') et nous ne pouvons pas en parler à ce moment du cours. Nous les verrons en temps voulu, mais il est important de préciser qu'ils existent.
===L'intérieur d'un processeur===
Fort de ce que nous savons, nous pouvons expliquer ce qu'il y a à l'intérieur d'un processeur. Le premier point est qu'un processeur fait des calculs, ce qui implique qu'il contient des circuits de calcul. Ils sont regroupés dans une ou plusieurs '''unités de calcul'''. Nous avons déjà vu comment fabriquer une unité de calcul simple, dans un chapitre dédié, et c'est la même qui est présente dans un processeur. Du moins dans les grandes lignes, les circuits des processeurs modernes étant particulièrement optimisés. Il en est de même pour les autres circuits de calcul comme ceux pour les multiplications/division/autres.
Si le processeur fait des calculs, qu'en est-il des opérandes ? Et où sont mémorisés les résultats des opérations ? Pour cela, le processeur incorpore des '''registres généraux'''. Les registres généraux servent à mémoriser les opérandes et résultats des instructions. Ils mémorisent des données, contrairement aux registres de contrôle mentionnés plus haut. Le nombre de registres généraux dépend grandement du processeur. Les tout premiers processeurs se débrouillaient avec un seul registre, mais les processeurs actuels utilisent plusieurs registres, pour mémoriser plusieurs opérandes/résultats. Mais la présence de registres est source de pas mal de petites complications. Par exemple, il faut échanger les données entre la RAM et les registres, il faut gérer l'adressage des registres, etc. Il s'agit là de détails que nous expliquerons dans les chapitres sur le processeur.
Le processeur contient enfin un circuit pour interpréter les instructions, appelé l''''unité de contrôle'''. Elle lit les instructions depuis la mémoire, interprète la suite de bit associée, et commande le reste du processeur pour qu'il exécute l'instruction. Ses fonctions sont assez variées, mais nous allons simplifier en disant qu'elle configure l'unité de calcul et les registres pour faire le bon calcul. Son rôle est d'analyser la suite de bit qui constitue l'instruction, et d'en déduire quelle opération effectuer. Elle gère aussi l'accès à la mémoire RAM, et notamment ce qui est envoyé sur son bus d'adresse.
: Dans ce qui suit, on suppose que le ''program counter'' fait partie de l'unité de contrôle.
Pour résumer, un processeur contient une unité de calcul, des registres et une interface avec la mémoire RAM. Le tout est interconnecté, afin de pouvoir échanger des données. L’ensemble forme le '''chemin de données''', nom qui trahit le fait que c'est là que les données se déplacent et sont traitées. Il faut aussi ajouter l'unité de contrôle pour commander le tout. Elle lit les instructions en mémoire, puis commande le chemin de données pour que l'instruction soit exécutée correctement.
[[File:Microarchitecture d'un processeur.png|centre|vignette|upright=2|Microarchitecture d'un processeur]]
Un processeur parait donc assez simple expliqué comme ça, mais il y a de nombreuses subtilités. L'une d'entre elle est liée aux registres, et notamment à la manière dont on les utilise. Pour expliquer ces subtilités, nous allons voir comment les premiers processeurs fonctionnaient, avant de passer aux processeurs un peu plus modernes. Les tout premiers processeurs n'utilisaient qu'un seul registre, ce qui fait que l'utilisation des registres était très simple. Le passage à plusieurs registres a complexifié le tout.
===D'où viennent les adresses ?===
Il est maintenant temps de répondre à une question qui s'était posée dans la section sur l'adressage : d'où viennent les adresses envoyées à la mémoire ? Pour ce qui est des adresses des instructions, on connait déjà la réponse : c'est le ''program counter'' qui gère tout. Mais pour les données, il y a deux possibilités, qui correspondent à deux types de données : les données statiques et les données dynamiques.
Les '''données statiques''' sont les plus simples : elles existent durant toute la durée de vie du programme. Tant que celui-ci s'exécute, il aura besoin de ces données. En conséquence, il leur réserve une place en mémoire, qui est toujours la même. La donnée se situe donc à une adresse bien précise, qui ne change jamais. Attention cependant : les données peuvent être modifiées, changer de valeur. Le programme écrit dans les donnée statiques, c'est même assez fréquent. Ce sont ne sont pas forcément des données constantes !
Pour les données statiques, elles sont toujours placées à la même adresse mémoire. Pour le dire autrement, l'adresse mémoire est une constante, qui ne change pas. L'adresse est connue avant d’exécuter le programme, le programme a été codé pour utiliser cette adresse pour telle donnée, on a réservé une adresse pour la donnée voulue. Et même si vous quittez le programme et vous le relancez plusieurs jours après, l'adresse mémoire sera la même avant et après.
Et cela permet d'utiliser l''''adressage direct'''. L'idée est que les instructions précisent donc l'adresse à lire ou écrire. Pour cela, l'adresse est intégrée dans l’instruction elle-même. Pour rappel, l'instruction est codée par une suite de bit en mémoire RAM/ROM, dont certains précisent l'opération à faire, les autres servant à autre chose. L'idée est que certains bits précisent l'adresse mémoire de la donnée à lire. Les instructions sont donc du genre :
* ''LOAD 56'' - lit l'adresse numéro 56 et copie son contenu dans un registre;
* ''STORE R5 , adress 99'', copie le registre R5 dans l'adresse 99 ;
* ''ADD R5 , adress 209'' : additionne le registre R5 avec le contenu de l'adresse 209.
S'il existe des données statiques, c'est signe qu'il existe des '''données dynamiques'''. Ces dernières sont des données qui sont créées ou détruites selon les besoins. Pour comprendre d'où viennent ces données dynamiques, prenons le cas d'une personne qui écrit du texte sur un ordinateur. Le texte qu'il écrit est mémorisé dans la RAM de l’ordinateur, puis est sauvegardé sur le disque dur quand il sauvegarde son document. Au fur et à mesure qu'il écrit du texte, la RAM utilisée par ce texte augmente. Donc, ce texte est une donnée dynamique, dont la taille varie dans le temps.
Pour gérer des données dynamiques, la plupart des systèmes d'exploitation incorporent des fonctionnalités d''''allocation mémoire'''. Derrière ce nom barbare, se cache quelque chose de simple : les programmes peuvent réclamer de la mémoire au système d'exploitation, pour y placer les données qu'ils souhaitent. Les langages de programmation bas niveau supportent des fonctions comme malloc(), qui permettent de demander un bloc de mémoire de N octets à l'OS, qui doit alors accommoder la demande. De même, un programme peut libérer de la mémoire qu'il n'utilise plus avec des fonctions comme free().
Avec l'allocation mémoire, les données n'ont pas de place fixe en mémoire. Leur adresse mémoire peut varier d'une exécution du programme à l'autre. Pire que ça : les données peuvent être déplacées dans la mémoire RAM, si besoin. En clair : l'adresse est déterminée lors de l'exécution du programme. L'adresse est alors soit calculée, soit lue depuis la mémoire RAM, soit déterminée autrement. Toujours est-il qu'elle se retrouve dans un registre général. Pour gérer ces adresse variables, les processeurs utilisent l''''adressage indirect'''. L'adressage indirect permet d'utiliser une adresse qui est dans un registre de données. L'adresse en question peut être envoyée à la mémoire RAM sans problème, le processeur peut automatiquement connecter le registre adéquat sur le bus d'adresse.
Au tout début de l'informatique, les processeurs ne supportaient que l'adressage direct, pas plus. L'adressage indirect n'était tout simplement pas possible. Avec l'adressage direct, l'adresse à lire est extraite directement des instructions, par l'unité de contrôle. Le bus d'adresse de la RAM est alors relié directement à l'unité de contrôle, le bus de données est relié aux registres.
[[File:Architecture Harvard avec adressage direct uniquement.png|centre|vignette|upright=2|Architecture Harvard avec adressage direct uniquement]]
Mais dès les années 70, l'adressage indirect est apparu, rendant la programmation bien plus simple. Mais cela a demandé quelques adaptation au niveau du processeur. Avec l'adressage indirect, le bus d'adresse est connecté aux registres. Il a donc fallu rajouter un multiplexeur pour que le processeur décide de relier le bus d'adresse soit aux registres, soit à l'unité de contrôle.
===Un ordinateur peut avoir plusieurs processeurs===
La plupart des ordinateurs n'ont qu'un seul processeur, ce qui fait qu'on désigne avec le terme d''''ordinateurs mono-processeur'''. Mais il a existé (et existe encore) des '''ordinateurs multi-processeurs''', avec plusieurs processeurs sur la même carte mère. L'idée était de gagner en performance : deux processeurs permettent de faire deux fois plus de calcul qu'un seul, quatre permettent d'en faire quatre fois plus, etc. C'est très courant sur les supercalculateurs, des ordinateurs très puissants conçus pour du calcul industriel ou scientifique, mais aussi sur les serveurs ! Dans le cas le plus courant, ils utilisent plusieurs processeurs identiques : on utilise deux processeurs Core i3 de même modèle, ou quatre Pentium 3, etc.
Pour utiliser plusieurs processeurs, les programmes doivent être adaptés. Pour cela, il y a plusieurs possibilités :
* Une première possibilité, assez intuitive, est d’exécuter des programmes différents sur des processeurs différents. Par exemple, on exécute le navigateur web sur un processeur, le lecteur vidéo sur un autre, etc.
* La seconde option est de créer des programmes spéciaux, qui utilisent plusieurs processeurs. Ils répartissent les calculs à faire sur les différents processeurs. Un exemple est la lecture d'une vidéo sur le web : un processeur peut télécharger la vidéo pendant le visionnage et bufferiser celle-ci, un autre processeur peut décoder la vidéo, un autre décoder l'audio. De tels programmes restent des suites d'instructions, mais ils sont plus complexes que les programmes normaux, aussi nous les passons sous silence.
* La troisième option est d’exécuter le même programme sur les différents processeurs, mais chaque processeur traite son propre ensemble de données. Par exemple, pour un programme de rendu 3D, quatre processeurs peuvent s'occuper chacun d'une portion de l'image.
[[File:Architecture de Von Neumann Princeton multi processeurs.svg|centre|vignette|upright=2|Architecture de Von Neumann Princeton multi processeurs]]
De nos jours, les ordinateurs grand public les plus utilisés sont dans un cas intermédiaire, ils ne sont ni mono-, ni multi-processeur. Ils n'ont qu'un seul processeur, dans le sens où si on ouvre l'ordinateur et qu'on regarde la carte mère, il n'y a qu'un seul processeur. Mais ce processeur est en réalité assez similaire à un regroupement de plusieurs processeurs dans le même boitier. Il s'agit de '''processeurs multicœurs''', qui contiennent plusieurs cœurs, chaque cœur pouvant exécuter un programme tout seul.
La différence entre cœur et processeur est assez difficile à saisir, mais pour simplifier : un cœur est l'ensemble des circuits nécessaires pour exécuter un programme. Chaque cœur dispose de toute la machinerie électronique pour exécuter un programme, à savoir des circuits aux noms barbares comme : un séquenceur d'instruction, des registres, une unité de calcul. Par contre, certains circuits d'un processeur ne sont présents qu'en un seul exemplaire dans un processeur multicœur, comme les circuits de communication avec la mémoire ou les circuits d’interfaçage avec la carte mère.
Suivant le nombre de cœurs présents dans notre processeur, celui-ci sera appelé un processeur double-cœur (deux cœurs), quadruple-cœur (4 cœurs), octuple-cœur (8 cœurs), etc. Un processeur double-cœur est équivalent à avoir deux processeurs dans l'ordinateur, un processeur quadruple-cœur est équivalent à avoir quatre processeurs dans l'ordinateur, etc. Ces processeurs sont devenus la norme dans les ordinateurs grand public et les logiciels et systèmes d'exploitation se sont adaptés.
===Les coprocesseurs===
Quelques ordinateurs assez anciens disposaient de '''coprocesseurs''', des processeurs qui complémentaient un processeur principal. Les ordinateurs de ce type avaient un processeur principal, le '''CPU''', qui était secondé par un ou plusieurs coprocesseurs. Sauf exception, le CPU et le coprocesseur exécutent des programmes différents, ils travaillent en parallèle.
Les coprocesseurs les plus connus sont les '''coprocesseurs pour le rendu 2D/3D'''. Ils ont eu leur heure de gloire sur les anciennes consoles de jeux vidéo, comme Super Nintendo, la Playstation et autres consoles de cette génération ou antérieure. Ils s'occupaient respectivement de calculer les graphismes des jeux vidéos. De nos jours, ils ont été remplacés par des cartes graphiques, ou des ''Graphic Processing Units'', qui ne sont pas considérées comme des coprocesseurs.
Les '''coprocesseurs sonores''' sont une sorte d'ancêtre des cartes son, utilisés sur les anciennes consoles de jeux vidéo, comme La Nintendo 64, la Playstation et autres consoles antérieures. Ils s'occupaient respectivement de calculer tout ce qui a trait au son. Pour donner un exemple, on peut citer la console Neo-géo, qui disposait de deux processeurs travaillant en parallèle : un processeur principal, et un coprocesseur sonore. Le processeur principal était un Motorola 68000, alors que le coprocesseur sonore était un processeur Z80.
L'accès aux périphériques est quelque chose sur lequel nous passerons plusieurs chapitres dans ce cours. Mais sachez que l'accès aux périphériques peut demander pas mal de puissance de calculs. Le CPU principal peut faire ce genre de calculs par lui-même, mais il n'est pas rare qu'un '''coprocesseur d'IO''' soit dédié à l'accès aux périphériques. Un exemple assez récent est celui de la console de jeu Nintendo 3DS. Elle disposait d'un processeur principal de type ARM9, d'un coprocesseur pour les divisions qu'on abordera plus bas, et d'un second processeur ARM7. L'ARM 7 était utilisé comme coprocesseur d'I/O, ainsi que pour l'émulation de la console GBA.
[[File:Asmp 2.gif|centre|vignette|upright=2|Co-processeur pour l'accès aux entrées-sorties.]]
Les '''coprocesseurs arithmétiques''' sont un peu à part des autres. Ils sont spécialisés dans les calculs en virgule flottante. Ils étaient utilisés à une époque où les CPU ne géraient que des calculs entiers (en binaire ou en BCD). Un exemple est le coprocesseur flottant x87, complémentaire des premiers processeurs Intel x86. Il y a eu la même chose sur les processeurs Motorola 68000, avec deux coprocesseurs flottants appelés les Motorola 68881 et les Motorola 68882.
Un exemple récent de coprocesseur est celui utilisé sur la console de jeu Nintendo DS. La console utilisait deux processeurs, un ARM9 et un ARM7, qui ne pouvaient pas faire de division entière. Il s'agit pourtant d'opérations importantes dans le cas du rendu 3D, ce qui fait que les concepteurs de la console ont rajouté un coprocesseur spécialisé dans les divisions entières et les racines carrées. Le coprocesseur était adressable directement par le processeur, comme peuvent l'être la RAM ou les périphériques.
==Les entrées-sorties==
Tous les circuits vus précédemment traitent des données codées en binaire. Ceci dit, les données ne sortent pas de n'importe où : l'ordinateur contient des composants électroniques qui traduisent des informations venant de l’extérieur en nombres. Ces composants sont ce qu'on appelle des '''entrées'''. Par exemple, le clavier est une entrée : l'électronique du clavier attribue un nombre entier (''scancode'') à une touche, nombre qui sera communiqué à l’ordinateur lors de l'appui d'une touche. Pareil pour la souris : quand vous bougez la souris, celle-ci envoie des informations sur la position ou le mouvement du curseur, informations qui sont codées sous la forme de nombres. La carte son évoquée il y a quelques chapitres est bien sûr une entrée : elle est capable d'enregistrer un son, et de le restituer sous la forme de nombres.
S’il y a des entrées, on trouve aussi des '''sorties''', des composants électroniques qui transforment des nombres présents dans l'ordinateur en quelque chose d'utile. Ces sorties effectuent la traduction inverse de celle faite par les entrées : si les entrées convertissent une information en nombre, les sorties font l'inverse : là où les entrées encodent, les sorties décodent. Par exemple, un écran LCD est un circuit de sortie : il reçoit des informations, et les transforme en image affichée à l'écran. Même chose pour une imprimante : elle reçoit des documents texte encodés sous forme de nombres, et permet de les imprimer sur du papier. Et la carte son est aussi une sortie, vu qu'elle transforme les sons d'un fichier audio en tensions destinées à un haut-parleur : c'est à la fois une entrée, et une sortie.
Les '''entrées-sorties''' incluent toutes les entrées et sorties, et même certains composants qui sont les deux à la fois. Il s'agit d'un terme générique, qui regroupe des composants forts différents. Dans ce qui va suivre, nous allons parfois parler de périphériques au lieu d'entrées-sorties, mais les deux termes ne sont pas équivalents. Dans le détail, les entrées-sorties regroupent :
* Les '''périphériques''' sont les composants connectés sur l'unité centrale. Exemple : les claviers, souris, webcam, imprimantes, écrans, clés USB, disques durs externes, la Box internet, etc.
* Les '''cartes d'extension''', qui se connectent sur la carte mère via un connecteur, comme les cartes son ou les cartes graphiques.
* D'autres composants sont soudés à la carte mère mais sont techniquement des entrées-sorties : les cartes sons soudées sur les cartes mères actuelles, par exemple.
===L'interface avec le reste de l'ordinateur===
Les entrées-sorties sont très diverses, fonctionnent très différemment les unes des autres. Mais du point de vue du reste de l'ordinateur, les choses sont relativement standardisées. Du point de vue du processeur, les entrées-sorties sont juste des paquets de registres ! Tous les périphériques, toutes les entrées-sorties contiennent des '''registres d’interfaçage''', qui permettent de faire l'intermédiaire entre l'entrée/sortie et le reste de l'ordinateur. L'entrée/sortie est conçu pour réagir automatiquement quand on écrit dans ces registres.
[[File:Registres d'interfaçage.png|centre|vignette|upright=2|Registres d'interfaçage.]]
Les registres d’interfaçage sont assez variés. Les plus évidents sont les '''registres de données''', qui permettent l'échange de données entre le processeur et les périphériques. Pour échanger des données avec l'entrée/sortie, le processeur a juste à lire ou écrire dans ces registres de données. On trouve généralement un registre de lecture et un registre d'écriture, mais il se peut que les deux soient fusionnés en un seul registre d’interfaçage de données. Si le processeur veut envoyer une donnée à une entrée/sortie, il a juste à écrire dans ces registres. Inversement, s'il veut lire une donnée, il a juste à lire le registre adéquat.
Mais le processeur ne fait pas que transmettre des données à l'entrée/sortie. Le processeur lui envoie aussi des « commandes », des valeurs numériques auxquelles l'entrée/sortie répond en effectuant un ensemble d'actions préprogrammées. En clair, ce sont l'équivalent des instructions du processeur, mais pour l'entrée/sortie. Par exemple, les commandes envoyées à une carte graphique peuvent être : affiche l'image présente à cette adresse mémoire, calcule le rendu 3D à partir des données présentes dans ta mémoire, etc. Pour recevoir les commandes, l'entrée/sortie contient des ''registres de commande'' qui mémorisent les commandes envoyées par le processeur. Quand le processeur veut envoyer une commande à l'entrée/sortie, il écrit la commande en question dans ce ou ces registres.
Enfin, beaucoup d'entrée/sortie ont un ''registre d'état'', lisible par le processeur, qui contient des informations sur l'état de l'entrée/sortie. Ils servent notamment à indiquer au processeur que l'entrée/sortie est disponible, qu'il est en train d’exécuter une commande, qu'il est occupé, qu'il y a un problème, qu'il y a une erreur de configuration, etc.
===Les adresses des registres d’interfaçage===
Les registres des périphériques sont identifiés par des adresses mémoires. Et les adresses sont conçues de façon à ce que les adresses des différentes entrées/sorties ne se marchent pas sur les pieds. Chaque entrée/sortie, chaque registre, chaque contrôleur a sa propre adresse. D'ordinaire, certains bits de l'adresse indiquent quel est le destinataire. Certains indiquent quel est l'entrée/sortie voulue, les restants indiquant le registre de destination.
Il existe deux organisations possibles pour les adresses des registres d’interfaçages. La première possibilité est de séparer les adresses pour les registres d’interfaçage et les adresses pour la mémoire. Le processeur doit avoir des instructions séparées pour gérer les périphériques et adresser la mémoire. Il a des instructions de lecture/écriture pour lire/écrire en mémoire, et d'autres pour lire/écrire les registres d’interfaçage. Sans cela, le processeur ne saurait pas si une adresse est destinée à un périphérique ou à la mémoire.
[[File:Espaces d'adressages séparés entre mémoire et périphérique.png|centre|vignette|upright=2.5|Espaces d'adressages séparés entre mémoire et périphérique]]
L'autre méthode mélange les adresses mémoire et des entrées-sorties. Si on prend par exemple un processeur de 16 bits, où les adresses font 16 bits, alors les 65536 adresses possibles seront découpées en deux portions : une partie ira adresser la RAM/ROM, l'autre les périphériques. On parle alors d''''entrées-sorties mappées en mémoire'''. L'avantage est que le processeur n'a pas besoin d'avoir des instructions séparées pour les deux.
[[File:IO mappées en mémoire.png|centre|vignette|upright=2.0|IO mappées en mémoire]]
Pour résumer, communiquer avec une entrée/sortie est similaire à ce qu'on a avec les mémoires. Il suffit de lire ou écrire dans des registres d’interfaçage, qui ont chacun une adresse mémoire. Le problème est que le système d'exploitation ne connaît pas toujours le fonctionnement d'une entrée/sortie : il faut installer un programme qui va s'exécuter quand on souhaite communiquer avec l'entrée/sortie, et qui s'occupera de tout ce qui est nécessaire pour le transfert des données, l'adressage du périphérique, etc. Ce petit programme est appelé un driver ou '''pilote de périphérique'''. La « programmation » périphérique est très simple : il suffit de savoir quoi mettre dans les registres, et c'est le pilote qui s'en charge.
==Les architectures Harvard et Von Neumann==
Après avoir vu le processeur, les mémoires et les entrées-sorties, voyons voir comment le tout est interconnecté. Tous les ordinateurs ne sont pas organisés de la même manière, pour ce qui est de leurs bus. Mais pour comprendre pourquoi, nous devons regarder qui communique avec qui, dans un ordinateur. Pour rappel, les données sont placées en mémoire RAM, alors que les instructions sont placées en mémoire ROM. Le processeur lit des instructions dans la mémoire ROM, il lit et écrit dans la mémoire RAM, et accède aux registres d’interfaçage des entrées-sorties. Il y a donc besoins de trois interconnexions : CPU-ROM, CPU-RAM et CPU-IO.
[[File:Réseau d'interconnexion avec un processeur au centre.png|centre|vignette|upright=2|Réseau d'interconnexion avec un processeur au centre]]
Il parait intéressant d'utiliser trois interconnexions, au minimum CPU-ROM, CPU-RAM et CPU-IO. Néanmoins, faire ainsi a de nombreux désavantages. Déjà, il faut pouvoir brancher tout ça sur le processeur. Et celui-ci n'a pas forcément assez de broches pour. Aussi, il est parfois préférable de mutualiser des bus, à savoir de connecter plusieurs composants sur un même bus. Par exemple, on peut mutualiser le bus pour la mémoire RAM et pour la mémoire ROM. Il faut dire que les deux bus sont des bus mémoire, avec un bus d'adresse, un bus de données, et surtout : des bus de commande similaires. Les mutualiser est alors très simple, et permet d'économiser pas mal de broches.
[[File:Réseau d'interconnexion avec un processeur au centre et une architecture Harvard.png|centre|vignette|upright=2|Réseau d'interconnexion avec un processeur au centre et une architecture Harvard]]
Cette mutualisation nous amène naturellement à parler de la distinction entre les architectures Harvard d'un côté et les architectures Von Neumann de l'autre. Elle est très liée au fait d'utiliser soit un bus mémoire unique, soit des bus séparés pour la ROM et la RAM. Voyons cela en détail.
===Les architectures Harvard et Von Neumann : des bus séparés ou unifiés===
Avec l''''architecture Harvard''', la mémoire ROM et la mémoire RAM sont reliées au processeur par deux bus séparés. Il y a un bus RAM pour la mémoire RAM, un bus ROM pour la mémoire ROM. L'avantage de cette architecture est qu'elle permet de charger une instruction et une donnée simultanément : une instruction chargée sur le bus relié à la mémoire programme, et une donnée chargée sur le bus relié à la mémoire de données. Et cela simplifie fortement la conception du processeur.
[[File:Harvard Architecture.png|centre|vignette|upright=2|Architecture Harvard, avec une ROM et une RAM séparées.]]
Avec l''''architecture Von Neumann''', mémoire ROM et mémoire RAM sont reliées au processeur par un bus unique. Le bus unique qui relie processeur, RAM et ROM, s'appelle le '''bus mémoire'''. Un défaut de ces architecture est qu'elles ne peuvent pas charger une instruction et une donnée en même temps. Et cela pose quelques problèmes pour la conception du processeur. Par contre, nous verrons dans ce qui suit qu'utiliser un bus mémoire partagé est bien plus flexible et permet des choses que les architectures Harvard ne peuvent pas faire.
[[File:Architecture Von Neumann, avec deux bus séparés.png|centre|vignette|upright=2|Architecture Von Neumann, avec deux bus séparés.]]
===Les architectures Harvard et Von Neumann : des espaces d'adressage séparés ou unifiés===
La distinction précédente se base sur les connexions entre RAM, ROM et processeur. Mais il existe une autre distinction, très liée, qui est souvent utilisée comme seconde définition des architectures Harvard/Von Neumann. Elle est liée aux adresses mémoire que le processeur peut gérer. Prenons un processeur 16 bits, par exemple, qui gère naturellement des adresses de 16 bits. Il peut gérer 2^16 adresses, soit 64 kibioctets de mémoire. L'ensemble de ces adresses est appelé un '''espace d'adressage'''. Mais comment cet espace d'adressage est utilisé pour adresser une RAM et une ROM ?
Sur les architectures Harvard, le processeur voit deux mémoires séparées avec leur lot d'adresses distinctes. Une même adresse peut donc correspondre soit à la mémoire ROM, soit à la mémoire RAM, suivant le bus utilisé. L'espace d'adressage est donc doublé, dupliqué, avec un pour la ROM, un autre pour la RAM. Rien d'étonnant à cela : il y a deux bus d'adresses, chacun correspondant à un espace d'adressage.
[[File:Vision de la mémoire par un processeur sur une architecture Harvard.png|centre|vignette|upright=2|Vision de la mémoire par un processeur sur une architecture Harvard.]]
Avec l'architecture Von Neumann, la RAM et la ROM doivent se partager les adresses mémoires disponibles. Il n'y a qu'un seul espace d'adressage qui est coupé en deux, avec une partie pour la ROM et une autre pour la RAM. Une adresse correspond soit à la mémoire RAM, soit à la mémoire ROM, mais pas aux deux. Typiquement, la mémoire ROM occupe une partie des adresses, la mémoire RAM utilise le reste. La répartition des adresses est réalisée par les circuits de décodage d'adresse mentionnés plus haut.
[[File:Vision de la mémoire par un processeur sur une architecture Von Neumann.png|centre|vignette|upright=2|Vision de la mémoire par un processeur sur une architecture Von Neumann.]]
Les '''architectures Harvard modifiées''' sont des intermédiaires entre architectures Harvard et architectures Von Neumann, bien qu'elles penchent bien plus du côté des architectures Harvard. Précisons que la terminologie n'est pas claire, beaucoup d'auteurs mettent des définitions différentes derrière ces deux termes. Mais dans ce cours, nous utiliserons une définition très stricte de ce qu'est une architecture Harvard modifiée.
Une architecture Harvard modifiée est une architecture Harvard, où le processeur peut lire des données constantes depuis la mémoire ROM. Nous avions vu plus haut que les mémoires ROM peuvent mémoriser, en plus d'un programme exécutable, des données constantes, qui ne varient pas. Les architectures Harvard pures ne permettent pas de lire des données de ce genre depuis la mémoire ROM, alors que les architectures Harvard modifiées le permettent.
Une architecture Harvard modifiée dispose d'une instruction pour lire les données en mémoire RWM, et d'une instruction pour lire des données en mémoire ROM. Il y a donc deux versions de l'instruction LOAD, qui copient la donnée dans un registre général, mais dont la source de la donnée est différente. Une autre possibilité, plus rare, est que une instruction de copie, qui copie une constante depuis la mémoire ROM vers la mémoire RAM. Le cas le plus commun est l'utilisation de deux instructions LOAD séparées.
[[File:Espaces d'adressage sur une archi harvard modifiée.png|centre|vignette|upright=2.5|Espaces d'adressage sur une archi harvard modifiée]]
Ceci étant dit, revenons à la distinction entre architecture Harvard et Von Neumann. Il faut noter que la RAM et la ROM n'ont pas forcément la même taille. Et ce que ce soit sur une architecture Harvard que sur une architecture Von Neumann, mais c'est plus facile à expliquer sur une architecture Harvard.
On peut par exemple imaginer une architecture Harvard qui utilise des adresses de 16 bits pour la ROM, et seulement 8 bits pour la RAM. Le résultat est qu'il peut adresser 64 kibioctets de ROM, mais seulement 256 octets de RAM. Les deux bus d'adresse sont alors de taille différente, l'un faisant 8 bits, l'autre 16. Quelques processeurs 8 bits étaient dans ce cas, comme on le verra dans le chapitre sur les CPU 8bits. Mais d'autres processeurs utilisent des valeurs différentes, avec par exemple des adresses de 16 bits pour la RAM, mais de 20 bits pour la ROM, ou inversement.
Sur une architecture Von Neumann, tout dépend de comment les adresses sont réparties. La solution la plus simple découpe l'espace d'adressage en deux parties égales, avec la RAM qui est dans la moitié basse (qui part de l'adresse 0 jusqu'à l'adresse au milieu), alors que la ROM est dans la moitié haute (entre l'adresse du milieu et l'adresse maximale). Mais ce n'est pas la seule possibilité, la limite entre RAM et ROM peut être mise n'importe où. Prenons par exemple un processeur 32 bits, capable de gérer 4 milliards d'adresse. Il est parfaitement possible de réserver 128 mébioctets de poids fort à la mémoire ROM, et de laisser le reste à la mémoire RAM.
===Le décodage d'adresse sur les architectures Von Neumann===
Pour résumer, les architectures Harvard et Von Neumann se distinguent sur deux points :
* L'accès à la RAM et à la ROM se font par des bus séparés sur l'architecture Harvard, sur le même bus avec l'architecture Von Neumann.
* Les adresses pour la mémoire ROM et la mémoire RAM sont séparées sur les architectures Harvard, partagées sur l’architecture Von Neumann.
Les architectures Von Neumann utilisent donc un seul bus pour connecter la RAM et la ROM au processeur. Mais cela ne parait pas intuitif : comment deux composants peuvent se connecter aux mêmes fils ? Parce que c'est ce qu'implique le fait de partager un bus. Si je prends une mémoire RAM et une mémoire ROM, toutes deux de 8 bits, elles seront connectées à un bus mémoire de 8 bits. Intuitivement, on se dit qu'il y aura des conflits, du genre : la RAM et la ROM vont accéder au bus en même temps, comment savoir si une adresse est destinée à la RAM ou la ROM, etc ?
Tous ces problèmes sont résolus avec une solution très simple : à chaque instant, seule une mémoire est connectée au bus. L'idée est que les mémoires sont connectées ou déconnectées du bus selon les besoins. Si le processeur veut envoyer lire une donnée en mémoire RAM, il déconnecte la mémoire ROM du bus. Et inversement, s'il veut lire une instruction, il déconnecte la RAM et connecte la ROM.
Pour cela, les mémoires RAM et ROM possèdent une entrée ''Chip Select'' ou ''Output Enable'', qui agit comme une sorte de bouton ON/OFF. Lorsqu'on met un 1 sur cette entrée, la mémoire se connectera au bus. Ses entrées et sorties fonctionneront normalement, elle pourra recevoir des adresses, envoyer ou recevoir des données, tout sera normal. Par contre, si on met un 0 sur cette entrée, la mémoire se "désactive", ses entrée-sorties ne répondent plus aux sollicitations extérieures. Pire que ça : elles sont électriquement déconnectées.
Au total, tout cela demande de gérer deux bit ''Chip Select''/''Output Enable'' : un pour la RAM, un pour la ROM. Et ces deux bits sont configurés pour chaque accès mémoire, pour chaque lecture ou écriture. Pour cela, un circuit de '''décodage d'adresse''' prend en entrée l'adresse mémoire à lire/écrire, et active/désactive les mémoires RAM/ROM selon les besoins. Il prend l'adresse et configure les bits ''Chip Select''/''Output Enable''.
[[File:Décodage d'adresse sur une architecture Von Neumann.png|centre|vignette|upright=2|Décodage d'adresse sur une architecture Von Neumann.]]
L'implémentation la plus simple réserve la moitié des adresses pour la RAM, l'autre moitié pour la ROM. Typiquement, la ROM prend la moitié basse, la RAM la moitié haute. Dans ce cas, activer/désactiver la RAM et la ROM se fait avec seulement le bit de poids fort de l'adresse. Si le bit de poids fort est à 1, alors on accède à la RAM et la ROM doit être désactivée. Mais si ce bit est à 0, alors on accède à la moitié basse et il faut désactiver la RAM.
Une remarque intéressante : le fait de séparer la mémoire en deux parts égales permet de simuler une architecture Harvard à partir d'une architecture Von Neumann. Par exemple, le tout premier processeur d'Intel, le 4004, était l'un de ceux là. La RAM et la ROM sont reliés au même bus, et il y a donc un unique espace d'adressage, qui est séparé en deux parties égales. Le truc est que le processeur traite les deux parties égales comme deux espaces d'adressage séparés. Le processeur se débrouille pour cacher le fait qu'il y a un espace d'adressage unique coupé en deux, ce qui fait que les programmeurs voient bien deux espaces d'adressages distincts.
[[File:Décodage d'adresse sur une architecture Von Neumann basique.png|centre|vignette|upright=2|Décodage d'adresse sur une architecture Von Neumann basique.]]
Pour résumer, quand une adresse est envoyée sur le bus, les deux mémoires vont la recevoir mais une seule va répondre et se connecter au bus. Le décodage d'adresse garantit que seule la mémoire adéquate réponde à un accès mémoire. Le décodage d'adresse est réalisé par la carte mère, par un composant dédié.
Le mécanisme peut être utilisé pour combiner plusieurs RAM en une seule, idem avec les ROM. Pour comprendre l'idée, je vais prendre l'exemple de l'IBM PC, un des tout premier PC existant. Nous étudierons ce PC dans une section dédiée, à la fin du chapitre, aussi je vais passer rapidement dessus. Tout ce que je vais faire est vous présenter la carte mère du PC, et vous demander de faire est de compter les mémoires ROM et mémoires RAM sur la carte mère :
[[File:IBM 5150 Motherboard.svg|centre|vignette|upright=3|Carte mère de l'IBM 5150, un modèle de l'IBM PC.]]
Si vous remarquerez qu'il y a 5 mémoires ROM et 8 à 32 mémoires RAM. Le fait est que le processeur voit les différentes mémoires ROM comme une seule mémoire ROM. Idem avec les mémoires RAM : elle font chacune 2 kibioctets, et l'ensemble est vu par le processeur comme une seule RAM de 16 à 64 kibioctets. Et cela grâce aux circuits de décodage d'adresse, qui sont situés en haut à droite de la carte mère.
Pour comprendre l'idée, prenons l'exemple d'un processeur 16 bits, capable de gérer 64 kibioctets de mémoire. L'espace d'adressage est découpé en quatre portions, de 16 kibioctets chacune. Une portion est réservée à une ROM de 16 kibioctet, les autres sont chacune réservée à une RAM de 16 kibioctet. Le décodage d'adresse sélectionne alors la mémoire adéquate en utilisant les deux bits de poids fort de l'adresse.
* S'ils valent 00, alors c'est la mémoire ROM qui est activée, connectée au bus.
* S'ils valent 01, alors c'est la première mémoire RAM qui est connectée au bus.
* S'ils valent 10, alors c'est la seconde mémoire RAM qui est connectée au bus.
* S'ils valent 11, alors c'est la troisième mémoire RAM qui est connectée au bus.
[[File:Décodage d'adresse sur une architecture Von Neumann, utilisant plusieurs RAM et une ROM.png|centre|vignette|upright=3|Décodage d'adresse sur une architecture Von Neumann, utilisant plusieurs RAM et une ROM]]
===L'impact sur la conception du processeur===
Plus haut, j'ai parlé d'un des avantages des architectures Harvard : elles peuvent lire une instruction en même temps qu'elles accèdent à une donnée. La donnée est lue/écrite en RAM, alors que l'instruction est lue en ROM. Et cela permet de simplifier l'intérieur du processeur. Pas de beaucoup, mais c'est déjà ça de pris. Voyons maintenant comment cela impacte l'intérieur du processeur. Tout ce dont vous avez à vous rappeler est la séparation entre chemin de données et unité de contrôle, et que les registres généraux sont dans le premier, le ''program counter'' dans la seconde.
Avec une architecture Harvard, les instructions et les données passent par des bus différent : bus ROM pour les instructions, bus RAM pour les données. L'intuition nous dit que le bus pour la mémoire ROM est connecté à l'unité de contrôle, alors que le bus pour la RAM est connecté au chemin de données. Et dans les grandes lignes, c'est vrai. La logique est imparable pour ce qui est des bus de données. Mais il y a une petite subtilité pour les bus d'adresse.
Pour comprendre comment le processeur exploite ces deux bus, voyons ce qui transite dessus. Pour la mémoire ROM, elle reçoit l'adresse de l'instruction à lire, elle renvoie l'instruction adéquate. Pour cela, le ''program counter'' est envoyé sur le bus d'adresse, l'instruction sur le bus de données. Pour la mémoire RAM, elle échange des données avec les registres généraux, les registres pour les données. Les adresses utilisées pour la RAM viennent elles soit du chemin de données, soit de l'unité de contrôle, tout dépend du mode d'adressage. Mais le ''program counter'' n'est pas impliqué.
[[File:Architecture Harvard - échanges de données.png|centre|vignette|upright=2|Architecture Harvard - échanges de données]]
Les architectures Harvard modifiées doivent cependant rajouter une connexion entre le bus ROM et les registres généraux. C'est nécessaire pour charger une donnée constante depuis la mémoire ROM. Rappelons que la donnée constante est copiée dans un registre général, donc dans le chemin de données.
[[File:Architecture Harvard modifiée - implémentation du processeur.png|centre|vignette|upright=2|Architecture Harvard modifiée - implémentation du processeur]]
Avec les architectures Von Neumann, il y a un seul bus qui est relié à la fois au chemin de données et à l'unité de contrôle. Si le processeur lit une instruction, le bus doit être relié à l'unité de contrôle. Par contre, s'il accède à une donnée, il doit être relié au chemin de données (le bus d'adresse peut éventuellement être connecté au séquenceur, si celui-ci fournit l'adresse à lire). Il faut donc utiliser un paquet de multiplexeurs et de démultiplexeurs pour faire la connexion au bon endroit.
[[File:Architecture Von Neumann - implémentation du processeur.png|centre|vignette|upright=2|Architecture Von Neumann - implémentation du processeur]]
Une instruction se fait en deux temps : on charge l'instruction depuis la mémoire ROM, puis on l'exécute. Avec une architecture Harvard, tout cela se fait en un seul cycle d'horloge, vu que charger la ROM et accéder aux données peut se faire en même temps. Pas avec les architectures Von Neumann, qui doivent libérer le bus mémoire après avoir chargé une instruction. Elles n'ont pas le choix : elles chargent l'instruction lors d'un premier cycle d'horloge, puis l'exécutent lors du second.
Pour cela, ils incorporent un registre appelé le '''registre d'instruction''', qui mémorise l'instruction chargée. L'instruction est copiée dans ce registre lors du premier cycle, puis est utilisée lors du second cycle. Le registre permet de ne pas oublier l’instruction entre les deux cycles. Le registre d'instruction est obligatoire sur les architectures Von Neumann. En comparaison, il est facultatif sur les architectures Harvard. Elles peuvent en avoir un, pour des raisons techniques, mais ce n'est pas obligatoire.
[[File:Registre d'instruction.png|centre|vignette|upright=2|Registre d'instruction.]]
===Les architectures Von Neumann sont plus flexibles===
Sur les architectures Harvard, le processeur sait faire la distinction entre programme et données. Les données sont stockées dans la mémoire RAM, le programme est stocké dans la mémoire ROM. Les deux sont séparés, accédés par le processeur sur des bus séparés, et c'est ce qui permet de faire la différence entre les deux. Il est impossible que le processeur exécute des données ou modifie le programme. Du moins, tant que la mémoire qui stocke le programme est bien une ROM.
Par contre, sur les architectures Von Neumann, il est impossible de distinguer programme et données, sauf en ajoutant des techniques de protection mémoire avancées. La raison est qu'il est impossible de faire la différence entre donnée et instruction, vu que rien ne ressemble plus à une suite de bits qu'une autre suite de bits. Et c'est à l'origine d'un des avantages majeur de l'architecture Von Neumann : il est possible que des programmes soient copiés dans la mémoire RWM et exécutés dans celle-ci.
Un cas d'utilisation familier est celui de votre ordinateur personnel. Le système d'exploitation et les autres logiciels sont copiés en mémoire RAM à chaque fois que vous les lancez. Mais cet exemple implique un disque dur, ce qui rend les choses plus compliquées que prévu. Un autre exemple serait la compilation de code à la volée, mais il ne sera pas très parlant.
Un exemple plus adapté serait celui où la ROM mémorise un programme compressée dans la mémoire ROM, qui est décompressé pour être exécuté en mémoire RAM. Le programme de décompression est stocké en mémoire ROM et est exécuté au lancement de l’ordinateur. Cette méthode permet d'utiliser une mémoire ROM très petite et très lente, tout en ayant un programme rapide (si la mémoire RWM est rapide).
Il est aussi possible de créer des programmes qui modifient leurs propres instructions : cela s'appelle du '''code auto-modifiant'''. Ce genre de choses servait autrefois sur des ordinateurs rudimentaires, au tout début de l'informatique. À l'époque, les adresses à lire/écrire devaient être écrites en dur dans le programme, dans les instructions exécutées. Pour gérer certaines fonctionnalités des langages de programmation qui ont besoin d'adresses modifiables, comme les tableaux, on devait corriger les adresses au besoin avec du code auto-modifiant. De nos jours, le code automodifiant est utilisée occasionnellement pour rendre un programme indétectable dans la mémoire (les virus informatiques utilisent beaucoup ce genre de procédés).
L'impossibilité de séparer données et instructions est à l'origine de problèmes assez fâcheux. Il est parfaitement possible que le processeur charge et exécute des données, qu'il prend par erreur pour des instructions. C'est le cas quand des pirates informatiques arrivent à exploiter des bugs. Il arrive que des pirates informatiques vous fournissent des données corrompues, qui contiennent un virus ou un programme malveillant est caché dans les données. Les bugs en question permettent d'exécuter ces données, donc virus. Pour éviter cela, le système d'exploitation peut marquer certaines zones de la mémoire comme non-exécutable, c’est-à-dire que le système d'exploitation interdit d’exécution de quoi que ce soit qui est dans cette zone. Mais ce n'est pas parfait.
Toujours est-il que tout cela est impossible sur les architectures Harvard. Et ce serait très limitant. Imaginez : pas possible de lancer un programme depuis le disque dur ou une clé USB, le programme doit impérativement être dans une mémoire ROM, pas de compilation à la volée, etc. Que des techniques très utilisées dans l'informatique moderne. Malgré ses défauts, les architectures Von Neumann ne sont pas les plus utilisées pour rien. Les architectures Harvard sont concrètement utilisées uniquement dans l'informatique embarquée, sur des microcontrôleurs très spécifiques.
==Le bus de communication avec les entrées-sorties==
Le processeur, la mémoire et les entrées-sorties sont connectées par un ou plusieurs '''bus de communication'''. Ce bus n'est rien d'autre qu'un ensemble de fils électriques sur lesquels on envoie des zéros ou des uns. Pour communiquer avec la mémoire, il y a trois prérequis qu'un bus doit respecter : pouvoir sélectionner la case mémoire (ou l'entrée-sortie) dont on a besoin, préciser à la mémoire s'il s'agit d'une lecture ou d'une écriture, et enfin pouvoir transférer la donnée. Pour cela, on doit donc avoir trois bus spécialisés, bien distincts, qu'on nommera le bus de commande, le bus d'adresse, et le bus de donnée.
* Le '''bus de données''', sur lequel s'échangent les données entre les composants.
* Le '''bus de commande''' pour configurer la mémoire et les entrées-sorties.
* Le '''bus d'adresse''', facultatif, permet de préciser quelle adresse mémoire il faut lire/écrire.
Chaque composant possède des entrées séparées pour le bus d'adresse, le bus de commande et le bus de données. Par exemple, une mémoire RAM possédera des entrées sur lesquelles brancher le bus d'adresse, d'autres sur lesquelles brancher le bus de commande, et des broches d'entrée-sortie pour le bus de données. Précisons cependant que le bus de commande n'est pas exactement le même entre des mémoires RAM/ROM et des entrées-sorties.
[[File:Bus general schematic.svg|centre|vignette|upright=2|Contenu d'un bus, généralités.]]
===Le réseau d'interconnexion : généralités===
Reprenons où nous nous étions arrêté. Avant de voir les architectures Harvard et Von Neumann, nous avions dit que le processeur, les mémoires et les entrées-sorties sont reliées entre eux par un réseau d'interconnexion. Nous venons de voir qu'il est possible de mutualiser certains bus, notamment celui de la mémoire RAM et celui de la mémoire ROM. Mais il est possible de faire la même chose pour les entrées-sorties. Là encore, il est possible de regrouper le bus mémoire avec les bus pour les entrées-sorties. Voyons ce que cela implique.
{|
|[[File:Réseau d'interconnexion avec un processeur au centre.png|centre|vignette|upright=2|Réseau d'interconnexion avec une architecture Harvard.]]
|[[File:Réseau d'interconnexion avec un processeur au centre et une architecture Harvard.png|centre|vignette|upright=2|Interconnexions d'une architecture Von Neumann.]]
|}
Avant de poursuivre, nous devons préciser quelque chose d'important. Sur les ordinateurs modernes, les entrées-sorties peuvent accéder à la mémoire RAM. Les ordinateurs modernes intègrent des techniques de '''''Direct Memory Access''''' (DMA) qui permettent aux entrées-sorties de lire ou d'écrire en mémoire RAM. Les transferts DMA se font sans intervention du processeur. Ils permettent de copier un bloc de plusieurs octets, dans deux sens : de la mémoire RAM vers une entrée-sortie, ou inversement. Le DMA demande d'ajouter un circuit dédié sur la carte mère : le contrôleur DMA. Il effectue la copie d'un paquet d'octets de la RAM vers l'entrée-sortie ou dans l'autre sens.
[[File:Réseau d'interconnexion avec un processeur au centre, et direct memory access.png|centre|vignette|upright=2|Réseau d'interconnexion avec un processeur au centre, et direct memory access]]
===Les bus systèmes===
La première solution utilise un bus unique, celui-ci est appelé le '''bus système''', aussi appelé ''backplane bus''. Le bus système est connecté à la mémoire RAM, la mémoire ROM, au processeur, et aux entrées-sorties. Tous les composants présents dans l'ordinateur sont connectés à ce bus, sans exception. De tels bus avaient pour avantage la simplicité. Le processeur n'est connecté qu'à un seul bus, ce qui utilise peu de broches et économise des fils. La mutualisation des bus est totale, le câblage est plus simple, la fabrication aussi.
[[File:Architecture minimale d'un ordinateur.png|centre|vignette|upright=2|Architecture minimale d'un ordinateur.]]
Un bus système contient un bus d'adresse, de données et de commande. Un bus système se marie bien avec des entrées-sorties mappées en mémoire. La conséquence est que le bus d'adresse ne sert pas que pour l'accès à la mémoire RAM/ROM, mais aussi pour l'accès aux entrées-sorties. Il y a moyen d'implémenter un système d'adresse séparés avec, mais c'est pas l'idéal.
[[File:Architecture Von Neumann avec les bus.png|centre|vignette|upright=2|Architecture Von Neumann avec les bus.]]
Un bus système n'a pas de limitations quant aux échanges de données. Le processeur peut communiquer directement avec les mémoires et les entrées-sorties, les entrées-sorties peuvent communiquer avec la mémoire RAM, etc. Notamment, un bus système peut implémenter le ''Direct Memory Access''. Il suffit juste de connecter un contrôleur DMA sur le bus système. Le contrôleur DMA est considéré comme une entrée-sortie, ses registres sont mappés en mémoire et sont donc accessibles directement par le processeur.
[[File:Bus système avec controleur DMA.png|centre|vignette|upright=2|Bus système avec contrôleur DMA.]]
Si on suit la définition à la lettre, un bus système est systématiquement une architecture Von Neumann, vu que la mémoire ROM et la mémoire RAM sont reliées sur le bus système. La conséquence est que les circuits de décodage d'adresse sont présents. Ils sont toujours sur la carte mère, et sont plus ou moins à côté du bus système. Cependant, le décodage d'adresse est parfois étendu pour tenir compte des entrées-sorties.
Les entrées-sorties soudées sur la carte mère ont elles aussi des entrées ''Chip Select'' ou quelque chose de similaire. Le décodage d'adresse peut alors les activer ou les désactiver suivant l'adresse envoyée sur le bus d'adresse. C'est ce qui arrive quand le processeur écrit dans un registre d’interfaçage : il envoie l'adresse de ce registre sur le bus d'adresse, le circuit de décodage d'adresse active seulement l'entrée-sortie associée. Il faut noter que ce n'est pas systématique, il existe des techniques pour se passer de décodage d'adresse. Mais nous en reparlerons dans le chapitre sur les bus de communication.
[[File:Chipselectfr.png|centre|vignette|upright=1.5|Exemple détaillé.]]
Les bus systèmes sont certes très simples, mais ils ont aussi des désavantages. Par exemple, il faut éviter que le processeur et les entrées-sorties se marchent sur les pieds, ils ne peuvent pas utiliser le bus en même temps. De tels conflits d'accès au bus système sont fréquents et ils réduisent la performance, comme on le verra dans le chapitre sur les bus. De plus, un bus système a le fâcheux désavantage de relier des composants allant à des vitesses très différentes : il arrivait fréquemment qu'un composant rapide doive attendre qu'un composant lent libère le bus. Le processeur était le composant le plus touché par ces temps d'attente.
Elle était utilisée sur les tout premiers ordinateurs, pour sa simplicité. Elle était parfaitement adaptée aux anciens composants, qui allaient tous à la même vitesse. De nos jours, les ordinateurs à haute performance ne l'utilisent plus trop, mais elle est encore utilisée sur certains systèmes embarqués, en informatique industrielle dans des systèmes très peu puissants.
===Les bus d'entrées-sorties===
Les bus systèmes ont de nombreux problèmes, ce qui fait que d'anciens ordinateurs faisaient autrement. À la place d'un bus système unique, ils utilisent un bus séparé pour les mémoires, et un autre séparé pour les entrées-sorties. Le bus spécialisé pour la mémoire est appelé le '''bus mémoire''', l'autre bus est appelé le '''bus d'entrées-sorties'''. Le bus mémoire est généralement relié à la fois à la mémoire RAM et à la mémoire ROM, les exceptions ne sont pas rares, cependant.
[[File:Bus mémoire séparé du bus pour les IO.png|centre|vignette|upright=2|Bus mémoire séparé du bus pour les IO]]
Les bus d'entrée-sorties peuvent être spécialisés et simplifiés. Par exemple, ils peuvent avoir un bus de commande différent de celui de la mémoire, qui utilise nettement moins de fils. Le bus d'adresse peut aussi être réduit, et utiliser des adresses plus courtes que celles du bus mémoire. Les bus de données peuvent aussi être de taille différentes. Il est ainsi possible d'avoir un bus mémoire capable de lire/écrire 64 bits à la fois, alors que la communication avec les entrées-sorties se fait octet par octet ! En général, les bus d'entrée-sortie sont assez petits, ils ont une taille de 8 ou 16 bits, même si le bus mémoire est plus grand. Cela permet de ne pas gaspiller trop de broches. Ajouter un bus d'entrée-sortie n'est donc pas très gourmand en broches et en fils.
: Il est en théorie possible d'avoir une fréquence différente pour les deux bus, avec un bus mémoire ultra-rapide et un bus pour les entrées-sorties est un bus moins rapide. Mais il faut que le processeur soit prévu pour, et c'est très rare.
Niveau performances, le processeur peut théoriquement accéder à la mémoire en attendant qu'une entrée/sortie réponde, mais il faut que le processeur soit prévu pour, et ce n'est pas de la tarte. Par contre, cela implique d'avoir des adresses séparées pour les registres d’interfaçage et la mémoire. En clair : pas d'entrée-sortie mappée en mémoire ! Un autre problème est que les entrées-sorties ne peuvent pas communiquer avec la mémoire directement, elles doivent passer par l'intermédiaire du processeur. En clair : pas de ''Direct Memory Access'' ! Les deux sont des défauts rédhibitoires pour les programmeurs système, notamment pour ceux qui codent les pilotes de périphériques.
Pour résumer, les défauts sont assez problématiques : pas d'entrées-sorties mappées en mémoire, pas de ''Direct Memory Access'', économie de broches limitée. Les deux premiers sont des défauts majeurs, qui font que de tels bus ne sont pas utilisés dans les ordinateurs modernes. À la place, ils utilisent une troisième solution, distincte des bus systèmes et des bus d'entrée-sorties.
===Les bus avec répartiteur===
Il existe une méthode intermédiaire, qui garde deux bus séparés pour la mémoire et les entrées-sorties, mais élimine les problèmes de brochage sur le processeur. L'idée est d'intercaler, entre le processeur et les deux bus, un '''circuit répartiteur'''. Il récupère tous les accès et distribue ceux-ci soit sur le bus mémoire, soit sur le bus des périphériques. Le ou les répartiteurs s'appellent aussi le '''''chipset''''' de la carte mère.
C'était ce qui était fait à l'époque des premiers Pentium. À l'époque, la puce de gestion du bus PCI faisait office de répartiteur. Elle mémorisait des plages mémoires entières, certaines étant attribuées à la RAM, les autres aux périphériques mappés en mémoire. Elles utilisaient ces plages pour faire la répartition.
[[File:IO mappées en mémoire avec séparation des bus.png|centre|vignette|upright=2|IO mappées en mémoire avec séparation des bus]]
Niveau adresses des registres d'interfacage, il est possible d'avoir soit des adresses unifiées avec les adresses mémoire, soit des adresses séparées.
L'usage d'un répartiteur ne pose pas de problèmes particuliers pour implémenter le DMA. La seule contrainte est que le contrôleur DMA soit intégré dans le répartiteur. Les échanges entre IO et mémoire passent par le répartiteur, qui fait le pont entre bus mémoire et bus des IO.
[[File:Implémentation du DMA avec un répartiteur.png|centre|vignette|upright=2|Implémentation du DMA avec un répartiteur]]
==Les microcontrôleurs et ''system on chip''==
Parfois, on décide de regrouper la mémoire, les bus, le CPU et les ports d'entrée-sortie dans un seul circuit intégré, un seul boitier. L'ensemble forme alors ce qu'on appelle un '''''System on Chip''''' (système sur une puce), abrévié en SoC. Le nom est assez explicite : un SoC comprend un système informatique complet sur une seule puce de silicium, microprocesseurs, mémoires et périphériques inclus. Ils incorporent aussi des ''timers'', des compteurs, et autres circuits très utiles.
[[File:ARMSoCBlockDiagram.svg|centre|vignette|upright=2|SoC basé sur un processeur ARM, avec des entrées-sorties typiques de celles d'un µ-contrôleur. Le support du bus CAN, d'Ethernet, du bus SPI, d'un circuit de PWM (génération de signaux spécifiques), de convertisseurs analogique-digital et inverse, sont typiques des µ-contrôleurs.]]
Le terme SoC regroupe des circuits imprimés assez variés, aux usages foncièrement différents et à la conception distincte. Les plus simples d’entre eux sont des microcontrôleurs, qui sont utilisés pour des applications à base performance. Les plus complexes sont utilisés pour des applications qui demandent plus de puissance, nous les appellerons SoC haute performance.
La relation entre SoC et microcontrôleurs est assez compliquée à expliquer, la terminologie n'est pas clairement établie. Il existe quelques cours/livres qui séparent les deux, d'autres qui pensent que les deux sont très liés. Dans ce cours, nous allons partir du principe que tous les systèmes qui regroupent processeur, mémoire et quelques périphériques/entrées-sorties sont des SoC. Les microcontrôleurs sont donc un cas particulier de SoC, en suivant cette définition.
===Les microcontrôleurs===
Les '''microcontrôleurs''' sont des composants utilisés dans l'embarqué ou d'informatique industrielle. Leur nom trahit leur rôle. Ils sont utilisés pour contrôler de l'électroménager, des chaines de fabrication dans une usine, des applications robotiques, les alarmes domestiques, les voitures. De manière générale, on les trouve dans tous les systèmes dits embarqués et/ou temps réel. Ils ont besoin de s'interconnecter à un grand nombre de composants et intègrent pour cela un grand nombre d'entrée-sorties. Les microcontrôleurs sont généralement peu puissants, et doivent consommer peu d'énergie/électricité.
Fait amusant, on en trouve dans certains périphériques informatiques. Par exemple, les anciens disques durs intégraient un microcontrôleur qui contrôlait plusieurs moteurs/ Les moteurs pour faire tourner les plateaux magnétiques et les moteurs pour déplacer les têtes de lecture/écriture étaient commandés par ce microcontrôleur. Comme autre exemple, les claviers d'ordinateurs intègrent un microcontrôleur connecté aux touches, qui détecte quand les touches sont appuyées et qui communique avec l'ordinateur. Nous détaillerons ces deux exemples dans les chapitres dédiés aux périphériques et aux disques durs, tout deviendra plus clair à ce moment là. La majorité des périphériques ou des composants internes à un ordinateur contiennent des microcontrôleurs.
[[File:Microcontroller 8051.gif|centre|vignette|upright=2.5|Microcontrôleur Intel 8051.]]
Un microcontrôleur tend à intégrer des entrées-sorties assez spécifiques, qu'on ne retrouve pas dans les SoC destinés au grand public. Un microcontrôleur est typiquement relié à un paquet de senseurs et son rôle est de commander des moteurs ou d'autres composants. Et les entrées-sorties intégrées sont adaptées à cette tâche. Par exemple, ils tendent à intégrer de nombreux convertisseurs numériques-analogiques pour gérer des senseurs. Ils intègrent aussi des circuits de génération de signaux PWM spécialisés pour commander des moteurs, le processeur peut gérer des calculs trigonométriques (utiles pour commander la rotation d'un moteur), etc.
[[File:C8051F340-9 A B C D.png|centre|vignette|upright=2|Exemple d'entrées-sorties intégrées à un microcontroleur.]]
En plus des entrées-sorties intégrées, les microcontrôleurs ont souvent des '''ports d'entrées-sorties''' banalisés, à savoir qu'on peut brancher n'importe quoi dessus. Il était possible de brancher un capteur de température, un moteur à commander, un port série, un port parallèle, un écran, un clavier, une souris, peu importe.
Les ports banalisés de ce type sont parfois appelés des '''GPIO''', abréviation de ''General Purpose Input/Output''. Un port regroupe plusieurs broches d'entrée-sortie, qui peuvent être utilisés à volonté. De telles broches sont généralement reliées directement ou indirectement au processeur, qui décide quoi envoyer sur des broches et comment interpréter ce qui est reçu dessus (le logicel sur le processeur, du moins). Un port IO peut fonctionner soit en tant qu'entrée, soit en tant que sortie. Il est possible de changer de sens en cours de fonctionnement, pour passer d'une entrée à une sortie ou inversement.
===Les SoC haute performance===
Les SoC les plus performants sont actuellement utilisés dans les téléphones mobiles, tablettes, ''Netbook'', ''smartphones'', ou tout appareil informatique grand public qui ne doit pas prendre beaucoup de place. La petite taille de ces appareils fait qu'ils gagnent à regrouper toute leur électronique dans un circuit imprimé unique. Mais les contraintes font qu'ils doivent être assez puissants. Ils incorporent des processeurs assez puissants, surtout ceux des ''smartphones''. C'est absolument nécessaire pour faire tourner le système d'exploitation du téléphone et les applications installées dessus.
Niveau entrées-sorties, ils incorporent souvent des interfaces WIFI et cellulaires (4G/5G), des ports USB, des ports audio, et même des cartes graphiques pour les plus puissants d'entre eux. Les SoC incorporent des cartes graphiques pour gérer tout ce qui a trait à l'écran LCD/OLED, mais aussi pour gérer la caméra, voire le visionnage de vidéo (avec des décodeurs/encodeurs matériel). Par exemple, les SoC Tegra de NVIDIA incorporent une carte graphique, avec des interfaces HDMI et VGA, avec des décodeurs vidéo matériel H.264 & VC-1 gérant le 720p. Pour résumer, les périphériques sont adaptés à leur utilisation et sont donc foncièrement différents de ceux des microcontrôleurs.
[[File:Phone hardware.png|centre|vignette|upright=2|Hardware d'un téléphone. On voit qu'il est centré autour d'un SoC, complété par de la RAM, un disque dur de faible capacité, de quoi gérer les entrées utilisateurs (l'écran tactile, les boutons), et un modem pour les émissions téléphoniques/2G/3G/4G/5G.]]
Un point important est que les processeurs d'un SoC haute performance sont... performants. Ils sont le plus souvent des processeurs de marque ARM, qui sont différents de ceux utilisés dans les PC fixe/portables grand public qui sont eux de type x86. Nous verrons dans quelques chapitres en quoi consistent ces différences, quand nous parlerons des jeux d'instruction du processeur. Autrefois réservé au monde des PCs, les processeurs multicœurs deviennent de plus en plus fréquents pour les SoC de haute performance. Il n'est pas rare qu'un SoC incorpore plusieurs cœurs. Il arrive même qu'ils soient foncièrement différents, avec plusieurs cœurs d'architecture différente.
La frontière entre SoC haute performance et microcontrôleur est de plus en plus floue. De nombreux appareils du quotidien intègrent des SoC haute performance, d'autres des microcontrôleurs. Par exemple, les lecteurs CD/DVD/BR et certains trackers GPS intègrent un SoC ou des processeurs dont la performance est assez pêchue. À l'opposé, les systèmes domotiques intègrent souvent des microcontrôleurs simples. Malgré tout, les deux cas d'utilisation font que le SoC/microcontrôleur est connecté à un grand nombre d'entrées-sorties très divers, comme des capteurs, des écrans, des LEDs, etc.
[[File:GPS tracker Hardware Architecture.png|centre|vignette|upright=2|Hardware d'un tracker GPS.]]
==Étude de quelques exemples d'architectures==
Après avoir vu la théorie, nous allons voir des exemples réels d'ordinateurs. Dans ce qui suit, nous allons voir des ordinateurs assez anciens, pour une raison simple : ils collent assez bien à l''''architecture de base''' vue plus haut, avec un CPU, une RAM et une ROM, quelques entrées-sorties. Tous les ordinateurs modernes, mais aussi dans les smartphones, les consoles de jeu et autres, utilisent une architecture grandement modifiée et améliorée, avec un grand nombre de périphériques, disques durs/SSD, un grand nombre de mémoires différentes, etc.
Il pourrait sembler pertinent d’étudier des microcontrôleurs ou des ''System On Chip'', en premier lieu. Mais nous éviterons soigneusement de tels systèmes pour le moment. La raison est qu'ils ont un grand nombre d'entrées-sorties, qui sont peu familières. Attendez-vous à avoir près d'une vingtaine ou centaine d'entrée-sorties différentes pour de tels systèmes. Le tout est très complexe, bien trop pour un premier exemple. À la place, nous allons voir précisément des exemples plus simples : les premiers PC, et des consoles de jeu 8 et 16 bits.
Bien que ce soit des systèmes très simples, ils sont cependant plus complexes que l'architecture de base. Et leur avantages/désavantages sont un peu inverse l'un de l'autre. Si on devait résumer les différences, on aurait ceci :
* Les PC ont plus d'entrées-sorties que les consoles, bien que nettement moins que pour les microcontrôleurs/SoC.
* Les PC utilisent des disques durs, les consoles font avec soit des cartouches de jeu, soit des CD/DVD.
* Les PC utilisent des cartes électroniques séparées pour le son et l'écran, les consoles utilisent des circuits soudés sur la carte mère, qui sont souvent des co-processeurs.
* Les PC ont une mémoire ROM soudées sur la carte mère, les consoles 8 bits font sans.
Les PC et micro-ordinateurs ont plus d'entrées-sorties que les consoles. Même si on mets de côté les périphériques, ils ont aussi beaucoup de composants soudées sur la carte mère. En comparaison, les consoles de jeu 8/16 bits se débrouillent avec : une cartouche de jeu et une manette en entrée, une sortie vidéo et une sortie son.
Un autre point important est l'absence de disque dur ou de lecteur CD. La présence d'un disque dur ou d'un lecteur CD/DVD complexifie tout de suite l'architecture des PC. Il faut leur réserver un bus dédié ou les connecter à un bus système, cela demande d'ajouter des circuits sur la carte mère, etc. Et surtout, il faut expliquer comment l'ordinateur exécute des programmes, ce qui demande de parler de l'interaction avec le disque dur et la ROM du BIOS. Rien de tout cela sur les consoles de jeu 8 et 16 bits. Elles utilisent à la place des cartouches de jeu, qui intègrent une mémoire ROM, pour mémoriser les données du jeu, voire son code. Pas besoin de parler des mémoires de stockage, on est beaucoup plus proche de l'architecture de base avec une ROM unique.
Par contre, n'allez pas croire que tout est rose avec les consoles 8/16 bits. Il y a quelques différences qui font qu'elles sont plus complexes qu'un PC sur certains points.
Les PC utilisent des cartes électroniques à brancher sur la carte mère pour alimenter l'écran et les hauts-parleurs/casques, alors que les consoles de jeu utilisent des souvent co-processeurs dédiés pour le son et les graphismes. La différence parait mineure, mais elle avantage les consoles. Nous avons déjà expliqué ce que sont les co-processeurs plus haut, aussi les co-processeurs des consoles nous paraitrons familiers. On n'a pas à s’embêter à expliquer ce que sont les cartes d'extension, les bus associés et tout ce qui va avec, cela peut être retardé pour la section sur l'architecture des PC.
La gestion de la cartouche de jeu est aussi un peu subtile à comprendre, bien que ce soit bien plus simple à comprendre qu'un système avec un disque dur. Les cartouches de jeu intègrent une mémoire ROM, pour mémoriser les données du jeu, voire son code. Et le processeur doit exécuter le code depuis cette mémoire ROM. La conséquence est que les consoles 8/16 bits utilisent une architecture Harvard, avec un bus relié à la cartouche pour lire les instructions. Mais si ce n'était que ça... Les cartouches mémorisent aussi les données pour les graphismes, ce qui fait que le co-processeur vidéo doit lui aussi lire la cartouche pour récupérer ces données...
===L'architecture de la TurboGraphX-16===
La console PC Engine, aussi appelée TurboGraphX, est une ancienne console 8 bits. Elle contient un processeur 65C02, 8 kibioctets de RAM, un port manettes, une carte son et une carte vidéo. La '''carte son''' est le composant qui s'occupe de commander les haut-parleurs et de gérer tout ce qui a rapport au son. La '''carte graphique''' est le composant qui est en charge de calculer les graphismes, tout ce qui s'affiche à l'écran. Sur cette console, les cartes son et graphique ne sont PAS des co-processeurs, ce sont des circuits électroniques dits fixes. C'est totalement différent de ce qu'on a sur les consoles modernes, aussi le préciser est important.
Bien que la carte graphique ne soit pas un processeur, elle a 64 kibioctets de RAM rien que pour elle. La RAM en question est séparée de la RAM normale, c'est un circuit intégré séparé. Et c'est un cas très fréquent, qui reviendra par la suite. La majeure partie des cartes graphiques dispose de leur propre '''mémoire vidéo''', totalement réservée à la carte graphique. La RAM vidéo est connectée à la carte graphique via un bus séparé. Le processeur est souvent connecté à ce bus, afin de pouvoir écrire des données dedans, mais ce n'est pas le cas ici.
[[File:Architecture de la PC Engine, aussi appelée TurboGrafx-16.png|centre|vignette|upright=2.5|Architecture de la PC Engine, aussi appelée TurboGrafx-16]]
L'architecture de la console était particulièrement simple. Le processeur était le centre de l'architecture, tout était connecté dessus. Il y a un bus pour la cartouche de jeu, un autre pour la RAM, un autre pour les manettes, un autre pour carte son, et un dernier pour la carte graphique. Le fait d'avoir un bus par composant est assez rare et ce n'est le cas ici que parce des conditions particulières sont remplies. Déjà, il y a peu d'entrée-sorties. Ensuite, les bus font tous 8 bits, vu que le processeur est un CPU 8 bits. Avec 5 connexions de 8 bits, le tout utilise 40 broches, ce qui est beaucoup, mais totalement gérable. Par contre, les choses changerons pour les autres consoles.
Au final, l'organisation des bus peut s'expliquer avec ce qu'on a vu dans la section sur les bus de communication. La console utilise une architecture Harvard, car la ROM et la RAM utilisent des bus différents. De plus, il y a des bus dédiés aux entrées-sorties, séparés des bus mémoire. Enfin, la carte graphique a droit à ses propres bus pour lire dans la cartouche et dans sa RAM vidéo dédiée.
===L'architecture de la console de jeu NES===
Maintenant, nous allons voir la console de Jeu Famicom, aussi appelée la NES en occident. Elle a une architecture centrée sur un processeur Ricoh 2A03, similaire au processeur 6502, un ancien processeur autrefois très utilisé et très populaire. Le processeur est associé à 2 KB de mémoire RAM.
Sur certaines cartouches, on trouve une RAM utilisée pour les sauvegardes, qui est adressée par le processeur directement. Première variation par rapport à l'architecture de la console précédente : l'ajout de la RAM pour les sauvegardes dans les cartouches.
Niveau carte graphique, une différence importante est que la carte graphique est connectée à la cartouche de jeu via un autre bus, afin de pouvoir lire les sprites et textures du jeu dans la cartouche.
[[File:Architecture de la NES.png|centre|vignette|upright=2.5|Architecture de la NES]]
La différence avec l'architecture précédente est que des bus ont été fusionnés. Comme dit plus haut, le système utilise une architecture Harvard, vu que la ROM est dans la cartouche, alors que la RAM est soudée à la carte mère. Par contre, la Famicon utilise un bus dédié aux entrées-sorties. Il est utilisé pour la carte son et la carte graphique, seules les manettes sont sur un bus à part. Ce qui fait qu'on devrait plutôt parler de bus de sorties, mais passons... L'essentiel est qu'on n'est plus tout à fait dans le cas de la console précédente, avec un bus par composant.
===L'architecture de la SNES===
L'architecture de la SNES est illustrée ci-dessous. Les changements pour le processeur et la RAM sont mineurs.La RAM a augmenté en taille et passe à 128 KB. Pareil pour la RAM de la carte vidéo, qui passe à 64 KB. Par contre, on remarque un changement complet au niveau des bus, de la carte graphique et de la carte son.
[[File:Architecture de la SNES.png|centre|vignette|upright=2|Architecture de la SNES]]
La console utilise un '''bus système unique''', sur lequel tout est connecté : ROM, RAM, entrées-sorties, etc. La seule exception est pour les manettes, qui sont encore connectées directement sur le processeur, via un bus séparé. La transition vers un bus système s'explique par le fait que la console est maintenant de 16 bits, ce qui fait que les bus doivent être plus larges. Le processeur adresse des mémoires RAM et ROM plus grandes, ce qui double la taille de leurs bus. De plus, les entrées-sorties aussi ont besoin d'un bus plus large. Le processeur n'ayant pas un nombre illimité de broches, la seule solution est de fusionner les bus en un seul bus système.
Un autre changement est que la carte graphique est maintenant composée de deux circuits séparés. Encore une fois, il ne s'agit pas de coprocesseurs, mais de circuits non-programmables. Par contre, la carte son est remplacée par deux coprocesseurs audio ! De plus, les deux processeurs sont connectés à une mémoire RAM dédiée de 64 KB, comme pour la carte graphique. L'un est un processeur 8 bits (le DSP), l'autre est un processeur 16 bits.
Un point très intéressant : certains jeux intégraient des coprocesseurs dans leurs cartouches de jeu ! Par exemple, les cartouches de Starfox et de Super Mario 2 contenait un coprocesseur Super FX, qui gérait des calculs de rendu 2D/3D. Le Cx4 faisait plus ou moins la même chose, il était spécialisé dans les calculs trigonométriques, et diverses opérations de rendu 2D/3D. En tout, il y a environ 16 coprocesseurs d'utiliser et on en trouve facilement la liste sur le net. La console était conçue pour, des pins sur les ports cartouches étaient prévues pour des fonctionnalités de cartouche annexes, dont ces coprocesseurs. Ces pins connectaient le coprocesseur au bus des entrées-sorties. Les coprocesseurs des cartouches de NES avaient souvent de la mémoire rien que pour eux, qui était intégrée dans la cartouche.
===L'architecture de la Megadrive et de la néo-géo===
Passons maintenant à la console de jeu Megadrive, une console 16 bits. Elle a une architecture similaire à celle de la néo-géo, une autre console bien plus puissante, sorti à peu près en même temps. Elles intègrent deux processeurs : un Motorola 68000 qui sert de processeur principal, un Z80 qui sert de processeur dédié à l'audio. Le Z80 et le Motorola 68000 étaient deux processeurs très populaires à l'époque. Le Z80 est une sorte de version améliorée de l'Intel 8088 utilisé sur les anciens PC et de nombreuses consoles utilisaient des Z80 comme processeur principal. Il était familier pour les programmeurs de l'époque, pour son cout réduit, sa bonne disponibilité, et bien d'autres avantages liés à sa production de masse.
Le Z80 est utilisé comme co-processeur audio. Il commande un synthétiseur sonore, et est relié à sa propre mémoire, distincte de la mémoire principale. Le MC68000 est le processeur principal et a une relation maitre-esclave avec le Z80 : le MC68000 envoie des commandes au Z80, mais la communication ne va pas dans l'autre sens.
Le Motorola 68000 était un processeur 16 bits, alors que le Z80 est un processeur 8 bits. Et cette différence fait que l'on ne peut pas connecter directement les deux sur le même bus, ou du moins pas facilement. La solution retenue est d'utiliser deux bus séparés : un bus de 16 bits connecté au 68000, un bus de 8 bits connecté au Z80. Le premier bus est un bus système sur lequel est connecté le 68000, 64 kibioctets de RAM, la cartouche de jeu, et la carte graphique. Le second bus est un bus de 8 bits, plus court, relié au Z80, à un synthétiseur sonore, et 8 kibioctets de RAM
Les deux bus sont connectés à un '''''chipset''''', un circuit répartiteur, qui fait le pont entre les deux bus. Les manettes sont connectées sur le ''chipset''. Il contient un registre de 8 bits, dans lequel le MC68000 peut écrire dedans à sa guise, le registre étant adressable par le processeur. Lorsque le MC68000 écrit une valeur dedans, cela déclenche l’exécution automatique d'un programme pré-déterminé sur le Z80.
: Pour ceux qui savent ce qu'est une interruption, les valeurs écrites dans ce registre sont des numéros d'interruption, qui indiquent quelle routine d'interruption exécuter.
[[File:Architecture de la Megadrive et de la Néogeo.png|centre|vignette|upright=2.5|Architecture de la Megadrive et de la Néogeo]]
Cet exemple nous montre que les bus systèmes sont certes très simples, mais aussi inflexibles. Ils fonctionnent bien quand les composants branchés dessus sont tous des composants 8 bits, ou sont tous de 16 bits, ou tous 32 bits. Mais dès qu'on mélange composants 8, 16, 32 ou 64 bits, les choses deviennent plus compliquées. Il est alors préférable d'utiliser des bus séparés, avec des répartiteurs pour faire le pont entre les différents bus. Et nous verrons que le problème s'est posé lui aussi sur les PC.
===L'architecture des anciennes consoles Playstation : beaucoup de co-processeurs===
Les consoles que nous venons d'aborder étaient des consoles 8 ou 16 bits. A partir des consoles 32 bits, leur architecture s'est rapprochée de celle des PC, avec un usage plus complexes de répartiteurs. La XBOX était très semblable à un PC : le processeur était un Pentium 3 modifié, la carte graphique était une Geforce 3 modifiée, les 64 mébioctets de RAM était la même mémoire DDR que celle des PC, le répartiteur secondaire était un ''chipset'' nForce de NVIDIA, etc. Mais les Playstation 1, 2 et 3 se distinguent de leur contemporains. Elles disposent de très nombreux co-processeurs, qui sont en plus très variés.
La Playstation 1 a été une des premières console à utiliser les CD-ROM comme support de stockage, en remplacement des cartouches. La conséquence est que la console contient une mémoire ROM, soudée à la carte mère, de 512 kibioctets. Elle contient aussi 2 mébioctets de RAM, une carte graphique avec 1 mébioctet de mémoire vidéo, un processeur, et de quoi gérer les périphériques. Il y a un co-processeur audio spécialisé, avec 512 kibioctets de RAM, ce qui nous est familier. Par contre, les autres co-processeurs ne le sont pas.
Déjà, le lecteur de CD-ROM est associé à des circuits sur la carte mère, il y a tout un sous-système dédié au lecteur de CD. Il y a un contrôleur qui sert d'interface avec le lecteur proprement dit, mais aussi deux co-processeurs audio et 32 kibioctets de RAM. Les co-processeurs audio servent à lire des CD sans trop utiliser le second co-processeur audio, ils lui servent de complément.
Ensuite, le processeur incorpore plusieurs cœurs, avec un cœur principal et plusieurs co-processeurs. Le premier est un co-processeur système, qui est utilisé pour gérer la mémoire cache intégrée au processeur, pour des fonctionnalités appelées interruptions et exceptions, ainsi que pour configurer le processeur. Le second est un co-processeur arithmétique spécialisé dans les calculs en virgule flottante, très importants pour le rendu 3D. Enfin, il y a un décodeur vidéo, qui n'est pas un co-processeur, mais un circuit non-programmable, spécialisé dans le décodage vidéo. De nos jours, ce circuit aurait été intégré dans la carte graphique, mais il était intégré dans le processeur sur la Playstation 2.
Pour le reste, le processeur est la figure centrale de la console. Il est connecté à 4 bus : un pour la RAM, un pour la carte graphique, un pour les manettes, un autre pour le reste. Le dernier bus est connecté au système audio et au système pour le lecteur CD. Ce serait un bus d'entrée-sortie, s'il n'était pas connecté à la mémoire ROM. Vous avez bien lu : la mémoire ROM est reliée au bus d'entrée-sortie.
[[File:Architecture de la Playstation.png|centre|vignette|upright=2.5|Architecture de la Playstation]]
La Playstation 2 est composé d'un processeur, couplé à 32 Mébioctets de RAM, et d'un paquet de co-processeurs. Plus de co-processeurs que la PS1. Le processeur principal n'est pas la même que celui de la PS1, mais il a une architecture similaire. Il intègre un décodeur vidéo sur le même circuit intégré, ainsi que deux co-processeur. Les co-processeurs ne sont cependant pas les mêmes.
Le co-processeur système disparait et est remplacé par un second co-processeur arithmétique. Les deux co-processeurs arithmétiques sont spécialisés dans les nombres flottants, avec quelques différences entre les deux. Par exemple, le second co-processeur gérait des calculs trigonométriques, des exponentielles, des logarithmes, et d'autres fonctions complexes du genre ; mais pas le premier co-processeur. Ils sont reliés à 4 kibioctets de RAM pour le premier, 16 kibioctets de RAM pour le second ; qui sont intégrées dans le processeur et non-représentés dans le diagramme ci-dessous.
La PS2 intègre aussi un co-processeur d'entrées-sorties. Pour information, il s'agit du processeur principal de la Playstation 1, qui est ici utilisé différemment, suivant que l'on place un jeu PS1 ou PS1 dans la console. Si on met un jeu PS1, il est utilisé pour émuler la Playstation 1, afin de faire tourner le jeu PS1 sur la PS2. Si on met un jeu PS2, il est utilisé comme co-processeur d'entrée-sortie et fait l'interface entre CPU et entrées-sorties. Il est relié à 2 mébioctets de RAM, soit exactement la même quantité de mémoire que la Playstation 1.
Tous les périphériques sont connectés au co-processeur d'entrées-sortie. Pour cela, le co-processeur d'entrées-sortie est relié à deux bus dédiés aux périphériques. Le premier bus est relié aux manettes, aux ports USB et aux ports pour cartes mémoires. Le second bus est relié à la carte son, la carte réseau, le lecteur DVD, et un port PCMIA. Notons que la carte son intègre un co-processeur audio, qui n'est pas représenté dans le diagramme ci-dessous.
[[File:Playstation 2 architecture.png|centre|vignette|upright=2.5|Playstation 2 architecture]]
==L'architecture des PC et son évolution==
Après avoir vu les consoles, nous allons maintenant voir les anciens PC, des années 80 ou 90. Le tout premier PC était techniquement l''''IBM PC'''. Par la suite, de nombreux ordinateurs ont tenté de reproduire l'IBM PC originel, avec parfois quelques modifications mineures. De tels ordinateurs ''IBM PC compatibles'', ont été très nombreux, pour des raisons diverses. Le fait d'utiliser des composants banalisés, facilement disponibles, ainsi qu'une bonne documentation de l'IBM PC originel, a grandement aidé. Les IBM PC compatibles ont progressivement évolué pour donner les PC actuels. L'IBM PC compatible a donné naissance à de nombreux standards divers.
===L'IBM PC originel et l'IBM PC XT===
[[File:IBM PC XT 02.jpg|vignette|IBM PC XT.]]
Nous allons commencer par voir l'IBM PC originel, et son successeur : l'IBM Personal Computer XT. Nous les appelerons tous deux l'IBM PC. L'IBM PC utilisait un processeur Intel 8088, qui était un processeur 8 bits. Ils utilisaient un bus système unique, appelé le '''bus XT'''. Le bus système allait à 4.77 MHz, soit la même fréquence que le processeur. C'était un bus de 8 bits, ce qui collait parfaitement avec les processeurs 8 bits commercialisés par Intel à l'époque.
L'IBM PC comprenait une mémoire ROM avec de quoi faire fonctionner le PC. La ROM en question contenait un programme minimal, appelé le '''BIOS''', sans lequel le PC ne fonctionnait pas du tout. Il servait de base pour le système d'exploitation et MS-DOS ne fonctionnait pas sans elle. De nos jours, son rôle est plus limité : sans elle, le PC ne démarre pas. Mais nous détaillerons cela dans le prochain chapitre.
En plus de la ROM pour le BIOS, l'IBM PC avait quatre mémoires ROM dédiée au langage de programmation BASIC. Lorsque le PC démarrait, il ne bootait pas un système d'exploitation, mais lançait l'interpréteur pour le langage BASIC. De nos jours, ce serait l'équivalent d'un ordinateur qui boote directement sur du Python, à savoir la console Python que vous avez peut-être déjà utilisé si vous avez testé Python. Ceux qui ont déjà touché à un ordinateur de l'époque savent ce que ca veut dire, mais c'est malheureusement très difficile à expliquer sans ce genre d'expérience. Toujours est-il que c'était une sorte de norme à l'époque
: les ordinateurs bootaient généralement sur un interpréteur BASIC.
[[File:XT Bus pins.svg|vignette|Connecteur du bus XT.]]
Les PC étaient conçus pour qu'on branche des '''cartes d'extension''', à savoir des cartes électroniques qu'on branchait sur la carte mère, à l'intérieur du PC. Les cartes d'extension de l'époque étaient surtout des cartes son ou des cartes graphiques, mais aussi des cartes pour brancher des péripéhriques. par exemple, on pouvait ajouter deux cartes graphiques dans l'IBM PC originel : l'''IBM Monochrome Display Adapter'' et/ou la ''IBM Color Graphics Adapter''. De nos jours, les cartes son sont intégrées à la carte mère, mais les cartes graphiques sont restées des cartes d'extension.
Les cartes d'extension étaient branchées sur un '''connecteur XT''', qui était directement relié au bus XT. Le connecteur XT est illustré ci-contre, mais ne vous en souciez pas trop pour le moment. La carte mère de l'IBM PC avait 5 connecteurs de ce type, qu'on pouvait peupler avec autant de cartes d'extension. L'IBM Personal Computer XT est passé à 8 connecteurs XT, soit trois de plus.
Pour ce qui est des périphériques, l'IBM PC avait plusieurs connecteurs : un port série, un port parallèle, un port pour le clavier, et un port pour un lecteur cassette. Le clavier et le lecteur cassette étaient connectés directement sur la carte mère, qui contenait quelques circuits pour gérer le clavier. Par contre, les deux premiers n'étaient pas connectés à la carte mère. Le port série était en réalité une carte d'extension, branchée sur un connecteur XT. Et il en est de même pour le port parallèle.
Pour ce qui est des supports de stockage, l'IBM PC originel n'avait pas de disque dur et n'avait que des lecteurs de disquette. De plus, le lecteur de disquette n'était pas connecté directement sur la carte mère, mais était connecté à une carte d'extension, branchée sur un connecteur XT. La carte d'extension avait deux connecteurs, un par lecteur de disquette, ce qui fait que les deux lecteurs de disquettes pouvaient être branchés sur une seule carte d'extension. L'IBM Personal Computer XT a ajouté un disque dur, sauf sur quelques sous-modèles spécifiques.
Le PC avait aussi un petit haut-parleur capable de faire des bips.
Pour résumer, l'IBM PC originel se reposait beaucoup sur les cartes d'extension, sa carte mère contenait peu de choses. Enfin, peu de choses... Il y avait un processeur Intel 8088, éventuellement un coprocesseur flottant 8087, de la RAM, de la ROM, et des circuits intégrés assez divers. En voici la liste, certains vous seront familiers, d'autres vous seront inconnus à ce stade du cours :
* les circuits de décodage d'adresse ;
* un contrôleur DMA intel 8273 ;
* un contrôleur d'interruption 8259 ;
* un contrôleur de bus Intel 8288 pour gérer le bus XT ;
* un générateur d'horloge Intel 8284 et un diviseur de fréquence ;
* un ''timer'' Intel 8253, le même que celui étudié dans le chapitre sur les ''timers'' ;
* un contrôleur parallèle 8255.
Les multiplexeurs, registres et portes logiques, sont des circuits de décodage d'adresse, qui permettent de combiner plusieurs RAM en une seule, idem avec la mémoire ROM. Si vous verrez qu'il y a 5 mémoires ROM : une ROM pour le BIOS, et quatre autres ROM pour le BASIC. Les 4 ROM du BASIC sont combinées en une seule mémoire ROM. Pour les RAM, il y en a 8 à 32, qui sont combinées en une seule RAM de 16 à 64 kibioctets.
[[File:IBM 5150 Motherboard.svg|centre|vignette|upright=3|Carte mère de l'IBM 5150, un modèle de l'IBM PC.]]
===L'architecture d'un IBM PC compatible 16 bits===
Les PC suivants sont passés à des processeurs 16 bits, mais c'était toujours des processeurs x86 d'Intel, à savoir des Intel 286 et 386. La RAM a grossi, quelques entrées-sorties ont été ajoutées, mais l'architecture globale est plus moins resté le même. C'est surtout au niveau du bus et des périphériques que les changements majeurs ont eu lieu.
[[File:ISA Bus pins.svg|vignette|Connecteur ISA.]]
Les PC 16 bits utilisaient un bus système unique, sur lequel tout était connecté : le processeur, la RAM, la ROM, les cartes d'extension et tout le reste. Le bus en question s'appelait le '''bus AT''', mais il a rapidement été renommé en '''bus ISA''' (''Industry Standard Architecture''). Le bus ISA était prévu pour avoir une compatibilité avec le bus 8 bits de l'IBM PC originel. D'ailleurs, cela se ressent jusque dans le connecteur utilisé : le connecteur ISA est un connecteur XT qu'on a fusionné avec un second connecteur pour l'étendre de 8 à 16 bits.
Les PC 16 bits avaient toujours un port série, un port parallèle, un clavier, un lecteur de disquette et des cartes d'extension. Des disques durs pouvaient être ajoutés, aussi. Mais pour ces périphériques, un changement majeur a eu lieu comparé à l'IBM PC originel. L'IBM PC originel utilisait des cartes d'extension pour tout, sauf le clavier. Mais maintenant, les périphériques ne sont plus connectés à une carte d'extension. À la place, les circuits de la carte d'extension sont déplacés sur la carte mère. Mais n'allez pas croire qu'ils étaient connectés directement au bus ISA, il y avait des intermédiaires.
Le clavier était relié à un '''contrôleur de clavier''', qui faisait l'interface entre le connecteur du clavier et le bus ISA. Le contrôleur de clavier était appelé le ''Keyboard Controler'', abrévié en KB. Il recevait ce qui est tapé au clavier et traduisait cela en quelque chose de compréhensible par l'ordinateur.
Les autres périphériques étaient connectés à un circuit intégré dédié : l''''Intel 82091AA'''. Il était connecté au lecteur de disquette, au port série et au port parallèle. Il servait d'intermédiaire entre ces périphériques et le bus ISA. Vous pouvez le voir comme une sorte de répartiteur, mais qui ne serait pas connecté sur le processeur et la RAM
Enfin, il ne faut pas oublier les autres composants présents sur l'IBM PC originel. Le BIOS est toujours là, de même que les ''timers'' Intel 8253 PIT, le contrôleur d'interruption Intel 8259 et le contrôleur DMA Intel 8237. Les PC 16 bits ont aussi intégré une ''Real Time Clock'' (RTC). Pour rappel, c'est un composant qui permet au PC de mémoriser la date et l'heure courante, à la seconde près. Le tout est résumé dans le schéma ci-dessous.
[[File:Architecture de l'IBM PC compatible.png|centre|vignette|upright=2.5|Architecture de l'IBM PC compatible]]
Un point important est que le bus ISA allait à la même fréquence que le processeur, vu que c'était un bus système. Les processeurs de l'époque étaient des CPU 286 d'Intel, ou le 386 d'Intel. Les Intel 286 allaient de 4 MHz minimum, à 25 MHz maximum. Le 386, quant à lui, allait de 12 à 40 MHz. Le bus ISA devait aller à cette fréquence, il était synchrone avec le processeur.
Par la suite, les processeurs ont gagné en performance, ce qui fait que le bus ISA est devenu trop lent pour le processeur. Une idée a alors été de conserver le bus ISA, pour des raisons de compatibilité, mais de le reléguer comme bus secondaire. L'ordinateur contient alors deux bus : un bus système, et un bus ISA secondaire. Le lien entre les deux est réalisé par un '''pont ISA''', ''ISA Bridge'' en anglais. Le bus ISA fonctionnait alors sa fréquence usuelle, alors que le bus système était beaucoup plus rapide. Le bus système fonctionnait à une fréquence bien plus élevée, ce qui fait que le processeur pouvait communiquer à pleine vitesse, notamment avec la RAM. Le processeur n'était alors plus forcé à aller à la même fréquence que le bus ISA
[[File:Architecture de l'IBM PC compatible avec bridge ISA.png|centre|vignette|upright=2.5|Architecture de l'IBM PC compatible avec bridge ISA]]
Les PC de l'époque intégraient donc plusieurs bus séparés. Vous avez bien lu : plusieurs bus ! Ici, il s'agit de ce que j'appelle des '''bus en cascade''', à savoir qu'un bus est connecté à un autre bus par un intermédiaire. Au passage, si j'aborde ces exemples, car c'est pareil sur les ordinateurs modernes. Le pont ISA a été remplacé par des circuits différents, mais qui ont un rôle assez similaire. Le ''chipset'' de votre carte mère n'est qu'un lointain descendant du pont ISA, qui s'interface avec des bus différents.
===L'arrivée des standards AT et IDE pour les disques durs===
Initialement, les disques durs étaient placés dans l'ordinateur et étaient connectés sur le bus ISA, via une carte d'extension ISA. En clair, il fallait connecter le disque dur sur une carte d'extension, et non sur la carte mère. Les cartes d'extension en question permettaient de connecter un ou plusieurs disques durs, parfois des lecteurs de disquette supplémentaires. Les cartes ISA de ce type faisaient juste l'interface entre le bus ISA et les disques durs, rien de plus. L'interface en question a été standardisée, ce qui a donné le standard ''AT Bus Attachment'', qui a été abrévié en ATA.
Et ce n'était pas que pour les disques durs, de nombreux composants étaient dans ce cas. Une carte d'extension servait d'intermédiaire entre eux et la carte mère. Les cartes d'extension en question étaient appelées des ''Host bus adapter''.
[[File:Acculogic sIDE-4 Controller ISA.jpg|centre|vignette|upright=2|Carte ISA d'interface disque dur, de marque Acculogic.]]
Mais les choses ont rapidement évoluées, que ce soit du côté des cartes mères que du côté des disques durs. Le '''standard IDE''' a permis de brancher un disque dur directement sur la carte mère, sans passer par une carte d'interface ISA. Pour cela, la carte mère réservait un connecteur ISA pour le disque dur, renommé '''connecteur ATA'''. Pour que cela soit possible, il a fallu rajouter des circuits sur la carte mère. Tout ce qui était sur les cartes d'interface ISA s'est retrouvé sur la carte mère.
[[File:Ajout des ports IDE sur la carte mère.png|centre|vignette|upright=2|Ajout des ports IDE sur la carte mère]]
En réalité, les connecteurs ATA étaient des connecteurs ISA simplifiés. Un connecteur ISA avait en tout 98 broches, alors qu'un connecteur ATA n'en contient que 40. Les broches qui étaient inutiles pour les disques durs ont simplement été enlevées. Et qui dit connecteur spécialisé, dit câble spécialisé. Les disques durs étaient branchés sur le connecteur AT grâce à un câble ATA, sur lequel on pouvait connecter deux disques durs.
[[File:ATA Plug.svg|centre|vignette|upright=2|Connecteur ATA.]]
[[File:ATA cables.jpg|centre|vignette|upright=2|Cable ATA.]]
Il était donc possible de connecter deux disques durs sur un seul connecteur ATA. Et cette possibilité est devenue d'autant plus utile par la suite. A partir de la version 2, ATA supportait aussi les lecteurs de disquettes, les lecteurs de CD/DVD, et bien d'autres supports de stockage. Il était alors possible de connecter un lecteur CD et un disque dur sur un seul connecteur. Les cartes mères avaient généralement deux connecteurs ATA, et n'avaient pas besoin de plus. C'était suffisant pour connecter un disque dur, un lecteur de disquette et un lecteur CD, configuration courante entre les années 90 et 2000.
Un câble est donc connecté à deux supports de stockage. Pour distinguer les deux, le standard ATA ajoute une possibilité de configuration. Sur un câble, il doit y avoir un support de stockage "maitre" et un support "esclave". C'était la terminologie de l'époque, que je reproduis ici, même si elle est fortement trompeuse. N'allez pas croire que cela implique que l'un ait des avantages sur l'autre. Le support 'maitre" n'a pas droit à plus de bande passante, il n'a pas la priorité sur l'autre, rien du tout. Il s'agit juste d'un nombre qui permet de savoir avec qui le processeur communique, qui vaut 0 pour le premier support, 1 pour l'autre. Une sorte d'adresse de 1 bit, si l'on veut.
[[File:ATA-Konfiguration02.png|centre|vignette|upright=2|Configuration ATA.]]
Pour configurer un support de stockage en mode "maitre" ou "esclave", le support de stockage avait quelques pins dédiés. Il suffisait de placer un détrompeur en plastique sur les pins adéquats. Les pins se trouvaient à l'arrière du disque dur ou du lecteur de CD/DVD/Disquette/autre.
[[File:HDD Master and Slave Description.jpg|centre|vignette|upright=2|Configuration ''Master/Slave''.]]
===L'architecture d'un PC avec un processeur Intel 486===
Maintenant, passons aux ordinateurs 32 bits, avec l'exemple d'un PC avec un processeur 486 d'Intel. A cette époque, le bus ISA était devenu trop limité et était en place d'être remplacé par le bus PCI, qui avait la même fonction. De nombreuses cartes d'extension utilisaient déjà ce standard et étaient branchées sur des connecteurs PCI dédiés, différents des connecteurs ISA. Intuitivement, on se dit que le bus PCI remplaçait le bus ISA, mais les choses étaient plus compliquées. Les disques durs gardaient leur connecteur ATA, et ne passaient pas par le bus PCI. Ils avaient un bus IDE séparé, qui était un bus ISA modifié.
Là encore, les processeurs étaient devenus beaucoup plus rapides que le bus PCI. Les deux allaient à des fréquences assez différentes, ce qui fait que le bus PCI était séparé du bus système. Il y avait alors deux implémentations possibles.
* La première utilise un répartiteur unique, relié au processeur, à la RAM, au bus PCI, et au bus IDE.
* La seconde utilise un bus système séparé du bus PCI, avec un '''pont PCI''' pour faire l'interface entre les deux.
Le '''''System Controler''''' était un circuit intégré, placé sur la carte mère, qui peut servir soit de pont PCI, soit de répartiteur. Le répartiteur PCI sert d'intermédiaire avec le bus PCI, mais aussi avec le bus IDE, utilisé pour les disques durs, aussi appelé le bus ''Parallel ATA''. Il peut aussi être connecté au processeur, à la mémoire RAM, ainsi qu'à la mémoire cache, mais cela ne sert que quand il est utilisé comme répartiteur.
[[File:Architecture d'un PC utilisant un bus PCI, implémentation avec un répartiteur.png|centre|vignette|upright=2|Architecture d'un PC utilisant un bus PCI, implémentation avec un répartiteur]]
Pour des raisons de compatibilité, le bus ISA avait été conservé, aux côtés du bus PCI. Il y avait un pont ISA en plus du pont/répartiteur PCI. Une implémentation possible aurait été de connecter les deux ponts ISA et PCI à un bus système unique. Mais cette solution n'a pas été retenue. La raison est que le bus PCI et le bus ISA ont des performances très différentes. Le bus PCI est très rapide, le bus ISA beaucoup plus lent. La différence est d'un ordre de grandeur, environ. Dans ces conditions, il est possible de faire passer les communications ISA à travers le bus PCI. Pour cela, le pont ISA est directement connecté sur le pont PCI, comme illustré ci-dessous.
Et il en est de même pour le bus dédié aux disques durs. En effet, les disques durs étaient autrefois reliés au bus ISA, mais cela a changé depuis. Ils disposent maintenant de leur propre bus dédié, le '''bus IDE''', qui est un bus ISA simplifié. Et ce bus ISA simplifié était connecté directement sur le pont PCI.
[[File:Architecture de l'IBM PC compatible avec pont PCI.png|centre|vignette|upright=2|Architecture de l'IBM PC compatible avec pont PCI]]
Dans ce qui va suivre, nous allons étudier un exemple qui utilise un bus système séparé, avec un pont PCI, sans répartiteur. Voilà pour les grandes lignes, mais le schéma ci-dessous montre que tout est plus complexe. Vous remarquerez des connexions optionnelles entre le pont PCI et la mémoire RAM et la mémoire cache. La raison est que le pont PCI peut aussi servir de répartiteur en remplacement du bus système. Concrètement, on peut alors retirer le bus système. La mémoire, le bus PCI, le bus ISA, le bus IDE, le processeur et la RAM sont alors connectés au répartiteur PCI, qui sert d'intermédiaire central entre tous ces composants. Mais ce n'est pas la solution qui a été retenue dans notre exemple.
[[File:Intel486-Typ PCI System.png|centre|vignette|upright=2|PC IBM compatible avec un 486, un bus PCI et un bus ISA. Le ''host bus'' est le bus système.]]
Le pont ISA sert ici d'intermédiaire entre le bus système et le bus ISA. De plus, il a été amélioré sur de nombreux points. Il inclut notamment des circuits qui étaient autrefois sur la carte mère, à savoir le contrôleur DMA 82C87 et le contrôleur d'interruption 82C59, ainsi que les ''timers'' Intel 82C54. Les composants restants sont eux reliés sur un quatrième bus : le bus X, l'ancêtre du bus ''Low Pin Count''. Le bus X était celui du BIOS, du contrôleur de clavier, de la ''Real Time Clock'', et du contrôleur de périphérique 82091AA d'Intel.
[[File:ISA Bridge schematic.png|centre|vignette|upright=2|ISA Bridge.]]
===L'architecture des PC des années 90-2000===
Par la suite, les ponts PCI et ISA ont évolué avec l'évolution des bus de l'ordinateur. Le bus ISA a progressivement été remplacé par d'autres bus, comme le bus ''Low Pin Count'', le bus PCI a été remplacé par le PCI Express, d'autres bus ont été ajoutés, etc. Mais la séparation du ''chipset'' en deux a été conservée.
[[File:Chipset schematic.svg|vignette|upright=1.0|Chipset séparé en northbridge et southbridge.]]
Le pont PCI et le pont ISA ont été remplacés respectivement par le '''pont nord''' et le '''pont sud''', plus connus par leurs noms anglais de ''northbridge'' et de ''southbridge''. Le pont nord servait d'interface entre le processeur, la mémoire et la carte graphique et est connecté à chacun par un bus dédié. Il intégrait aussi le contrôleur mémoire. Le pont sud est le répartiteur pour les composants lents, à savoir l'USB, l'Ethernet, etc. Le bus qui relie le processeur au pont nord était appelé le '''''Front Side Bus''''', abrévié en FSB.
[[File:IMac Chipset.png|centre|vignette|upright=2|Chipset séparé en northbridge et southbridge.]]
Un point important est que le bus PCI est devenu un bus assez lent, ce qui fait qu'il a finit par être connecté au pont sud. Le pont PCI est donc devenu le pont sud, dans le courant des années 2000. Durant un moment, un équivalent du pont ISA a subsisté dans un circuit de '''''Super IO'''''. Concrètement, il s'occupait du lecteur de disquette, du port parallèle, du port série, et des ports PS/2 pour le clavier et la souris. Mais il ne gérait pas le bus ISA, mais son remplaçant, le bus ''Low Pin Count''.
[[File:Motherboard diagram fr.svg|centre|vignette|upright=1.5|Carte mère avec circuit Super IO.]]
===L'architecture des PC depuis les années 2000===
Depuis la sortie du processeur AMD Athlon 64, le pont nord a été fusionné dans le processeur. La fusion ne s'est pas faite en une fois, des fonctionnalités ont progressivement été progressivement intégrées dans le processeur. Le pont sud est resté, mais il a alors été progressivement connecté directement au processeur. La raison derrière cette intégration est que les processeurs avaient de plus en plus de transistors à leur disposition. Ils en ont profité pour intégrer le pont nord. Et cela permettait de simplifier le câblage des cartes mères, sans pour autant rendre vraiment plus complexe la fabrication du processeur. Les industriels y trouvent leur compte.
La première étape a été l'intégration du contrôleur mémoire a été intégré au processeur. Concrètement, le résultat était que la mémoire RAM n'était plus connectée au pont nord, mais était connectée directement au processeur ! Il y a donc eu un retour d'un bus mémoire, mais spécialisé pour la mémoire RAM. En théorie, une telle intégration permet diverses optimisations quant aux transferts avec la mémoire RAM. Les transferts ne passent pas par un répartiteur, ce qui réduit le temps d'accès à la mémoire RAM. Ajoutons de sombres histoires de prefetching, d'optimisation des commandes, et j'en passe. Toujours est-il que le pont nord ne servait alors d'intermédiaire que pour les ports PCI Express, et le pont sud.
[[File:X58 Block Diagram.png|centre|vignette|upright=2|Chipset X58 d'Intel.]]
Par la suite, la carte graphique fût aussi connectée directement sur le processeur. Le processeur incorpore pour cela des contrôleurs PCI-Express. Le pont nord a alors disparu complétement, son intégration dans le processeur était complète. Sur les cartes mères Intel récentes, le pont sdud subsiste, il est appelé le ''Platform Controler Hub'', ou PCH. L'organisation des bus sur la carte mère qui résulte de cette connexion du processeur à la carte graphique, est illustrée ci-dessous, avec l'exemple du PCH.
[[File:Intel 5 Series architecture.png|centre|vignette|upright=2|Intel 5 Series architecture]]
<noinclude>
{{NavChapitre | book=Fonctionnement d'un ordinateur
| prev=L'interface électrique entre circuits intégrés et bus
| prevText=L'interface électrique entre circuits intégrés et bus
| next=La hiérarchie mémoire
| nextText=La hiérarchie mémoire
}}
</noinclude>
o3kmsek0yaiuom1kh9b3lkpaholzkum
765742
765741
2026-05-01T21:55:01Z
Mewtow
31375
/* Les microcontrôleurs */
765742
wikitext
text/x-wiki
Dans les chapitres précédents, nous avons vu comment représenter de l'information, la traiter et la mémoriser avec des circuits. Mais un ordinateur n'est pas qu'un amoncellement de circuits et est organisé d'une manière bien précise. Il est structuré autour de trois circuits principaux :
* un '''processeur''', qui manipule l'information et donne un résultat ;
* une '''mémoire''' qui mémorise les données à manipuler ;
* les '''entrées/sorties''', qui permettent à l'ordinateur de communiquer avec l'extérieur.
[[File:Architecture Von Neumann.png|centre|vignette|upright=2|Architecture d'un système à mémoire.]]
Pour faire simple, le processeur est un circuit qui s'occupe de faire des calculs. Rien d'étonnant à cela. Je rappelle que tout est codé par des nombres dans un ordinateur, ce qui fait que manipuler des nombres revient simplement à faire des calculs. Un ordinateur n'est donc qu'une grosse calculatrice améliorée, et le processeur est le composant qui fait les calculs.
La mémoire s'occupe purement de la mémorisation des données, des nombres sur lesquelles faire des calculs. Pour être plus précis, il y a deux mémoires : une pour les données proprement dites, une autre pour le programme à exécuter. La première est la '''mémoire RAM''', la seconde est la '''mémoire ROM'''. Nous détaillerons ce que sont ces deux mémoires dans la suite du chapitre, mais sachez que nous avions déjà rencontré ces deux types de mémoires dans les chapitres sur les registres et les mémoires adressables.
Les entrées-sorties permettent au processeur et à la mémoire de communiquer avec l'extérieur et d'échanger des informations avec des périphériques. Les '''périphériques''' regroupent, pour rappel, tout ce est branché sur un ordinateur, mais n'est pas à l'intérieur de celui-ci.
Le processeur, les mémoires et les entrées-sorties communiquent ensemble via un '''réseau d'interconnexions'''. Le terme est assez barbare, mais rien de compliqué sur le principe. C'est juste un ensemble de fils électriques qui relie les différents éléments d'un ordinateur. Les interconnexions sont souvent appelées le bus de communication, mais le terme est un abus de langage, comme on le verra plus bas.
Afin de simplifier les explications, on va supposer que le réseau d'interconnexion est le suivant. Tout est connecté au processeur. Il y a des interconnexions entre le processeur et la mémoire RAM, d'autres interconnexions entre processeur et mémoire ROM, et d'autres entre le processeur et les entrées-sorties. Nous verrons que d'autres réseaux d'interconnexions fusionnent certaines interconnexions, pour les partager entre la ROM et la RAM, par exemple. Mais pour le moment, gardez le schéma ci-dessous en tête.
[[File:Réseau d'interconnexion avec un processeur au centre.png|centre|vignette|upright=2|Réseau d'interconnexion avec un processeur au centre]]
==Les mémoires RAM et ROM==
La mémoire est le composant qui mémorise des informations, des données. Dans la majorité des cas, la mémoire est composée de plusieurs '''cases mémoire''', chacune mémorisant plusieurs bits, le nombre de bits étant identique pour toutes les cases mémoire. Dans le cas le plus simple, une case mémoire mémorise un '''octet''', un groupe de 8 bits. Mais les mémoires modernes mémorisent plusieurs octets par case mémoire : elles ont des cases mémoires de 16, 32 ou 64 bits, soit respectivement 2/4/8 octets. De rares mémoires assez anciennes utilisaient des cases mémoires contenant 1, 2, 3, 4, 5, 6 7, 13, 17, 23, 36 ou 48 bits. Mais ce n'était pas des mémoires électroniques, aussi nous allons les passer sous silence.
Tout ce qu'il faut savoir est que la quasi-totalité des mémoires électronique a un ou plusieurs octets par case mémoire. Pour simplifier, vous pouvez imaginer qu'une mémoire RAM est un regroupement de registre, chacun étant une case mémoire. C'est une description pas trop mauvaise pour décrire les mémoires RAM, qu'on abordera dans ce qui suit.
{|class="wikitable"
|+ Contenu d'une mémoire, case mémoire de 16 bits (deux octets)
|-
! Case mémoire N°1
| 0001 0110 1111 1110
|-
! Case mémoire N°2
| 1111 1110 0110 1111
|-
! Case mémoire N°3
| 0001 0000 0110 0001
|-
! Case mémoire N°4
| 1000 0110 0001 0000
|-
! Case mémoire N°5
| 1100 1010 0110 0001
|-
! ...
| ...
|-
! Case mémoire N°1023
| 0001 0110 0001 0110
|-
! Case mémoire N°1024
| 0001 0110 0001 0110
|}
Dans ce cours, il nous arrivera de partir du principe qu'il y a un octet par case mémoire, par souci de simplification. Mais ce ne sera pas systématique. De plus, il nous arrivera d'utiliser le terme adresse pour parler en réalité de la case mémoire associée, par métonymie.
===La capacité mémoire===
Bien évidemment, une mémoire ne peut stocker qu'une quantité finie de données. Et à ce petit jeu, certaines mémoires s'en sortent mieux que d'autres et peuvent stocker beaucoup plus de données que les autres. La '''capacité''' d'une mémoire correspond à la quantité d'informations que celle-ci peut mémoriser. Plus précisément, il s'agit du nombre maximal de bits qu'une mémoire peut contenir. Elle est le produit entre le nombre de cases mémoire, et la taille en bit d'une case mémoire.
Toutes les mémoires actuelles utilisant des cases mémoire d'un ou plusieurs octets, ce qui nous arrange pour compter la capacité d'une mémoire. Au lieu de compter cette capacité en bits, on préfère mesurer la capacité d'une mémoire avec le nombre d'octets qu'elle contient. Mais les mémoires des PC font plusieurs millions ou milliards d'octets. Pour se faciliter la tâche, on utilise des préfixes pour désigner les différentes capacités mémoires. Vous connaissez sûrement ces préfixes : kibioctets, mébioctets et gibioctets, notés respectivement Kio, Mio et Gio.
{|class="wikitable"
|-
!Préfixe!!Capacité mémoire en octets!!Puissance de deux
|-
||Kio||1024||2<sup>10</sup> octets
|-
||Mio||1 048 576||2<sup>20</sup> octets
|-
||Gio||1 073 741 824||2<sup>30</sup> octets
|}
On peut se demander pourquoi utiliser des puissances de 1024, et ne pas utiliser des puissances un peu plus communes ? Dans la majorité des situations, les électroniciens préfèrent manipuler des puissances de deux pour se faciliter la vie. Par convention, on utilise souvent des puissances de 1024, qui est la puissance de deux la plus proche de 1000. Or, dans le langage courant, kilo, méga et giga sont des multiples de 1000. Quand vous vous pesez sur votre balance et que celle-ci vous indique 58 kilogrammes, cela veut dire que vous pesez 58 000 grammes. De même, un kilomètre est égal à 1000 mètres, et non 1024 mètres.
Autrefois, on utilisait les termes kilo, méga et giga à la place de nos kibi, mebi et gibi, par abus de langage. Mais peu de personnes sont au courant de l'existence de ces nouvelles unités, et celles-ci sont rarement utilisées. Et cette confusion permet aux fabricants de disques durs de nous « arnaquer » : Ceux-ci donnent la capacité des disques durs qu'ils vendent en kilo, méga ou giga octets : l’acheteur croit implicitement avoir une capacité exprimée en kibi, mébi ou gibi octets, et se retrouve avec un disque dur qui contient moins de mémoire que prévu.
===Lecture et écriture : mémoires ROM et RWM===
Pour simplifier grandement, on peut grossièrement classer les mémoires en deux types : les ''Read Only Memory'' et les ''Read Write Memory'', aussi appelées mémoires ROM et mémoires RWM. Pour les '''mémoires ROM''', on ne peut pas modifier leur contenu. On peut y récupérer une donnée ou une instruction : on dit qu'on y accède en lecture. Mais on ne peut pas modifier les données qu'elles contiennent. Quant aux '''mémoires RWM''', on peut y accéder en lecture (récupérer une donnée stockée en mémoire), mais aussi en écriture : on peut stocker une donnée dans la mémoire, ou modifier une donnée existante.
Tout ordinateur contient au minimum une ROM et une RWM (souvent une mémoire RAM), les deux n'ont pas exactement le même rôle. Pour simplifier, la mémoire ROM mémorise le programme à exécuter, la mémoire RWM stocke des données. Il a existé des ordinateurs où la mémoire RWM était une mémoire magnétique, voire acoustique, mais ce n'est plus le cas de nos jours. Pour les ordinateurs modernes, la mémoire RWM est une mémoire électronique. Pour faire la différence avec ces anciennes mémoires RWM, elle est appelée la '''mémoire RAM'''. Il s'agit d'une mémoire qui stocke temporairement des données que le processeur doit manipuler (on dit qu'elle est volatile). Elle s'efface complètement quand on coupe l'alimentation de l'ordinateur.
Il existe d'autres différences entre mémoire RWM et RAM :
* la mémoire RWM peut ne pas être volatile et donc conserver les données écrites ;
* la mémoire RAM possède un temps d'accès constant aux données (quelle que soit l'adresse), ce qui n'est pas garanti pour les mémoires RWM.
Outre le programme à exécuter, la mémoire ROM peut mémoriser des constantes, des données qui ne changent pas. Elles ne sont jamais modifiées et gardent la même valeur quoi qu'il se passe lors de l'exécution du programme. En conséquence, elles ne sont jamais accédées en écriture durant l'exécution du programme, ce qui fait que leur place est dans une mémoire ROM. La mémoire RWM est alors destinée aux données temporaires, qui changent ou sont modifiées lors de l'exécution du programme, et qui sont donc manipulées aussi bien en lecture et en écriture. La mémoire RWM mémorise alors les variables du programme à exécuter, qui sont des données que le programme va manipuler. Pour les systèmes les plus simples, la mémoire RWM ne sert à rien de plus.
[[File:Espaces d'adressage sur une archi harvard modifiée.png|centre|vignette|upright=2.5|Espaces d'adressage sur une archi harvard modifiée]]
Pour donner un exemple de données stockées en ROM, on peut prendre l'exemple des anciennes consoles de jeu 8 et 16 bits. Les jeux vidéos sur ces consoles étaient placés dans des cartouches de jeu, précisément dans une mémoire ROM à l'intérieur de la cartouche de jeu. La ROM mémorisait non seulement le code du jeu, le programme du jeu vidéo, mais aussi les niveaux et les ''sprites'' et autres données graphiques.
Une conséquence est que les consoles 8/16 bits n'avaient pas besoin de beaucoup de RAM, comparé aux ordinateurs de l'époque, vu qu'une grande partie des données utiles étaient dans une ROM directement accessible par le processeur. À l'opposé, les micro-ordinateurs devaient copier les données d'un jeu depuis une disquette dans la mémoire RAM, ce qui demandait d'avoir plus de RAM. Le passage au support CD sur les consoles 32 bits a eu la même conséquence. Le processeur ne pouvant pas lire directement le CD à sa guise, il fallait copier les données du CD en RAM. D'où l'apparition de temps de chargement assez longs, inexistants sur support cartouche.
===L'adressage mémoire===
Sur une mémoire RAM ou ROM, on ne peut lire ou écrire qu'une case mémoire, qu'un registre à la fois : une lecture ou écriture ne peut lire ou modifier qu'une seule case mémoire. Techniquement, le processeur doit préciser à quel case mémoire il veut accéder à chaque lecture/écriture. Pour cela, chaque case mémoire se voit attribuer un nombre binaire unique, l''''adresse''', qui va permettre de le sélectionner et de l'identifier celle-ci parmi toutes les autres. En fait, on peut comparer une adresse à un numéro de téléphone (ou à une adresse d'appartement) : chacun de vos correspondants a un numéro de téléphone et vous savez que pour appeler telle personne, vous devez composer tel numéro. Les adresses mémoires en sont l'équivalent pour les cases mémoire.
[[File:Adressage mémoire.png|centre|vignette|upright=2|Exemple : on demande à la mémoire de sélectionner la case mémoire d'adresse 1002 et on récupère son contenu (ici, 17).]]
L'adresse mémoire est générée par le processeur. Le processeur peut parfaitement calculer des adresses, en extraire du programme qu'il exécute, et bien d'autres choses. Nous détaillerons d'ailleurs les mécanismes pour dans les chapitres portant sur les modes d'adressage du processeur. Mais pour le moment, nous avons juste besoin de savoir que c'est le processeur qui envoie des adresses aux mémoires RAM et ROM.
Les adresses générées par le processeur sont alors envoyées à la RAM ou la ROM via une connexion dédiée, un ensemble de fils qui connecte le processeur à la mémoire : le '''bus d'adresse mémoire'''. L'adresse sélectionne une case mémoire, le processeur peut alors récupérer la donnée dedans pour une lecture, écrire une donnée pour l'écriture. Pour cela, un second ensemble de fil connecte le processeur à la RAM/ROM, mais cette fois-ci pour échanger des données. Il s'agit du '''bus de données mémoire'''. Les deux sont souvent regroupés sous le terme de '''bus mémoire'''.
Un ordinateur contient toujours une RAM et une ROM, ce qui demande aux bus mémoire de s'adapter à la présence de deux mémoires. Il y a alors deux solutions, illustrées dans les deux schémas ci-dessous. Avec la première, il y a un seul bus mémoire partagé entre la RAM et la ROM, comme illustré ci-dessous. Une autre solution utilise deux bus séparés : un pour la RAM et un autre pour la ROM. Nous verrons les différences pratiques entre les deux à la fin du chapitre. Pour le moment, nous allons partir du principe qu'il y a un bus pour la mémoire ROM, et un autre bus pour la RAM.
[[File:CPT-System-Architecture-gapfill1-ANS.svg|centre|vignette|upright=2|Architecture avec une ROM et une RAM.]]
[[File:Réseau d'interconnexion avec un processeur au centre.png|centre|vignette|upright=2|Réseau d'interconnexion avec un processeur au centre]]
===L'alignement mémoire : introduction===
Plus haut, nous avions dit qu'il y a une adresse par case mémoire, chaque case mémoire contenant un ou plusieurs octets. Mais les processeurs modernes partent du principe que la mémoire a un octet par adresse, pas plus. Et ce même si la mémoire reliée au processeur utilise des cases mémoires de 2, 3, 4 octets ou plus. D'ailleurs, la majorité des mémoires RAM actuelle a des cases mémoires de 64 bits, soit 8 octets par case mémoire. Les raisons à cela sont multiple, mais nous les verrons en détail dans le chapitre sur l'alignement mémoire. Toujours est-il qu'il faut distinguer les '''adresses mémoire''' et les '''adresses d'octet''' gérées par le processeur.
Le processeur génère des adresses d'octet, qui permettent de sélectionner un octet bien précis. L'adresse d'octet permet de sélectionner un octet parmi tous les autres. Mais la mémoire ne comprend pas directement cette adresse d'octet. Heureusement, l'octet en question est dans une case mémoire bien précise, qui a elle-même une adresse mémoire bien précise. L'adresse d'octet est alors convertie en une adresse mémoire, qui sélectionne la case mémoire adéquate, celle qui contient l'octet voulu. La case mémoire entière est lue, puis le processeur ne récupère que les données adéquates. Pour cela, des circuits d'alignement mémoire se chargent de faire la conversion entre adresses du processeur et adresse mémoire. Nous verrons cela dans le détail dans le chapitre sur l'alignement mémoire.
Il existe des mémoires qui n'utilisent pas d'adresses mémoire, mais passons : ce sera pour la suite du cours.
==Le processeur==
Dans les ordinateurs, l'unité de traitement porte le nom de '''processeur''', ou encore de '''''Central Processing Unit''''', abrévié en CPU. Le rôle principal du processeur est de faire des calculs. La plupart des processeurs actuels supportent au minimum l'addition, la soustraction et la multiplication. Quelques processeurs ne gèrent pas la division, qui est une opération très gourmande en circuit, peu utilisée, très lente. Il arrive que des processeurs très peu performants ne gèrent pas la multiplication, mais c'est assez rare.
Un processeur ne fait pas que des calculs. Tout processeur est conçu pour effectuer un nombre limité d'opérations bien précises, comme des calculs, des échanges de données avec la mémoire, etc. Ces opérations sont appelées des '''instructions'''. Les plus intuitives sont les '''instructions arithmétiques''', qui font des calculs, comme l'addition, la soustraction, la multiplication, la division. Mais il y a aussi des '''instructions d'accès mémoire''', qui échangent des données entre la mémoire RAM et le processeur. Les autres instructions ne sont pas très intuitives, aussi passons-les sous silence pour le moment, tout deviendra plus clair dans les chapitres sur le processeur.
===Le processeur exécute un programme, une suite d'instructions===
Tout processeur est conçu pour exécuter une suite d'instructions dans l'ordre demandé, cette suite s'appelant un '''programme'''. Ce que fait le processeur est défini par la suite d'instructions qu'il exécute, par le programme qu'on lui demande de faire. Les instructions sont exécutées dans un ordre bien précis, les unes après les autres. L'ordre en question est décidé par le programmeur. La totalité des logiciels présents sur un ordinateur sont des programmes comme les autres.
Le programme à exécuter est stockée dans la mémoire de l'ordinateur. C'est ainsi que l'ordinateur est rendu programmable : modifier le contenu de la mémoire permet de changer le programme exécuté. Mine de rien, cette idée de stocker le programme en mémoire est ce qui a fait que l’informatique est ce qu'elle est aujourd’hui. C'est la définition même d'ordinateur : appareil programmable qui stocke son programme dans une mémoire modifiable.
Une instruction est codée comme les données : sous la forme de suites de bits. Telle suite de bit indique qu'il faut faire une addition, telle autre demande de faire une soustraction, etc. Pour simplifier, nous allons supposer qu'il y a une instruction par adresse mémoire. Sur la grosse majorité des ordinateurs, les instructions sont placées les unes à la suite des autres dans l'ordre où elles doivent être exécutées. Un programme informatique n'est donc qu'une vulgaire suite d'instructions stockée quelque part dans la mémoire de l'ordinateur.
{|class="wikitable"
|+ Exemple de programme informatique
|-
! Adresse
! Instruction
|-
! 0
| Copier le contenu de l'adresse 0F05 dans le registre numéro 5
|-
! 1
| Charger le contenu de l'adresse 0555 dans le registre numéro 4
|-
! 2
| Additionner ces deux nombres
|-
! 3
| Charger le contenu de l'adresse 0555
|-
! 4
| Faire en XOR avec le résultat antérieur
|-
! ...
| ...
|-
! 5464
| Instruction d'arrêt
|}
Pour exécuter une suite d'instructions dans le bon ordre, le processeur détermine à chaque cycle quelle est la prochaine instruction à exécuter. Pour cela, le processeur mémorise l'adresse de l'instruction en cours dans un registre : le '''Program Counter'''. Je rappelle que des instructions consécutives sont dans des adresses consécutives. Pour passer à la prochaine instruction, il suffit donc d'incrémenter le ''program counter''.
: Si une instruction prend plusieurs octets, plusieurs adresses, il suffit de l'incrémenter du nombre d'octets/adresses.
D'autres processeurs font autrement : chaque instruction précise l'adresse de la suivante, directement dans la suite de bit représentant l'instruction en mémoire. Ces processeurs n'ont pas besoin de calculer une adresse qui leur est fournie sur un plateau d'argent. Sur des processeurs aussi bizarres, pas besoin de stocker les instructions en mémoire dans l'ordre dans lesquelles elles sont censées être exécutées. Mais ces processeurs sont très très rares et peuvent être considérés comme des exceptions à la règle.
Nous venons de voir qu'un processeur contient un registre appelé le ''program counter''. Mais il n'est pas le seul. Pour pouvoir fonctionner, tout processeur doit mémoriser un certain nombre d’informations nécessaires à son fonctionnement, qui sont mémorisées dans des '''registres de contrôle'''. La plupart ont des noms assez barbares (registre d'état, ''program counter'') et nous ne pouvons pas en parler à ce moment du cours. Nous les verrons en temps voulu, mais il est important de préciser qu'ils existent.
===L'intérieur d'un processeur===
Fort de ce que nous savons, nous pouvons expliquer ce qu'il y a à l'intérieur d'un processeur. Le premier point est qu'un processeur fait des calculs, ce qui implique qu'il contient des circuits de calcul. Ils sont regroupés dans une ou plusieurs '''unités de calcul'''. Nous avons déjà vu comment fabriquer une unité de calcul simple, dans un chapitre dédié, et c'est la même qui est présente dans un processeur. Du moins dans les grandes lignes, les circuits des processeurs modernes étant particulièrement optimisés. Il en est de même pour les autres circuits de calcul comme ceux pour les multiplications/division/autres.
Si le processeur fait des calculs, qu'en est-il des opérandes ? Et où sont mémorisés les résultats des opérations ? Pour cela, le processeur incorpore des '''registres généraux'''. Les registres généraux servent à mémoriser les opérandes et résultats des instructions. Ils mémorisent des données, contrairement aux registres de contrôle mentionnés plus haut. Le nombre de registres généraux dépend grandement du processeur. Les tout premiers processeurs se débrouillaient avec un seul registre, mais les processeurs actuels utilisent plusieurs registres, pour mémoriser plusieurs opérandes/résultats. Mais la présence de registres est source de pas mal de petites complications. Par exemple, il faut échanger les données entre la RAM et les registres, il faut gérer l'adressage des registres, etc. Il s'agit là de détails que nous expliquerons dans les chapitres sur le processeur.
Le processeur contient enfin un circuit pour interpréter les instructions, appelé l''''unité de contrôle'''. Elle lit les instructions depuis la mémoire, interprète la suite de bit associée, et commande le reste du processeur pour qu'il exécute l'instruction. Ses fonctions sont assez variées, mais nous allons simplifier en disant qu'elle configure l'unité de calcul et les registres pour faire le bon calcul. Son rôle est d'analyser la suite de bit qui constitue l'instruction, et d'en déduire quelle opération effectuer. Elle gère aussi l'accès à la mémoire RAM, et notamment ce qui est envoyé sur son bus d'adresse.
: Dans ce qui suit, on suppose que le ''program counter'' fait partie de l'unité de contrôle.
Pour résumer, un processeur contient une unité de calcul, des registres et une interface avec la mémoire RAM. Le tout est interconnecté, afin de pouvoir échanger des données. L’ensemble forme le '''chemin de données''', nom qui trahit le fait que c'est là que les données se déplacent et sont traitées. Il faut aussi ajouter l'unité de contrôle pour commander le tout. Elle lit les instructions en mémoire, puis commande le chemin de données pour que l'instruction soit exécutée correctement.
[[File:Microarchitecture d'un processeur.png|centre|vignette|upright=2|Microarchitecture d'un processeur]]
Un processeur parait donc assez simple expliqué comme ça, mais il y a de nombreuses subtilités. L'une d'entre elle est liée aux registres, et notamment à la manière dont on les utilise. Pour expliquer ces subtilités, nous allons voir comment les premiers processeurs fonctionnaient, avant de passer aux processeurs un peu plus modernes. Les tout premiers processeurs n'utilisaient qu'un seul registre, ce qui fait que l'utilisation des registres était très simple. Le passage à plusieurs registres a complexifié le tout.
===D'où viennent les adresses ?===
Il est maintenant temps de répondre à une question qui s'était posée dans la section sur l'adressage : d'où viennent les adresses envoyées à la mémoire ? Pour ce qui est des adresses des instructions, on connait déjà la réponse : c'est le ''program counter'' qui gère tout. Mais pour les données, il y a deux possibilités, qui correspondent à deux types de données : les données statiques et les données dynamiques.
Les '''données statiques''' sont les plus simples : elles existent durant toute la durée de vie du programme. Tant que celui-ci s'exécute, il aura besoin de ces données. En conséquence, il leur réserve une place en mémoire, qui est toujours la même. La donnée se situe donc à une adresse bien précise, qui ne change jamais. Attention cependant : les données peuvent être modifiées, changer de valeur. Le programme écrit dans les donnée statiques, c'est même assez fréquent. Ce sont ne sont pas forcément des données constantes !
Pour les données statiques, elles sont toujours placées à la même adresse mémoire. Pour le dire autrement, l'adresse mémoire est une constante, qui ne change pas. L'adresse est connue avant d’exécuter le programme, le programme a été codé pour utiliser cette adresse pour telle donnée, on a réservé une adresse pour la donnée voulue. Et même si vous quittez le programme et vous le relancez plusieurs jours après, l'adresse mémoire sera la même avant et après.
Et cela permet d'utiliser l''''adressage direct'''. L'idée est que les instructions précisent donc l'adresse à lire ou écrire. Pour cela, l'adresse est intégrée dans l’instruction elle-même. Pour rappel, l'instruction est codée par une suite de bit en mémoire RAM/ROM, dont certains précisent l'opération à faire, les autres servant à autre chose. L'idée est que certains bits précisent l'adresse mémoire de la donnée à lire. Les instructions sont donc du genre :
* ''LOAD 56'' - lit l'adresse numéro 56 et copie son contenu dans un registre;
* ''STORE R5 , adress 99'', copie le registre R5 dans l'adresse 99 ;
* ''ADD R5 , adress 209'' : additionne le registre R5 avec le contenu de l'adresse 209.
S'il existe des données statiques, c'est signe qu'il existe des '''données dynamiques'''. Ces dernières sont des données qui sont créées ou détruites selon les besoins. Pour comprendre d'où viennent ces données dynamiques, prenons le cas d'une personne qui écrit du texte sur un ordinateur. Le texte qu'il écrit est mémorisé dans la RAM de l’ordinateur, puis est sauvegardé sur le disque dur quand il sauvegarde son document. Au fur et à mesure qu'il écrit du texte, la RAM utilisée par ce texte augmente. Donc, ce texte est une donnée dynamique, dont la taille varie dans le temps.
Pour gérer des données dynamiques, la plupart des systèmes d'exploitation incorporent des fonctionnalités d''''allocation mémoire'''. Derrière ce nom barbare, se cache quelque chose de simple : les programmes peuvent réclamer de la mémoire au système d'exploitation, pour y placer les données qu'ils souhaitent. Les langages de programmation bas niveau supportent des fonctions comme malloc(), qui permettent de demander un bloc de mémoire de N octets à l'OS, qui doit alors accommoder la demande. De même, un programme peut libérer de la mémoire qu'il n'utilise plus avec des fonctions comme free().
Avec l'allocation mémoire, les données n'ont pas de place fixe en mémoire. Leur adresse mémoire peut varier d'une exécution du programme à l'autre. Pire que ça : les données peuvent être déplacées dans la mémoire RAM, si besoin. En clair : l'adresse est déterminée lors de l'exécution du programme. L'adresse est alors soit calculée, soit lue depuis la mémoire RAM, soit déterminée autrement. Toujours est-il qu'elle se retrouve dans un registre général. Pour gérer ces adresse variables, les processeurs utilisent l''''adressage indirect'''. L'adressage indirect permet d'utiliser une adresse qui est dans un registre de données. L'adresse en question peut être envoyée à la mémoire RAM sans problème, le processeur peut automatiquement connecter le registre adéquat sur le bus d'adresse.
Au tout début de l'informatique, les processeurs ne supportaient que l'adressage direct, pas plus. L'adressage indirect n'était tout simplement pas possible. Avec l'adressage direct, l'adresse à lire est extraite directement des instructions, par l'unité de contrôle. Le bus d'adresse de la RAM est alors relié directement à l'unité de contrôle, le bus de données est relié aux registres.
[[File:Architecture Harvard avec adressage direct uniquement.png|centre|vignette|upright=2|Architecture Harvard avec adressage direct uniquement]]
Mais dès les années 70, l'adressage indirect est apparu, rendant la programmation bien plus simple. Mais cela a demandé quelques adaptation au niveau du processeur. Avec l'adressage indirect, le bus d'adresse est connecté aux registres. Il a donc fallu rajouter un multiplexeur pour que le processeur décide de relier le bus d'adresse soit aux registres, soit à l'unité de contrôle.
===Un ordinateur peut avoir plusieurs processeurs===
La plupart des ordinateurs n'ont qu'un seul processeur, ce qui fait qu'on désigne avec le terme d''''ordinateurs mono-processeur'''. Mais il a existé (et existe encore) des '''ordinateurs multi-processeurs''', avec plusieurs processeurs sur la même carte mère. L'idée était de gagner en performance : deux processeurs permettent de faire deux fois plus de calcul qu'un seul, quatre permettent d'en faire quatre fois plus, etc. C'est très courant sur les supercalculateurs, des ordinateurs très puissants conçus pour du calcul industriel ou scientifique, mais aussi sur les serveurs ! Dans le cas le plus courant, ils utilisent plusieurs processeurs identiques : on utilise deux processeurs Core i3 de même modèle, ou quatre Pentium 3, etc.
Pour utiliser plusieurs processeurs, les programmes doivent être adaptés. Pour cela, il y a plusieurs possibilités :
* Une première possibilité, assez intuitive, est d’exécuter des programmes différents sur des processeurs différents. Par exemple, on exécute le navigateur web sur un processeur, le lecteur vidéo sur un autre, etc.
* La seconde option est de créer des programmes spéciaux, qui utilisent plusieurs processeurs. Ils répartissent les calculs à faire sur les différents processeurs. Un exemple est la lecture d'une vidéo sur le web : un processeur peut télécharger la vidéo pendant le visionnage et bufferiser celle-ci, un autre processeur peut décoder la vidéo, un autre décoder l'audio. De tels programmes restent des suites d'instructions, mais ils sont plus complexes que les programmes normaux, aussi nous les passons sous silence.
* La troisième option est d’exécuter le même programme sur les différents processeurs, mais chaque processeur traite son propre ensemble de données. Par exemple, pour un programme de rendu 3D, quatre processeurs peuvent s'occuper chacun d'une portion de l'image.
[[File:Architecture de Von Neumann Princeton multi processeurs.svg|centre|vignette|upright=2|Architecture de Von Neumann Princeton multi processeurs]]
De nos jours, les ordinateurs grand public les plus utilisés sont dans un cas intermédiaire, ils ne sont ni mono-, ni multi-processeur. Ils n'ont qu'un seul processeur, dans le sens où si on ouvre l'ordinateur et qu'on regarde la carte mère, il n'y a qu'un seul processeur. Mais ce processeur est en réalité assez similaire à un regroupement de plusieurs processeurs dans le même boitier. Il s'agit de '''processeurs multicœurs''', qui contiennent plusieurs cœurs, chaque cœur pouvant exécuter un programme tout seul.
La différence entre cœur et processeur est assez difficile à saisir, mais pour simplifier : un cœur est l'ensemble des circuits nécessaires pour exécuter un programme. Chaque cœur dispose de toute la machinerie électronique pour exécuter un programme, à savoir des circuits aux noms barbares comme : un séquenceur d'instruction, des registres, une unité de calcul. Par contre, certains circuits d'un processeur ne sont présents qu'en un seul exemplaire dans un processeur multicœur, comme les circuits de communication avec la mémoire ou les circuits d’interfaçage avec la carte mère.
Suivant le nombre de cœurs présents dans notre processeur, celui-ci sera appelé un processeur double-cœur (deux cœurs), quadruple-cœur (4 cœurs), octuple-cœur (8 cœurs), etc. Un processeur double-cœur est équivalent à avoir deux processeurs dans l'ordinateur, un processeur quadruple-cœur est équivalent à avoir quatre processeurs dans l'ordinateur, etc. Ces processeurs sont devenus la norme dans les ordinateurs grand public et les logiciels et systèmes d'exploitation se sont adaptés.
===Les coprocesseurs===
Quelques ordinateurs assez anciens disposaient de '''coprocesseurs''', des processeurs qui complémentaient un processeur principal. Les ordinateurs de ce type avaient un processeur principal, le '''CPU''', qui était secondé par un ou plusieurs coprocesseurs. Sauf exception, le CPU et le coprocesseur exécutent des programmes différents, ils travaillent en parallèle.
Les coprocesseurs les plus connus sont les '''coprocesseurs pour le rendu 2D/3D'''. Ils ont eu leur heure de gloire sur les anciennes consoles de jeux vidéo, comme Super Nintendo, la Playstation et autres consoles de cette génération ou antérieure. Ils s'occupaient respectivement de calculer les graphismes des jeux vidéos. De nos jours, ils ont été remplacés par des cartes graphiques, ou des ''Graphic Processing Units'', qui ne sont pas considérées comme des coprocesseurs.
Les '''coprocesseurs sonores''' sont une sorte d'ancêtre des cartes son, utilisés sur les anciennes consoles de jeux vidéo, comme La Nintendo 64, la Playstation et autres consoles antérieures. Ils s'occupaient respectivement de calculer tout ce qui a trait au son. Pour donner un exemple, on peut citer la console Neo-géo, qui disposait de deux processeurs travaillant en parallèle : un processeur principal, et un coprocesseur sonore. Le processeur principal était un Motorola 68000, alors que le coprocesseur sonore était un processeur Z80.
L'accès aux périphériques est quelque chose sur lequel nous passerons plusieurs chapitres dans ce cours. Mais sachez que l'accès aux périphériques peut demander pas mal de puissance de calculs. Le CPU principal peut faire ce genre de calculs par lui-même, mais il n'est pas rare qu'un '''coprocesseur d'IO''' soit dédié à l'accès aux périphériques. Un exemple assez récent est celui de la console de jeu Nintendo 3DS. Elle disposait d'un processeur principal de type ARM9, d'un coprocesseur pour les divisions qu'on abordera plus bas, et d'un second processeur ARM7. L'ARM 7 était utilisé comme coprocesseur d'I/O, ainsi que pour l'émulation de la console GBA.
[[File:Asmp 2.gif|centre|vignette|upright=2|Co-processeur pour l'accès aux entrées-sorties.]]
Les '''coprocesseurs arithmétiques''' sont un peu à part des autres. Ils sont spécialisés dans les calculs en virgule flottante. Ils étaient utilisés à une époque où les CPU ne géraient que des calculs entiers (en binaire ou en BCD). Un exemple est le coprocesseur flottant x87, complémentaire des premiers processeurs Intel x86. Il y a eu la même chose sur les processeurs Motorola 68000, avec deux coprocesseurs flottants appelés les Motorola 68881 et les Motorola 68882.
Un exemple récent de coprocesseur est celui utilisé sur la console de jeu Nintendo DS. La console utilisait deux processeurs, un ARM9 et un ARM7, qui ne pouvaient pas faire de division entière. Il s'agit pourtant d'opérations importantes dans le cas du rendu 3D, ce qui fait que les concepteurs de la console ont rajouté un coprocesseur spécialisé dans les divisions entières et les racines carrées. Le coprocesseur était adressable directement par le processeur, comme peuvent l'être la RAM ou les périphériques.
==Les entrées-sorties==
Tous les circuits vus précédemment traitent des données codées en binaire. Ceci dit, les données ne sortent pas de n'importe où : l'ordinateur contient des composants électroniques qui traduisent des informations venant de l’extérieur en nombres. Ces composants sont ce qu'on appelle des '''entrées'''. Par exemple, le clavier est une entrée : l'électronique du clavier attribue un nombre entier (''scancode'') à une touche, nombre qui sera communiqué à l’ordinateur lors de l'appui d'une touche. Pareil pour la souris : quand vous bougez la souris, celle-ci envoie des informations sur la position ou le mouvement du curseur, informations qui sont codées sous la forme de nombres. La carte son évoquée il y a quelques chapitres est bien sûr une entrée : elle est capable d'enregistrer un son, et de le restituer sous la forme de nombres.
S’il y a des entrées, on trouve aussi des '''sorties''', des composants électroniques qui transforment des nombres présents dans l'ordinateur en quelque chose d'utile. Ces sorties effectuent la traduction inverse de celle faite par les entrées : si les entrées convertissent une information en nombre, les sorties font l'inverse : là où les entrées encodent, les sorties décodent. Par exemple, un écran LCD est un circuit de sortie : il reçoit des informations, et les transforme en image affichée à l'écran. Même chose pour une imprimante : elle reçoit des documents texte encodés sous forme de nombres, et permet de les imprimer sur du papier. Et la carte son est aussi une sortie, vu qu'elle transforme les sons d'un fichier audio en tensions destinées à un haut-parleur : c'est à la fois une entrée, et une sortie.
Les '''entrées-sorties''' incluent toutes les entrées et sorties, et même certains composants qui sont les deux à la fois. Il s'agit d'un terme générique, qui regroupe des composants forts différents. Dans ce qui va suivre, nous allons parfois parler de périphériques au lieu d'entrées-sorties, mais les deux termes ne sont pas équivalents. Dans le détail, les entrées-sorties regroupent :
* Les '''périphériques''' sont les composants connectés sur l'unité centrale. Exemple : les claviers, souris, webcam, imprimantes, écrans, clés USB, disques durs externes, la Box internet, etc.
* Les '''cartes d'extension''', qui se connectent sur la carte mère via un connecteur, comme les cartes son ou les cartes graphiques.
* D'autres composants sont soudés à la carte mère mais sont techniquement des entrées-sorties : les cartes sons soudées sur les cartes mères actuelles, par exemple.
===L'interface avec le reste de l'ordinateur===
Les entrées-sorties sont très diverses, fonctionnent très différemment les unes des autres. Mais du point de vue du reste de l'ordinateur, les choses sont relativement standardisées. Du point de vue du processeur, les entrées-sorties sont juste des paquets de registres ! Tous les périphériques, toutes les entrées-sorties contiennent des '''registres d’interfaçage''', qui permettent de faire l'intermédiaire entre l'entrée/sortie et le reste de l'ordinateur. L'entrée/sortie est conçu pour réagir automatiquement quand on écrit dans ces registres.
[[File:Registres d'interfaçage.png|centre|vignette|upright=2|Registres d'interfaçage.]]
Les registres d’interfaçage sont assez variés. Les plus évidents sont les '''registres de données''', qui permettent l'échange de données entre le processeur et les périphériques. Pour échanger des données avec l'entrée/sortie, le processeur a juste à lire ou écrire dans ces registres de données. On trouve généralement un registre de lecture et un registre d'écriture, mais il se peut que les deux soient fusionnés en un seul registre d’interfaçage de données. Si le processeur veut envoyer une donnée à une entrée/sortie, il a juste à écrire dans ces registres. Inversement, s'il veut lire une donnée, il a juste à lire le registre adéquat.
Mais le processeur ne fait pas que transmettre des données à l'entrée/sortie. Le processeur lui envoie aussi des « commandes », des valeurs numériques auxquelles l'entrée/sortie répond en effectuant un ensemble d'actions préprogrammées. En clair, ce sont l'équivalent des instructions du processeur, mais pour l'entrée/sortie. Par exemple, les commandes envoyées à une carte graphique peuvent être : affiche l'image présente à cette adresse mémoire, calcule le rendu 3D à partir des données présentes dans ta mémoire, etc. Pour recevoir les commandes, l'entrée/sortie contient des ''registres de commande'' qui mémorisent les commandes envoyées par le processeur. Quand le processeur veut envoyer une commande à l'entrée/sortie, il écrit la commande en question dans ce ou ces registres.
Enfin, beaucoup d'entrée/sortie ont un ''registre d'état'', lisible par le processeur, qui contient des informations sur l'état de l'entrée/sortie. Ils servent notamment à indiquer au processeur que l'entrée/sortie est disponible, qu'il est en train d’exécuter une commande, qu'il est occupé, qu'il y a un problème, qu'il y a une erreur de configuration, etc.
===Les adresses des registres d’interfaçage===
Les registres des périphériques sont identifiés par des adresses mémoires. Et les adresses sont conçues de façon à ce que les adresses des différentes entrées/sorties ne se marchent pas sur les pieds. Chaque entrée/sortie, chaque registre, chaque contrôleur a sa propre adresse. D'ordinaire, certains bits de l'adresse indiquent quel est le destinataire. Certains indiquent quel est l'entrée/sortie voulue, les restants indiquant le registre de destination.
Il existe deux organisations possibles pour les adresses des registres d’interfaçages. La première possibilité est de séparer les adresses pour les registres d’interfaçage et les adresses pour la mémoire. Le processeur doit avoir des instructions séparées pour gérer les périphériques et adresser la mémoire. Il a des instructions de lecture/écriture pour lire/écrire en mémoire, et d'autres pour lire/écrire les registres d’interfaçage. Sans cela, le processeur ne saurait pas si une adresse est destinée à un périphérique ou à la mémoire.
[[File:Espaces d'adressages séparés entre mémoire et périphérique.png|centre|vignette|upright=2.5|Espaces d'adressages séparés entre mémoire et périphérique]]
L'autre méthode mélange les adresses mémoire et des entrées-sorties. Si on prend par exemple un processeur de 16 bits, où les adresses font 16 bits, alors les 65536 adresses possibles seront découpées en deux portions : une partie ira adresser la RAM/ROM, l'autre les périphériques. On parle alors d''''entrées-sorties mappées en mémoire'''. L'avantage est que le processeur n'a pas besoin d'avoir des instructions séparées pour les deux.
[[File:IO mappées en mémoire.png|centre|vignette|upright=2.0|IO mappées en mémoire]]
Pour résumer, communiquer avec une entrée/sortie est similaire à ce qu'on a avec les mémoires. Il suffit de lire ou écrire dans des registres d’interfaçage, qui ont chacun une adresse mémoire. Le problème est que le système d'exploitation ne connaît pas toujours le fonctionnement d'une entrée/sortie : il faut installer un programme qui va s'exécuter quand on souhaite communiquer avec l'entrée/sortie, et qui s'occupera de tout ce qui est nécessaire pour le transfert des données, l'adressage du périphérique, etc. Ce petit programme est appelé un driver ou '''pilote de périphérique'''. La « programmation » périphérique est très simple : il suffit de savoir quoi mettre dans les registres, et c'est le pilote qui s'en charge.
==Les architectures Harvard et Von Neumann==
Après avoir vu le processeur, les mémoires et les entrées-sorties, voyons voir comment le tout est interconnecté. Tous les ordinateurs ne sont pas organisés de la même manière, pour ce qui est de leurs bus. Mais pour comprendre pourquoi, nous devons regarder qui communique avec qui, dans un ordinateur. Pour rappel, les données sont placées en mémoire RAM, alors que les instructions sont placées en mémoire ROM. Le processeur lit des instructions dans la mémoire ROM, il lit et écrit dans la mémoire RAM, et accède aux registres d’interfaçage des entrées-sorties. Il y a donc besoins de trois interconnexions : CPU-ROM, CPU-RAM et CPU-IO.
[[File:Réseau d'interconnexion avec un processeur au centre.png|centre|vignette|upright=2|Réseau d'interconnexion avec un processeur au centre]]
Il parait intéressant d'utiliser trois interconnexions, au minimum CPU-ROM, CPU-RAM et CPU-IO. Néanmoins, faire ainsi a de nombreux désavantages. Déjà, il faut pouvoir brancher tout ça sur le processeur. Et celui-ci n'a pas forcément assez de broches pour. Aussi, il est parfois préférable de mutualiser des bus, à savoir de connecter plusieurs composants sur un même bus. Par exemple, on peut mutualiser le bus pour la mémoire RAM et pour la mémoire ROM. Il faut dire que les deux bus sont des bus mémoire, avec un bus d'adresse, un bus de données, et surtout : des bus de commande similaires. Les mutualiser est alors très simple, et permet d'économiser pas mal de broches.
[[File:Réseau d'interconnexion avec un processeur au centre et une architecture Harvard.png|centre|vignette|upright=2|Réseau d'interconnexion avec un processeur au centre et une architecture Harvard]]
Cette mutualisation nous amène naturellement à parler de la distinction entre les architectures Harvard d'un côté et les architectures Von Neumann de l'autre. Elle est très liée au fait d'utiliser soit un bus mémoire unique, soit des bus séparés pour la ROM et la RAM. Voyons cela en détail.
===Les architectures Harvard et Von Neumann : des bus séparés ou unifiés===
Avec l''''architecture Harvard''', la mémoire ROM et la mémoire RAM sont reliées au processeur par deux bus séparés. Il y a un bus RAM pour la mémoire RAM, un bus ROM pour la mémoire ROM. L'avantage de cette architecture est qu'elle permet de charger une instruction et une donnée simultanément : une instruction chargée sur le bus relié à la mémoire programme, et une donnée chargée sur le bus relié à la mémoire de données. Et cela simplifie fortement la conception du processeur.
[[File:Harvard Architecture.png|centre|vignette|upright=2|Architecture Harvard, avec une ROM et une RAM séparées.]]
Avec l''''architecture Von Neumann''', mémoire ROM et mémoire RAM sont reliées au processeur par un bus unique. Le bus unique qui relie processeur, RAM et ROM, s'appelle le '''bus mémoire'''. Un défaut de ces architecture est qu'elles ne peuvent pas charger une instruction et une donnée en même temps. Et cela pose quelques problèmes pour la conception du processeur. Par contre, nous verrons dans ce qui suit qu'utiliser un bus mémoire partagé est bien plus flexible et permet des choses que les architectures Harvard ne peuvent pas faire.
[[File:Architecture Von Neumann, avec deux bus séparés.png|centre|vignette|upright=2|Architecture Von Neumann, avec deux bus séparés.]]
===Les architectures Harvard et Von Neumann : des espaces d'adressage séparés ou unifiés===
La distinction précédente se base sur les connexions entre RAM, ROM et processeur. Mais il existe une autre distinction, très liée, qui est souvent utilisée comme seconde définition des architectures Harvard/Von Neumann. Elle est liée aux adresses mémoire que le processeur peut gérer. Prenons un processeur 16 bits, par exemple, qui gère naturellement des adresses de 16 bits. Il peut gérer 2^16 adresses, soit 64 kibioctets de mémoire. L'ensemble de ces adresses est appelé un '''espace d'adressage'''. Mais comment cet espace d'adressage est utilisé pour adresser une RAM et une ROM ?
Sur les architectures Harvard, le processeur voit deux mémoires séparées avec leur lot d'adresses distinctes. Une même adresse peut donc correspondre soit à la mémoire ROM, soit à la mémoire RAM, suivant le bus utilisé. L'espace d'adressage est donc doublé, dupliqué, avec un pour la ROM, un autre pour la RAM. Rien d'étonnant à cela : il y a deux bus d'adresses, chacun correspondant à un espace d'adressage.
[[File:Vision de la mémoire par un processeur sur une architecture Harvard.png|centre|vignette|upright=2|Vision de la mémoire par un processeur sur une architecture Harvard.]]
Avec l'architecture Von Neumann, la RAM et la ROM doivent se partager les adresses mémoires disponibles. Il n'y a qu'un seul espace d'adressage qui est coupé en deux, avec une partie pour la ROM et une autre pour la RAM. Une adresse correspond soit à la mémoire RAM, soit à la mémoire ROM, mais pas aux deux. Typiquement, la mémoire ROM occupe une partie des adresses, la mémoire RAM utilise le reste. La répartition des adresses est réalisée par les circuits de décodage d'adresse mentionnés plus haut.
[[File:Vision de la mémoire par un processeur sur une architecture Von Neumann.png|centre|vignette|upright=2|Vision de la mémoire par un processeur sur une architecture Von Neumann.]]
Les '''architectures Harvard modifiées''' sont des intermédiaires entre architectures Harvard et architectures Von Neumann, bien qu'elles penchent bien plus du côté des architectures Harvard. Précisons que la terminologie n'est pas claire, beaucoup d'auteurs mettent des définitions différentes derrière ces deux termes. Mais dans ce cours, nous utiliserons une définition très stricte de ce qu'est une architecture Harvard modifiée.
Une architecture Harvard modifiée est une architecture Harvard, où le processeur peut lire des données constantes depuis la mémoire ROM. Nous avions vu plus haut que les mémoires ROM peuvent mémoriser, en plus d'un programme exécutable, des données constantes, qui ne varient pas. Les architectures Harvard pures ne permettent pas de lire des données de ce genre depuis la mémoire ROM, alors que les architectures Harvard modifiées le permettent.
Une architecture Harvard modifiée dispose d'une instruction pour lire les données en mémoire RWM, et d'une instruction pour lire des données en mémoire ROM. Il y a donc deux versions de l'instruction LOAD, qui copient la donnée dans un registre général, mais dont la source de la donnée est différente. Une autre possibilité, plus rare, est que une instruction de copie, qui copie une constante depuis la mémoire ROM vers la mémoire RAM. Le cas le plus commun est l'utilisation de deux instructions LOAD séparées.
[[File:Espaces d'adressage sur une archi harvard modifiée.png|centre|vignette|upright=2.5|Espaces d'adressage sur une archi harvard modifiée]]
Ceci étant dit, revenons à la distinction entre architecture Harvard et Von Neumann. Il faut noter que la RAM et la ROM n'ont pas forcément la même taille. Et ce que ce soit sur une architecture Harvard que sur une architecture Von Neumann, mais c'est plus facile à expliquer sur une architecture Harvard.
On peut par exemple imaginer une architecture Harvard qui utilise des adresses de 16 bits pour la ROM, et seulement 8 bits pour la RAM. Le résultat est qu'il peut adresser 64 kibioctets de ROM, mais seulement 256 octets de RAM. Les deux bus d'adresse sont alors de taille différente, l'un faisant 8 bits, l'autre 16. Quelques processeurs 8 bits étaient dans ce cas, comme on le verra dans le chapitre sur les CPU 8bits. Mais d'autres processeurs utilisent des valeurs différentes, avec par exemple des adresses de 16 bits pour la RAM, mais de 20 bits pour la ROM, ou inversement.
Sur une architecture Von Neumann, tout dépend de comment les adresses sont réparties. La solution la plus simple découpe l'espace d'adressage en deux parties égales, avec la RAM qui est dans la moitié basse (qui part de l'adresse 0 jusqu'à l'adresse au milieu), alors que la ROM est dans la moitié haute (entre l'adresse du milieu et l'adresse maximale). Mais ce n'est pas la seule possibilité, la limite entre RAM et ROM peut être mise n'importe où. Prenons par exemple un processeur 32 bits, capable de gérer 4 milliards d'adresse. Il est parfaitement possible de réserver 128 mébioctets de poids fort à la mémoire ROM, et de laisser le reste à la mémoire RAM.
===Le décodage d'adresse sur les architectures Von Neumann===
Pour résumer, les architectures Harvard et Von Neumann se distinguent sur deux points :
* L'accès à la RAM et à la ROM se font par des bus séparés sur l'architecture Harvard, sur le même bus avec l'architecture Von Neumann.
* Les adresses pour la mémoire ROM et la mémoire RAM sont séparées sur les architectures Harvard, partagées sur l’architecture Von Neumann.
Les architectures Von Neumann utilisent donc un seul bus pour connecter la RAM et la ROM au processeur. Mais cela ne parait pas intuitif : comment deux composants peuvent se connecter aux mêmes fils ? Parce que c'est ce qu'implique le fait de partager un bus. Si je prends une mémoire RAM et une mémoire ROM, toutes deux de 8 bits, elles seront connectées à un bus mémoire de 8 bits. Intuitivement, on se dit qu'il y aura des conflits, du genre : la RAM et la ROM vont accéder au bus en même temps, comment savoir si une adresse est destinée à la RAM ou la ROM, etc ?
Tous ces problèmes sont résolus avec une solution très simple : à chaque instant, seule une mémoire est connectée au bus. L'idée est que les mémoires sont connectées ou déconnectées du bus selon les besoins. Si le processeur veut envoyer lire une donnée en mémoire RAM, il déconnecte la mémoire ROM du bus. Et inversement, s'il veut lire une instruction, il déconnecte la RAM et connecte la ROM.
Pour cela, les mémoires RAM et ROM possèdent une entrée ''Chip Select'' ou ''Output Enable'', qui agit comme une sorte de bouton ON/OFF. Lorsqu'on met un 1 sur cette entrée, la mémoire se connectera au bus. Ses entrées et sorties fonctionneront normalement, elle pourra recevoir des adresses, envoyer ou recevoir des données, tout sera normal. Par contre, si on met un 0 sur cette entrée, la mémoire se "désactive", ses entrée-sorties ne répondent plus aux sollicitations extérieures. Pire que ça : elles sont électriquement déconnectées.
Au total, tout cela demande de gérer deux bit ''Chip Select''/''Output Enable'' : un pour la RAM, un pour la ROM. Et ces deux bits sont configurés pour chaque accès mémoire, pour chaque lecture ou écriture. Pour cela, un circuit de '''décodage d'adresse''' prend en entrée l'adresse mémoire à lire/écrire, et active/désactive les mémoires RAM/ROM selon les besoins. Il prend l'adresse et configure les bits ''Chip Select''/''Output Enable''.
[[File:Décodage d'adresse sur une architecture Von Neumann.png|centre|vignette|upright=2|Décodage d'adresse sur une architecture Von Neumann.]]
L'implémentation la plus simple réserve la moitié des adresses pour la RAM, l'autre moitié pour la ROM. Typiquement, la ROM prend la moitié basse, la RAM la moitié haute. Dans ce cas, activer/désactiver la RAM et la ROM se fait avec seulement le bit de poids fort de l'adresse. Si le bit de poids fort est à 1, alors on accède à la RAM et la ROM doit être désactivée. Mais si ce bit est à 0, alors on accède à la moitié basse et il faut désactiver la RAM.
Une remarque intéressante : le fait de séparer la mémoire en deux parts égales permet de simuler une architecture Harvard à partir d'une architecture Von Neumann. Par exemple, le tout premier processeur d'Intel, le 4004, était l'un de ceux là. La RAM et la ROM sont reliés au même bus, et il y a donc un unique espace d'adressage, qui est séparé en deux parties égales. Le truc est que le processeur traite les deux parties égales comme deux espaces d'adressage séparés. Le processeur se débrouille pour cacher le fait qu'il y a un espace d'adressage unique coupé en deux, ce qui fait que les programmeurs voient bien deux espaces d'adressages distincts.
[[File:Décodage d'adresse sur une architecture Von Neumann basique.png|centre|vignette|upright=2|Décodage d'adresse sur une architecture Von Neumann basique.]]
Pour résumer, quand une adresse est envoyée sur le bus, les deux mémoires vont la recevoir mais une seule va répondre et se connecter au bus. Le décodage d'adresse garantit que seule la mémoire adéquate réponde à un accès mémoire. Le décodage d'adresse est réalisé par la carte mère, par un composant dédié.
Le mécanisme peut être utilisé pour combiner plusieurs RAM en une seule, idem avec les ROM. Pour comprendre l'idée, je vais prendre l'exemple de l'IBM PC, un des tout premier PC existant. Nous étudierons ce PC dans une section dédiée, à la fin du chapitre, aussi je vais passer rapidement dessus. Tout ce que je vais faire est vous présenter la carte mère du PC, et vous demander de faire est de compter les mémoires ROM et mémoires RAM sur la carte mère :
[[File:IBM 5150 Motherboard.svg|centre|vignette|upright=3|Carte mère de l'IBM 5150, un modèle de l'IBM PC.]]
Si vous remarquerez qu'il y a 5 mémoires ROM et 8 à 32 mémoires RAM. Le fait est que le processeur voit les différentes mémoires ROM comme une seule mémoire ROM. Idem avec les mémoires RAM : elle font chacune 2 kibioctets, et l'ensemble est vu par le processeur comme une seule RAM de 16 à 64 kibioctets. Et cela grâce aux circuits de décodage d'adresse, qui sont situés en haut à droite de la carte mère.
Pour comprendre l'idée, prenons l'exemple d'un processeur 16 bits, capable de gérer 64 kibioctets de mémoire. L'espace d'adressage est découpé en quatre portions, de 16 kibioctets chacune. Une portion est réservée à une ROM de 16 kibioctet, les autres sont chacune réservée à une RAM de 16 kibioctet. Le décodage d'adresse sélectionne alors la mémoire adéquate en utilisant les deux bits de poids fort de l'adresse.
* S'ils valent 00, alors c'est la mémoire ROM qui est activée, connectée au bus.
* S'ils valent 01, alors c'est la première mémoire RAM qui est connectée au bus.
* S'ils valent 10, alors c'est la seconde mémoire RAM qui est connectée au bus.
* S'ils valent 11, alors c'est la troisième mémoire RAM qui est connectée au bus.
[[File:Décodage d'adresse sur une architecture Von Neumann, utilisant plusieurs RAM et une ROM.png|centre|vignette|upright=3|Décodage d'adresse sur une architecture Von Neumann, utilisant plusieurs RAM et une ROM]]
===L'impact sur la conception du processeur===
Plus haut, j'ai parlé d'un des avantages des architectures Harvard : elles peuvent lire une instruction en même temps qu'elles accèdent à une donnée. La donnée est lue/écrite en RAM, alors que l'instruction est lue en ROM. Et cela permet de simplifier l'intérieur du processeur. Pas de beaucoup, mais c'est déjà ça de pris. Voyons maintenant comment cela impacte l'intérieur du processeur. Tout ce dont vous avez à vous rappeler est la séparation entre chemin de données et unité de contrôle, et que les registres généraux sont dans le premier, le ''program counter'' dans la seconde.
Avec une architecture Harvard, les instructions et les données passent par des bus différent : bus ROM pour les instructions, bus RAM pour les données. L'intuition nous dit que le bus pour la mémoire ROM est connecté à l'unité de contrôle, alors que le bus pour la RAM est connecté au chemin de données. Et dans les grandes lignes, c'est vrai. La logique est imparable pour ce qui est des bus de données. Mais il y a une petite subtilité pour les bus d'adresse.
Pour comprendre comment le processeur exploite ces deux bus, voyons ce qui transite dessus. Pour la mémoire ROM, elle reçoit l'adresse de l'instruction à lire, elle renvoie l'instruction adéquate. Pour cela, le ''program counter'' est envoyé sur le bus d'adresse, l'instruction sur le bus de données. Pour la mémoire RAM, elle échange des données avec les registres généraux, les registres pour les données. Les adresses utilisées pour la RAM viennent elles soit du chemin de données, soit de l'unité de contrôle, tout dépend du mode d'adressage. Mais le ''program counter'' n'est pas impliqué.
[[File:Architecture Harvard - échanges de données.png|centre|vignette|upright=2|Architecture Harvard - échanges de données]]
Les architectures Harvard modifiées doivent cependant rajouter une connexion entre le bus ROM et les registres généraux. C'est nécessaire pour charger une donnée constante depuis la mémoire ROM. Rappelons que la donnée constante est copiée dans un registre général, donc dans le chemin de données.
[[File:Architecture Harvard modifiée - implémentation du processeur.png|centre|vignette|upright=2|Architecture Harvard modifiée - implémentation du processeur]]
Avec les architectures Von Neumann, il y a un seul bus qui est relié à la fois au chemin de données et à l'unité de contrôle. Si le processeur lit une instruction, le bus doit être relié à l'unité de contrôle. Par contre, s'il accède à une donnée, il doit être relié au chemin de données (le bus d'adresse peut éventuellement être connecté au séquenceur, si celui-ci fournit l'adresse à lire). Il faut donc utiliser un paquet de multiplexeurs et de démultiplexeurs pour faire la connexion au bon endroit.
[[File:Architecture Von Neumann - implémentation du processeur.png|centre|vignette|upright=2|Architecture Von Neumann - implémentation du processeur]]
Une instruction se fait en deux temps : on charge l'instruction depuis la mémoire ROM, puis on l'exécute. Avec une architecture Harvard, tout cela se fait en un seul cycle d'horloge, vu que charger la ROM et accéder aux données peut se faire en même temps. Pas avec les architectures Von Neumann, qui doivent libérer le bus mémoire après avoir chargé une instruction. Elles n'ont pas le choix : elles chargent l'instruction lors d'un premier cycle d'horloge, puis l'exécutent lors du second.
Pour cela, ils incorporent un registre appelé le '''registre d'instruction''', qui mémorise l'instruction chargée. L'instruction est copiée dans ce registre lors du premier cycle, puis est utilisée lors du second cycle. Le registre permet de ne pas oublier l’instruction entre les deux cycles. Le registre d'instruction est obligatoire sur les architectures Von Neumann. En comparaison, il est facultatif sur les architectures Harvard. Elles peuvent en avoir un, pour des raisons techniques, mais ce n'est pas obligatoire.
[[File:Registre d'instruction.png|centre|vignette|upright=2|Registre d'instruction.]]
===Les architectures Von Neumann sont plus flexibles===
Sur les architectures Harvard, le processeur sait faire la distinction entre programme et données. Les données sont stockées dans la mémoire RAM, le programme est stocké dans la mémoire ROM. Les deux sont séparés, accédés par le processeur sur des bus séparés, et c'est ce qui permet de faire la différence entre les deux. Il est impossible que le processeur exécute des données ou modifie le programme. Du moins, tant que la mémoire qui stocke le programme est bien une ROM.
Par contre, sur les architectures Von Neumann, il est impossible de distinguer programme et données, sauf en ajoutant des techniques de protection mémoire avancées. La raison est qu'il est impossible de faire la différence entre donnée et instruction, vu que rien ne ressemble plus à une suite de bits qu'une autre suite de bits. Et c'est à l'origine d'un des avantages majeur de l'architecture Von Neumann : il est possible que des programmes soient copiés dans la mémoire RWM et exécutés dans celle-ci.
Un cas d'utilisation familier est celui de votre ordinateur personnel. Le système d'exploitation et les autres logiciels sont copiés en mémoire RAM à chaque fois que vous les lancez. Mais cet exemple implique un disque dur, ce qui rend les choses plus compliquées que prévu. Un autre exemple serait la compilation de code à la volée, mais il ne sera pas très parlant.
Un exemple plus adapté serait celui où la ROM mémorise un programme compressée dans la mémoire ROM, qui est décompressé pour être exécuté en mémoire RAM. Le programme de décompression est stocké en mémoire ROM et est exécuté au lancement de l’ordinateur. Cette méthode permet d'utiliser une mémoire ROM très petite et très lente, tout en ayant un programme rapide (si la mémoire RWM est rapide).
Il est aussi possible de créer des programmes qui modifient leurs propres instructions : cela s'appelle du '''code auto-modifiant'''. Ce genre de choses servait autrefois sur des ordinateurs rudimentaires, au tout début de l'informatique. À l'époque, les adresses à lire/écrire devaient être écrites en dur dans le programme, dans les instructions exécutées. Pour gérer certaines fonctionnalités des langages de programmation qui ont besoin d'adresses modifiables, comme les tableaux, on devait corriger les adresses au besoin avec du code auto-modifiant. De nos jours, le code automodifiant est utilisée occasionnellement pour rendre un programme indétectable dans la mémoire (les virus informatiques utilisent beaucoup ce genre de procédés).
L'impossibilité de séparer données et instructions est à l'origine de problèmes assez fâcheux. Il est parfaitement possible que le processeur charge et exécute des données, qu'il prend par erreur pour des instructions. C'est le cas quand des pirates informatiques arrivent à exploiter des bugs. Il arrive que des pirates informatiques vous fournissent des données corrompues, qui contiennent un virus ou un programme malveillant est caché dans les données. Les bugs en question permettent d'exécuter ces données, donc virus. Pour éviter cela, le système d'exploitation peut marquer certaines zones de la mémoire comme non-exécutable, c’est-à-dire que le système d'exploitation interdit d’exécution de quoi que ce soit qui est dans cette zone. Mais ce n'est pas parfait.
Toujours est-il que tout cela est impossible sur les architectures Harvard. Et ce serait très limitant. Imaginez : pas possible de lancer un programme depuis le disque dur ou une clé USB, le programme doit impérativement être dans une mémoire ROM, pas de compilation à la volée, etc. Que des techniques très utilisées dans l'informatique moderne. Malgré ses défauts, les architectures Von Neumann ne sont pas les plus utilisées pour rien. Les architectures Harvard sont concrètement utilisées uniquement dans l'informatique embarquée, sur des microcontrôleurs très spécifiques.
==Le bus de communication avec les entrées-sorties==
Le processeur, la mémoire et les entrées-sorties sont connectées par un ou plusieurs '''bus de communication'''. Ce bus n'est rien d'autre qu'un ensemble de fils électriques sur lesquels on envoie des zéros ou des uns. Pour communiquer avec la mémoire, il y a trois prérequis qu'un bus doit respecter : pouvoir sélectionner la case mémoire (ou l'entrée-sortie) dont on a besoin, préciser à la mémoire s'il s'agit d'une lecture ou d'une écriture, et enfin pouvoir transférer la donnée. Pour cela, on doit donc avoir trois bus spécialisés, bien distincts, qu'on nommera le bus de commande, le bus d'adresse, et le bus de donnée.
* Le '''bus de données''', sur lequel s'échangent les données entre les composants.
* Le '''bus de commande''' pour configurer la mémoire et les entrées-sorties.
* Le '''bus d'adresse''', facultatif, permet de préciser quelle adresse mémoire il faut lire/écrire.
Chaque composant possède des entrées séparées pour le bus d'adresse, le bus de commande et le bus de données. Par exemple, une mémoire RAM possédera des entrées sur lesquelles brancher le bus d'adresse, d'autres sur lesquelles brancher le bus de commande, et des broches d'entrée-sortie pour le bus de données. Précisons cependant que le bus de commande n'est pas exactement le même entre des mémoires RAM/ROM et des entrées-sorties.
[[File:Bus general schematic.svg|centre|vignette|upright=2|Contenu d'un bus, généralités.]]
===Le réseau d'interconnexion : généralités===
Reprenons où nous nous étions arrêté. Avant de voir les architectures Harvard et Von Neumann, nous avions dit que le processeur, les mémoires et les entrées-sorties sont reliées entre eux par un réseau d'interconnexion. Nous venons de voir qu'il est possible de mutualiser certains bus, notamment celui de la mémoire RAM et celui de la mémoire ROM. Mais il est possible de faire la même chose pour les entrées-sorties. Là encore, il est possible de regrouper le bus mémoire avec les bus pour les entrées-sorties. Voyons ce que cela implique.
{|
|[[File:Réseau d'interconnexion avec un processeur au centre.png|centre|vignette|upright=2|Réseau d'interconnexion avec une architecture Harvard.]]
|[[File:Réseau d'interconnexion avec un processeur au centre et une architecture Harvard.png|centre|vignette|upright=2|Interconnexions d'une architecture Von Neumann.]]
|}
Avant de poursuivre, nous devons préciser quelque chose d'important. Sur les ordinateurs modernes, les entrées-sorties peuvent accéder à la mémoire RAM. Les ordinateurs modernes intègrent des techniques de '''''Direct Memory Access''''' (DMA) qui permettent aux entrées-sorties de lire ou d'écrire en mémoire RAM. Les transferts DMA se font sans intervention du processeur. Ils permettent de copier un bloc de plusieurs octets, dans deux sens : de la mémoire RAM vers une entrée-sortie, ou inversement. Le DMA demande d'ajouter un circuit dédié sur la carte mère : le contrôleur DMA. Il effectue la copie d'un paquet d'octets de la RAM vers l'entrée-sortie ou dans l'autre sens.
[[File:Réseau d'interconnexion avec un processeur au centre, et direct memory access.png|centre|vignette|upright=2|Réseau d'interconnexion avec un processeur au centre, et direct memory access]]
===Les bus systèmes===
La première solution utilise un bus unique, celui-ci est appelé le '''bus système''', aussi appelé ''backplane bus''. Le bus système est connecté à la mémoire RAM, la mémoire ROM, au processeur, et aux entrées-sorties. Tous les composants présents dans l'ordinateur sont connectés à ce bus, sans exception. De tels bus avaient pour avantage la simplicité. Le processeur n'est connecté qu'à un seul bus, ce qui utilise peu de broches et économise des fils. La mutualisation des bus est totale, le câblage est plus simple, la fabrication aussi.
[[File:Architecture minimale d'un ordinateur.png|centre|vignette|upright=2|Architecture minimale d'un ordinateur.]]
Un bus système contient un bus d'adresse, de données et de commande. Un bus système se marie bien avec des entrées-sorties mappées en mémoire. La conséquence est que le bus d'adresse ne sert pas que pour l'accès à la mémoire RAM/ROM, mais aussi pour l'accès aux entrées-sorties. Il y a moyen d'implémenter un système d'adresse séparés avec, mais c'est pas l'idéal.
[[File:Architecture Von Neumann avec les bus.png|centre|vignette|upright=2|Architecture Von Neumann avec les bus.]]
Un bus système n'a pas de limitations quant aux échanges de données. Le processeur peut communiquer directement avec les mémoires et les entrées-sorties, les entrées-sorties peuvent communiquer avec la mémoire RAM, etc. Notamment, un bus système peut implémenter le ''Direct Memory Access''. Il suffit juste de connecter un contrôleur DMA sur le bus système. Le contrôleur DMA est considéré comme une entrée-sortie, ses registres sont mappés en mémoire et sont donc accessibles directement par le processeur.
[[File:Bus système avec controleur DMA.png|centre|vignette|upright=2|Bus système avec contrôleur DMA.]]
Si on suit la définition à la lettre, un bus système est systématiquement une architecture Von Neumann, vu que la mémoire ROM et la mémoire RAM sont reliées sur le bus système. La conséquence est que les circuits de décodage d'adresse sont présents. Ils sont toujours sur la carte mère, et sont plus ou moins à côté du bus système. Cependant, le décodage d'adresse est parfois étendu pour tenir compte des entrées-sorties.
Les entrées-sorties soudées sur la carte mère ont elles aussi des entrées ''Chip Select'' ou quelque chose de similaire. Le décodage d'adresse peut alors les activer ou les désactiver suivant l'adresse envoyée sur le bus d'adresse. C'est ce qui arrive quand le processeur écrit dans un registre d’interfaçage : il envoie l'adresse de ce registre sur le bus d'adresse, le circuit de décodage d'adresse active seulement l'entrée-sortie associée. Il faut noter que ce n'est pas systématique, il existe des techniques pour se passer de décodage d'adresse. Mais nous en reparlerons dans le chapitre sur les bus de communication.
[[File:Chipselectfr.png|centre|vignette|upright=1.5|Exemple détaillé.]]
Les bus systèmes sont certes très simples, mais ils ont aussi des désavantages. Par exemple, il faut éviter que le processeur et les entrées-sorties se marchent sur les pieds, ils ne peuvent pas utiliser le bus en même temps. De tels conflits d'accès au bus système sont fréquents et ils réduisent la performance, comme on le verra dans le chapitre sur les bus. De plus, un bus système a le fâcheux désavantage de relier des composants allant à des vitesses très différentes : il arrivait fréquemment qu'un composant rapide doive attendre qu'un composant lent libère le bus. Le processeur était le composant le plus touché par ces temps d'attente.
Elle était utilisée sur les tout premiers ordinateurs, pour sa simplicité. Elle était parfaitement adaptée aux anciens composants, qui allaient tous à la même vitesse. De nos jours, les ordinateurs à haute performance ne l'utilisent plus trop, mais elle est encore utilisée sur certains systèmes embarqués, en informatique industrielle dans des systèmes très peu puissants.
===Les bus d'entrées-sorties===
Les bus systèmes ont de nombreux problèmes, ce qui fait que d'anciens ordinateurs faisaient autrement. À la place d'un bus système unique, ils utilisent un bus séparé pour les mémoires, et un autre séparé pour les entrées-sorties. Le bus spécialisé pour la mémoire est appelé le '''bus mémoire''', l'autre bus est appelé le '''bus d'entrées-sorties'''. Le bus mémoire est généralement relié à la fois à la mémoire RAM et à la mémoire ROM, les exceptions ne sont pas rares, cependant.
[[File:Bus mémoire séparé du bus pour les IO.png|centre|vignette|upright=2|Bus mémoire séparé du bus pour les IO]]
Les bus d'entrée-sorties peuvent être spécialisés et simplifiés. Par exemple, ils peuvent avoir un bus de commande différent de celui de la mémoire, qui utilise nettement moins de fils. Le bus d'adresse peut aussi être réduit, et utiliser des adresses plus courtes que celles du bus mémoire. Les bus de données peuvent aussi être de taille différentes. Il est ainsi possible d'avoir un bus mémoire capable de lire/écrire 64 bits à la fois, alors que la communication avec les entrées-sorties se fait octet par octet ! En général, les bus d'entrée-sortie sont assez petits, ils ont une taille de 8 ou 16 bits, même si le bus mémoire est plus grand. Cela permet de ne pas gaspiller trop de broches. Ajouter un bus d'entrée-sortie n'est donc pas très gourmand en broches et en fils.
: Il est en théorie possible d'avoir une fréquence différente pour les deux bus, avec un bus mémoire ultra-rapide et un bus pour les entrées-sorties est un bus moins rapide. Mais il faut que le processeur soit prévu pour, et c'est très rare.
Niveau performances, le processeur peut théoriquement accéder à la mémoire en attendant qu'une entrée/sortie réponde, mais il faut que le processeur soit prévu pour, et ce n'est pas de la tarte. Par contre, cela implique d'avoir des adresses séparées pour les registres d’interfaçage et la mémoire. En clair : pas d'entrée-sortie mappée en mémoire ! Un autre problème est que les entrées-sorties ne peuvent pas communiquer avec la mémoire directement, elles doivent passer par l'intermédiaire du processeur. En clair : pas de ''Direct Memory Access'' ! Les deux sont des défauts rédhibitoires pour les programmeurs système, notamment pour ceux qui codent les pilotes de périphériques.
Pour résumer, les défauts sont assez problématiques : pas d'entrées-sorties mappées en mémoire, pas de ''Direct Memory Access'', économie de broches limitée. Les deux premiers sont des défauts majeurs, qui font que de tels bus ne sont pas utilisés dans les ordinateurs modernes. À la place, ils utilisent une troisième solution, distincte des bus systèmes et des bus d'entrée-sorties.
===Les bus avec répartiteur===
Il existe une méthode intermédiaire, qui garde deux bus séparés pour la mémoire et les entrées-sorties, mais élimine les problèmes de brochage sur le processeur. L'idée est d'intercaler, entre le processeur et les deux bus, un '''circuit répartiteur'''. Il récupère tous les accès et distribue ceux-ci soit sur le bus mémoire, soit sur le bus des périphériques. Le ou les répartiteurs s'appellent aussi le '''''chipset''''' de la carte mère.
C'était ce qui était fait à l'époque des premiers Pentium. À l'époque, la puce de gestion du bus PCI faisait office de répartiteur. Elle mémorisait des plages mémoires entières, certaines étant attribuées à la RAM, les autres aux périphériques mappés en mémoire. Elles utilisaient ces plages pour faire la répartition.
[[File:IO mappées en mémoire avec séparation des bus.png|centre|vignette|upright=2|IO mappées en mémoire avec séparation des bus]]
Niveau adresses des registres d'interfacage, il est possible d'avoir soit des adresses unifiées avec les adresses mémoire, soit des adresses séparées.
L'usage d'un répartiteur ne pose pas de problèmes particuliers pour implémenter le DMA. La seule contrainte est que le contrôleur DMA soit intégré dans le répartiteur. Les échanges entre IO et mémoire passent par le répartiteur, qui fait le pont entre bus mémoire et bus des IO.
[[File:Implémentation du DMA avec un répartiteur.png|centre|vignette|upright=2|Implémentation du DMA avec un répartiteur]]
==Les microcontrôleurs et ''system on chip''==
Parfois, on décide de regrouper la mémoire, les bus, le CPU et les ports d'entrée-sortie dans un seul circuit intégré, un seul boitier. L'ensemble forme alors ce qu'on appelle un '''''System on Chip''''' (système sur une puce), abrévié en SoC. Le nom est assez explicite : un SoC comprend un système informatique complet sur une seule puce de silicium, microprocesseurs, mémoires et périphériques inclus. Ils incorporent aussi des ''timers'', des compteurs, et autres circuits très utiles.
[[File:ARMSoCBlockDiagram.svg|centre|vignette|upright=2|SoC basé sur un processeur ARM, avec des entrées-sorties typiques de celles d'un µ-contrôleur. Le support du bus CAN, d'Ethernet, du bus SPI, d'un circuit de PWM (génération de signaux spécifiques), de convertisseurs analogique-digital et inverse, sont typiques des µ-contrôleurs.]]
Le terme SoC regroupe des circuits imprimés assez variés, aux usages foncièrement différents et à la conception distincte. Les plus simples d’entre eux sont des microcontrôleurs, qui sont utilisés pour des applications à base performance. Les plus complexes sont utilisés pour des applications qui demandent plus de puissance, nous les appellerons SoC haute performance.
La relation entre SoC et microcontrôleurs est assez compliquée à expliquer, la terminologie n'est pas clairement établie. Il existe quelques cours/livres qui séparent les deux, d'autres qui pensent que les deux sont très liés. Dans ce cours, nous allons partir du principe que tous les systèmes qui regroupent processeur, mémoire et quelques périphériques/entrées-sorties sont des SoC. Les microcontrôleurs sont donc un cas particulier de SoC, en suivant cette définition.
===Les microcontrôleurs===
Les '''microcontrôleurs''' sont des composants utilisés dans l'embarqué ou d'informatique industrielle. Leur nom trahit leur rôle. Ils sont utilisés pour contrôler de l'électroménager, des chaines de fabrication dans une usine, des applications robotiques, les alarmes domestiques, les voitures. De manière générale, on les trouve dans tous les systèmes dits embarqués et/ou temps réel. Ils ont besoin de s'interconnecter à un grand nombre de composants et intègrent pour cela un grand nombre d'entrée-sorties. Les microcontrôleurs sont généralement peu puissants, et doivent consommer peu d'énergie/électricité.
Fait amusant, on en trouve dans certains périphériques informatiques. Par exemple, les anciens disques durs intégraient un microcontrôleur qui contrôlait plusieurs moteurs/ Les moteurs pour faire tourner les plateaux magnétiques et les moteurs pour déplacer les têtes de lecture/écriture étaient commandés par ce microcontrôleur. Comme autre exemple, les claviers d'ordinateurs intègrent un microcontrôleur connecté aux touches, qui détecte quand les touches sont appuyées et qui communique avec l'ordinateur. Nous détaillerons ces deux exemples dans les chapitres dédiés aux périphériques et aux disques durs, tout deviendra plus clair à ce moment là. La majorité des périphériques ou des composants internes à un ordinateur contiennent des microcontrôleurs.
[[File:Microcontroller 8051.gif|centre|vignette|upright=2.5|Microcontrôleur Intel 8051.]]
Un microcontrôleur tend à intégrer des entrées-sorties assez spécifiques, qu'on ne retrouve pas dans les SoC destinés au grand public. Un microcontrôleur est typiquement relié à un paquet de senseurs et son rôle est de commander des moteurs ou d'autres composants. Et les entrées-sorties intégrées sont adaptées à cette tâche. Par exemple, ils tendent à intégrer de nombreux convertisseurs numériques-analogiques pour gérer des senseurs. Ils intègrent aussi des circuits de génération de signaux PWM spécialisés pour commander des moteurs, le processeur peut gérer des calculs trigonométriques (utiles pour commander la rotation d'un moteur), etc.
[[File:C8051F340-9 A B C D.png|centre|vignette|upright=2|Exemple d'entrées-sorties intégrées à un microcontroleur.]]
En plus des entrées-sorties intégrées, les microcontrôleurs ont souvent des '''ports d'entrées-sorties''' banalisés, à savoir qu'on peut brancher n'importe quoi dessus. Il était possible de brancher un capteur de température, un moteur à commander, un port série, un port parallèle, un écran, un clavier, une souris, peu importe. Les ports font souvent un octet et ils sont généralement reliées directement ou indirectement au processeur. Le logiciel qui s'exécute sur le processeur décide quoi envoyer sur des broches et comment interprète ce qui est reçu dessus.
Les ports banalisés de ce type sont parfois appelés des '''GPIO''', abréviation de ''General Purpose Input/Output'', mais nous utiliserons le terme de ''port I/O''. Un port regroupe plusieurs broches qui peuvent être utilisés à volonté. C'est le logiciel qui s'exécute sur le processeur qui décide de la fonction de broches. Un port IO peut fonctionner soit en tant qu'entrée, soit en tant que sortie. Il est possible de changer de sens en cours de fonctionnement, pour passer d'une entrée à une sortie ou inversement.
[[File:Afficheurs7seg.png|centre|vignette|upright=2|Exemple d'utilisation d'un port I/O. le port est connecté à un afficheur LCD dit 7-segments. Les 8 entrées de cet afficheur sont connectées à un port I/O d'un octet.]]
===Les SoC haute performance===
Les SoC les plus performants sont actuellement utilisés dans les téléphones mobiles, tablettes, ''Netbook'', ''smartphones'', ou tout appareil informatique grand public qui ne doit pas prendre beaucoup de place. La petite taille de ces appareils fait qu'ils gagnent à regrouper toute leur électronique dans un circuit imprimé unique. Mais les contraintes font qu'ils doivent être assez puissants. Ils incorporent des processeurs assez puissants, surtout ceux des ''smartphones''. C'est absolument nécessaire pour faire tourner le système d'exploitation du téléphone et les applications installées dessus.
Niveau entrées-sorties, ils incorporent souvent des interfaces WIFI et cellulaires (4G/5G), des ports USB, des ports audio, et même des cartes graphiques pour les plus puissants d'entre eux. Les SoC incorporent des cartes graphiques pour gérer tout ce qui a trait à l'écran LCD/OLED, mais aussi pour gérer la caméra, voire le visionnage de vidéo (avec des décodeurs/encodeurs matériel). Par exemple, les SoC Tegra de NVIDIA incorporent une carte graphique, avec des interfaces HDMI et VGA, avec des décodeurs vidéo matériel H.264 & VC-1 gérant le 720p. Pour résumer, les périphériques sont adaptés à leur utilisation et sont donc foncièrement différents de ceux des microcontrôleurs.
[[File:Phone hardware.png|centre|vignette|upright=2|Hardware d'un téléphone. On voit qu'il est centré autour d'un SoC, complété par de la RAM, un disque dur de faible capacité, de quoi gérer les entrées utilisateurs (l'écran tactile, les boutons), et un modem pour les émissions téléphoniques/2G/3G/4G/5G.]]
Un point important est que les processeurs d'un SoC haute performance sont... performants. Ils sont le plus souvent des processeurs de marque ARM, qui sont différents de ceux utilisés dans les PC fixe/portables grand public qui sont eux de type x86. Nous verrons dans quelques chapitres en quoi consistent ces différences, quand nous parlerons des jeux d'instruction du processeur. Autrefois réservé au monde des PCs, les processeurs multicœurs deviennent de plus en plus fréquents pour les SoC de haute performance. Il n'est pas rare qu'un SoC incorpore plusieurs cœurs. Il arrive même qu'ils soient foncièrement différents, avec plusieurs cœurs d'architecture différente.
La frontière entre SoC haute performance et microcontrôleur est de plus en plus floue. De nombreux appareils du quotidien intègrent des SoC haute performance, d'autres des microcontrôleurs. Par exemple, les lecteurs CD/DVD/BR et certains trackers GPS intègrent un SoC ou des processeurs dont la performance est assez pêchue. À l'opposé, les systèmes domotiques intègrent souvent des microcontrôleurs simples. Malgré tout, les deux cas d'utilisation font que le SoC/microcontrôleur est connecté à un grand nombre d'entrées-sorties très divers, comme des capteurs, des écrans, des LEDs, etc.
[[File:GPS tracker Hardware Architecture.png|centre|vignette|upright=2|Hardware d'un tracker GPS.]]
==Étude de quelques exemples d'architectures==
Après avoir vu la théorie, nous allons voir des exemples réels d'ordinateurs. Dans ce qui suit, nous allons voir des ordinateurs assez anciens, pour une raison simple : ils collent assez bien à l''''architecture de base''' vue plus haut, avec un CPU, une RAM et une ROM, quelques entrées-sorties. Tous les ordinateurs modernes, mais aussi dans les smartphones, les consoles de jeu et autres, utilisent une architecture grandement modifiée et améliorée, avec un grand nombre de périphériques, disques durs/SSD, un grand nombre de mémoires différentes, etc.
Il pourrait sembler pertinent d’étudier des microcontrôleurs ou des ''System On Chip'', en premier lieu. Mais nous éviterons soigneusement de tels systèmes pour le moment. La raison est qu'ils ont un grand nombre d'entrées-sorties, qui sont peu familières. Attendez-vous à avoir près d'une vingtaine ou centaine d'entrée-sorties différentes pour de tels systèmes. Le tout est très complexe, bien trop pour un premier exemple. À la place, nous allons voir précisément des exemples plus simples : les premiers PC, et des consoles de jeu 8 et 16 bits.
Bien que ce soit des systèmes très simples, ils sont cependant plus complexes que l'architecture de base. Et leur avantages/désavantages sont un peu inverse l'un de l'autre. Si on devait résumer les différences, on aurait ceci :
* Les PC ont plus d'entrées-sorties que les consoles, bien que nettement moins que pour les microcontrôleurs/SoC.
* Les PC utilisent des disques durs, les consoles font avec soit des cartouches de jeu, soit des CD/DVD.
* Les PC utilisent des cartes électroniques séparées pour le son et l'écran, les consoles utilisent des circuits soudés sur la carte mère, qui sont souvent des co-processeurs.
* Les PC ont une mémoire ROM soudées sur la carte mère, les consoles 8 bits font sans.
Les PC et micro-ordinateurs ont plus d'entrées-sorties que les consoles. Même si on mets de côté les périphériques, ils ont aussi beaucoup de composants soudées sur la carte mère. En comparaison, les consoles de jeu 8/16 bits se débrouillent avec : une cartouche de jeu et une manette en entrée, une sortie vidéo et une sortie son.
Un autre point important est l'absence de disque dur ou de lecteur CD. La présence d'un disque dur ou d'un lecteur CD/DVD complexifie tout de suite l'architecture des PC. Il faut leur réserver un bus dédié ou les connecter à un bus système, cela demande d'ajouter des circuits sur la carte mère, etc. Et surtout, il faut expliquer comment l'ordinateur exécute des programmes, ce qui demande de parler de l'interaction avec le disque dur et la ROM du BIOS. Rien de tout cela sur les consoles de jeu 8 et 16 bits. Elles utilisent à la place des cartouches de jeu, qui intègrent une mémoire ROM, pour mémoriser les données du jeu, voire son code. Pas besoin de parler des mémoires de stockage, on est beaucoup plus proche de l'architecture de base avec une ROM unique.
Par contre, n'allez pas croire que tout est rose avec les consoles 8/16 bits. Il y a quelques différences qui font qu'elles sont plus complexes qu'un PC sur certains points.
Les PC utilisent des cartes électroniques à brancher sur la carte mère pour alimenter l'écran et les hauts-parleurs/casques, alors que les consoles de jeu utilisent des souvent co-processeurs dédiés pour le son et les graphismes. La différence parait mineure, mais elle avantage les consoles. Nous avons déjà expliqué ce que sont les co-processeurs plus haut, aussi les co-processeurs des consoles nous paraitrons familiers. On n'a pas à s’embêter à expliquer ce que sont les cartes d'extension, les bus associés et tout ce qui va avec, cela peut être retardé pour la section sur l'architecture des PC.
La gestion de la cartouche de jeu est aussi un peu subtile à comprendre, bien que ce soit bien plus simple à comprendre qu'un système avec un disque dur. Les cartouches de jeu intègrent une mémoire ROM, pour mémoriser les données du jeu, voire son code. Et le processeur doit exécuter le code depuis cette mémoire ROM. La conséquence est que les consoles 8/16 bits utilisent une architecture Harvard, avec un bus relié à la cartouche pour lire les instructions. Mais si ce n'était que ça... Les cartouches mémorisent aussi les données pour les graphismes, ce qui fait que le co-processeur vidéo doit lui aussi lire la cartouche pour récupérer ces données...
===L'architecture de la TurboGraphX-16===
La console PC Engine, aussi appelée TurboGraphX, est une ancienne console 8 bits. Elle contient un processeur 65C02, 8 kibioctets de RAM, un port manettes, une carte son et une carte vidéo. La '''carte son''' est le composant qui s'occupe de commander les haut-parleurs et de gérer tout ce qui a rapport au son. La '''carte graphique''' est le composant qui est en charge de calculer les graphismes, tout ce qui s'affiche à l'écran. Sur cette console, les cartes son et graphique ne sont PAS des co-processeurs, ce sont des circuits électroniques dits fixes. C'est totalement différent de ce qu'on a sur les consoles modernes, aussi le préciser est important.
Bien que la carte graphique ne soit pas un processeur, elle a 64 kibioctets de RAM rien que pour elle. La RAM en question est séparée de la RAM normale, c'est un circuit intégré séparé. Et c'est un cas très fréquent, qui reviendra par la suite. La majeure partie des cartes graphiques dispose de leur propre '''mémoire vidéo''', totalement réservée à la carte graphique. La RAM vidéo est connectée à la carte graphique via un bus séparé. Le processeur est souvent connecté à ce bus, afin de pouvoir écrire des données dedans, mais ce n'est pas le cas ici.
[[File:Architecture de la PC Engine, aussi appelée TurboGrafx-16.png|centre|vignette|upright=2.5|Architecture de la PC Engine, aussi appelée TurboGrafx-16]]
L'architecture de la console était particulièrement simple. Le processeur était le centre de l'architecture, tout était connecté dessus. Il y a un bus pour la cartouche de jeu, un autre pour la RAM, un autre pour les manettes, un autre pour carte son, et un dernier pour la carte graphique. Le fait d'avoir un bus par composant est assez rare et ce n'est le cas ici que parce des conditions particulières sont remplies. Déjà, il y a peu d'entrée-sorties. Ensuite, les bus font tous 8 bits, vu que le processeur est un CPU 8 bits. Avec 5 connexions de 8 bits, le tout utilise 40 broches, ce qui est beaucoup, mais totalement gérable. Par contre, les choses changerons pour les autres consoles.
Au final, l'organisation des bus peut s'expliquer avec ce qu'on a vu dans la section sur les bus de communication. La console utilise une architecture Harvard, car la ROM et la RAM utilisent des bus différents. De plus, il y a des bus dédiés aux entrées-sorties, séparés des bus mémoire. Enfin, la carte graphique a droit à ses propres bus pour lire dans la cartouche et dans sa RAM vidéo dédiée.
===L'architecture de la console de jeu NES===
Maintenant, nous allons voir la console de Jeu Famicom, aussi appelée la NES en occident. Elle a une architecture centrée sur un processeur Ricoh 2A03, similaire au processeur 6502, un ancien processeur autrefois très utilisé et très populaire. Le processeur est associé à 2 KB de mémoire RAM.
Sur certaines cartouches, on trouve une RAM utilisée pour les sauvegardes, qui est adressée par le processeur directement. Première variation par rapport à l'architecture de la console précédente : l'ajout de la RAM pour les sauvegardes dans les cartouches.
Niveau carte graphique, une différence importante est que la carte graphique est connectée à la cartouche de jeu via un autre bus, afin de pouvoir lire les sprites et textures du jeu dans la cartouche.
[[File:Architecture de la NES.png|centre|vignette|upright=2.5|Architecture de la NES]]
La différence avec l'architecture précédente est que des bus ont été fusionnés. Comme dit plus haut, le système utilise une architecture Harvard, vu que la ROM est dans la cartouche, alors que la RAM est soudée à la carte mère. Par contre, la Famicon utilise un bus dédié aux entrées-sorties. Il est utilisé pour la carte son et la carte graphique, seules les manettes sont sur un bus à part. Ce qui fait qu'on devrait plutôt parler de bus de sorties, mais passons... L'essentiel est qu'on n'est plus tout à fait dans le cas de la console précédente, avec un bus par composant.
===L'architecture de la SNES===
L'architecture de la SNES est illustrée ci-dessous. Les changements pour le processeur et la RAM sont mineurs.La RAM a augmenté en taille et passe à 128 KB. Pareil pour la RAM de la carte vidéo, qui passe à 64 KB. Par contre, on remarque un changement complet au niveau des bus, de la carte graphique et de la carte son.
[[File:Architecture de la SNES.png|centre|vignette|upright=2|Architecture de la SNES]]
La console utilise un '''bus système unique''', sur lequel tout est connecté : ROM, RAM, entrées-sorties, etc. La seule exception est pour les manettes, qui sont encore connectées directement sur le processeur, via un bus séparé. La transition vers un bus système s'explique par le fait que la console est maintenant de 16 bits, ce qui fait que les bus doivent être plus larges. Le processeur adresse des mémoires RAM et ROM plus grandes, ce qui double la taille de leurs bus. De plus, les entrées-sorties aussi ont besoin d'un bus plus large. Le processeur n'ayant pas un nombre illimité de broches, la seule solution est de fusionner les bus en un seul bus système.
Un autre changement est que la carte graphique est maintenant composée de deux circuits séparés. Encore une fois, il ne s'agit pas de coprocesseurs, mais de circuits non-programmables. Par contre, la carte son est remplacée par deux coprocesseurs audio ! De plus, les deux processeurs sont connectés à une mémoire RAM dédiée de 64 KB, comme pour la carte graphique. L'un est un processeur 8 bits (le DSP), l'autre est un processeur 16 bits.
Un point très intéressant : certains jeux intégraient des coprocesseurs dans leurs cartouches de jeu ! Par exemple, les cartouches de Starfox et de Super Mario 2 contenait un coprocesseur Super FX, qui gérait des calculs de rendu 2D/3D. Le Cx4 faisait plus ou moins la même chose, il était spécialisé dans les calculs trigonométriques, et diverses opérations de rendu 2D/3D. En tout, il y a environ 16 coprocesseurs d'utiliser et on en trouve facilement la liste sur le net. La console était conçue pour, des pins sur les ports cartouches étaient prévues pour des fonctionnalités de cartouche annexes, dont ces coprocesseurs. Ces pins connectaient le coprocesseur au bus des entrées-sorties. Les coprocesseurs des cartouches de NES avaient souvent de la mémoire rien que pour eux, qui était intégrée dans la cartouche.
===L'architecture de la Megadrive et de la néo-géo===
Passons maintenant à la console de jeu Megadrive, une console 16 bits. Elle a une architecture similaire à celle de la néo-géo, une autre console bien plus puissante, sorti à peu près en même temps. Elles intègrent deux processeurs : un Motorola 68000 qui sert de processeur principal, un Z80 qui sert de processeur dédié à l'audio. Le Z80 et le Motorola 68000 étaient deux processeurs très populaires à l'époque. Le Z80 est une sorte de version améliorée de l'Intel 8088 utilisé sur les anciens PC et de nombreuses consoles utilisaient des Z80 comme processeur principal. Il était familier pour les programmeurs de l'époque, pour son cout réduit, sa bonne disponibilité, et bien d'autres avantages liés à sa production de masse.
Le Z80 est utilisé comme co-processeur audio. Il commande un synthétiseur sonore, et est relié à sa propre mémoire, distincte de la mémoire principale. Le MC68000 est le processeur principal et a une relation maitre-esclave avec le Z80 : le MC68000 envoie des commandes au Z80, mais la communication ne va pas dans l'autre sens.
Le Motorola 68000 était un processeur 16 bits, alors que le Z80 est un processeur 8 bits. Et cette différence fait que l'on ne peut pas connecter directement les deux sur le même bus, ou du moins pas facilement. La solution retenue est d'utiliser deux bus séparés : un bus de 16 bits connecté au 68000, un bus de 8 bits connecté au Z80. Le premier bus est un bus système sur lequel est connecté le 68000, 64 kibioctets de RAM, la cartouche de jeu, et la carte graphique. Le second bus est un bus de 8 bits, plus court, relié au Z80, à un synthétiseur sonore, et 8 kibioctets de RAM
Les deux bus sont connectés à un '''''chipset''''', un circuit répartiteur, qui fait le pont entre les deux bus. Les manettes sont connectées sur le ''chipset''. Il contient un registre de 8 bits, dans lequel le MC68000 peut écrire dedans à sa guise, le registre étant adressable par le processeur. Lorsque le MC68000 écrit une valeur dedans, cela déclenche l’exécution automatique d'un programme pré-déterminé sur le Z80.
: Pour ceux qui savent ce qu'est une interruption, les valeurs écrites dans ce registre sont des numéros d'interruption, qui indiquent quelle routine d'interruption exécuter.
[[File:Architecture de la Megadrive et de la Néogeo.png|centre|vignette|upright=2.5|Architecture de la Megadrive et de la Néogeo]]
Cet exemple nous montre que les bus systèmes sont certes très simples, mais aussi inflexibles. Ils fonctionnent bien quand les composants branchés dessus sont tous des composants 8 bits, ou sont tous de 16 bits, ou tous 32 bits. Mais dès qu'on mélange composants 8, 16, 32 ou 64 bits, les choses deviennent plus compliquées. Il est alors préférable d'utiliser des bus séparés, avec des répartiteurs pour faire le pont entre les différents bus. Et nous verrons que le problème s'est posé lui aussi sur les PC.
===L'architecture des anciennes consoles Playstation : beaucoup de co-processeurs===
Les consoles que nous venons d'aborder étaient des consoles 8 ou 16 bits. A partir des consoles 32 bits, leur architecture s'est rapprochée de celle des PC, avec un usage plus complexes de répartiteurs. La XBOX était très semblable à un PC : le processeur était un Pentium 3 modifié, la carte graphique était une Geforce 3 modifiée, les 64 mébioctets de RAM était la même mémoire DDR que celle des PC, le répartiteur secondaire était un ''chipset'' nForce de NVIDIA, etc. Mais les Playstation 1, 2 et 3 se distinguent de leur contemporains. Elles disposent de très nombreux co-processeurs, qui sont en plus très variés.
La Playstation 1 a été une des premières console à utiliser les CD-ROM comme support de stockage, en remplacement des cartouches. La conséquence est que la console contient une mémoire ROM, soudée à la carte mère, de 512 kibioctets. Elle contient aussi 2 mébioctets de RAM, une carte graphique avec 1 mébioctet de mémoire vidéo, un processeur, et de quoi gérer les périphériques. Il y a un co-processeur audio spécialisé, avec 512 kibioctets de RAM, ce qui nous est familier. Par contre, les autres co-processeurs ne le sont pas.
Déjà, le lecteur de CD-ROM est associé à des circuits sur la carte mère, il y a tout un sous-système dédié au lecteur de CD. Il y a un contrôleur qui sert d'interface avec le lecteur proprement dit, mais aussi deux co-processeurs audio et 32 kibioctets de RAM. Les co-processeurs audio servent à lire des CD sans trop utiliser le second co-processeur audio, ils lui servent de complément.
Ensuite, le processeur incorpore plusieurs cœurs, avec un cœur principal et plusieurs co-processeurs. Le premier est un co-processeur système, qui est utilisé pour gérer la mémoire cache intégrée au processeur, pour des fonctionnalités appelées interruptions et exceptions, ainsi que pour configurer le processeur. Le second est un co-processeur arithmétique spécialisé dans les calculs en virgule flottante, très importants pour le rendu 3D. Enfin, il y a un décodeur vidéo, qui n'est pas un co-processeur, mais un circuit non-programmable, spécialisé dans le décodage vidéo. De nos jours, ce circuit aurait été intégré dans la carte graphique, mais il était intégré dans le processeur sur la Playstation 2.
Pour le reste, le processeur est la figure centrale de la console. Il est connecté à 4 bus : un pour la RAM, un pour la carte graphique, un pour les manettes, un autre pour le reste. Le dernier bus est connecté au système audio et au système pour le lecteur CD. Ce serait un bus d'entrée-sortie, s'il n'était pas connecté à la mémoire ROM. Vous avez bien lu : la mémoire ROM est reliée au bus d'entrée-sortie.
[[File:Architecture de la Playstation.png|centre|vignette|upright=2.5|Architecture de la Playstation]]
La Playstation 2 est composé d'un processeur, couplé à 32 Mébioctets de RAM, et d'un paquet de co-processeurs. Plus de co-processeurs que la PS1. Le processeur principal n'est pas la même que celui de la PS1, mais il a une architecture similaire. Il intègre un décodeur vidéo sur le même circuit intégré, ainsi que deux co-processeur. Les co-processeurs ne sont cependant pas les mêmes.
Le co-processeur système disparait et est remplacé par un second co-processeur arithmétique. Les deux co-processeurs arithmétiques sont spécialisés dans les nombres flottants, avec quelques différences entre les deux. Par exemple, le second co-processeur gérait des calculs trigonométriques, des exponentielles, des logarithmes, et d'autres fonctions complexes du genre ; mais pas le premier co-processeur. Ils sont reliés à 4 kibioctets de RAM pour le premier, 16 kibioctets de RAM pour le second ; qui sont intégrées dans le processeur et non-représentés dans le diagramme ci-dessous.
La PS2 intègre aussi un co-processeur d'entrées-sorties. Pour information, il s'agit du processeur principal de la Playstation 1, qui est ici utilisé différemment, suivant que l'on place un jeu PS1 ou PS1 dans la console. Si on met un jeu PS1, il est utilisé pour émuler la Playstation 1, afin de faire tourner le jeu PS1 sur la PS2. Si on met un jeu PS2, il est utilisé comme co-processeur d'entrée-sortie et fait l'interface entre CPU et entrées-sorties. Il est relié à 2 mébioctets de RAM, soit exactement la même quantité de mémoire que la Playstation 1.
Tous les périphériques sont connectés au co-processeur d'entrées-sortie. Pour cela, le co-processeur d'entrées-sortie est relié à deux bus dédiés aux périphériques. Le premier bus est relié aux manettes, aux ports USB et aux ports pour cartes mémoires. Le second bus est relié à la carte son, la carte réseau, le lecteur DVD, et un port PCMIA. Notons que la carte son intègre un co-processeur audio, qui n'est pas représenté dans le diagramme ci-dessous.
[[File:Playstation 2 architecture.png|centre|vignette|upright=2.5|Playstation 2 architecture]]
==L'architecture des PC et son évolution==
Après avoir vu les consoles, nous allons maintenant voir les anciens PC, des années 80 ou 90. Le tout premier PC était techniquement l''''IBM PC'''. Par la suite, de nombreux ordinateurs ont tenté de reproduire l'IBM PC originel, avec parfois quelques modifications mineures. De tels ordinateurs ''IBM PC compatibles'', ont été très nombreux, pour des raisons diverses. Le fait d'utiliser des composants banalisés, facilement disponibles, ainsi qu'une bonne documentation de l'IBM PC originel, a grandement aidé. Les IBM PC compatibles ont progressivement évolué pour donner les PC actuels. L'IBM PC compatible a donné naissance à de nombreux standards divers.
===L'IBM PC originel et l'IBM PC XT===
[[File:IBM PC XT 02.jpg|vignette|IBM PC XT.]]
Nous allons commencer par voir l'IBM PC originel, et son successeur : l'IBM Personal Computer XT. Nous les appelerons tous deux l'IBM PC. L'IBM PC utilisait un processeur Intel 8088, qui était un processeur 8 bits. Ils utilisaient un bus système unique, appelé le '''bus XT'''. Le bus système allait à 4.77 MHz, soit la même fréquence que le processeur. C'était un bus de 8 bits, ce qui collait parfaitement avec les processeurs 8 bits commercialisés par Intel à l'époque.
L'IBM PC comprenait une mémoire ROM avec de quoi faire fonctionner le PC. La ROM en question contenait un programme minimal, appelé le '''BIOS''', sans lequel le PC ne fonctionnait pas du tout. Il servait de base pour le système d'exploitation et MS-DOS ne fonctionnait pas sans elle. De nos jours, son rôle est plus limité : sans elle, le PC ne démarre pas. Mais nous détaillerons cela dans le prochain chapitre.
En plus de la ROM pour le BIOS, l'IBM PC avait quatre mémoires ROM dédiée au langage de programmation BASIC. Lorsque le PC démarrait, il ne bootait pas un système d'exploitation, mais lançait l'interpréteur pour le langage BASIC. De nos jours, ce serait l'équivalent d'un ordinateur qui boote directement sur du Python, à savoir la console Python que vous avez peut-être déjà utilisé si vous avez testé Python. Ceux qui ont déjà touché à un ordinateur de l'époque savent ce que ca veut dire, mais c'est malheureusement très difficile à expliquer sans ce genre d'expérience. Toujours est-il que c'était une sorte de norme à l'époque
: les ordinateurs bootaient généralement sur un interpréteur BASIC.
[[File:XT Bus pins.svg|vignette|Connecteur du bus XT.]]
Les PC étaient conçus pour qu'on branche des '''cartes d'extension''', à savoir des cartes électroniques qu'on branchait sur la carte mère, à l'intérieur du PC. Les cartes d'extension de l'époque étaient surtout des cartes son ou des cartes graphiques, mais aussi des cartes pour brancher des péripéhriques. par exemple, on pouvait ajouter deux cartes graphiques dans l'IBM PC originel : l'''IBM Monochrome Display Adapter'' et/ou la ''IBM Color Graphics Adapter''. De nos jours, les cartes son sont intégrées à la carte mère, mais les cartes graphiques sont restées des cartes d'extension.
Les cartes d'extension étaient branchées sur un '''connecteur XT''', qui était directement relié au bus XT. Le connecteur XT est illustré ci-contre, mais ne vous en souciez pas trop pour le moment. La carte mère de l'IBM PC avait 5 connecteurs de ce type, qu'on pouvait peupler avec autant de cartes d'extension. L'IBM Personal Computer XT est passé à 8 connecteurs XT, soit trois de plus.
Pour ce qui est des périphériques, l'IBM PC avait plusieurs connecteurs : un port série, un port parallèle, un port pour le clavier, et un port pour un lecteur cassette. Le clavier et le lecteur cassette étaient connectés directement sur la carte mère, qui contenait quelques circuits pour gérer le clavier. Par contre, les deux premiers n'étaient pas connectés à la carte mère. Le port série était en réalité une carte d'extension, branchée sur un connecteur XT. Et il en est de même pour le port parallèle.
Pour ce qui est des supports de stockage, l'IBM PC originel n'avait pas de disque dur et n'avait que des lecteurs de disquette. De plus, le lecteur de disquette n'était pas connecté directement sur la carte mère, mais était connecté à une carte d'extension, branchée sur un connecteur XT. La carte d'extension avait deux connecteurs, un par lecteur de disquette, ce qui fait que les deux lecteurs de disquettes pouvaient être branchés sur une seule carte d'extension. L'IBM Personal Computer XT a ajouté un disque dur, sauf sur quelques sous-modèles spécifiques.
Le PC avait aussi un petit haut-parleur capable de faire des bips.
Pour résumer, l'IBM PC originel se reposait beaucoup sur les cartes d'extension, sa carte mère contenait peu de choses. Enfin, peu de choses... Il y avait un processeur Intel 8088, éventuellement un coprocesseur flottant 8087, de la RAM, de la ROM, et des circuits intégrés assez divers. En voici la liste, certains vous seront familiers, d'autres vous seront inconnus à ce stade du cours :
* les circuits de décodage d'adresse ;
* un contrôleur DMA intel 8273 ;
* un contrôleur d'interruption 8259 ;
* un contrôleur de bus Intel 8288 pour gérer le bus XT ;
* un générateur d'horloge Intel 8284 et un diviseur de fréquence ;
* un ''timer'' Intel 8253, le même que celui étudié dans le chapitre sur les ''timers'' ;
* un contrôleur parallèle 8255.
Les multiplexeurs, registres et portes logiques, sont des circuits de décodage d'adresse, qui permettent de combiner plusieurs RAM en une seule, idem avec la mémoire ROM. Si vous verrez qu'il y a 5 mémoires ROM : une ROM pour le BIOS, et quatre autres ROM pour le BASIC. Les 4 ROM du BASIC sont combinées en une seule mémoire ROM. Pour les RAM, il y en a 8 à 32, qui sont combinées en une seule RAM de 16 à 64 kibioctets.
[[File:IBM 5150 Motherboard.svg|centre|vignette|upright=3|Carte mère de l'IBM 5150, un modèle de l'IBM PC.]]
===L'architecture d'un IBM PC compatible 16 bits===
Les PC suivants sont passés à des processeurs 16 bits, mais c'était toujours des processeurs x86 d'Intel, à savoir des Intel 286 et 386. La RAM a grossi, quelques entrées-sorties ont été ajoutées, mais l'architecture globale est plus moins resté le même. C'est surtout au niveau du bus et des périphériques que les changements majeurs ont eu lieu.
[[File:ISA Bus pins.svg|vignette|Connecteur ISA.]]
Les PC 16 bits utilisaient un bus système unique, sur lequel tout était connecté : le processeur, la RAM, la ROM, les cartes d'extension et tout le reste. Le bus en question s'appelait le '''bus AT''', mais il a rapidement été renommé en '''bus ISA''' (''Industry Standard Architecture''). Le bus ISA était prévu pour avoir une compatibilité avec le bus 8 bits de l'IBM PC originel. D'ailleurs, cela se ressent jusque dans le connecteur utilisé : le connecteur ISA est un connecteur XT qu'on a fusionné avec un second connecteur pour l'étendre de 8 à 16 bits.
Les PC 16 bits avaient toujours un port série, un port parallèle, un clavier, un lecteur de disquette et des cartes d'extension. Des disques durs pouvaient être ajoutés, aussi. Mais pour ces périphériques, un changement majeur a eu lieu comparé à l'IBM PC originel. L'IBM PC originel utilisait des cartes d'extension pour tout, sauf le clavier. Mais maintenant, les périphériques ne sont plus connectés à une carte d'extension. À la place, les circuits de la carte d'extension sont déplacés sur la carte mère. Mais n'allez pas croire qu'ils étaient connectés directement au bus ISA, il y avait des intermédiaires.
Le clavier était relié à un '''contrôleur de clavier''', qui faisait l'interface entre le connecteur du clavier et le bus ISA. Le contrôleur de clavier était appelé le ''Keyboard Controler'', abrévié en KB. Il recevait ce qui est tapé au clavier et traduisait cela en quelque chose de compréhensible par l'ordinateur.
Les autres périphériques étaient connectés à un circuit intégré dédié : l''''Intel 82091AA'''. Il était connecté au lecteur de disquette, au port série et au port parallèle. Il servait d'intermédiaire entre ces périphériques et le bus ISA. Vous pouvez le voir comme une sorte de répartiteur, mais qui ne serait pas connecté sur le processeur et la RAM
Enfin, il ne faut pas oublier les autres composants présents sur l'IBM PC originel. Le BIOS est toujours là, de même que les ''timers'' Intel 8253 PIT, le contrôleur d'interruption Intel 8259 et le contrôleur DMA Intel 8237. Les PC 16 bits ont aussi intégré une ''Real Time Clock'' (RTC). Pour rappel, c'est un composant qui permet au PC de mémoriser la date et l'heure courante, à la seconde près. Le tout est résumé dans le schéma ci-dessous.
[[File:Architecture de l'IBM PC compatible.png|centre|vignette|upright=2.5|Architecture de l'IBM PC compatible]]
Un point important est que le bus ISA allait à la même fréquence que le processeur, vu que c'était un bus système. Les processeurs de l'époque étaient des CPU 286 d'Intel, ou le 386 d'Intel. Les Intel 286 allaient de 4 MHz minimum, à 25 MHz maximum. Le 386, quant à lui, allait de 12 à 40 MHz. Le bus ISA devait aller à cette fréquence, il était synchrone avec le processeur.
Par la suite, les processeurs ont gagné en performance, ce qui fait que le bus ISA est devenu trop lent pour le processeur. Une idée a alors été de conserver le bus ISA, pour des raisons de compatibilité, mais de le reléguer comme bus secondaire. L'ordinateur contient alors deux bus : un bus système, et un bus ISA secondaire. Le lien entre les deux est réalisé par un '''pont ISA''', ''ISA Bridge'' en anglais. Le bus ISA fonctionnait alors sa fréquence usuelle, alors que le bus système était beaucoup plus rapide. Le bus système fonctionnait à une fréquence bien plus élevée, ce qui fait que le processeur pouvait communiquer à pleine vitesse, notamment avec la RAM. Le processeur n'était alors plus forcé à aller à la même fréquence que le bus ISA
[[File:Architecture de l'IBM PC compatible avec bridge ISA.png|centre|vignette|upright=2.5|Architecture de l'IBM PC compatible avec bridge ISA]]
Les PC de l'époque intégraient donc plusieurs bus séparés. Vous avez bien lu : plusieurs bus ! Ici, il s'agit de ce que j'appelle des '''bus en cascade''', à savoir qu'un bus est connecté à un autre bus par un intermédiaire. Au passage, si j'aborde ces exemples, car c'est pareil sur les ordinateurs modernes. Le pont ISA a été remplacé par des circuits différents, mais qui ont un rôle assez similaire. Le ''chipset'' de votre carte mère n'est qu'un lointain descendant du pont ISA, qui s'interface avec des bus différents.
===L'arrivée des standards AT et IDE pour les disques durs===
Initialement, les disques durs étaient placés dans l'ordinateur et étaient connectés sur le bus ISA, via une carte d'extension ISA. En clair, il fallait connecter le disque dur sur une carte d'extension, et non sur la carte mère. Les cartes d'extension en question permettaient de connecter un ou plusieurs disques durs, parfois des lecteurs de disquette supplémentaires. Les cartes ISA de ce type faisaient juste l'interface entre le bus ISA et les disques durs, rien de plus. L'interface en question a été standardisée, ce qui a donné le standard ''AT Bus Attachment'', qui a été abrévié en ATA.
Et ce n'était pas que pour les disques durs, de nombreux composants étaient dans ce cas. Une carte d'extension servait d'intermédiaire entre eux et la carte mère. Les cartes d'extension en question étaient appelées des ''Host bus adapter''.
[[File:Acculogic sIDE-4 Controller ISA.jpg|centre|vignette|upright=2|Carte ISA d'interface disque dur, de marque Acculogic.]]
Mais les choses ont rapidement évoluées, que ce soit du côté des cartes mères que du côté des disques durs. Le '''standard IDE''' a permis de brancher un disque dur directement sur la carte mère, sans passer par une carte d'interface ISA. Pour cela, la carte mère réservait un connecteur ISA pour le disque dur, renommé '''connecteur ATA'''. Pour que cela soit possible, il a fallu rajouter des circuits sur la carte mère. Tout ce qui était sur les cartes d'interface ISA s'est retrouvé sur la carte mère.
[[File:Ajout des ports IDE sur la carte mère.png|centre|vignette|upright=2|Ajout des ports IDE sur la carte mère]]
En réalité, les connecteurs ATA étaient des connecteurs ISA simplifiés. Un connecteur ISA avait en tout 98 broches, alors qu'un connecteur ATA n'en contient que 40. Les broches qui étaient inutiles pour les disques durs ont simplement été enlevées. Et qui dit connecteur spécialisé, dit câble spécialisé. Les disques durs étaient branchés sur le connecteur AT grâce à un câble ATA, sur lequel on pouvait connecter deux disques durs.
[[File:ATA Plug.svg|centre|vignette|upright=2|Connecteur ATA.]]
[[File:ATA cables.jpg|centre|vignette|upright=2|Cable ATA.]]
Il était donc possible de connecter deux disques durs sur un seul connecteur ATA. Et cette possibilité est devenue d'autant plus utile par la suite. A partir de la version 2, ATA supportait aussi les lecteurs de disquettes, les lecteurs de CD/DVD, et bien d'autres supports de stockage. Il était alors possible de connecter un lecteur CD et un disque dur sur un seul connecteur. Les cartes mères avaient généralement deux connecteurs ATA, et n'avaient pas besoin de plus. C'était suffisant pour connecter un disque dur, un lecteur de disquette et un lecteur CD, configuration courante entre les années 90 et 2000.
Un câble est donc connecté à deux supports de stockage. Pour distinguer les deux, le standard ATA ajoute une possibilité de configuration. Sur un câble, il doit y avoir un support de stockage "maitre" et un support "esclave". C'était la terminologie de l'époque, que je reproduis ici, même si elle est fortement trompeuse. N'allez pas croire que cela implique que l'un ait des avantages sur l'autre. Le support 'maitre" n'a pas droit à plus de bande passante, il n'a pas la priorité sur l'autre, rien du tout. Il s'agit juste d'un nombre qui permet de savoir avec qui le processeur communique, qui vaut 0 pour le premier support, 1 pour l'autre. Une sorte d'adresse de 1 bit, si l'on veut.
[[File:ATA-Konfiguration02.png|centre|vignette|upright=2|Configuration ATA.]]
Pour configurer un support de stockage en mode "maitre" ou "esclave", le support de stockage avait quelques pins dédiés. Il suffisait de placer un détrompeur en plastique sur les pins adéquats. Les pins se trouvaient à l'arrière du disque dur ou du lecteur de CD/DVD/Disquette/autre.
[[File:HDD Master and Slave Description.jpg|centre|vignette|upright=2|Configuration ''Master/Slave''.]]
===L'architecture d'un PC avec un processeur Intel 486===
Maintenant, passons aux ordinateurs 32 bits, avec l'exemple d'un PC avec un processeur 486 d'Intel. A cette époque, le bus ISA était devenu trop limité et était en place d'être remplacé par le bus PCI, qui avait la même fonction. De nombreuses cartes d'extension utilisaient déjà ce standard et étaient branchées sur des connecteurs PCI dédiés, différents des connecteurs ISA. Intuitivement, on se dit que le bus PCI remplaçait le bus ISA, mais les choses étaient plus compliquées. Les disques durs gardaient leur connecteur ATA, et ne passaient pas par le bus PCI. Ils avaient un bus IDE séparé, qui était un bus ISA modifié.
Là encore, les processeurs étaient devenus beaucoup plus rapides que le bus PCI. Les deux allaient à des fréquences assez différentes, ce qui fait que le bus PCI était séparé du bus système. Il y avait alors deux implémentations possibles.
* La première utilise un répartiteur unique, relié au processeur, à la RAM, au bus PCI, et au bus IDE.
* La seconde utilise un bus système séparé du bus PCI, avec un '''pont PCI''' pour faire l'interface entre les deux.
Le '''''System Controler''''' était un circuit intégré, placé sur la carte mère, qui peut servir soit de pont PCI, soit de répartiteur. Le répartiteur PCI sert d'intermédiaire avec le bus PCI, mais aussi avec le bus IDE, utilisé pour les disques durs, aussi appelé le bus ''Parallel ATA''. Il peut aussi être connecté au processeur, à la mémoire RAM, ainsi qu'à la mémoire cache, mais cela ne sert que quand il est utilisé comme répartiteur.
[[File:Architecture d'un PC utilisant un bus PCI, implémentation avec un répartiteur.png|centre|vignette|upright=2|Architecture d'un PC utilisant un bus PCI, implémentation avec un répartiteur]]
Pour des raisons de compatibilité, le bus ISA avait été conservé, aux côtés du bus PCI. Il y avait un pont ISA en plus du pont/répartiteur PCI. Une implémentation possible aurait été de connecter les deux ponts ISA et PCI à un bus système unique. Mais cette solution n'a pas été retenue. La raison est que le bus PCI et le bus ISA ont des performances très différentes. Le bus PCI est très rapide, le bus ISA beaucoup plus lent. La différence est d'un ordre de grandeur, environ. Dans ces conditions, il est possible de faire passer les communications ISA à travers le bus PCI. Pour cela, le pont ISA est directement connecté sur le pont PCI, comme illustré ci-dessous.
Et il en est de même pour le bus dédié aux disques durs. En effet, les disques durs étaient autrefois reliés au bus ISA, mais cela a changé depuis. Ils disposent maintenant de leur propre bus dédié, le '''bus IDE''', qui est un bus ISA simplifié. Et ce bus ISA simplifié était connecté directement sur le pont PCI.
[[File:Architecture de l'IBM PC compatible avec pont PCI.png|centre|vignette|upright=2|Architecture de l'IBM PC compatible avec pont PCI]]
Dans ce qui va suivre, nous allons étudier un exemple qui utilise un bus système séparé, avec un pont PCI, sans répartiteur. Voilà pour les grandes lignes, mais le schéma ci-dessous montre que tout est plus complexe. Vous remarquerez des connexions optionnelles entre le pont PCI et la mémoire RAM et la mémoire cache. La raison est que le pont PCI peut aussi servir de répartiteur en remplacement du bus système. Concrètement, on peut alors retirer le bus système. La mémoire, le bus PCI, le bus ISA, le bus IDE, le processeur et la RAM sont alors connectés au répartiteur PCI, qui sert d'intermédiaire central entre tous ces composants. Mais ce n'est pas la solution qui a été retenue dans notre exemple.
[[File:Intel486-Typ PCI System.png|centre|vignette|upright=2|PC IBM compatible avec un 486, un bus PCI et un bus ISA. Le ''host bus'' est le bus système.]]
Le pont ISA sert ici d'intermédiaire entre le bus système et le bus ISA. De plus, il a été amélioré sur de nombreux points. Il inclut notamment des circuits qui étaient autrefois sur la carte mère, à savoir le contrôleur DMA 82C87 et le contrôleur d'interruption 82C59, ainsi que les ''timers'' Intel 82C54. Les composants restants sont eux reliés sur un quatrième bus : le bus X, l'ancêtre du bus ''Low Pin Count''. Le bus X était celui du BIOS, du contrôleur de clavier, de la ''Real Time Clock'', et du contrôleur de périphérique 82091AA d'Intel.
[[File:ISA Bridge schematic.png|centre|vignette|upright=2|ISA Bridge.]]
===L'architecture des PC des années 90-2000===
Par la suite, les ponts PCI et ISA ont évolué avec l'évolution des bus de l'ordinateur. Le bus ISA a progressivement été remplacé par d'autres bus, comme le bus ''Low Pin Count'', le bus PCI a été remplacé par le PCI Express, d'autres bus ont été ajoutés, etc. Mais la séparation du ''chipset'' en deux a été conservée.
[[File:Chipset schematic.svg|vignette|upright=1.0|Chipset séparé en northbridge et southbridge.]]
Le pont PCI et le pont ISA ont été remplacés respectivement par le '''pont nord''' et le '''pont sud''', plus connus par leurs noms anglais de ''northbridge'' et de ''southbridge''. Le pont nord servait d'interface entre le processeur, la mémoire et la carte graphique et est connecté à chacun par un bus dédié. Il intégrait aussi le contrôleur mémoire. Le pont sud est le répartiteur pour les composants lents, à savoir l'USB, l'Ethernet, etc. Le bus qui relie le processeur au pont nord était appelé le '''''Front Side Bus''''', abrévié en FSB.
[[File:IMac Chipset.png|centre|vignette|upright=2|Chipset séparé en northbridge et southbridge.]]
Un point important est que le bus PCI est devenu un bus assez lent, ce qui fait qu'il a finit par être connecté au pont sud. Le pont PCI est donc devenu le pont sud, dans le courant des années 2000. Durant un moment, un équivalent du pont ISA a subsisté dans un circuit de '''''Super IO'''''. Concrètement, il s'occupait du lecteur de disquette, du port parallèle, du port série, et des ports PS/2 pour le clavier et la souris. Mais il ne gérait pas le bus ISA, mais son remplaçant, le bus ''Low Pin Count''.
[[File:Motherboard diagram fr.svg|centre|vignette|upright=1.5|Carte mère avec circuit Super IO.]]
===L'architecture des PC depuis les années 2000===
Depuis la sortie du processeur AMD Athlon 64, le pont nord a été fusionné dans le processeur. La fusion ne s'est pas faite en une fois, des fonctionnalités ont progressivement été progressivement intégrées dans le processeur. Le pont sud est resté, mais il a alors été progressivement connecté directement au processeur. La raison derrière cette intégration est que les processeurs avaient de plus en plus de transistors à leur disposition. Ils en ont profité pour intégrer le pont nord. Et cela permettait de simplifier le câblage des cartes mères, sans pour autant rendre vraiment plus complexe la fabrication du processeur. Les industriels y trouvent leur compte.
La première étape a été l'intégration du contrôleur mémoire a été intégré au processeur. Concrètement, le résultat était que la mémoire RAM n'était plus connectée au pont nord, mais était connectée directement au processeur ! Il y a donc eu un retour d'un bus mémoire, mais spécialisé pour la mémoire RAM. En théorie, une telle intégration permet diverses optimisations quant aux transferts avec la mémoire RAM. Les transferts ne passent pas par un répartiteur, ce qui réduit le temps d'accès à la mémoire RAM. Ajoutons de sombres histoires de prefetching, d'optimisation des commandes, et j'en passe. Toujours est-il que le pont nord ne servait alors d'intermédiaire que pour les ports PCI Express, et le pont sud.
[[File:X58 Block Diagram.png|centre|vignette|upright=2|Chipset X58 d'Intel.]]
Par la suite, la carte graphique fût aussi connectée directement sur le processeur. Le processeur incorpore pour cela des contrôleurs PCI-Express. Le pont nord a alors disparu complétement, son intégration dans le processeur était complète. Sur les cartes mères Intel récentes, le pont sdud subsiste, il est appelé le ''Platform Controler Hub'', ou PCH. L'organisation des bus sur la carte mère qui résulte de cette connexion du processeur à la carte graphique, est illustrée ci-dessous, avec l'exemple du PCH.
[[File:Intel 5 Series architecture.png|centre|vignette|upright=2|Intel 5 Series architecture]]
<noinclude>
{{NavChapitre | book=Fonctionnement d'un ordinateur
| prev=L'interface électrique entre circuits intégrés et bus
| prevText=L'interface électrique entre circuits intégrés et bus
| next=La hiérarchie mémoire
| nextText=La hiérarchie mémoire
}}
</noinclude>
8s7ezpbvx3ffyo5hy3gc58ouldkf0f8
765743
765742
2026-05-01T21:56:12Z
Mewtow
31375
/* Les SoC haute performance */
765743
wikitext
text/x-wiki
Dans les chapitres précédents, nous avons vu comment représenter de l'information, la traiter et la mémoriser avec des circuits. Mais un ordinateur n'est pas qu'un amoncellement de circuits et est organisé d'une manière bien précise. Il est structuré autour de trois circuits principaux :
* un '''processeur''', qui manipule l'information et donne un résultat ;
* une '''mémoire''' qui mémorise les données à manipuler ;
* les '''entrées/sorties''', qui permettent à l'ordinateur de communiquer avec l'extérieur.
[[File:Architecture Von Neumann.png|centre|vignette|upright=2|Architecture d'un système à mémoire.]]
Pour faire simple, le processeur est un circuit qui s'occupe de faire des calculs. Rien d'étonnant à cela. Je rappelle que tout est codé par des nombres dans un ordinateur, ce qui fait que manipuler des nombres revient simplement à faire des calculs. Un ordinateur n'est donc qu'une grosse calculatrice améliorée, et le processeur est le composant qui fait les calculs.
La mémoire s'occupe purement de la mémorisation des données, des nombres sur lesquelles faire des calculs. Pour être plus précis, il y a deux mémoires : une pour les données proprement dites, une autre pour le programme à exécuter. La première est la '''mémoire RAM''', la seconde est la '''mémoire ROM'''. Nous détaillerons ce que sont ces deux mémoires dans la suite du chapitre, mais sachez que nous avions déjà rencontré ces deux types de mémoires dans les chapitres sur les registres et les mémoires adressables.
Les entrées-sorties permettent au processeur et à la mémoire de communiquer avec l'extérieur et d'échanger des informations avec des périphériques. Les '''périphériques''' regroupent, pour rappel, tout ce est branché sur un ordinateur, mais n'est pas à l'intérieur de celui-ci.
Le processeur, les mémoires et les entrées-sorties communiquent ensemble via un '''réseau d'interconnexions'''. Le terme est assez barbare, mais rien de compliqué sur le principe. C'est juste un ensemble de fils électriques qui relie les différents éléments d'un ordinateur. Les interconnexions sont souvent appelées le bus de communication, mais le terme est un abus de langage, comme on le verra plus bas.
Afin de simplifier les explications, on va supposer que le réseau d'interconnexion est le suivant. Tout est connecté au processeur. Il y a des interconnexions entre le processeur et la mémoire RAM, d'autres interconnexions entre processeur et mémoire ROM, et d'autres entre le processeur et les entrées-sorties. Nous verrons que d'autres réseaux d'interconnexions fusionnent certaines interconnexions, pour les partager entre la ROM et la RAM, par exemple. Mais pour le moment, gardez le schéma ci-dessous en tête.
[[File:Réseau d'interconnexion avec un processeur au centre.png|centre|vignette|upright=2|Réseau d'interconnexion avec un processeur au centre]]
==Les mémoires RAM et ROM==
La mémoire est le composant qui mémorise des informations, des données. Dans la majorité des cas, la mémoire est composée de plusieurs '''cases mémoire''', chacune mémorisant plusieurs bits, le nombre de bits étant identique pour toutes les cases mémoire. Dans le cas le plus simple, une case mémoire mémorise un '''octet''', un groupe de 8 bits. Mais les mémoires modernes mémorisent plusieurs octets par case mémoire : elles ont des cases mémoires de 16, 32 ou 64 bits, soit respectivement 2/4/8 octets. De rares mémoires assez anciennes utilisaient des cases mémoires contenant 1, 2, 3, 4, 5, 6 7, 13, 17, 23, 36 ou 48 bits. Mais ce n'était pas des mémoires électroniques, aussi nous allons les passer sous silence.
Tout ce qu'il faut savoir est que la quasi-totalité des mémoires électronique a un ou plusieurs octets par case mémoire. Pour simplifier, vous pouvez imaginer qu'une mémoire RAM est un regroupement de registre, chacun étant une case mémoire. C'est une description pas trop mauvaise pour décrire les mémoires RAM, qu'on abordera dans ce qui suit.
{|class="wikitable"
|+ Contenu d'une mémoire, case mémoire de 16 bits (deux octets)
|-
! Case mémoire N°1
| 0001 0110 1111 1110
|-
! Case mémoire N°2
| 1111 1110 0110 1111
|-
! Case mémoire N°3
| 0001 0000 0110 0001
|-
! Case mémoire N°4
| 1000 0110 0001 0000
|-
! Case mémoire N°5
| 1100 1010 0110 0001
|-
! ...
| ...
|-
! Case mémoire N°1023
| 0001 0110 0001 0110
|-
! Case mémoire N°1024
| 0001 0110 0001 0110
|}
Dans ce cours, il nous arrivera de partir du principe qu'il y a un octet par case mémoire, par souci de simplification. Mais ce ne sera pas systématique. De plus, il nous arrivera d'utiliser le terme adresse pour parler en réalité de la case mémoire associée, par métonymie.
===La capacité mémoire===
Bien évidemment, une mémoire ne peut stocker qu'une quantité finie de données. Et à ce petit jeu, certaines mémoires s'en sortent mieux que d'autres et peuvent stocker beaucoup plus de données que les autres. La '''capacité''' d'une mémoire correspond à la quantité d'informations que celle-ci peut mémoriser. Plus précisément, il s'agit du nombre maximal de bits qu'une mémoire peut contenir. Elle est le produit entre le nombre de cases mémoire, et la taille en bit d'une case mémoire.
Toutes les mémoires actuelles utilisant des cases mémoire d'un ou plusieurs octets, ce qui nous arrange pour compter la capacité d'une mémoire. Au lieu de compter cette capacité en bits, on préfère mesurer la capacité d'une mémoire avec le nombre d'octets qu'elle contient. Mais les mémoires des PC font plusieurs millions ou milliards d'octets. Pour se faciliter la tâche, on utilise des préfixes pour désigner les différentes capacités mémoires. Vous connaissez sûrement ces préfixes : kibioctets, mébioctets et gibioctets, notés respectivement Kio, Mio et Gio.
{|class="wikitable"
|-
!Préfixe!!Capacité mémoire en octets!!Puissance de deux
|-
||Kio||1024||2<sup>10</sup> octets
|-
||Mio||1 048 576||2<sup>20</sup> octets
|-
||Gio||1 073 741 824||2<sup>30</sup> octets
|}
On peut se demander pourquoi utiliser des puissances de 1024, et ne pas utiliser des puissances un peu plus communes ? Dans la majorité des situations, les électroniciens préfèrent manipuler des puissances de deux pour se faciliter la vie. Par convention, on utilise souvent des puissances de 1024, qui est la puissance de deux la plus proche de 1000. Or, dans le langage courant, kilo, méga et giga sont des multiples de 1000. Quand vous vous pesez sur votre balance et que celle-ci vous indique 58 kilogrammes, cela veut dire que vous pesez 58 000 grammes. De même, un kilomètre est égal à 1000 mètres, et non 1024 mètres.
Autrefois, on utilisait les termes kilo, méga et giga à la place de nos kibi, mebi et gibi, par abus de langage. Mais peu de personnes sont au courant de l'existence de ces nouvelles unités, et celles-ci sont rarement utilisées. Et cette confusion permet aux fabricants de disques durs de nous « arnaquer » : Ceux-ci donnent la capacité des disques durs qu'ils vendent en kilo, méga ou giga octets : l’acheteur croit implicitement avoir une capacité exprimée en kibi, mébi ou gibi octets, et se retrouve avec un disque dur qui contient moins de mémoire que prévu.
===Lecture et écriture : mémoires ROM et RWM===
Pour simplifier grandement, on peut grossièrement classer les mémoires en deux types : les ''Read Only Memory'' et les ''Read Write Memory'', aussi appelées mémoires ROM et mémoires RWM. Pour les '''mémoires ROM''', on ne peut pas modifier leur contenu. On peut y récupérer une donnée ou une instruction : on dit qu'on y accède en lecture. Mais on ne peut pas modifier les données qu'elles contiennent. Quant aux '''mémoires RWM''', on peut y accéder en lecture (récupérer une donnée stockée en mémoire), mais aussi en écriture : on peut stocker une donnée dans la mémoire, ou modifier une donnée existante.
Tout ordinateur contient au minimum une ROM et une RWM (souvent une mémoire RAM), les deux n'ont pas exactement le même rôle. Pour simplifier, la mémoire ROM mémorise le programme à exécuter, la mémoire RWM stocke des données. Il a existé des ordinateurs où la mémoire RWM était une mémoire magnétique, voire acoustique, mais ce n'est plus le cas de nos jours. Pour les ordinateurs modernes, la mémoire RWM est une mémoire électronique. Pour faire la différence avec ces anciennes mémoires RWM, elle est appelée la '''mémoire RAM'''. Il s'agit d'une mémoire qui stocke temporairement des données que le processeur doit manipuler (on dit qu'elle est volatile). Elle s'efface complètement quand on coupe l'alimentation de l'ordinateur.
Il existe d'autres différences entre mémoire RWM et RAM :
* la mémoire RWM peut ne pas être volatile et donc conserver les données écrites ;
* la mémoire RAM possède un temps d'accès constant aux données (quelle que soit l'adresse), ce qui n'est pas garanti pour les mémoires RWM.
Outre le programme à exécuter, la mémoire ROM peut mémoriser des constantes, des données qui ne changent pas. Elles ne sont jamais modifiées et gardent la même valeur quoi qu'il se passe lors de l'exécution du programme. En conséquence, elles ne sont jamais accédées en écriture durant l'exécution du programme, ce qui fait que leur place est dans une mémoire ROM. La mémoire RWM est alors destinée aux données temporaires, qui changent ou sont modifiées lors de l'exécution du programme, et qui sont donc manipulées aussi bien en lecture et en écriture. La mémoire RWM mémorise alors les variables du programme à exécuter, qui sont des données que le programme va manipuler. Pour les systèmes les plus simples, la mémoire RWM ne sert à rien de plus.
[[File:Espaces d'adressage sur une archi harvard modifiée.png|centre|vignette|upright=2.5|Espaces d'adressage sur une archi harvard modifiée]]
Pour donner un exemple de données stockées en ROM, on peut prendre l'exemple des anciennes consoles de jeu 8 et 16 bits. Les jeux vidéos sur ces consoles étaient placés dans des cartouches de jeu, précisément dans une mémoire ROM à l'intérieur de la cartouche de jeu. La ROM mémorisait non seulement le code du jeu, le programme du jeu vidéo, mais aussi les niveaux et les ''sprites'' et autres données graphiques.
Une conséquence est que les consoles 8/16 bits n'avaient pas besoin de beaucoup de RAM, comparé aux ordinateurs de l'époque, vu qu'une grande partie des données utiles étaient dans une ROM directement accessible par le processeur. À l'opposé, les micro-ordinateurs devaient copier les données d'un jeu depuis une disquette dans la mémoire RAM, ce qui demandait d'avoir plus de RAM. Le passage au support CD sur les consoles 32 bits a eu la même conséquence. Le processeur ne pouvant pas lire directement le CD à sa guise, il fallait copier les données du CD en RAM. D'où l'apparition de temps de chargement assez longs, inexistants sur support cartouche.
===L'adressage mémoire===
Sur une mémoire RAM ou ROM, on ne peut lire ou écrire qu'une case mémoire, qu'un registre à la fois : une lecture ou écriture ne peut lire ou modifier qu'une seule case mémoire. Techniquement, le processeur doit préciser à quel case mémoire il veut accéder à chaque lecture/écriture. Pour cela, chaque case mémoire se voit attribuer un nombre binaire unique, l''''adresse''', qui va permettre de le sélectionner et de l'identifier celle-ci parmi toutes les autres. En fait, on peut comparer une adresse à un numéro de téléphone (ou à une adresse d'appartement) : chacun de vos correspondants a un numéro de téléphone et vous savez que pour appeler telle personne, vous devez composer tel numéro. Les adresses mémoires en sont l'équivalent pour les cases mémoire.
[[File:Adressage mémoire.png|centre|vignette|upright=2|Exemple : on demande à la mémoire de sélectionner la case mémoire d'adresse 1002 et on récupère son contenu (ici, 17).]]
L'adresse mémoire est générée par le processeur. Le processeur peut parfaitement calculer des adresses, en extraire du programme qu'il exécute, et bien d'autres choses. Nous détaillerons d'ailleurs les mécanismes pour dans les chapitres portant sur les modes d'adressage du processeur. Mais pour le moment, nous avons juste besoin de savoir que c'est le processeur qui envoie des adresses aux mémoires RAM et ROM.
Les adresses générées par le processeur sont alors envoyées à la RAM ou la ROM via une connexion dédiée, un ensemble de fils qui connecte le processeur à la mémoire : le '''bus d'adresse mémoire'''. L'adresse sélectionne une case mémoire, le processeur peut alors récupérer la donnée dedans pour une lecture, écrire une donnée pour l'écriture. Pour cela, un second ensemble de fil connecte le processeur à la RAM/ROM, mais cette fois-ci pour échanger des données. Il s'agit du '''bus de données mémoire'''. Les deux sont souvent regroupés sous le terme de '''bus mémoire'''.
Un ordinateur contient toujours une RAM et une ROM, ce qui demande aux bus mémoire de s'adapter à la présence de deux mémoires. Il y a alors deux solutions, illustrées dans les deux schémas ci-dessous. Avec la première, il y a un seul bus mémoire partagé entre la RAM et la ROM, comme illustré ci-dessous. Une autre solution utilise deux bus séparés : un pour la RAM et un autre pour la ROM. Nous verrons les différences pratiques entre les deux à la fin du chapitre. Pour le moment, nous allons partir du principe qu'il y a un bus pour la mémoire ROM, et un autre bus pour la RAM.
[[File:CPT-System-Architecture-gapfill1-ANS.svg|centre|vignette|upright=2|Architecture avec une ROM et une RAM.]]
[[File:Réseau d'interconnexion avec un processeur au centre.png|centre|vignette|upright=2|Réseau d'interconnexion avec un processeur au centre]]
===L'alignement mémoire : introduction===
Plus haut, nous avions dit qu'il y a une adresse par case mémoire, chaque case mémoire contenant un ou plusieurs octets. Mais les processeurs modernes partent du principe que la mémoire a un octet par adresse, pas plus. Et ce même si la mémoire reliée au processeur utilise des cases mémoires de 2, 3, 4 octets ou plus. D'ailleurs, la majorité des mémoires RAM actuelle a des cases mémoires de 64 bits, soit 8 octets par case mémoire. Les raisons à cela sont multiple, mais nous les verrons en détail dans le chapitre sur l'alignement mémoire. Toujours est-il qu'il faut distinguer les '''adresses mémoire''' et les '''adresses d'octet''' gérées par le processeur.
Le processeur génère des adresses d'octet, qui permettent de sélectionner un octet bien précis. L'adresse d'octet permet de sélectionner un octet parmi tous les autres. Mais la mémoire ne comprend pas directement cette adresse d'octet. Heureusement, l'octet en question est dans une case mémoire bien précise, qui a elle-même une adresse mémoire bien précise. L'adresse d'octet est alors convertie en une adresse mémoire, qui sélectionne la case mémoire adéquate, celle qui contient l'octet voulu. La case mémoire entière est lue, puis le processeur ne récupère que les données adéquates. Pour cela, des circuits d'alignement mémoire se chargent de faire la conversion entre adresses du processeur et adresse mémoire. Nous verrons cela dans le détail dans le chapitre sur l'alignement mémoire.
Il existe des mémoires qui n'utilisent pas d'adresses mémoire, mais passons : ce sera pour la suite du cours.
==Le processeur==
Dans les ordinateurs, l'unité de traitement porte le nom de '''processeur''', ou encore de '''''Central Processing Unit''''', abrévié en CPU. Le rôle principal du processeur est de faire des calculs. La plupart des processeurs actuels supportent au minimum l'addition, la soustraction et la multiplication. Quelques processeurs ne gèrent pas la division, qui est une opération très gourmande en circuit, peu utilisée, très lente. Il arrive que des processeurs très peu performants ne gèrent pas la multiplication, mais c'est assez rare.
Un processeur ne fait pas que des calculs. Tout processeur est conçu pour effectuer un nombre limité d'opérations bien précises, comme des calculs, des échanges de données avec la mémoire, etc. Ces opérations sont appelées des '''instructions'''. Les plus intuitives sont les '''instructions arithmétiques''', qui font des calculs, comme l'addition, la soustraction, la multiplication, la division. Mais il y a aussi des '''instructions d'accès mémoire''', qui échangent des données entre la mémoire RAM et le processeur. Les autres instructions ne sont pas très intuitives, aussi passons-les sous silence pour le moment, tout deviendra plus clair dans les chapitres sur le processeur.
===Le processeur exécute un programme, une suite d'instructions===
Tout processeur est conçu pour exécuter une suite d'instructions dans l'ordre demandé, cette suite s'appelant un '''programme'''. Ce que fait le processeur est défini par la suite d'instructions qu'il exécute, par le programme qu'on lui demande de faire. Les instructions sont exécutées dans un ordre bien précis, les unes après les autres. L'ordre en question est décidé par le programmeur. La totalité des logiciels présents sur un ordinateur sont des programmes comme les autres.
Le programme à exécuter est stockée dans la mémoire de l'ordinateur. C'est ainsi que l'ordinateur est rendu programmable : modifier le contenu de la mémoire permet de changer le programme exécuté. Mine de rien, cette idée de stocker le programme en mémoire est ce qui a fait que l’informatique est ce qu'elle est aujourd’hui. C'est la définition même d'ordinateur : appareil programmable qui stocke son programme dans une mémoire modifiable.
Une instruction est codée comme les données : sous la forme de suites de bits. Telle suite de bit indique qu'il faut faire une addition, telle autre demande de faire une soustraction, etc. Pour simplifier, nous allons supposer qu'il y a une instruction par adresse mémoire. Sur la grosse majorité des ordinateurs, les instructions sont placées les unes à la suite des autres dans l'ordre où elles doivent être exécutées. Un programme informatique n'est donc qu'une vulgaire suite d'instructions stockée quelque part dans la mémoire de l'ordinateur.
{|class="wikitable"
|+ Exemple de programme informatique
|-
! Adresse
! Instruction
|-
! 0
| Copier le contenu de l'adresse 0F05 dans le registre numéro 5
|-
! 1
| Charger le contenu de l'adresse 0555 dans le registre numéro 4
|-
! 2
| Additionner ces deux nombres
|-
! 3
| Charger le contenu de l'adresse 0555
|-
! 4
| Faire en XOR avec le résultat antérieur
|-
! ...
| ...
|-
! 5464
| Instruction d'arrêt
|}
Pour exécuter une suite d'instructions dans le bon ordre, le processeur détermine à chaque cycle quelle est la prochaine instruction à exécuter. Pour cela, le processeur mémorise l'adresse de l'instruction en cours dans un registre : le '''Program Counter'''. Je rappelle que des instructions consécutives sont dans des adresses consécutives. Pour passer à la prochaine instruction, il suffit donc d'incrémenter le ''program counter''.
: Si une instruction prend plusieurs octets, plusieurs adresses, il suffit de l'incrémenter du nombre d'octets/adresses.
D'autres processeurs font autrement : chaque instruction précise l'adresse de la suivante, directement dans la suite de bit représentant l'instruction en mémoire. Ces processeurs n'ont pas besoin de calculer une adresse qui leur est fournie sur un plateau d'argent. Sur des processeurs aussi bizarres, pas besoin de stocker les instructions en mémoire dans l'ordre dans lesquelles elles sont censées être exécutées. Mais ces processeurs sont très très rares et peuvent être considérés comme des exceptions à la règle.
Nous venons de voir qu'un processeur contient un registre appelé le ''program counter''. Mais il n'est pas le seul. Pour pouvoir fonctionner, tout processeur doit mémoriser un certain nombre d’informations nécessaires à son fonctionnement, qui sont mémorisées dans des '''registres de contrôle'''. La plupart ont des noms assez barbares (registre d'état, ''program counter'') et nous ne pouvons pas en parler à ce moment du cours. Nous les verrons en temps voulu, mais il est important de préciser qu'ils existent.
===L'intérieur d'un processeur===
Fort de ce que nous savons, nous pouvons expliquer ce qu'il y a à l'intérieur d'un processeur. Le premier point est qu'un processeur fait des calculs, ce qui implique qu'il contient des circuits de calcul. Ils sont regroupés dans une ou plusieurs '''unités de calcul'''. Nous avons déjà vu comment fabriquer une unité de calcul simple, dans un chapitre dédié, et c'est la même qui est présente dans un processeur. Du moins dans les grandes lignes, les circuits des processeurs modernes étant particulièrement optimisés. Il en est de même pour les autres circuits de calcul comme ceux pour les multiplications/division/autres.
Si le processeur fait des calculs, qu'en est-il des opérandes ? Et où sont mémorisés les résultats des opérations ? Pour cela, le processeur incorpore des '''registres généraux'''. Les registres généraux servent à mémoriser les opérandes et résultats des instructions. Ils mémorisent des données, contrairement aux registres de contrôle mentionnés plus haut. Le nombre de registres généraux dépend grandement du processeur. Les tout premiers processeurs se débrouillaient avec un seul registre, mais les processeurs actuels utilisent plusieurs registres, pour mémoriser plusieurs opérandes/résultats. Mais la présence de registres est source de pas mal de petites complications. Par exemple, il faut échanger les données entre la RAM et les registres, il faut gérer l'adressage des registres, etc. Il s'agit là de détails que nous expliquerons dans les chapitres sur le processeur.
Le processeur contient enfin un circuit pour interpréter les instructions, appelé l''''unité de contrôle'''. Elle lit les instructions depuis la mémoire, interprète la suite de bit associée, et commande le reste du processeur pour qu'il exécute l'instruction. Ses fonctions sont assez variées, mais nous allons simplifier en disant qu'elle configure l'unité de calcul et les registres pour faire le bon calcul. Son rôle est d'analyser la suite de bit qui constitue l'instruction, et d'en déduire quelle opération effectuer. Elle gère aussi l'accès à la mémoire RAM, et notamment ce qui est envoyé sur son bus d'adresse.
: Dans ce qui suit, on suppose que le ''program counter'' fait partie de l'unité de contrôle.
Pour résumer, un processeur contient une unité de calcul, des registres et une interface avec la mémoire RAM. Le tout est interconnecté, afin de pouvoir échanger des données. L’ensemble forme le '''chemin de données''', nom qui trahit le fait que c'est là que les données se déplacent et sont traitées. Il faut aussi ajouter l'unité de contrôle pour commander le tout. Elle lit les instructions en mémoire, puis commande le chemin de données pour que l'instruction soit exécutée correctement.
[[File:Microarchitecture d'un processeur.png|centre|vignette|upright=2|Microarchitecture d'un processeur]]
Un processeur parait donc assez simple expliqué comme ça, mais il y a de nombreuses subtilités. L'une d'entre elle est liée aux registres, et notamment à la manière dont on les utilise. Pour expliquer ces subtilités, nous allons voir comment les premiers processeurs fonctionnaient, avant de passer aux processeurs un peu plus modernes. Les tout premiers processeurs n'utilisaient qu'un seul registre, ce qui fait que l'utilisation des registres était très simple. Le passage à plusieurs registres a complexifié le tout.
===D'où viennent les adresses ?===
Il est maintenant temps de répondre à une question qui s'était posée dans la section sur l'adressage : d'où viennent les adresses envoyées à la mémoire ? Pour ce qui est des adresses des instructions, on connait déjà la réponse : c'est le ''program counter'' qui gère tout. Mais pour les données, il y a deux possibilités, qui correspondent à deux types de données : les données statiques et les données dynamiques.
Les '''données statiques''' sont les plus simples : elles existent durant toute la durée de vie du programme. Tant que celui-ci s'exécute, il aura besoin de ces données. En conséquence, il leur réserve une place en mémoire, qui est toujours la même. La donnée se situe donc à une adresse bien précise, qui ne change jamais. Attention cependant : les données peuvent être modifiées, changer de valeur. Le programme écrit dans les donnée statiques, c'est même assez fréquent. Ce sont ne sont pas forcément des données constantes !
Pour les données statiques, elles sont toujours placées à la même adresse mémoire. Pour le dire autrement, l'adresse mémoire est une constante, qui ne change pas. L'adresse est connue avant d’exécuter le programme, le programme a été codé pour utiliser cette adresse pour telle donnée, on a réservé une adresse pour la donnée voulue. Et même si vous quittez le programme et vous le relancez plusieurs jours après, l'adresse mémoire sera la même avant et après.
Et cela permet d'utiliser l''''adressage direct'''. L'idée est que les instructions précisent donc l'adresse à lire ou écrire. Pour cela, l'adresse est intégrée dans l’instruction elle-même. Pour rappel, l'instruction est codée par une suite de bit en mémoire RAM/ROM, dont certains précisent l'opération à faire, les autres servant à autre chose. L'idée est que certains bits précisent l'adresse mémoire de la donnée à lire. Les instructions sont donc du genre :
* ''LOAD 56'' - lit l'adresse numéro 56 et copie son contenu dans un registre;
* ''STORE R5 , adress 99'', copie le registre R5 dans l'adresse 99 ;
* ''ADD R5 , adress 209'' : additionne le registre R5 avec le contenu de l'adresse 209.
S'il existe des données statiques, c'est signe qu'il existe des '''données dynamiques'''. Ces dernières sont des données qui sont créées ou détruites selon les besoins. Pour comprendre d'où viennent ces données dynamiques, prenons le cas d'une personne qui écrit du texte sur un ordinateur. Le texte qu'il écrit est mémorisé dans la RAM de l’ordinateur, puis est sauvegardé sur le disque dur quand il sauvegarde son document. Au fur et à mesure qu'il écrit du texte, la RAM utilisée par ce texte augmente. Donc, ce texte est une donnée dynamique, dont la taille varie dans le temps.
Pour gérer des données dynamiques, la plupart des systèmes d'exploitation incorporent des fonctionnalités d''''allocation mémoire'''. Derrière ce nom barbare, se cache quelque chose de simple : les programmes peuvent réclamer de la mémoire au système d'exploitation, pour y placer les données qu'ils souhaitent. Les langages de programmation bas niveau supportent des fonctions comme malloc(), qui permettent de demander un bloc de mémoire de N octets à l'OS, qui doit alors accommoder la demande. De même, un programme peut libérer de la mémoire qu'il n'utilise plus avec des fonctions comme free().
Avec l'allocation mémoire, les données n'ont pas de place fixe en mémoire. Leur adresse mémoire peut varier d'une exécution du programme à l'autre. Pire que ça : les données peuvent être déplacées dans la mémoire RAM, si besoin. En clair : l'adresse est déterminée lors de l'exécution du programme. L'adresse est alors soit calculée, soit lue depuis la mémoire RAM, soit déterminée autrement. Toujours est-il qu'elle se retrouve dans un registre général. Pour gérer ces adresse variables, les processeurs utilisent l''''adressage indirect'''. L'adressage indirect permet d'utiliser une adresse qui est dans un registre de données. L'adresse en question peut être envoyée à la mémoire RAM sans problème, le processeur peut automatiquement connecter le registre adéquat sur le bus d'adresse.
Au tout début de l'informatique, les processeurs ne supportaient que l'adressage direct, pas plus. L'adressage indirect n'était tout simplement pas possible. Avec l'adressage direct, l'adresse à lire est extraite directement des instructions, par l'unité de contrôle. Le bus d'adresse de la RAM est alors relié directement à l'unité de contrôle, le bus de données est relié aux registres.
[[File:Architecture Harvard avec adressage direct uniquement.png|centre|vignette|upright=2|Architecture Harvard avec adressage direct uniquement]]
Mais dès les années 70, l'adressage indirect est apparu, rendant la programmation bien plus simple. Mais cela a demandé quelques adaptation au niveau du processeur. Avec l'adressage indirect, le bus d'adresse est connecté aux registres. Il a donc fallu rajouter un multiplexeur pour que le processeur décide de relier le bus d'adresse soit aux registres, soit à l'unité de contrôle.
===Un ordinateur peut avoir plusieurs processeurs===
La plupart des ordinateurs n'ont qu'un seul processeur, ce qui fait qu'on désigne avec le terme d''''ordinateurs mono-processeur'''. Mais il a existé (et existe encore) des '''ordinateurs multi-processeurs''', avec plusieurs processeurs sur la même carte mère. L'idée était de gagner en performance : deux processeurs permettent de faire deux fois plus de calcul qu'un seul, quatre permettent d'en faire quatre fois plus, etc. C'est très courant sur les supercalculateurs, des ordinateurs très puissants conçus pour du calcul industriel ou scientifique, mais aussi sur les serveurs ! Dans le cas le plus courant, ils utilisent plusieurs processeurs identiques : on utilise deux processeurs Core i3 de même modèle, ou quatre Pentium 3, etc.
Pour utiliser plusieurs processeurs, les programmes doivent être adaptés. Pour cela, il y a plusieurs possibilités :
* Une première possibilité, assez intuitive, est d’exécuter des programmes différents sur des processeurs différents. Par exemple, on exécute le navigateur web sur un processeur, le lecteur vidéo sur un autre, etc.
* La seconde option est de créer des programmes spéciaux, qui utilisent plusieurs processeurs. Ils répartissent les calculs à faire sur les différents processeurs. Un exemple est la lecture d'une vidéo sur le web : un processeur peut télécharger la vidéo pendant le visionnage et bufferiser celle-ci, un autre processeur peut décoder la vidéo, un autre décoder l'audio. De tels programmes restent des suites d'instructions, mais ils sont plus complexes que les programmes normaux, aussi nous les passons sous silence.
* La troisième option est d’exécuter le même programme sur les différents processeurs, mais chaque processeur traite son propre ensemble de données. Par exemple, pour un programme de rendu 3D, quatre processeurs peuvent s'occuper chacun d'une portion de l'image.
[[File:Architecture de Von Neumann Princeton multi processeurs.svg|centre|vignette|upright=2|Architecture de Von Neumann Princeton multi processeurs]]
De nos jours, les ordinateurs grand public les plus utilisés sont dans un cas intermédiaire, ils ne sont ni mono-, ni multi-processeur. Ils n'ont qu'un seul processeur, dans le sens où si on ouvre l'ordinateur et qu'on regarde la carte mère, il n'y a qu'un seul processeur. Mais ce processeur est en réalité assez similaire à un regroupement de plusieurs processeurs dans le même boitier. Il s'agit de '''processeurs multicœurs''', qui contiennent plusieurs cœurs, chaque cœur pouvant exécuter un programme tout seul.
La différence entre cœur et processeur est assez difficile à saisir, mais pour simplifier : un cœur est l'ensemble des circuits nécessaires pour exécuter un programme. Chaque cœur dispose de toute la machinerie électronique pour exécuter un programme, à savoir des circuits aux noms barbares comme : un séquenceur d'instruction, des registres, une unité de calcul. Par contre, certains circuits d'un processeur ne sont présents qu'en un seul exemplaire dans un processeur multicœur, comme les circuits de communication avec la mémoire ou les circuits d’interfaçage avec la carte mère.
Suivant le nombre de cœurs présents dans notre processeur, celui-ci sera appelé un processeur double-cœur (deux cœurs), quadruple-cœur (4 cœurs), octuple-cœur (8 cœurs), etc. Un processeur double-cœur est équivalent à avoir deux processeurs dans l'ordinateur, un processeur quadruple-cœur est équivalent à avoir quatre processeurs dans l'ordinateur, etc. Ces processeurs sont devenus la norme dans les ordinateurs grand public et les logiciels et systèmes d'exploitation se sont adaptés.
===Les coprocesseurs===
Quelques ordinateurs assez anciens disposaient de '''coprocesseurs''', des processeurs qui complémentaient un processeur principal. Les ordinateurs de ce type avaient un processeur principal, le '''CPU''', qui était secondé par un ou plusieurs coprocesseurs. Sauf exception, le CPU et le coprocesseur exécutent des programmes différents, ils travaillent en parallèle.
Les coprocesseurs les plus connus sont les '''coprocesseurs pour le rendu 2D/3D'''. Ils ont eu leur heure de gloire sur les anciennes consoles de jeux vidéo, comme Super Nintendo, la Playstation et autres consoles de cette génération ou antérieure. Ils s'occupaient respectivement de calculer les graphismes des jeux vidéos. De nos jours, ils ont été remplacés par des cartes graphiques, ou des ''Graphic Processing Units'', qui ne sont pas considérées comme des coprocesseurs.
Les '''coprocesseurs sonores''' sont une sorte d'ancêtre des cartes son, utilisés sur les anciennes consoles de jeux vidéo, comme La Nintendo 64, la Playstation et autres consoles antérieures. Ils s'occupaient respectivement de calculer tout ce qui a trait au son. Pour donner un exemple, on peut citer la console Neo-géo, qui disposait de deux processeurs travaillant en parallèle : un processeur principal, et un coprocesseur sonore. Le processeur principal était un Motorola 68000, alors que le coprocesseur sonore était un processeur Z80.
L'accès aux périphériques est quelque chose sur lequel nous passerons plusieurs chapitres dans ce cours. Mais sachez que l'accès aux périphériques peut demander pas mal de puissance de calculs. Le CPU principal peut faire ce genre de calculs par lui-même, mais il n'est pas rare qu'un '''coprocesseur d'IO''' soit dédié à l'accès aux périphériques. Un exemple assez récent est celui de la console de jeu Nintendo 3DS. Elle disposait d'un processeur principal de type ARM9, d'un coprocesseur pour les divisions qu'on abordera plus bas, et d'un second processeur ARM7. L'ARM 7 était utilisé comme coprocesseur d'I/O, ainsi que pour l'émulation de la console GBA.
[[File:Asmp 2.gif|centre|vignette|upright=2|Co-processeur pour l'accès aux entrées-sorties.]]
Les '''coprocesseurs arithmétiques''' sont un peu à part des autres. Ils sont spécialisés dans les calculs en virgule flottante. Ils étaient utilisés à une époque où les CPU ne géraient que des calculs entiers (en binaire ou en BCD). Un exemple est le coprocesseur flottant x87, complémentaire des premiers processeurs Intel x86. Il y a eu la même chose sur les processeurs Motorola 68000, avec deux coprocesseurs flottants appelés les Motorola 68881 et les Motorola 68882.
Un exemple récent de coprocesseur est celui utilisé sur la console de jeu Nintendo DS. La console utilisait deux processeurs, un ARM9 et un ARM7, qui ne pouvaient pas faire de division entière. Il s'agit pourtant d'opérations importantes dans le cas du rendu 3D, ce qui fait que les concepteurs de la console ont rajouté un coprocesseur spécialisé dans les divisions entières et les racines carrées. Le coprocesseur était adressable directement par le processeur, comme peuvent l'être la RAM ou les périphériques.
==Les entrées-sorties==
Tous les circuits vus précédemment traitent des données codées en binaire. Ceci dit, les données ne sortent pas de n'importe où : l'ordinateur contient des composants électroniques qui traduisent des informations venant de l’extérieur en nombres. Ces composants sont ce qu'on appelle des '''entrées'''. Par exemple, le clavier est une entrée : l'électronique du clavier attribue un nombre entier (''scancode'') à une touche, nombre qui sera communiqué à l’ordinateur lors de l'appui d'une touche. Pareil pour la souris : quand vous bougez la souris, celle-ci envoie des informations sur la position ou le mouvement du curseur, informations qui sont codées sous la forme de nombres. La carte son évoquée il y a quelques chapitres est bien sûr une entrée : elle est capable d'enregistrer un son, et de le restituer sous la forme de nombres.
S’il y a des entrées, on trouve aussi des '''sorties''', des composants électroniques qui transforment des nombres présents dans l'ordinateur en quelque chose d'utile. Ces sorties effectuent la traduction inverse de celle faite par les entrées : si les entrées convertissent une information en nombre, les sorties font l'inverse : là où les entrées encodent, les sorties décodent. Par exemple, un écran LCD est un circuit de sortie : il reçoit des informations, et les transforme en image affichée à l'écran. Même chose pour une imprimante : elle reçoit des documents texte encodés sous forme de nombres, et permet de les imprimer sur du papier. Et la carte son est aussi une sortie, vu qu'elle transforme les sons d'un fichier audio en tensions destinées à un haut-parleur : c'est à la fois une entrée, et une sortie.
Les '''entrées-sorties''' incluent toutes les entrées et sorties, et même certains composants qui sont les deux à la fois. Il s'agit d'un terme générique, qui regroupe des composants forts différents. Dans ce qui va suivre, nous allons parfois parler de périphériques au lieu d'entrées-sorties, mais les deux termes ne sont pas équivalents. Dans le détail, les entrées-sorties regroupent :
* Les '''périphériques''' sont les composants connectés sur l'unité centrale. Exemple : les claviers, souris, webcam, imprimantes, écrans, clés USB, disques durs externes, la Box internet, etc.
* Les '''cartes d'extension''', qui se connectent sur la carte mère via un connecteur, comme les cartes son ou les cartes graphiques.
* D'autres composants sont soudés à la carte mère mais sont techniquement des entrées-sorties : les cartes sons soudées sur les cartes mères actuelles, par exemple.
===L'interface avec le reste de l'ordinateur===
Les entrées-sorties sont très diverses, fonctionnent très différemment les unes des autres. Mais du point de vue du reste de l'ordinateur, les choses sont relativement standardisées. Du point de vue du processeur, les entrées-sorties sont juste des paquets de registres ! Tous les périphériques, toutes les entrées-sorties contiennent des '''registres d’interfaçage''', qui permettent de faire l'intermédiaire entre l'entrée/sortie et le reste de l'ordinateur. L'entrée/sortie est conçu pour réagir automatiquement quand on écrit dans ces registres.
[[File:Registres d'interfaçage.png|centre|vignette|upright=2|Registres d'interfaçage.]]
Les registres d’interfaçage sont assez variés. Les plus évidents sont les '''registres de données''', qui permettent l'échange de données entre le processeur et les périphériques. Pour échanger des données avec l'entrée/sortie, le processeur a juste à lire ou écrire dans ces registres de données. On trouve généralement un registre de lecture et un registre d'écriture, mais il se peut que les deux soient fusionnés en un seul registre d’interfaçage de données. Si le processeur veut envoyer une donnée à une entrée/sortie, il a juste à écrire dans ces registres. Inversement, s'il veut lire une donnée, il a juste à lire le registre adéquat.
Mais le processeur ne fait pas que transmettre des données à l'entrée/sortie. Le processeur lui envoie aussi des « commandes », des valeurs numériques auxquelles l'entrée/sortie répond en effectuant un ensemble d'actions préprogrammées. En clair, ce sont l'équivalent des instructions du processeur, mais pour l'entrée/sortie. Par exemple, les commandes envoyées à une carte graphique peuvent être : affiche l'image présente à cette adresse mémoire, calcule le rendu 3D à partir des données présentes dans ta mémoire, etc. Pour recevoir les commandes, l'entrée/sortie contient des ''registres de commande'' qui mémorisent les commandes envoyées par le processeur. Quand le processeur veut envoyer une commande à l'entrée/sortie, il écrit la commande en question dans ce ou ces registres.
Enfin, beaucoup d'entrée/sortie ont un ''registre d'état'', lisible par le processeur, qui contient des informations sur l'état de l'entrée/sortie. Ils servent notamment à indiquer au processeur que l'entrée/sortie est disponible, qu'il est en train d’exécuter une commande, qu'il est occupé, qu'il y a un problème, qu'il y a une erreur de configuration, etc.
===Les adresses des registres d’interfaçage===
Les registres des périphériques sont identifiés par des adresses mémoires. Et les adresses sont conçues de façon à ce que les adresses des différentes entrées/sorties ne se marchent pas sur les pieds. Chaque entrée/sortie, chaque registre, chaque contrôleur a sa propre adresse. D'ordinaire, certains bits de l'adresse indiquent quel est le destinataire. Certains indiquent quel est l'entrée/sortie voulue, les restants indiquant le registre de destination.
Il existe deux organisations possibles pour les adresses des registres d’interfaçages. La première possibilité est de séparer les adresses pour les registres d’interfaçage et les adresses pour la mémoire. Le processeur doit avoir des instructions séparées pour gérer les périphériques et adresser la mémoire. Il a des instructions de lecture/écriture pour lire/écrire en mémoire, et d'autres pour lire/écrire les registres d’interfaçage. Sans cela, le processeur ne saurait pas si une adresse est destinée à un périphérique ou à la mémoire.
[[File:Espaces d'adressages séparés entre mémoire et périphérique.png|centre|vignette|upright=2.5|Espaces d'adressages séparés entre mémoire et périphérique]]
L'autre méthode mélange les adresses mémoire et des entrées-sorties. Si on prend par exemple un processeur de 16 bits, où les adresses font 16 bits, alors les 65536 adresses possibles seront découpées en deux portions : une partie ira adresser la RAM/ROM, l'autre les périphériques. On parle alors d''''entrées-sorties mappées en mémoire'''. L'avantage est que le processeur n'a pas besoin d'avoir des instructions séparées pour les deux.
[[File:IO mappées en mémoire.png|centre|vignette|upright=2.0|IO mappées en mémoire]]
Pour résumer, communiquer avec une entrée/sortie est similaire à ce qu'on a avec les mémoires. Il suffit de lire ou écrire dans des registres d’interfaçage, qui ont chacun une adresse mémoire. Le problème est que le système d'exploitation ne connaît pas toujours le fonctionnement d'une entrée/sortie : il faut installer un programme qui va s'exécuter quand on souhaite communiquer avec l'entrée/sortie, et qui s'occupera de tout ce qui est nécessaire pour le transfert des données, l'adressage du périphérique, etc. Ce petit programme est appelé un driver ou '''pilote de périphérique'''. La « programmation » périphérique est très simple : il suffit de savoir quoi mettre dans les registres, et c'est le pilote qui s'en charge.
==Les architectures Harvard et Von Neumann==
Après avoir vu le processeur, les mémoires et les entrées-sorties, voyons voir comment le tout est interconnecté. Tous les ordinateurs ne sont pas organisés de la même manière, pour ce qui est de leurs bus. Mais pour comprendre pourquoi, nous devons regarder qui communique avec qui, dans un ordinateur. Pour rappel, les données sont placées en mémoire RAM, alors que les instructions sont placées en mémoire ROM. Le processeur lit des instructions dans la mémoire ROM, il lit et écrit dans la mémoire RAM, et accède aux registres d’interfaçage des entrées-sorties. Il y a donc besoins de trois interconnexions : CPU-ROM, CPU-RAM et CPU-IO.
[[File:Réseau d'interconnexion avec un processeur au centre.png|centre|vignette|upright=2|Réseau d'interconnexion avec un processeur au centre]]
Il parait intéressant d'utiliser trois interconnexions, au minimum CPU-ROM, CPU-RAM et CPU-IO. Néanmoins, faire ainsi a de nombreux désavantages. Déjà, il faut pouvoir brancher tout ça sur le processeur. Et celui-ci n'a pas forcément assez de broches pour. Aussi, il est parfois préférable de mutualiser des bus, à savoir de connecter plusieurs composants sur un même bus. Par exemple, on peut mutualiser le bus pour la mémoire RAM et pour la mémoire ROM. Il faut dire que les deux bus sont des bus mémoire, avec un bus d'adresse, un bus de données, et surtout : des bus de commande similaires. Les mutualiser est alors très simple, et permet d'économiser pas mal de broches.
[[File:Réseau d'interconnexion avec un processeur au centre et une architecture Harvard.png|centre|vignette|upright=2|Réseau d'interconnexion avec un processeur au centre et une architecture Harvard]]
Cette mutualisation nous amène naturellement à parler de la distinction entre les architectures Harvard d'un côté et les architectures Von Neumann de l'autre. Elle est très liée au fait d'utiliser soit un bus mémoire unique, soit des bus séparés pour la ROM et la RAM. Voyons cela en détail.
===Les architectures Harvard et Von Neumann : des bus séparés ou unifiés===
Avec l''''architecture Harvard''', la mémoire ROM et la mémoire RAM sont reliées au processeur par deux bus séparés. Il y a un bus RAM pour la mémoire RAM, un bus ROM pour la mémoire ROM. L'avantage de cette architecture est qu'elle permet de charger une instruction et une donnée simultanément : une instruction chargée sur le bus relié à la mémoire programme, et une donnée chargée sur le bus relié à la mémoire de données. Et cela simplifie fortement la conception du processeur.
[[File:Harvard Architecture.png|centre|vignette|upright=2|Architecture Harvard, avec une ROM et une RAM séparées.]]
Avec l''''architecture Von Neumann''', mémoire ROM et mémoire RAM sont reliées au processeur par un bus unique. Le bus unique qui relie processeur, RAM et ROM, s'appelle le '''bus mémoire'''. Un défaut de ces architecture est qu'elles ne peuvent pas charger une instruction et une donnée en même temps. Et cela pose quelques problèmes pour la conception du processeur. Par contre, nous verrons dans ce qui suit qu'utiliser un bus mémoire partagé est bien plus flexible et permet des choses que les architectures Harvard ne peuvent pas faire.
[[File:Architecture Von Neumann, avec deux bus séparés.png|centre|vignette|upright=2|Architecture Von Neumann, avec deux bus séparés.]]
===Les architectures Harvard et Von Neumann : des espaces d'adressage séparés ou unifiés===
La distinction précédente se base sur les connexions entre RAM, ROM et processeur. Mais il existe une autre distinction, très liée, qui est souvent utilisée comme seconde définition des architectures Harvard/Von Neumann. Elle est liée aux adresses mémoire que le processeur peut gérer. Prenons un processeur 16 bits, par exemple, qui gère naturellement des adresses de 16 bits. Il peut gérer 2^16 adresses, soit 64 kibioctets de mémoire. L'ensemble de ces adresses est appelé un '''espace d'adressage'''. Mais comment cet espace d'adressage est utilisé pour adresser une RAM et une ROM ?
Sur les architectures Harvard, le processeur voit deux mémoires séparées avec leur lot d'adresses distinctes. Une même adresse peut donc correspondre soit à la mémoire ROM, soit à la mémoire RAM, suivant le bus utilisé. L'espace d'adressage est donc doublé, dupliqué, avec un pour la ROM, un autre pour la RAM. Rien d'étonnant à cela : il y a deux bus d'adresses, chacun correspondant à un espace d'adressage.
[[File:Vision de la mémoire par un processeur sur une architecture Harvard.png|centre|vignette|upright=2|Vision de la mémoire par un processeur sur une architecture Harvard.]]
Avec l'architecture Von Neumann, la RAM et la ROM doivent se partager les adresses mémoires disponibles. Il n'y a qu'un seul espace d'adressage qui est coupé en deux, avec une partie pour la ROM et une autre pour la RAM. Une adresse correspond soit à la mémoire RAM, soit à la mémoire ROM, mais pas aux deux. Typiquement, la mémoire ROM occupe une partie des adresses, la mémoire RAM utilise le reste. La répartition des adresses est réalisée par les circuits de décodage d'adresse mentionnés plus haut.
[[File:Vision de la mémoire par un processeur sur une architecture Von Neumann.png|centre|vignette|upright=2|Vision de la mémoire par un processeur sur une architecture Von Neumann.]]
Les '''architectures Harvard modifiées''' sont des intermédiaires entre architectures Harvard et architectures Von Neumann, bien qu'elles penchent bien plus du côté des architectures Harvard. Précisons que la terminologie n'est pas claire, beaucoup d'auteurs mettent des définitions différentes derrière ces deux termes. Mais dans ce cours, nous utiliserons une définition très stricte de ce qu'est une architecture Harvard modifiée.
Une architecture Harvard modifiée est une architecture Harvard, où le processeur peut lire des données constantes depuis la mémoire ROM. Nous avions vu plus haut que les mémoires ROM peuvent mémoriser, en plus d'un programme exécutable, des données constantes, qui ne varient pas. Les architectures Harvard pures ne permettent pas de lire des données de ce genre depuis la mémoire ROM, alors que les architectures Harvard modifiées le permettent.
Une architecture Harvard modifiée dispose d'une instruction pour lire les données en mémoire RWM, et d'une instruction pour lire des données en mémoire ROM. Il y a donc deux versions de l'instruction LOAD, qui copient la donnée dans un registre général, mais dont la source de la donnée est différente. Une autre possibilité, plus rare, est que une instruction de copie, qui copie une constante depuis la mémoire ROM vers la mémoire RAM. Le cas le plus commun est l'utilisation de deux instructions LOAD séparées.
[[File:Espaces d'adressage sur une archi harvard modifiée.png|centre|vignette|upright=2.5|Espaces d'adressage sur une archi harvard modifiée]]
Ceci étant dit, revenons à la distinction entre architecture Harvard et Von Neumann. Il faut noter que la RAM et la ROM n'ont pas forcément la même taille. Et ce que ce soit sur une architecture Harvard que sur une architecture Von Neumann, mais c'est plus facile à expliquer sur une architecture Harvard.
On peut par exemple imaginer une architecture Harvard qui utilise des adresses de 16 bits pour la ROM, et seulement 8 bits pour la RAM. Le résultat est qu'il peut adresser 64 kibioctets de ROM, mais seulement 256 octets de RAM. Les deux bus d'adresse sont alors de taille différente, l'un faisant 8 bits, l'autre 16. Quelques processeurs 8 bits étaient dans ce cas, comme on le verra dans le chapitre sur les CPU 8bits. Mais d'autres processeurs utilisent des valeurs différentes, avec par exemple des adresses de 16 bits pour la RAM, mais de 20 bits pour la ROM, ou inversement.
Sur une architecture Von Neumann, tout dépend de comment les adresses sont réparties. La solution la plus simple découpe l'espace d'adressage en deux parties égales, avec la RAM qui est dans la moitié basse (qui part de l'adresse 0 jusqu'à l'adresse au milieu), alors que la ROM est dans la moitié haute (entre l'adresse du milieu et l'adresse maximale). Mais ce n'est pas la seule possibilité, la limite entre RAM et ROM peut être mise n'importe où. Prenons par exemple un processeur 32 bits, capable de gérer 4 milliards d'adresse. Il est parfaitement possible de réserver 128 mébioctets de poids fort à la mémoire ROM, et de laisser le reste à la mémoire RAM.
===Le décodage d'adresse sur les architectures Von Neumann===
Pour résumer, les architectures Harvard et Von Neumann se distinguent sur deux points :
* L'accès à la RAM et à la ROM se font par des bus séparés sur l'architecture Harvard, sur le même bus avec l'architecture Von Neumann.
* Les adresses pour la mémoire ROM et la mémoire RAM sont séparées sur les architectures Harvard, partagées sur l’architecture Von Neumann.
Les architectures Von Neumann utilisent donc un seul bus pour connecter la RAM et la ROM au processeur. Mais cela ne parait pas intuitif : comment deux composants peuvent se connecter aux mêmes fils ? Parce que c'est ce qu'implique le fait de partager un bus. Si je prends une mémoire RAM et une mémoire ROM, toutes deux de 8 bits, elles seront connectées à un bus mémoire de 8 bits. Intuitivement, on se dit qu'il y aura des conflits, du genre : la RAM et la ROM vont accéder au bus en même temps, comment savoir si une adresse est destinée à la RAM ou la ROM, etc ?
Tous ces problèmes sont résolus avec une solution très simple : à chaque instant, seule une mémoire est connectée au bus. L'idée est que les mémoires sont connectées ou déconnectées du bus selon les besoins. Si le processeur veut envoyer lire une donnée en mémoire RAM, il déconnecte la mémoire ROM du bus. Et inversement, s'il veut lire une instruction, il déconnecte la RAM et connecte la ROM.
Pour cela, les mémoires RAM et ROM possèdent une entrée ''Chip Select'' ou ''Output Enable'', qui agit comme une sorte de bouton ON/OFF. Lorsqu'on met un 1 sur cette entrée, la mémoire se connectera au bus. Ses entrées et sorties fonctionneront normalement, elle pourra recevoir des adresses, envoyer ou recevoir des données, tout sera normal. Par contre, si on met un 0 sur cette entrée, la mémoire se "désactive", ses entrée-sorties ne répondent plus aux sollicitations extérieures. Pire que ça : elles sont électriquement déconnectées.
Au total, tout cela demande de gérer deux bit ''Chip Select''/''Output Enable'' : un pour la RAM, un pour la ROM. Et ces deux bits sont configurés pour chaque accès mémoire, pour chaque lecture ou écriture. Pour cela, un circuit de '''décodage d'adresse''' prend en entrée l'adresse mémoire à lire/écrire, et active/désactive les mémoires RAM/ROM selon les besoins. Il prend l'adresse et configure les bits ''Chip Select''/''Output Enable''.
[[File:Décodage d'adresse sur une architecture Von Neumann.png|centre|vignette|upright=2|Décodage d'adresse sur une architecture Von Neumann.]]
L'implémentation la plus simple réserve la moitié des adresses pour la RAM, l'autre moitié pour la ROM. Typiquement, la ROM prend la moitié basse, la RAM la moitié haute. Dans ce cas, activer/désactiver la RAM et la ROM se fait avec seulement le bit de poids fort de l'adresse. Si le bit de poids fort est à 1, alors on accède à la RAM et la ROM doit être désactivée. Mais si ce bit est à 0, alors on accède à la moitié basse et il faut désactiver la RAM.
Une remarque intéressante : le fait de séparer la mémoire en deux parts égales permet de simuler une architecture Harvard à partir d'une architecture Von Neumann. Par exemple, le tout premier processeur d'Intel, le 4004, était l'un de ceux là. La RAM et la ROM sont reliés au même bus, et il y a donc un unique espace d'adressage, qui est séparé en deux parties égales. Le truc est que le processeur traite les deux parties égales comme deux espaces d'adressage séparés. Le processeur se débrouille pour cacher le fait qu'il y a un espace d'adressage unique coupé en deux, ce qui fait que les programmeurs voient bien deux espaces d'adressages distincts.
[[File:Décodage d'adresse sur une architecture Von Neumann basique.png|centre|vignette|upright=2|Décodage d'adresse sur une architecture Von Neumann basique.]]
Pour résumer, quand une adresse est envoyée sur le bus, les deux mémoires vont la recevoir mais une seule va répondre et se connecter au bus. Le décodage d'adresse garantit que seule la mémoire adéquate réponde à un accès mémoire. Le décodage d'adresse est réalisé par la carte mère, par un composant dédié.
Le mécanisme peut être utilisé pour combiner plusieurs RAM en une seule, idem avec les ROM. Pour comprendre l'idée, je vais prendre l'exemple de l'IBM PC, un des tout premier PC existant. Nous étudierons ce PC dans une section dédiée, à la fin du chapitre, aussi je vais passer rapidement dessus. Tout ce que je vais faire est vous présenter la carte mère du PC, et vous demander de faire est de compter les mémoires ROM et mémoires RAM sur la carte mère :
[[File:IBM 5150 Motherboard.svg|centre|vignette|upright=3|Carte mère de l'IBM 5150, un modèle de l'IBM PC.]]
Si vous remarquerez qu'il y a 5 mémoires ROM et 8 à 32 mémoires RAM. Le fait est que le processeur voit les différentes mémoires ROM comme une seule mémoire ROM. Idem avec les mémoires RAM : elle font chacune 2 kibioctets, et l'ensemble est vu par le processeur comme une seule RAM de 16 à 64 kibioctets. Et cela grâce aux circuits de décodage d'adresse, qui sont situés en haut à droite de la carte mère.
Pour comprendre l'idée, prenons l'exemple d'un processeur 16 bits, capable de gérer 64 kibioctets de mémoire. L'espace d'adressage est découpé en quatre portions, de 16 kibioctets chacune. Une portion est réservée à une ROM de 16 kibioctet, les autres sont chacune réservée à une RAM de 16 kibioctet. Le décodage d'adresse sélectionne alors la mémoire adéquate en utilisant les deux bits de poids fort de l'adresse.
* S'ils valent 00, alors c'est la mémoire ROM qui est activée, connectée au bus.
* S'ils valent 01, alors c'est la première mémoire RAM qui est connectée au bus.
* S'ils valent 10, alors c'est la seconde mémoire RAM qui est connectée au bus.
* S'ils valent 11, alors c'est la troisième mémoire RAM qui est connectée au bus.
[[File:Décodage d'adresse sur une architecture Von Neumann, utilisant plusieurs RAM et une ROM.png|centre|vignette|upright=3|Décodage d'adresse sur une architecture Von Neumann, utilisant plusieurs RAM et une ROM]]
===L'impact sur la conception du processeur===
Plus haut, j'ai parlé d'un des avantages des architectures Harvard : elles peuvent lire une instruction en même temps qu'elles accèdent à une donnée. La donnée est lue/écrite en RAM, alors que l'instruction est lue en ROM. Et cela permet de simplifier l'intérieur du processeur. Pas de beaucoup, mais c'est déjà ça de pris. Voyons maintenant comment cela impacte l'intérieur du processeur. Tout ce dont vous avez à vous rappeler est la séparation entre chemin de données et unité de contrôle, et que les registres généraux sont dans le premier, le ''program counter'' dans la seconde.
Avec une architecture Harvard, les instructions et les données passent par des bus différent : bus ROM pour les instructions, bus RAM pour les données. L'intuition nous dit que le bus pour la mémoire ROM est connecté à l'unité de contrôle, alors que le bus pour la RAM est connecté au chemin de données. Et dans les grandes lignes, c'est vrai. La logique est imparable pour ce qui est des bus de données. Mais il y a une petite subtilité pour les bus d'adresse.
Pour comprendre comment le processeur exploite ces deux bus, voyons ce qui transite dessus. Pour la mémoire ROM, elle reçoit l'adresse de l'instruction à lire, elle renvoie l'instruction adéquate. Pour cela, le ''program counter'' est envoyé sur le bus d'adresse, l'instruction sur le bus de données. Pour la mémoire RAM, elle échange des données avec les registres généraux, les registres pour les données. Les adresses utilisées pour la RAM viennent elles soit du chemin de données, soit de l'unité de contrôle, tout dépend du mode d'adressage. Mais le ''program counter'' n'est pas impliqué.
[[File:Architecture Harvard - échanges de données.png|centre|vignette|upright=2|Architecture Harvard - échanges de données]]
Les architectures Harvard modifiées doivent cependant rajouter une connexion entre le bus ROM et les registres généraux. C'est nécessaire pour charger une donnée constante depuis la mémoire ROM. Rappelons que la donnée constante est copiée dans un registre général, donc dans le chemin de données.
[[File:Architecture Harvard modifiée - implémentation du processeur.png|centre|vignette|upright=2|Architecture Harvard modifiée - implémentation du processeur]]
Avec les architectures Von Neumann, il y a un seul bus qui est relié à la fois au chemin de données et à l'unité de contrôle. Si le processeur lit une instruction, le bus doit être relié à l'unité de contrôle. Par contre, s'il accède à une donnée, il doit être relié au chemin de données (le bus d'adresse peut éventuellement être connecté au séquenceur, si celui-ci fournit l'adresse à lire). Il faut donc utiliser un paquet de multiplexeurs et de démultiplexeurs pour faire la connexion au bon endroit.
[[File:Architecture Von Neumann - implémentation du processeur.png|centre|vignette|upright=2|Architecture Von Neumann - implémentation du processeur]]
Une instruction se fait en deux temps : on charge l'instruction depuis la mémoire ROM, puis on l'exécute. Avec une architecture Harvard, tout cela se fait en un seul cycle d'horloge, vu que charger la ROM et accéder aux données peut se faire en même temps. Pas avec les architectures Von Neumann, qui doivent libérer le bus mémoire après avoir chargé une instruction. Elles n'ont pas le choix : elles chargent l'instruction lors d'un premier cycle d'horloge, puis l'exécutent lors du second.
Pour cela, ils incorporent un registre appelé le '''registre d'instruction''', qui mémorise l'instruction chargée. L'instruction est copiée dans ce registre lors du premier cycle, puis est utilisée lors du second cycle. Le registre permet de ne pas oublier l’instruction entre les deux cycles. Le registre d'instruction est obligatoire sur les architectures Von Neumann. En comparaison, il est facultatif sur les architectures Harvard. Elles peuvent en avoir un, pour des raisons techniques, mais ce n'est pas obligatoire.
[[File:Registre d'instruction.png|centre|vignette|upright=2|Registre d'instruction.]]
===Les architectures Von Neumann sont plus flexibles===
Sur les architectures Harvard, le processeur sait faire la distinction entre programme et données. Les données sont stockées dans la mémoire RAM, le programme est stocké dans la mémoire ROM. Les deux sont séparés, accédés par le processeur sur des bus séparés, et c'est ce qui permet de faire la différence entre les deux. Il est impossible que le processeur exécute des données ou modifie le programme. Du moins, tant que la mémoire qui stocke le programme est bien une ROM.
Par contre, sur les architectures Von Neumann, il est impossible de distinguer programme et données, sauf en ajoutant des techniques de protection mémoire avancées. La raison est qu'il est impossible de faire la différence entre donnée et instruction, vu que rien ne ressemble plus à une suite de bits qu'une autre suite de bits. Et c'est à l'origine d'un des avantages majeur de l'architecture Von Neumann : il est possible que des programmes soient copiés dans la mémoire RWM et exécutés dans celle-ci.
Un cas d'utilisation familier est celui de votre ordinateur personnel. Le système d'exploitation et les autres logiciels sont copiés en mémoire RAM à chaque fois que vous les lancez. Mais cet exemple implique un disque dur, ce qui rend les choses plus compliquées que prévu. Un autre exemple serait la compilation de code à la volée, mais il ne sera pas très parlant.
Un exemple plus adapté serait celui où la ROM mémorise un programme compressée dans la mémoire ROM, qui est décompressé pour être exécuté en mémoire RAM. Le programme de décompression est stocké en mémoire ROM et est exécuté au lancement de l’ordinateur. Cette méthode permet d'utiliser une mémoire ROM très petite et très lente, tout en ayant un programme rapide (si la mémoire RWM est rapide).
Il est aussi possible de créer des programmes qui modifient leurs propres instructions : cela s'appelle du '''code auto-modifiant'''. Ce genre de choses servait autrefois sur des ordinateurs rudimentaires, au tout début de l'informatique. À l'époque, les adresses à lire/écrire devaient être écrites en dur dans le programme, dans les instructions exécutées. Pour gérer certaines fonctionnalités des langages de programmation qui ont besoin d'adresses modifiables, comme les tableaux, on devait corriger les adresses au besoin avec du code auto-modifiant. De nos jours, le code automodifiant est utilisée occasionnellement pour rendre un programme indétectable dans la mémoire (les virus informatiques utilisent beaucoup ce genre de procédés).
L'impossibilité de séparer données et instructions est à l'origine de problèmes assez fâcheux. Il est parfaitement possible que le processeur charge et exécute des données, qu'il prend par erreur pour des instructions. C'est le cas quand des pirates informatiques arrivent à exploiter des bugs. Il arrive que des pirates informatiques vous fournissent des données corrompues, qui contiennent un virus ou un programme malveillant est caché dans les données. Les bugs en question permettent d'exécuter ces données, donc virus. Pour éviter cela, le système d'exploitation peut marquer certaines zones de la mémoire comme non-exécutable, c’est-à-dire que le système d'exploitation interdit d’exécution de quoi que ce soit qui est dans cette zone. Mais ce n'est pas parfait.
Toujours est-il que tout cela est impossible sur les architectures Harvard. Et ce serait très limitant. Imaginez : pas possible de lancer un programme depuis le disque dur ou une clé USB, le programme doit impérativement être dans une mémoire ROM, pas de compilation à la volée, etc. Que des techniques très utilisées dans l'informatique moderne. Malgré ses défauts, les architectures Von Neumann ne sont pas les plus utilisées pour rien. Les architectures Harvard sont concrètement utilisées uniquement dans l'informatique embarquée, sur des microcontrôleurs très spécifiques.
==Le bus de communication avec les entrées-sorties==
Le processeur, la mémoire et les entrées-sorties sont connectées par un ou plusieurs '''bus de communication'''. Ce bus n'est rien d'autre qu'un ensemble de fils électriques sur lesquels on envoie des zéros ou des uns. Pour communiquer avec la mémoire, il y a trois prérequis qu'un bus doit respecter : pouvoir sélectionner la case mémoire (ou l'entrée-sortie) dont on a besoin, préciser à la mémoire s'il s'agit d'une lecture ou d'une écriture, et enfin pouvoir transférer la donnée. Pour cela, on doit donc avoir trois bus spécialisés, bien distincts, qu'on nommera le bus de commande, le bus d'adresse, et le bus de donnée.
* Le '''bus de données''', sur lequel s'échangent les données entre les composants.
* Le '''bus de commande''' pour configurer la mémoire et les entrées-sorties.
* Le '''bus d'adresse''', facultatif, permet de préciser quelle adresse mémoire il faut lire/écrire.
Chaque composant possède des entrées séparées pour le bus d'adresse, le bus de commande et le bus de données. Par exemple, une mémoire RAM possédera des entrées sur lesquelles brancher le bus d'adresse, d'autres sur lesquelles brancher le bus de commande, et des broches d'entrée-sortie pour le bus de données. Précisons cependant que le bus de commande n'est pas exactement le même entre des mémoires RAM/ROM et des entrées-sorties.
[[File:Bus general schematic.svg|centre|vignette|upright=2|Contenu d'un bus, généralités.]]
===Le réseau d'interconnexion : généralités===
Reprenons où nous nous étions arrêté. Avant de voir les architectures Harvard et Von Neumann, nous avions dit que le processeur, les mémoires et les entrées-sorties sont reliées entre eux par un réseau d'interconnexion. Nous venons de voir qu'il est possible de mutualiser certains bus, notamment celui de la mémoire RAM et celui de la mémoire ROM. Mais il est possible de faire la même chose pour les entrées-sorties. Là encore, il est possible de regrouper le bus mémoire avec les bus pour les entrées-sorties. Voyons ce que cela implique.
{|
|[[File:Réseau d'interconnexion avec un processeur au centre.png|centre|vignette|upright=2|Réseau d'interconnexion avec une architecture Harvard.]]
|[[File:Réseau d'interconnexion avec un processeur au centre et une architecture Harvard.png|centre|vignette|upright=2|Interconnexions d'une architecture Von Neumann.]]
|}
Avant de poursuivre, nous devons préciser quelque chose d'important. Sur les ordinateurs modernes, les entrées-sorties peuvent accéder à la mémoire RAM. Les ordinateurs modernes intègrent des techniques de '''''Direct Memory Access''''' (DMA) qui permettent aux entrées-sorties de lire ou d'écrire en mémoire RAM. Les transferts DMA se font sans intervention du processeur. Ils permettent de copier un bloc de plusieurs octets, dans deux sens : de la mémoire RAM vers une entrée-sortie, ou inversement. Le DMA demande d'ajouter un circuit dédié sur la carte mère : le contrôleur DMA. Il effectue la copie d'un paquet d'octets de la RAM vers l'entrée-sortie ou dans l'autre sens.
[[File:Réseau d'interconnexion avec un processeur au centre, et direct memory access.png|centre|vignette|upright=2|Réseau d'interconnexion avec un processeur au centre, et direct memory access]]
===Les bus systèmes===
La première solution utilise un bus unique, celui-ci est appelé le '''bus système''', aussi appelé ''backplane bus''. Le bus système est connecté à la mémoire RAM, la mémoire ROM, au processeur, et aux entrées-sorties. Tous les composants présents dans l'ordinateur sont connectés à ce bus, sans exception. De tels bus avaient pour avantage la simplicité. Le processeur n'est connecté qu'à un seul bus, ce qui utilise peu de broches et économise des fils. La mutualisation des bus est totale, le câblage est plus simple, la fabrication aussi.
[[File:Architecture minimale d'un ordinateur.png|centre|vignette|upright=2|Architecture minimale d'un ordinateur.]]
Un bus système contient un bus d'adresse, de données et de commande. Un bus système se marie bien avec des entrées-sorties mappées en mémoire. La conséquence est que le bus d'adresse ne sert pas que pour l'accès à la mémoire RAM/ROM, mais aussi pour l'accès aux entrées-sorties. Il y a moyen d'implémenter un système d'adresse séparés avec, mais c'est pas l'idéal.
[[File:Architecture Von Neumann avec les bus.png|centre|vignette|upright=2|Architecture Von Neumann avec les bus.]]
Un bus système n'a pas de limitations quant aux échanges de données. Le processeur peut communiquer directement avec les mémoires et les entrées-sorties, les entrées-sorties peuvent communiquer avec la mémoire RAM, etc. Notamment, un bus système peut implémenter le ''Direct Memory Access''. Il suffit juste de connecter un contrôleur DMA sur le bus système. Le contrôleur DMA est considéré comme une entrée-sortie, ses registres sont mappés en mémoire et sont donc accessibles directement par le processeur.
[[File:Bus système avec controleur DMA.png|centre|vignette|upright=2|Bus système avec contrôleur DMA.]]
Si on suit la définition à la lettre, un bus système est systématiquement une architecture Von Neumann, vu que la mémoire ROM et la mémoire RAM sont reliées sur le bus système. La conséquence est que les circuits de décodage d'adresse sont présents. Ils sont toujours sur la carte mère, et sont plus ou moins à côté du bus système. Cependant, le décodage d'adresse est parfois étendu pour tenir compte des entrées-sorties.
Les entrées-sorties soudées sur la carte mère ont elles aussi des entrées ''Chip Select'' ou quelque chose de similaire. Le décodage d'adresse peut alors les activer ou les désactiver suivant l'adresse envoyée sur le bus d'adresse. C'est ce qui arrive quand le processeur écrit dans un registre d’interfaçage : il envoie l'adresse de ce registre sur le bus d'adresse, le circuit de décodage d'adresse active seulement l'entrée-sortie associée. Il faut noter que ce n'est pas systématique, il existe des techniques pour se passer de décodage d'adresse. Mais nous en reparlerons dans le chapitre sur les bus de communication.
[[File:Chipselectfr.png|centre|vignette|upright=1.5|Exemple détaillé.]]
Les bus systèmes sont certes très simples, mais ils ont aussi des désavantages. Par exemple, il faut éviter que le processeur et les entrées-sorties se marchent sur les pieds, ils ne peuvent pas utiliser le bus en même temps. De tels conflits d'accès au bus système sont fréquents et ils réduisent la performance, comme on le verra dans le chapitre sur les bus. De plus, un bus système a le fâcheux désavantage de relier des composants allant à des vitesses très différentes : il arrivait fréquemment qu'un composant rapide doive attendre qu'un composant lent libère le bus. Le processeur était le composant le plus touché par ces temps d'attente.
Elle était utilisée sur les tout premiers ordinateurs, pour sa simplicité. Elle était parfaitement adaptée aux anciens composants, qui allaient tous à la même vitesse. De nos jours, les ordinateurs à haute performance ne l'utilisent plus trop, mais elle est encore utilisée sur certains systèmes embarqués, en informatique industrielle dans des systèmes très peu puissants.
===Les bus d'entrées-sorties===
Les bus systèmes ont de nombreux problèmes, ce qui fait que d'anciens ordinateurs faisaient autrement. À la place d'un bus système unique, ils utilisent un bus séparé pour les mémoires, et un autre séparé pour les entrées-sorties. Le bus spécialisé pour la mémoire est appelé le '''bus mémoire''', l'autre bus est appelé le '''bus d'entrées-sorties'''. Le bus mémoire est généralement relié à la fois à la mémoire RAM et à la mémoire ROM, les exceptions ne sont pas rares, cependant.
[[File:Bus mémoire séparé du bus pour les IO.png|centre|vignette|upright=2|Bus mémoire séparé du bus pour les IO]]
Les bus d'entrée-sorties peuvent être spécialisés et simplifiés. Par exemple, ils peuvent avoir un bus de commande différent de celui de la mémoire, qui utilise nettement moins de fils. Le bus d'adresse peut aussi être réduit, et utiliser des adresses plus courtes que celles du bus mémoire. Les bus de données peuvent aussi être de taille différentes. Il est ainsi possible d'avoir un bus mémoire capable de lire/écrire 64 bits à la fois, alors que la communication avec les entrées-sorties se fait octet par octet ! En général, les bus d'entrée-sortie sont assez petits, ils ont une taille de 8 ou 16 bits, même si le bus mémoire est plus grand. Cela permet de ne pas gaspiller trop de broches. Ajouter un bus d'entrée-sortie n'est donc pas très gourmand en broches et en fils.
: Il est en théorie possible d'avoir une fréquence différente pour les deux bus, avec un bus mémoire ultra-rapide et un bus pour les entrées-sorties est un bus moins rapide. Mais il faut que le processeur soit prévu pour, et c'est très rare.
Niveau performances, le processeur peut théoriquement accéder à la mémoire en attendant qu'une entrée/sortie réponde, mais il faut que le processeur soit prévu pour, et ce n'est pas de la tarte. Par contre, cela implique d'avoir des adresses séparées pour les registres d’interfaçage et la mémoire. En clair : pas d'entrée-sortie mappée en mémoire ! Un autre problème est que les entrées-sorties ne peuvent pas communiquer avec la mémoire directement, elles doivent passer par l'intermédiaire du processeur. En clair : pas de ''Direct Memory Access'' ! Les deux sont des défauts rédhibitoires pour les programmeurs système, notamment pour ceux qui codent les pilotes de périphériques.
Pour résumer, les défauts sont assez problématiques : pas d'entrées-sorties mappées en mémoire, pas de ''Direct Memory Access'', économie de broches limitée. Les deux premiers sont des défauts majeurs, qui font que de tels bus ne sont pas utilisés dans les ordinateurs modernes. À la place, ils utilisent une troisième solution, distincte des bus systèmes et des bus d'entrée-sorties.
===Les bus avec répartiteur===
Il existe une méthode intermédiaire, qui garde deux bus séparés pour la mémoire et les entrées-sorties, mais élimine les problèmes de brochage sur le processeur. L'idée est d'intercaler, entre le processeur et les deux bus, un '''circuit répartiteur'''. Il récupère tous les accès et distribue ceux-ci soit sur le bus mémoire, soit sur le bus des périphériques. Le ou les répartiteurs s'appellent aussi le '''''chipset''''' de la carte mère.
C'était ce qui était fait à l'époque des premiers Pentium. À l'époque, la puce de gestion du bus PCI faisait office de répartiteur. Elle mémorisait des plages mémoires entières, certaines étant attribuées à la RAM, les autres aux périphériques mappés en mémoire. Elles utilisaient ces plages pour faire la répartition.
[[File:IO mappées en mémoire avec séparation des bus.png|centre|vignette|upright=2|IO mappées en mémoire avec séparation des bus]]
Niveau adresses des registres d'interfacage, il est possible d'avoir soit des adresses unifiées avec les adresses mémoire, soit des adresses séparées.
L'usage d'un répartiteur ne pose pas de problèmes particuliers pour implémenter le DMA. La seule contrainte est que le contrôleur DMA soit intégré dans le répartiteur. Les échanges entre IO et mémoire passent par le répartiteur, qui fait le pont entre bus mémoire et bus des IO.
[[File:Implémentation du DMA avec un répartiteur.png|centre|vignette|upright=2|Implémentation du DMA avec un répartiteur]]
==Les microcontrôleurs et ''system on chip''==
Parfois, on décide de regrouper la mémoire, les bus, le CPU et les ports d'entrée-sortie dans un seul circuit intégré, un seul boitier. L'ensemble forme alors ce qu'on appelle un '''''System on Chip''''' (système sur une puce), abrévié en SoC. Le nom est assez explicite : un SoC comprend un système informatique complet sur une seule puce de silicium, microprocesseurs, mémoires et périphériques inclus. Ils incorporent aussi des ''timers'', des compteurs, et autres circuits très utiles.
[[File:ARMSoCBlockDiagram.svg|centre|vignette|upright=2|SoC basé sur un processeur ARM, avec des entrées-sorties typiques de celles d'un µ-contrôleur. Le support du bus CAN, d'Ethernet, du bus SPI, d'un circuit de PWM (génération de signaux spécifiques), de convertisseurs analogique-digital et inverse, sont typiques des µ-contrôleurs.]]
Le terme SoC regroupe des circuits imprimés assez variés, aux usages foncièrement différents et à la conception distincte. Les plus simples d’entre eux sont des microcontrôleurs, qui sont utilisés pour des applications à base performance. Les plus complexes sont utilisés pour des applications qui demandent plus de puissance, nous les appellerons SoC haute performance.
La relation entre SoC et microcontrôleurs est assez compliquée à expliquer, la terminologie n'est pas clairement établie. Il existe quelques cours/livres qui séparent les deux, d'autres qui pensent que les deux sont très liés. Dans ce cours, nous allons partir du principe que tous les systèmes qui regroupent processeur, mémoire et quelques périphériques/entrées-sorties sont des SoC. Les microcontrôleurs sont donc un cas particulier de SoC, en suivant cette définition.
===Les microcontrôleurs===
Les '''microcontrôleurs''' sont des composants utilisés dans l'embarqué ou d'informatique industrielle. Leur nom trahit leur rôle. Ils sont utilisés pour contrôler de l'électroménager, des chaines de fabrication dans une usine, des applications robotiques, les alarmes domestiques, les voitures. De manière générale, on les trouve dans tous les systèmes dits embarqués et/ou temps réel. Ils ont besoin de s'interconnecter à un grand nombre de composants et intègrent pour cela un grand nombre d'entrée-sorties. Les microcontrôleurs sont généralement peu puissants, et doivent consommer peu d'énergie/électricité.
Fait amusant, on en trouve dans certains périphériques informatiques. Par exemple, les anciens disques durs intégraient un microcontrôleur qui contrôlait plusieurs moteurs/ Les moteurs pour faire tourner les plateaux magnétiques et les moteurs pour déplacer les têtes de lecture/écriture étaient commandés par ce microcontrôleur. Comme autre exemple, les claviers d'ordinateurs intègrent un microcontrôleur connecté aux touches, qui détecte quand les touches sont appuyées et qui communique avec l'ordinateur. Nous détaillerons ces deux exemples dans les chapitres dédiés aux périphériques et aux disques durs, tout deviendra plus clair à ce moment là. La majorité des périphériques ou des composants internes à un ordinateur contiennent des microcontrôleurs.
[[File:Microcontroller 8051.gif|centre|vignette|upright=2.5|Microcontrôleur Intel 8051.]]
Un microcontrôleur tend à intégrer des entrées-sorties assez spécifiques, qu'on ne retrouve pas dans les SoC destinés au grand public. Un microcontrôleur est typiquement relié à un paquet de senseurs et son rôle est de commander des moteurs ou d'autres composants. Et les entrées-sorties intégrées sont adaptées à cette tâche. Par exemple, ils tendent à intégrer de nombreux convertisseurs numériques-analogiques pour gérer des senseurs. Ils intègrent aussi des circuits de génération de signaux PWM spécialisés pour commander des moteurs, le processeur peut gérer des calculs trigonométriques (utiles pour commander la rotation d'un moteur), etc.
[[File:C8051F340-9 A B C D.png|centre|vignette|upright=2|Exemple d'entrées-sorties intégrées à un microcontroleur.]]
En plus des entrées-sorties intégrées, les microcontrôleurs ont souvent des '''ports d'entrées-sorties''' banalisés, à savoir qu'on peut brancher n'importe quoi dessus. Il était possible de brancher un capteur de température, un moteur à commander, un port série, un port parallèle, un écran, un clavier, une souris, peu importe. Les ports font souvent un octet et ils sont généralement reliées directement ou indirectement au processeur. Le logiciel qui s'exécute sur le processeur décide quoi envoyer sur des broches et comment interprète ce qui est reçu dessus.
Les ports banalisés de ce type sont parfois appelés des '''GPIO''', abréviation de ''General Purpose Input/Output'', mais nous utiliserons le terme de ''port I/O''. Un port regroupe plusieurs broches qui peuvent être utilisés à volonté. C'est le logiciel qui s'exécute sur le processeur qui décide de la fonction de broches. Un port IO peut fonctionner soit en tant qu'entrée, soit en tant que sortie. Il est possible de changer de sens en cours de fonctionnement, pour passer d'une entrée à une sortie ou inversement.
[[File:Afficheurs7seg.png|centre|vignette|upright=2|Exemple d'utilisation d'un port I/O. le port est connecté à un afficheur LCD dit 7-segments. Les 8 entrées de cet afficheur sont connectées à un port I/O d'un octet.]]
===Les SoC haute performance===
Les SoC les plus performants sont actuellement utilisés dans les téléphones mobiles, tablettes, ''Netbook'', ''smartphones'', ou tout appareil informatique grand public qui ne doit pas prendre beaucoup de place. La petite taille de ces appareils fait qu'ils gagnent à regrouper toute leur électronique dans un circuit imprimé unique. Mais les contraintes font qu'ils doivent être assez puissants. Ils incorporent des processeurs assez puissants, surtout ceux des ''smartphones''. C'est absolument nécessaire pour faire tourner le système d'exploitation du téléphone et les applications installées dessus.
Niveau entrées-sorties, ils incorporent souvent des interfaces WIFI et cellulaires (4G/5G), des ports USB, des ports audio, et même des cartes graphiques pour les plus puissants d'entre eux. Les SoC incorporent des cartes graphiques pour gérer tout ce qui a trait à l'écran LCD/OLED, mais aussi pour gérer la caméra, voire le visionnage de vidéo (avec des décodeurs/encodeurs matériel). Par exemple, les SoC Tegra de NVIDIA incorporent une carte graphique, avec des interfaces HDMI et VGA, avec des décodeurs vidéo matériel H.264 & VC-1 gérant le 720p. Pour résumer, les périphériques sont adaptés à leur utilisation et sont donc foncièrement différents de ceux des microcontrôleurs.
[[File:SOMblk.png|centre|vignette|upright=2|Exemple de SoC.]
Un point important est que les processeurs d'un SoC haute performance sont... performants. Ils sont le plus souvent des processeurs de marque ARM, qui sont différents de ceux utilisés dans les PC fixe/portables grand public qui sont eux de type x86. Nous verrons dans quelques chapitres en quoi consistent ces différences, quand nous parlerons des jeux d'instruction du processeur. Autrefois réservé au monde des PCs, les processeurs multicœurs deviennent de plus en plus fréquents pour les SoC de haute performance. Il n'est pas rare qu'un SoC incorpore plusieurs cœurs. Il arrive même qu'ils soient foncièrement différents, avec plusieurs cœurs d'architecture différente.
La frontière entre SoC haute performance et microcontrôleur est de plus en plus floue. De nombreux appareils du quotidien intègrent des SoC haute performance, d'autres des microcontrôleurs. Par exemple, les lecteurs CD/DVD/BR et certains trackers GPS intègrent un SoC ou des processeurs dont la performance est assez pêchue. À l'opposé, les systèmes domotiques intègrent souvent des microcontrôleurs simples. Malgré tout, les deux cas d'utilisation font que le SoC/microcontrôleur est connecté à un grand nombre d'entrées-sorties très divers, comme des capteurs, des écrans, des LEDs, etc.
[[File:GPS tracker Hardware Architecture.png|centre|vignette|upright=2|Hardware d'un tracker GPS.]]
==Étude de quelques exemples d'architectures==
Après avoir vu la théorie, nous allons voir des exemples réels d'ordinateurs. Dans ce qui suit, nous allons voir des ordinateurs assez anciens, pour une raison simple : ils collent assez bien à l''''architecture de base''' vue plus haut, avec un CPU, une RAM et une ROM, quelques entrées-sorties. Tous les ordinateurs modernes, mais aussi dans les smartphones, les consoles de jeu et autres, utilisent une architecture grandement modifiée et améliorée, avec un grand nombre de périphériques, disques durs/SSD, un grand nombre de mémoires différentes, etc.
Il pourrait sembler pertinent d’étudier des microcontrôleurs ou des ''System On Chip'', en premier lieu. Mais nous éviterons soigneusement de tels systèmes pour le moment. La raison est qu'ils ont un grand nombre d'entrées-sorties, qui sont peu familières. Attendez-vous à avoir près d'une vingtaine ou centaine d'entrée-sorties différentes pour de tels systèmes. Le tout est très complexe, bien trop pour un premier exemple. À la place, nous allons voir précisément des exemples plus simples : les premiers PC, et des consoles de jeu 8 et 16 bits.
Bien que ce soit des systèmes très simples, ils sont cependant plus complexes que l'architecture de base. Et leur avantages/désavantages sont un peu inverse l'un de l'autre. Si on devait résumer les différences, on aurait ceci :
* Les PC ont plus d'entrées-sorties que les consoles, bien que nettement moins que pour les microcontrôleurs/SoC.
* Les PC utilisent des disques durs, les consoles font avec soit des cartouches de jeu, soit des CD/DVD.
* Les PC utilisent des cartes électroniques séparées pour le son et l'écran, les consoles utilisent des circuits soudés sur la carte mère, qui sont souvent des co-processeurs.
* Les PC ont une mémoire ROM soudées sur la carte mère, les consoles 8 bits font sans.
Les PC et micro-ordinateurs ont plus d'entrées-sorties que les consoles. Même si on mets de côté les périphériques, ils ont aussi beaucoup de composants soudées sur la carte mère. En comparaison, les consoles de jeu 8/16 bits se débrouillent avec : une cartouche de jeu et une manette en entrée, une sortie vidéo et une sortie son.
Un autre point important est l'absence de disque dur ou de lecteur CD. La présence d'un disque dur ou d'un lecteur CD/DVD complexifie tout de suite l'architecture des PC. Il faut leur réserver un bus dédié ou les connecter à un bus système, cela demande d'ajouter des circuits sur la carte mère, etc. Et surtout, il faut expliquer comment l'ordinateur exécute des programmes, ce qui demande de parler de l'interaction avec le disque dur et la ROM du BIOS. Rien de tout cela sur les consoles de jeu 8 et 16 bits. Elles utilisent à la place des cartouches de jeu, qui intègrent une mémoire ROM, pour mémoriser les données du jeu, voire son code. Pas besoin de parler des mémoires de stockage, on est beaucoup plus proche de l'architecture de base avec une ROM unique.
Par contre, n'allez pas croire que tout est rose avec les consoles 8/16 bits. Il y a quelques différences qui font qu'elles sont plus complexes qu'un PC sur certains points.
Les PC utilisent des cartes électroniques à brancher sur la carte mère pour alimenter l'écran et les hauts-parleurs/casques, alors que les consoles de jeu utilisent des souvent co-processeurs dédiés pour le son et les graphismes. La différence parait mineure, mais elle avantage les consoles. Nous avons déjà expliqué ce que sont les co-processeurs plus haut, aussi les co-processeurs des consoles nous paraitrons familiers. On n'a pas à s’embêter à expliquer ce que sont les cartes d'extension, les bus associés et tout ce qui va avec, cela peut être retardé pour la section sur l'architecture des PC.
La gestion de la cartouche de jeu est aussi un peu subtile à comprendre, bien que ce soit bien plus simple à comprendre qu'un système avec un disque dur. Les cartouches de jeu intègrent une mémoire ROM, pour mémoriser les données du jeu, voire son code. Et le processeur doit exécuter le code depuis cette mémoire ROM. La conséquence est que les consoles 8/16 bits utilisent une architecture Harvard, avec un bus relié à la cartouche pour lire les instructions. Mais si ce n'était que ça... Les cartouches mémorisent aussi les données pour les graphismes, ce qui fait que le co-processeur vidéo doit lui aussi lire la cartouche pour récupérer ces données...
===L'architecture de la TurboGraphX-16===
La console PC Engine, aussi appelée TurboGraphX, est une ancienne console 8 bits. Elle contient un processeur 65C02, 8 kibioctets de RAM, un port manettes, une carte son et une carte vidéo. La '''carte son''' est le composant qui s'occupe de commander les haut-parleurs et de gérer tout ce qui a rapport au son. La '''carte graphique''' est le composant qui est en charge de calculer les graphismes, tout ce qui s'affiche à l'écran. Sur cette console, les cartes son et graphique ne sont PAS des co-processeurs, ce sont des circuits électroniques dits fixes. C'est totalement différent de ce qu'on a sur les consoles modernes, aussi le préciser est important.
Bien que la carte graphique ne soit pas un processeur, elle a 64 kibioctets de RAM rien que pour elle. La RAM en question est séparée de la RAM normale, c'est un circuit intégré séparé. Et c'est un cas très fréquent, qui reviendra par la suite. La majeure partie des cartes graphiques dispose de leur propre '''mémoire vidéo''', totalement réservée à la carte graphique. La RAM vidéo est connectée à la carte graphique via un bus séparé. Le processeur est souvent connecté à ce bus, afin de pouvoir écrire des données dedans, mais ce n'est pas le cas ici.
[[File:Architecture de la PC Engine, aussi appelée TurboGrafx-16.png|centre|vignette|upright=2.5|Architecture de la PC Engine, aussi appelée TurboGrafx-16]]
L'architecture de la console était particulièrement simple. Le processeur était le centre de l'architecture, tout était connecté dessus. Il y a un bus pour la cartouche de jeu, un autre pour la RAM, un autre pour les manettes, un autre pour carte son, et un dernier pour la carte graphique. Le fait d'avoir un bus par composant est assez rare et ce n'est le cas ici que parce des conditions particulières sont remplies. Déjà, il y a peu d'entrée-sorties. Ensuite, les bus font tous 8 bits, vu que le processeur est un CPU 8 bits. Avec 5 connexions de 8 bits, le tout utilise 40 broches, ce qui est beaucoup, mais totalement gérable. Par contre, les choses changerons pour les autres consoles.
Au final, l'organisation des bus peut s'expliquer avec ce qu'on a vu dans la section sur les bus de communication. La console utilise une architecture Harvard, car la ROM et la RAM utilisent des bus différents. De plus, il y a des bus dédiés aux entrées-sorties, séparés des bus mémoire. Enfin, la carte graphique a droit à ses propres bus pour lire dans la cartouche et dans sa RAM vidéo dédiée.
===L'architecture de la console de jeu NES===
Maintenant, nous allons voir la console de Jeu Famicom, aussi appelée la NES en occident. Elle a une architecture centrée sur un processeur Ricoh 2A03, similaire au processeur 6502, un ancien processeur autrefois très utilisé et très populaire. Le processeur est associé à 2 KB de mémoire RAM.
Sur certaines cartouches, on trouve une RAM utilisée pour les sauvegardes, qui est adressée par le processeur directement. Première variation par rapport à l'architecture de la console précédente : l'ajout de la RAM pour les sauvegardes dans les cartouches.
Niveau carte graphique, une différence importante est que la carte graphique est connectée à la cartouche de jeu via un autre bus, afin de pouvoir lire les sprites et textures du jeu dans la cartouche.
[[File:Architecture de la NES.png|centre|vignette|upright=2.5|Architecture de la NES]]
La différence avec l'architecture précédente est que des bus ont été fusionnés. Comme dit plus haut, le système utilise une architecture Harvard, vu que la ROM est dans la cartouche, alors que la RAM est soudée à la carte mère. Par contre, la Famicon utilise un bus dédié aux entrées-sorties. Il est utilisé pour la carte son et la carte graphique, seules les manettes sont sur un bus à part. Ce qui fait qu'on devrait plutôt parler de bus de sorties, mais passons... L'essentiel est qu'on n'est plus tout à fait dans le cas de la console précédente, avec un bus par composant.
===L'architecture de la SNES===
L'architecture de la SNES est illustrée ci-dessous. Les changements pour le processeur et la RAM sont mineurs.La RAM a augmenté en taille et passe à 128 KB. Pareil pour la RAM de la carte vidéo, qui passe à 64 KB. Par contre, on remarque un changement complet au niveau des bus, de la carte graphique et de la carte son.
[[File:Architecture de la SNES.png|centre|vignette|upright=2|Architecture de la SNES]]
La console utilise un '''bus système unique''', sur lequel tout est connecté : ROM, RAM, entrées-sorties, etc. La seule exception est pour les manettes, qui sont encore connectées directement sur le processeur, via un bus séparé. La transition vers un bus système s'explique par le fait que la console est maintenant de 16 bits, ce qui fait que les bus doivent être plus larges. Le processeur adresse des mémoires RAM et ROM plus grandes, ce qui double la taille de leurs bus. De plus, les entrées-sorties aussi ont besoin d'un bus plus large. Le processeur n'ayant pas un nombre illimité de broches, la seule solution est de fusionner les bus en un seul bus système.
Un autre changement est que la carte graphique est maintenant composée de deux circuits séparés. Encore une fois, il ne s'agit pas de coprocesseurs, mais de circuits non-programmables. Par contre, la carte son est remplacée par deux coprocesseurs audio ! De plus, les deux processeurs sont connectés à une mémoire RAM dédiée de 64 KB, comme pour la carte graphique. L'un est un processeur 8 bits (le DSP), l'autre est un processeur 16 bits.
Un point très intéressant : certains jeux intégraient des coprocesseurs dans leurs cartouches de jeu ! Par exemple, les cartouches de Starfox et de Super Mario 2 contenait un coprocesseur Super FX, qui gérait des calculs de rendu 2D/3D. Le Cx4 faisait plus ou moins la même chose, il était spécialisé dans les calculs trigonométriques, et diverses opérations de rendu 2D/3D. En tout, il y a environ 16 coprocesseurs d'utiliser et on en trouve facilement la liste sur le net. La console était conçue pour, des pins sur les ports cartouches étaient prévues pour des fonctionnalités de cartouche annexes, dont ces coprocesseurs. Ces pins connectaient le coprocesseur au bus des entrées-sorties. Les coprocesseurs des cartouches de NES avaient souvent de la mémoire rien que pour eux, qui était intégrée dans la cartouche.
===L'architecture de la Megadrive et de la néo-géo===
Passons maintenant à la console de jeu Megadrive, une console 16 bits. Elle a une architecture similaire à celle de la néo-géo, une autre console bien plus puissante, sorti à peu près en même temps. Elles intègrent deux processeurs : un Motorola 68000 qui sert de processeur principal, un Z80 qui sert de processeur dédié à l'audio. Le Z80 et le Motorola 68000 étaient deux processeurs très populaires à l'époque. Le Z80 est une sorte de version améliorée de l'Intel 8088 utilisé sur les anciens PC et de nombreuses consoles utilisaient des Z80 comme processeur principal. Il était familier pour les programmeurs de l'époque, pour son cout réduit, sa bonne disponibilité, et bien d'autres avantages liés à sa production de masse.
Le Z80 est utilisé comme co-processeur audio. Il commande un synthétiseur sonore, et est relié à sa propre mémoire, distincte de la mémoire principale. Le MC68000 est le processeur principal et a une relation maitre-esclave avec le Z80 : le MC68000 envoie des commandes au Z80, mais la communication ne va pas dans l'autre sens.
Le Motorola 68000 était un processeur 16 bits, alors que le Z80 est un processeur 8 bits. Et cette différence fait que l'on ne peut pas connecter directement les deux sur le même bus, ou du moins pas facilement. La solution retenue est d'utiliser deux bus séparés : un bus de 16 bits connecté au 68000, un bus de 8 bits connecté au Z80. Le premier bus est un bus système sur lequel est connecté le 68000, 64 kibioctets de RAM, la cartouche de jeu, et la carte graphique. Le second bus est un bus de 8 bits, plus court, relié au Z80, à un synthétiseur sonore, et 8 kibioctets de RAM
Les deux bus sont connectés à un '''''chipset''''', un circuit répartiteur, qui fait le pont entre les deux bus. Les manettes sont connectées sur le ''chipset''. Il contient un registre de 8 bits, dans lequel le MC68000 peut écrire dedans à sa guise, le registre étant adressable par le processeur. Lorsque le MC68000 écrit une valeur dedans, cela déclenche l’exécution automatique d'un programme pré-déterminé sur le Z80.
: Pour ceux qui savent ce qu'est une interruption, les valeurs écrites dans ce registre sont des numéros d'interruption, qui indiquent quelle routine d'interruption exécuter.
[[File:Architecture de la Megadrive et de la Néogeo.png|centre|vignette|upright=2.5|Architecture de la Megadrive et de la Néogeo]]
Cet exemple nous montre que les bus systèmes sont certes très simples, mais aussi inflexibles. Ils fonctionnent bien quand les composants branchés dessus sont tous des composants 8 bits, ou sont tous de 16 bits, ou tous 32 bits. Mais dès qu'on mélange composants 8, 16, 32 ou 64 bits, les choses deviennent plus compliquées. Il est alors préférable d'utiliser des bus séparés, avec des répartiteurs pour faire le pont entre les différents bus. Et nous verrons que le problème s'est posé lui aussi sur les PC.
===L'architecture des anciennes consoles Playstation : beaucoup de co-processeurs===
Les consoles que nous venons d'aborder étaient des consoles 8 ou 16 bits. A partir des consoles 32 bits, leur architecture s'est rapprochée de celle des PC, avec un usage plus complexes de répartiteurs. La XBOX était très semblable à un PC : le processeur était un Pentium 3 modifié, la carte graphique était une Geforce 3 modifiée, les 64 mébioctets de RAM était la même mémoire DDR que celle des PC, le répartiteur secondaire était un ''chipset'' nForce de NVIDIA, etc. Mais les Playstation 1, 2 et 3 se distinguent de leur contemporains. Elles disposent de très nombreux co-processeurs, qui sont en plus très variés.
La Playstation 1 a été une des premières console à utiliser les CD-ROM comme support de stockage, en remplacement des cartouches. La conséquence est que la console contient une mémoire ROM, soudée à la carte mère, de 512 kibioctets. Elle contient aussi 2 mébioctets de RAM, une carte graphique avec 1 mébioctet de mémoire vidéo, un processeur, et de quoi gérer les périphériques. Il y a un co-processeur audio spécialisé, avec 512 kibioctets de RAM, ce qui nous est familier. Par contre, les autres co-processeurs ne le sont pas.
Déjà, le lecteur de CD-ROM est associé à des circuits sur la carte mère, il y a tout un sous-système dédié au lecteur de CD. Il y a un contrôleur qui sert d'interface avec le lecteur proprement dit, mais aussi deux co-processeurs audio et 32 kibioctets de RAM. Les co-processeurs audio servent à lire des CD sans trop utiliser le second co-processeur audio, ils lui servent de complément.
Ensuite, le processeur incorpore plusieurs cœurs, avec un cœur principal et plusieurs co-processeurs. Le premier est un co-processeur système, qui est utilisé pour gérer la mémoire cache intégrée au processeur, pour des fonctionnalités appelées interruptions et exceptions, ainsi que pour configurer le processeur. Le second est un co-processeur arithmétique spécialisé dans les calculs en virgule flottante, très importants pour le rendu 3D. Enfin, il y a un décodeur vidéo, qui n'est pas un co-processeur, mais un circuit non-programmable, spécialisé dans le décodage vidéo. De nos jours, ce circuit aurait été intégré dans la carte graphique, mais il était intégré dans le processeur sur la Playstation 2.
Pour le reste, le processeur est la figure centrale de la console. Il est connecté à 4 bus : un pour la RAM, un pour la carte graphique, un pour les manettes, un autre pour le reste. Le dernier bus est connecté au système audio et au système pour le lecteur CD. Ce serait un bus d'entrée-sortie, s'il n'était pas connecté à la mémoire ROM. Vous avez bien lu : la mémoire ROM est reliée au bus d'entrée-sortie.
[[File:Architecture de la Playstation.png|centre|vignette|upright=2.5|Architecture de la Playstation]]
La Playstation 2 est composé d'un processeur, couplé à 32 Mébioctets de RAM, et d'un paquet de co-processeurs. Plus de co-processeurs que la PS1. Le processeur principal n'est pas la même que celui de la PS1, mais il a une architecture similaire. Il intègre un décodeur vidéo sur le même circuit intégré, ainsi que deux co-processeur. Les co-processeurs ne sont cependant pas les mêmes.
Le co-processeur système disparait et est remplacé par un second co-processeur arithmétique. Les deux co-processeurs arithmétiques sont spécialisés dans les nombres flottants, avec quelques différences entre les deux. Par exemple, le second co-processeur gérait des calculs trigonométriques, des exponentielles, des logarithmes, et d'autres fonctions complexes du genre ; mais pas le premier co-processeur. Ils sont reliés à 4 kibioctets de RAM pour le premier, 16 kibioctets de RAM pour le second ; qui sont intégrées dans le processeur et non-représentés dans le diagramme ci-dessous.
La PS2 intègre aussi un co-processeur d'entrées-sorties. Pour information, il s'agit du processeur principal de la Playstation 1, qui est ici utilisé différemment, suivant que l'on place un jeu PS1 ou PS1 dans la console. Si on met un jeu PS1, il est utilisé pour émuler la Playstation 1, afin de faire tourner le jeu PS1 sur la PS2. Si on met un jeu PS2, il est utilisé comme co-processeur d'entrée-sortie et fait l'interface entre CPU et entrées-sorties. Il est relié à 2 mébioctets de RAM, soit exactement la même quantité de mémoire que la Playstation 1.
Tous les périphériques sont connectés au co-processeur d'entrées-sortie. Pour cela, le co-processeur d'entrées-sortie est relié à deux bus dédiés aux périphériques. Le premier bus est relié aux manettes, aux ports USB et aux ports pour cartes mémoires. Le second bus est relié à la carte son, la carte réseau, le lecteur DVD, et un port PCMIA. Notons que la carte son intègre un co-processeur audio, qui n'est pas représenté dans le diagramme ci-dessous.
[[File:Playstation 2 architecture.png|centre|vignette|upright=2.5|Playstation 2 architecture]]
==L'architecture des PC et son évolution==
Après avoir vu les consoles, nous allons maintenant voir les anciens PC, des années 80 ou 90. Le tout premier PC était techniquement l''''IBM PC'''. Par la suite, de nombreux ordinateurs ont tenté de reproduire l'IBM PC originel, avec parfois quelques modifications mineures. De tels ordinateurs ''IBM PC compatibles'', ont été très nombreux, pour des raisons diverses. Le fait d'utiliser des composants banalisés, facilement disponibles, ainsi qu'une bonne documentation de l'IBM PC originel, a grandement aidé. Les IBM PC compatibles ont progressivement évolué pour donner les PC actuels. L'IBM PC compatible a donné naissance à de nombreux standards divers.
===L'IBM PC originel et l'IBM PC XT===
[[File:IBM PC XT 02.jpg|vignette|IBM PC XT.]]
Nous allons commencer par voir l'IBM PC originel, et son successeur : l'IBM Personal Computer XT. Nous les appelerons tous deux l'IBM PC. L'IBM PC utilisait un processeur Intel 8088, qui était un processeur 8 bits. Ils utilisaient un bus système unique, appelé le '''bus XT'''. Le bus système allait à 4.77 MHz, soit la même fréquence que le processeur. C'était un bus de 8 bits, ce qui collait parfaitement avec les processeurs 8 bits commercialisés par Intel à l'époque.
L'IBM PC comprenait une mémoire ROM avec de quoi faire fonctionner le PC. La ROM en question contenait un programme minimal, appelé le '''BIOS''', sans lequel le PC ne fonctionnait pas du tout. Il servait de base pour le système d'exploitation et MS-DOS ne fonctionnait pas sans elle. De nos jours, son rôle est plus limité : sans elle, le PC ne démarre pas. Mais nous détaillerons cela dans le prochain chapitre.
En plus de la ROM pour le BIOS, l'IBM PC avait quatre mémoires ROM dédiée au langage de programmation BASIC. Lorsque le PC démarrait, il ne bootait pas un système d'exploitation, mais lançait l'interpréteur pour le langage BASIC. De nos jours, ce serait l'équivalent d'un ordinateur qui boote directement sur du Python, à savoir la console Python que vous avez peut-être déjà utilisé si vous avez testé Python. Ceux qui ont déjà touché à un ordinateur de l'époque savent ce que ca veut dire, mais c'est malheureusement très difficile à expliquer sans ce genre d'expérience. Toujours est-il que c'était une sorte de norme à l'époque
: les ordinateurs bootaient généralement sur un interpréteur BASIC.
[[File:XT Bus pins.svg|vignette|Connecteur du bus XT.]]
Les PC étaient conçus pour qu'on branche des '''cartes d'extension''', à savoir des cartes électroniques qu'on branchait sur la carte mère, à l'intérieur du PC. Les cartes d'extension de l'époque étaient surtout des cartes son ou des cartes graphiques, mais aussi des cartes pour brancher des péripéhriques. par exemple, on pouvait ajouter deux cartes graphiques dans l'IBM PC originel : l'''IBM Monochrome Display Adapter'' et/ou la ''IBM Color Graphics Adapter''. De nos jours, les cartes son sont intégrées à la carte mère, mais les cartes graphiques sont restées des cartes d'extension.
Les cartes d'extension étaient branchées sur un '''connecteur XT''', qui était directement relié au bus XT. Le connecteur XT est illustré ci-contre, mais ne vous en souciez pas trop pour le moment. La carte mère de l'IBM PC avait 5 connecteurs de ce type, qu'on pouvait peupler avec autant de cartes d'extension. L'IBM Personal Computer XT est passé à 8 connecteurs XT, soit trois de plus.
Pour ce qui est des périphériques, l'IBM PC avait plusieurs connecteurs : un port série, un port parallèle, un port pour le clavier, et un port pour un lecteur cassette. Le clavier et le lecteur cassette étaient connectés directement sur la carte mère, qui contenait quelques circuits pour gérer le clavier. Par contre, les deux premiers n'étaient pas connectés à la carte mère. Le port série était en réalité une carte d'extension, branchée sur un connecteur XT. Et il en est de même pour le port parallèle.
Pour ce qui est des supports de stockage, l'IBM PC originel n'avait pas de disque dur et n'avait que des lecteurs de disquette. De plus, le lecteur de disquette n'était pas connecté directement sur la carte mère, mais était connecté à une carte d'extension, branchée sur un connecteur XT. La carte d'extension avait deux connecteurs, un par lecteur de disquette, ce qui fait que les deux lecteurs de disquettes pouvaient être branchés sur une seule carte d'extension. L'IBM Personal Computer XT a ajouté un disque dur, sauf sur quelques sous-modèles spécifiques.
Le PC avait aussi un petit haut-parleur capable de faire des bips.
Pour résumer, l'IBM PC originel se reposait beaucoup sur les cartes d'extension, sa carte mère contenait peu de choses. Enfin, peu de choses... Il y avait un processeur Intel 8088, éventuellement un coprocesseur flottant 8087, de la RAM, de la ROM, et des circuits intégrés assez divers. En voici la liste, certains vous seront familiers, d'autres vous seront inconnus à ce stade du cours :
* les circuits de décodage d'adresse ;
* un contrôleur DMA intel 8273 ;
* un contrôleur d'interruption 8259 ;
* un contrôleur de bus Intel 8288 pour gérer le bus XT ;
* un générateur d'horloge Intel 8284 et un diviseur de fréquence ;
* un ''timer'' Intel 8253, le même que celui étudié dans le chapitre sur les ''timers'' ;
* un contrôleur parallèle 8255.
Les multiplexeurs, registres et portes logiques, sont des circuits de décodage d'adresse, qui permettent de combiner plusieurs RAM en une seule, idem avec la mémoire ROM. Si vous verrez qu'il y a 5 mémoires ROM : une ROM pour le BIOS, et quatre autres ROM pour le BASIC. Les 4 ROM du BASIC sont combinées en une seule mémoire ROM. Pour les RAM, il y en a 8 à 32, qui sont combinées en une seule RAM de 16 à 64 kibioctets.
[[File:IBM 5150 Motherboard.svg|centre|vignette|upright=3|Carte mère de l'IBM 5150, un modèle de l'IBM PC.]]
===L'architecture d'un IBM PC compatible 16 bits===
Les PC suivants sont passés à des processeurs 16 bits, mais c'était toujours des processeurs x86 d'Intel, à savoir des Intel 286 et 386. La RAM a grossi, quelques entrées-sorties ont été ajoutées, mais l'architecture globale est plus moins resté le même. C'est surtout au niveau du bus et des périphériques que les changements majeurs ont eu lieu.
[[File:ISA Bus pins.svg|vignette|Connecteur ISA.]]
Les PC 16 bits utilisaient un bus système unique, sur lequel tout était connecté : le processeur, la RAM, la ROM, les cartes d'extension et tout le reste. Le bus en question s'appelait le '''bus AT''', mais il a rapidement été renommé en '''bus ISA''' (''Industry Standard Architecture''). Le bus ISA était prévu pour avoir une compatibilité avec le bus 8 bits de l'IBM PC originel. D'ailleurs, cela se ressent jusque dans le connecteur utilisé : le connecteur ISA est un connecteur XT qu'on a fusionné avec un second connecteur pour l'étendre de 8 à 16 bits.
Les PC 16 bits avaient toujours un port série, un port parallèle, un clavier, un lecteur de disquette et des cartes d'extension. Des disques durs pouvaient être ajoutés, aussi. Mais pour ces périphériques, un changement majeur a eu lieu comparé à l'IBM PC originel. L'IBM PC originel utilisait des cartes d'extension pour tout, sauf le clavier. Mais maintenant, les périphériques ne sont plus connectés à une carte d'extension. À la place, les circuits de la carte d'extension sont déplacés sur la carte mère. Mais n'allez pas croire qu'ils étaient connectés directement au bus ISA, il y avait des intermédiaires.
Le clavier était relié à un '''contrôleur de clavier''', qui faisait l'interface entre le connecteur du clavier et le bus ISA. Le contrôleur de clavier était appelé le ''Keyboard Controler'', abrévié en KB. Il recevait ce qui est tapé au clavier et traduisait cela en quelque chose de compréhensible par l'ordinateur.
Les autres périphériques étaient connectés à un circuit intégré dédié : l''''Intel 82091AA'''. Il était connecté au lecteur de disquette, au port série et au port parallèle. Il servait d'intermédiaire entre ces périphériques et le bus ISA. Vous pouvez le voir comme une sorte de répartiteur, mais qui ne serait pas connecté sur le processeur et la RAM
Enfin, il ne faut pas oublier les autres composants présents sur l'IBM PC originel. Le BIOS est toujours là, de même que les ''timers'' Intel 8253 PIT, le contrôleur d'interruption Intel 8259 et le contrôleur DMA Intel 8237. Les PC 16 bits ont aussi intégré une ''Real Time Clock'' (RTC). Pour rappel, c'est un composant qui permet au PC de mémoriser la date et l'heure courante, à la seconde près. Le tout est résumé dans le schéma ci-dessous.
[[File:Architecture de l'IBM PC compatible.png|centre|vignette|upright=2.5|Architecture de l'IBM PC compatible]]
Un point important est que le bus ISA allait à la même fréquence que le processeur, vu que c'était un bus système. Les processeurs de l'époque étaient des CPU 286 d'Intel, ou le 386 d'Intel. Les Intel 286 allaient de 4 MHz minimum, à 25 MHz maximum. Le 386, quant à lui, allait de 12 à 40 MHz. Le bus ISA devait aller à cette fréquence, il était synchrone avec le processeur.
Par la suite, les processeurs ont gagné en performance, ce qui fait que le bus ISA est devenu trop lent pour le processeur. Une idée a alors été de conserver le bus ISA, pour des raisons de compatibilité, mais de le reléguer comme bus secondaire. L'ordinateur contient alors deux bus : un bus système, et un bus ISA secondaire. Le lien entre les deux est réalisé par un '''pont ISA''', ''ISA Bridge'' en anglais. Le bus ISA fonctionnait alors sa fréquence usuelle, alors que le bus système était beaucoup plus rapide. Le bus système fonctionnait à une fréquence bien plus élevée, ce qui fait que le processeur pouvait communiquer à pleine vitesse, notamment avec la RAM. Le processeur n'était alors plus forcé à aller à la même fréquence que le bus ISA
[[File:Architecture de l'IBM PC compatible avec bridge ISA.png|centre|vignette|upright=2.5|Architecture de l'IBM PC compatible avec bridge ISA]]
Les PC de l'époque intégraient donc plusieurs bus séparés. Vous avez bien lu : plusieurs bus ! Ici, il s'agit de ce que j'appelle des '''bus en cascade''', à savoir qu'un bus est connecté à un autre bus par un intermédiaire. Au passage, si j'aborde ces exemples, car c'est pareil sur les ordinateurs modernes. Le pont ISA a été remplacé par des circuits différents, mais qui ont un rôle assez similaire. Le ''chipset'' de votre carte mère n'est qu'un lointain descendant du pont ISA, qui s'interface avec des bus différents.
===L'arrivée des standards AT et IDE pour les disques durs===
Initialement, les disques durs étaient placés dans l'ordinateur et étaient connectés sur le bus ISA, via une carte d'extension ISA. En clair, il fallait connecter le disque dur sur une carte d'extension, et non sur la carte mère. Les cartes d'extension en question permettaient de connecter un ou plusieurs disques durs, parfois des lecteurs de disquette supplémentaires. Les cartes ISA de ce type faisaient juste l'interface entre le bus ISA et les disques durs, rien de plus. L'interface en question a été standardisée, ce qui a donné le standard ''AT Bus Attachment'', qui a été abrévié en ATA.
Et ce n'était pas que pour les disques durs, de nombreux composants étaient dans ce cas. Une carte d'extension servait d'intermédiaire entre eux et la carte mère. Les cartes d'extension en question étaient appelées des ''Host bus adapter''.
[[File:Acculogic sIDE-4 Controller ISA.jpg|centre|vignette|upright=2|Carte ISA d'interface disque dur, de marque Acculogic.]]
Mais les choses ont rapidement évoluées, que ce soit du côté des cartes mères que du côté des disques durs. Le '''standard IDE''' a permis de brancher un disque dur directement sur la carte mère, sans passer par une carte d'interface ISA. Pour cela, la carte mère réservait un connecteur ISA pour le disque dur, renommé '''connecteur ATA'''. Pour que cela soit possible, il a fallu rajouter des circuits sur la carte mère. Tout ce qui était sur les cartes d'interface ISA s'est retrouvé sur la carte mère.
[[File:Ajout des ports IDE sur la carte mère.png|centre|vignette|upright=2|Ajout des ports IDE sur la carte mère]]
En réalité, les connecteurs ATA étaient des connecteurs ISA simplifiés. Un connecteur ISA avait en tout 98 broches, alors qu'un connecteur ATA n'en contient que 40. Les broches qui étaient inutiles pour les disques durs ont simplement été enlevées. Et qui dit connecteur spécialisé, dit câble spécialisé. Les disques durs étaient branchés sur le connecteur AT grâce à un câble ATA, sur lequel on pouvait connecter deux disques durs.
[[File:ATA Plug.svg|centre|vignette|upright=2|Connecteur ATA.]]
[[File:ATA cables.jpg|centre|vignette|upright=2|Cable ATA.]]
Il était donc possible de connecter deux disques durs sur un seul connecteur ATA. Et cette possibilité est devenue d'autant plus utile par la suite. A partir de la version 2, ATA supportait aussi les lecteurs de disquettes, les lecteurs de CD/DVD, et bien d'autres supports de stockage. Il était alors possible de connecter un lecteur CD et un disque dur sur un seul connecteur. Les cartes mères avaient généralement deux connecteurs ATA, et n'avaient pas besoin de plus. C'était suffisant pour connecter un disque dur, un lecteur de disquette et un lecteur CD, configuration courante entre les années 90 et 2000.
Un câble est donc connecté à deux supports de stockage. Pour distinguer les deux, le standard ATA ajoute une possibilité de configuration. Sur un câble, il doit y avoir un support de stockage "maitre" et un support "esclave". C'était la terminologie de l'époque, que je reproduis ici, même si elle est fortement trompeuse. N'allez pas croire que cela implique que l'un ait des avantages sur l'autre. Le support 'maitre" n'a pas droit à plus de bande passante, il n'a pas la priorité sur l'autre, rien du tout. Il s'agit juste d'un nombre qui permet de savoir avec qui le processeur communique, qui vaut 0 pour le premier support, 1 pour l'autre. Une sorte d'adresse de 1 bit, si l'on veut.
[[File:ATA-Konfiguration02.png|centre|vignette|upright=2|Configuration ATA.]]
Pour configurer un support de stockage en mode "maitre" ou "esclave", le support de stockage avait quelques pins dédiés. Il suffisait de placer un détrompeur en plastique sur les pins adéquats. Les pins se trouvaient à l'arrière du disque dur ou du lecteur de CD/DVD/Disquette/autre.
[[File:HDD Master and Slave Description.jpg|centre|vignette|upright=2|Configuration ''Master/Slave''.]]
===L'architecture d'un PC avec un processeur Intel 486===
Maintenant, passons aux ordinateurs 32 bits, avec l'exemple d'un PC avec un processeur 486 d'Intel. A cette époque, le bus ISA était devenu trop limité et était en place d'être remplacé par le bus PCI, qui avait la même fonction. De nombreuses cartes d'extension utilisaient déjà ce standard et étaient branchées sur des connecteurs PCI dédiés, différents des connecteurs ISA. Intuitivement, on se dit que le bus PCI remplaçait le bus ISA, mais les choses étaient plus compliquées. Les disques durs gardaient leur connecteur ATA, et ne passaient pas par le bus PCI. Ils avaient un bus IDE séparé, qui était un bus ISA modifié.
Là encore, les processeurs étaient devenus beaucoup plus rapides que le bus PCI. Les deux allaient à des fréquences assez différentes, ce qui fait que le bus PCI était séparé du bus système. Il y avait alors deux implémentations possibles.
* La première utilise un répartiteur unique, relié au processeur, à la RAM, au bus PCI, et au bus IDE.
* La seconde utilise un bus système séparé du bus PCI, avec un '''pont PCI''' pour faire l'interface entre les deux.
Le '''''System Controler''''' était un circuit intégré, placé sur la carte mère, qui peut servir soit de pont PCI, soit de répartiteur. Le répartiteur PCI sert d'intermédiaire avec le bus PCI, mais aussi avec le bus IDE, utilisé pour les disques durs, aussi appelé le bus ''Parallel ATA''. Il peut aussi être connecté au processeur, à la mémoire RAM, ainsi qu'à la mémoire cache, mais cela ne sert que quand il est utilisé comme répartiteur.
[[File:Architecture d'un PC utilisant un bus PCI, implémentation avec un répartiteur.png|centre|vignette|upright=2|Architecture d'un PC utilisant un bus PCI, implémentation avec un répartiteur]]
Pour des raisons de compatibilité, le bus ISA avait été conservé, aux côtés du bus PCI. Il y avait un pont ISA en plus du pont/répartiteur PCI. Une implémentation possible aurait été de connecter les deux ponts ISA et PCI à un bus système unique. Mais cette solution n'a pas été retenue. La raison est que le bus PCI et le bus ISA ont des performances très différentes. Le bus PCI est très rapide, le bus ISA beaucoup plus lent. La différence est d'un ordre de grandeur, environ. Dans ces conditions, il est possible de faire passer les communications ISA à travers le bus PCI. Pour cela, le pont ISA est directement connecté sur le pont PCI, comme illustré ci-dessous.
Et il en est de même pour le bus dédié aux disques durs. En effet, les disques durs étaient autrefois reliés au bus ISA, mais cela a changé depuis. Ils disposent maintenant de leur propre bus dédié, le '''bus IDE''', qui est un bus ISA simplifié. Et ce bus ISA simplifié était connecté directement sur le pont PCI.
[[File:Architecture de l'IBM PC compatible avec pont PCI.png|centre|vignette|upright=2|Architecture de l'IBM PC compatible avec pont PCI]]
Dans ce qui va suivre, nous allons étudier un exemple qui utilise un bus système séparé, avec un pont PCI, sans répartiteur. Voilà pour les grandes lignes, mais le schéma ci-dessous montre que tout est plus complexe. Vous remarquerez des connexions optionnelles entre le pont PCI et la mémoire RAM et la mémoire cache. La raison est que le pont PCI peut aussi servir de répartiteur en remplacement du bus système. Concrètement, on peut alors retirer le bus système. La mémoire, le bus PCI, le bus ISA, le bus IDE, le processeur et la RAM sont alors connectés au répartiteur PCI, qui sert d'intermédiaire central entre tous ces composants. Mais ce n'est pas la solution qui a été retenue dans notre exemple.
[[File:Intel486-Typ PCI System.png|centre|vignette|upright=2|PC IBM compatible avec un 486, un bus PCI et un bus ISA. Le ''host bus'' est le bus système.]]
Le pont ISA sert ici d'intermédiaire entre le bus système et le bus ISA. De plus, il a été amélioré sur de nombreux points. Il inclut notamment des circuits qui étaient autrefois sur la carte mère, à savoir le contrôleur DMA 82C87 et le contrôleur d'interruption 82C59, ainsi que les ''timers'' Intel 82C54. Les composants restants sont eux reliés sur un quatrième bus : le bus X, l'ancêtre du bus ''Low Pin Count''. Le bus X était celui du BIOS, du contrôleur de clavier, de la ''Real Time Clock'', et du contrôleur de périphérique 82091AA d'Intel.
[[File:ISA Bridge schematic.png|centre|vignette|upright=2|ISA Bridge.]]
===L'architecture des PC des années 90-2000===
Par la suite, les ponts PCI et ISA ont évolué avec l'évolution des bus de l'ordinateur. Le bus ISA a progressivement été remplacé par d'autres bus, comme le bus ''Low Pin Count'', le bus PCI a été remplacé par le PCI Express, d'autres bus ont été ajoutés, etc. Mais la séparation du ''chipset'' en deux a été conservée.
[[File:Chipset schematic.svg|vignette|upright=1.0|Chipset séparé en northbridge et southbridge.]]
Le pont PCI et le pont ISA ont été remplacés respectivement par le '''pont nord''' et le '''pont sud''', plus connus par leurs noms anglais de ''northbridge'' et de ''southbridge''. Le pont nord servait d'interface entre le processeur, la mémoire et la carte graphique et est connecté à chacun par un bus dédié. Il intégrait aussi le contrôleur mémoire. Le pont sud est le répartiteur pour les composants lents, à savoir l'USB, l'Ethernet, etc. Le bus qui relie le processeur au pont nord était appelé le '''''Front Side Bus''''', abrévié en FSB.
[[File:IMac Chipset.png|centre|vignette|upright=2|Chipset séparé en northbridge et southbridge.]]
Un point important est que le bus PCI est devenu un bus assez lent, ce qui fait qu'il a finit par être connecté au pont sud. Le pont PCI est donc devenu le pont sud, dans le courant des années 2000. Durant un moment, un équivalent du pont ISA a subsisté dans un circuit de '''''Super IO'''''. Concrètement, il s'occupait du lecteur de disquette, du port parallèle, du port série, et des ports PS/2 pour le clavier et la souris. Mais il ne gérait pas le bus ISA, mais son remplaçant, le bus ''Low Pin Count''.
[[File:Motherboard diagram fr.svg|centre|vignette|upright=1.5|Carte mère avec circuit Super IO.]]
===L'architecture des PC depuis les années 2000===
Depuis la sortie du processeur AMD Athlon 64, le pont nord a été fusionné dans le processeur. La fusion ne s'est pas faite en une fois, des fonctionnalités ont progressivement été progressivement intégrées dans le processeur. Le pont sud est resté, mais il a alors été progressivement connecté directement au processeur. La raison derrière cette intégration est que les processeurs avaient de plus en plus de transistors à leur disposition. Ils en ont profité pour intégrer le pont nord. Et cela permettait de simplifier le câblage des cartes mères, sans pour autant rendre vraiment plus complexe la fabrication du processeur. Les industriels y trouvent leur compte.
La première étape a été l'intégration du contrôleur mémoire a été intégré au processeur. Concrètement, le résultat était que la mémoire RAM n'était plus connectée au pont nord, mais était connectée directement au processeur ! Il y a donc eu un retour d'un bus mémoire, mais spécialisé pour la mémoire RAM. En théorie, une telle intégration permet diverses optimisations quant aux transferts avec la mémoire RAM. Les transferts ne passent pas par un répartiteur, ce qui réduit le temps d'accès à la mémoire RAM. Ajoutons de sombres histoires de prefetching, d'optimisation des commandes, et j'en passe. Toujours est-il que le pont nord ne servait alors d'intermédiaire que pour les ports PCI Express, et le pont sud.
[[File:X58 Block Diagram.png|centre|vignette|upright=2|Chipset X58 d'Intel.]]
Par la suite, la carte graphique fût aussi connectée directement sur le processeur. Le processeur incorpore pour cela des contrôleurs PCI-Express. Le pont nord a alors disparu complétement, son intégration dans le processeur était complète. Sur les cartes mères Intel récentes, le pont sdud subsiste, il est appelé le ''Platform Controler Hub'', ou PCH. L'organisation des bus sur la carte mère qui résulte de cette connexion du processeur à la carte graphique, est illustrée ci-dessous, avec l'exemple du PCH.
[[File:Intel 5 Series architecture.png|centre|vignette|upright=2|Intel 5 Series architecture]]
<noinclude>
{{NavChapitre | book=Fonctionnement d'un ordinateur
| prev=L'interface électrique entre circuits intégrés et bus
| prevText=L'interface électrique entre circuits intégrés et bus
| next=La hiérarchie mémoire
| nextText=La hiérarchie mémoire
}}
</noinclude>
39qa3k5ypc5nuye3p5kx1hxbw5tua99
765744
765743
2026-05-01T21:56:53Z
Mewtow
31375
/* Les SoC haute performance */
765744
wikitext
text/x-wiki
Dans les chapitres précédents, nous avons vu comment représenter de l'information, la traiter et la mémoriser avec des circuits. Mais un ordinateur n'est pas qu'un amoncellement de circuits et est organisé d'une manière bien précise. Il est structuré autour de trois circuits principaux :
* un '''processeur''', qui manipule l'information et donne un résultat ;
* une '''mémoire''' qui mémorise les données à manipuler ;
* les '''entrées/sorties''', qui permettent à l'ordinateur de communiquer avec l'extérieur.
[[File:Architecture Von Neumann.png|centre|vignette|upright=2|Architecture d'un système à mémoire.]]
Pour faire simple, le processeur est un circuit qui s'occupe de faire des calculs. Rien d'étonnant à cela. Je rappelle que tout est codé par des nombres dans un ordinateur, ce qui fait que manipuler des nombres revient simplement à faire des calculs. Un ordinateur n'est donc qu'une grosse calculatrice améliorée, et le processeur est le composant qui fait les calculs.
La mémoire s'occupe purement de la mémorisation des données, des nombres sur lesquelles faire des calculs. Pour être plus précis, il y a deux mémoires : une pour les données proprement dites, une autre pour le programme à exécuter. La première est la '''mémoire RAM''', la seconde est la '''mémoire ROM'''. Nous détaillerons ce que sont ces deux mémoires dans la suite du chapitre, mais sachez que nous avions déjà rencontré ces deux types de mémoires dans les chapitres sur les registres et les mémoires adressables.
Les entrées-sorties permettent au processeur et à la mémoire de communiquer avec l'extérieur et d'échanger des informations avec des périphériques. Les '''périphériques''' regroupent, pour rappel, tout ce est branché sur un ordinateur, mais n'est pas à l'intérieur de celui-ci.
Le processeur, les mémoires et les entrées-sorties communiquent ensemble via un '''réseau d'interconnexions'''. Le terme est assez barbare, mais rien de compliqué sur le principe. C'est juste un ensemble de fils électriques qui relie les différents éléments d'un ordinateur. Les interconnexions sont souvent appelées le bus de communication, mais le terme est un abus de langage, comme on le verra plus bas.
Afin de simplifier les explications, on va supposer que le réseau d'interconnexion est le suivant. Tout est connecté au processeur. Il y a des interconnexions entre le processeur et la mémoire RAM, d'autres interconnexions entre processeur et mémoire ROM, et d'autres entre le processeur et les entrées-sorties. Nous verrons que d'autres réseaux d'interconnexions fusionnent certaines interconnexions, pour les partager entre la ROM et la RAM, par exemple. Mais pour le moment, gardez le schéma ci-dessous en tête.
[[File:Réseau d'interconnexion avec un processeur au centre.png|centre|vignette|upright=2|Réseau d'interconnexion avec un processeur au centre]]
==Les mémoires RAM et ROM==
La mémoire est le composant qui mémorise des informations, des données. Dans la majorité des cas, la mémoire est composée de plusieurs '''cases mémoire''', chacune mémorisant plusieurs bits, le nombre de bits étant identique pour toutes les cases mémoire. Dans le cas le plus simple, une case mémoire mémorise un '''octet''', un groupe de 8 bits. Mais les mémoires modernes mémorisent plusieurs octets par case mémoire : elles ont des cases mémoires de 16, 32 ou 64 bits, soit respectivement 2/4/8 octets. De rares mémoires assez anciennes utilisaient des cases mémoires contenant 1, 2, 3, 4, 5, 6 7, 13, 17, 23, 36 ou 48 bits. Mais ce n'était pas des mémoires électroniques, aussi nous allons les passer sous silence.
Tout ce qu'il faut savoir est que la quasi-totalité des mémoires électronique a un ou plusieurs octets par case mémoire. Pour simplifier, vous pouvez imaginer qu'une mémoire RAM est un regroupement de registre, chacun étant une case mémoire. C'est une description pas trop mauvaise pour décrire les mémoires RAM, qu'on abordera dans ce qui suit.
{|class="wikitable"
|+ Contenu d'une mémoire, case mémoire de 16 bits (deux octets)
|-
! Case mémoire N°1
| 0001 0110 1111 1110
|-
! Case mémoire N°2
| 1111 1110 0110 1111
|-
! Case mémoire N°3
| 0001 0000 0110 0001
|-
! Case mémoire N°4
| 1000 0110 0001 0000
|-
! Case mémoire N°5
| 1100 1010 0110 0001
|-
! ...
| ...
|-
! Case mémoire N°1023
| 0001 0110 0001 0110
|-
! Case mémoire N°1024
| 0001 0110 0001 0110
|}
Dans ce cours, il nous arrivera de partir du principe qu'il y a un octet par case mémoire, par souci de simplification. Mais ce ne sera pas systématique. De plus, il nous arrivera d'utiliser le terme adresse pour parler en réalité de la case mémoire associée, par métonymie.
===La capacité mémoire===
Bien évidemment, une mémoire ne peut stocker qu'une quantité finie de données. Et à ce petit jeu, certaines mémoires s'en sortent mieux que d'autres et peuvent stocker beaucoup plus de données que les autres. La '''capacité''' d'une mémoire correspond à la quantité d'informations que celle-ci peut mémoriser. Plus précisément, il s'agit du nombre maximal de bits qu'une mémoire peut contenir. Elle est le produit entre le nombre de cases mémoire, et la taille en bit d'une case mémoire.
Toutes les mémoires actuelles utilisant des cases mémoire d'un ou plusieurs octets, ce qui nous arrange pour compter la capacité d'une mémoire. Au lieu de compter cette capacité en bits, on préfère mesurer la capacité d'une mémoire avec le nombre d'octets qu'elle contient. Mais les mémoires des PC font plusieurs millions ou milliards d'octets. Pour se faciliter la tâche, on utilise des préfixes pour désigner les différentes capacités mémoires. Vous connaissez sûrement ces préfixes : kibioctets, mébioctets et gibioctets, notés respectivement Kio, Mio et Gio.
{|class="wikitable"
|-
!Préfixe!!Capacité mémoire en octets!!Puissance de deux
|-
||Kio||1024||2<sup>10</sup> octets
|-
||Mio||1 048 576||2<sup>20</sup> octets
|-
||Gio||1 073 741 824||2<sup>30</sup> octets
|}
On peut se demander pourquoi utiliser des puissances de 1024, et ne pas utiliser des puissances un peu plus communes ? Dans la majorité des situations, les électroniciens préfèrent manipuler des puissances de deux pour se faciliter la vie. Par convention, on utilise souvent des puissances de 1024, qui est la puissance de deux la plus proche de 1000. Or, dans le langage courant, kilo, méga et giga sont des multiples de 1000. Quand vous vous pesez sur votre balance et que celle-ci vous indique 58 kilogrammes, cela veut dire que vous pesez 58 000 grammes. De même, un kilomètre est égal à 1000 mètres, et non 1024 mètres.
Autrefois, on utilisait les termes kilo, méga et giga à la place de nos kibi, mebi et gibi, par abus de langage. Mais peu de personnes sont au courant de l'existence de ces nouvelles unités, et celles-ci sont rarement utilisées. Et cette confusion permet aux fabricants de disques durs de nous « arnaquer » : Ceux-ci donnent la capacité des disques durs qu'ils vendent en kilo, méga ou giga octets : l’acheteur croit implicitement avoir une capacité exprimée en kibi, mébi ou gibi octets, et se retrouve avec un disque dur qui contient moins de mémoire que prévu.
===Lecture et écriture : mémoires ROM et RWM===
Pour simplifier grandement, on peut grossièrement classer les mémoires en deux types : les ''Read Only Memory'' et les ''Read Write Memory'', aussi appelées mémoires ROM et mémoires RWM. Pour les '''mémoires ROM''', on ne peut pas modifier leur contenu. On peut y récupérer une donnée ou une instruction : on dit qu'on y accède en lecture. Mais on ne peut pas modifier les données qu'elles contiennent. Quant aux '''mémoires RWM''', on peut y accéder en lecture (récupérer une donnée stockée en mémoire), mais aussi en écriture : on peut stocker une donnée dans la mémoire, ou modifier une donnée existante.
Tout ordinateur contient au minimum une ROM et une RWM (souvent une mémoire RAM), les deux n'ont pas exactement le même rôle. Pour simplifier, la mémoire ROM mémorise le programme à exécuter, la mémoire RWM stocke des données. Il a existé des ordinateurs où la mémoire RWM était une mémoire magnétique, voire acoustique, mais ce n'est plus le cas de nos jours. Pour les ordinateurs modernes, la mémoire RWM est une mémoire électronique. Pour faire la différence avec ces anciennes mémoires RWM, elle est appelée la '''mémoire RAM'''. Il s'agit d'une mémoire qui stocke temporairement des données que le processeur doit manipuler (on dit qu'elle est volatile). Elle s'efface complètement quand on coupe l'alimentation de l'ordinateur.
Il existe d'autres différences entre mémoire RWM et RAM :
* la mémoire RWM peut ne pas être volatile et donc conserver les données écrites ;
* la mémoire RAM possède un temps d'accès constant aux données (quelle que soit l'adresse), ce qui n'est pas garanti pour les mémoires RWM.
Outre le programme à exécuter, la mémoire ROM peut mémoriser des constantes, des données qui ne changent pas. Elles ne sont jamais modifiées et gardent la même valeur quoi qu'il se passe lors de l'exécution du programme. En conséquence, elles ne sont jamais accédées en écriture durant l'exécution du programme, ce qui fait que leur place est dans une mémoire ROM. La mémoire RWM est alors destinée aux données temporaires, qui changent ou sont modifiées lors de l'exécution du programme, et qui sont donc manipulées aussi bien en lecture et en écriture. La mémoire RWM mémorise alors les variables du programme à exécuter, qui sont des données que le programme va manipuler. Pour les systèmes les plus simples, la mémoire RWM ne sert à rien de plus.
[[File:Espaces d'adressage sur une archi harvard modifiée.png|centre|vignette|upright=2.5|Espaces d'adressage sur une archi harvard modifiée]]
Pour donner un exemple de données stockées en ROM, on peut prendre l'exemple des anciennes consoles de jeu 8 et 16 bits. Les jeux vidéos sur ces consoles étaient placés dans des cartouches de jeu, précisément dans une mémoire ROM à l'intérieur de la cartouche de jeu. La ROM mémorisait non seulement le code du jeu, le programme du jeu vidéo, mais aussi les niveaux et les ''sprites'' et autres données graphiques.
Une conséquence est que les consoles 8/16 bits n'avaient pas besoin de beaucoup de RAM, comparé aux ordinateurs de l'époque, vu qu'une grande partie des données utiles étaient dans une ROM directement accessible par le processeur. À l'opposé, les micro-ordinateurs devaient copier les données d'un jeu depuis une disquette dans la mémoire RAM, ce qui demandait d'avoir plus de RAM. Le passage au support CD sur les consoles 32 bits a eu la même conséquence. Le processeur ne pouvant pas lire directement le CD à sa guise, il fallait copier les données du CD en RAM. D'où l'apparition de temps de chargement assez longs, inexistants sur support cartouche.
===L'adressage mémoire===
Sur une mémoire RAM ou ROM, on ne peut lire ou écrire qu'une case mémoire, qu'un registre à la fois : une lecture ou écriture ne peut lire ou modifier qu'une seule case mémoire. Techniquement, le processeur doit préciser à quel case mémoire il veut accéder à chaque lecture/écriture. Pour cela, chaque case mémoire se voit attribuer un nombre binaire unique, l''''adresse''', qui va permettre de le sélectionner et de l'identifier celle-ci parmi toutes les autres. En fait, on peut comparer une adresse à un numéro de téléphone (ou à une adresse d'appartement) : chacun de vos correspondants a un numéro de téléphone et vous savez que pour appeler telle personne, vous devez composer tel numéro. Les adresses mémoires en sont l'équivalent pour les cases mémoire.
[[File:Adressage mémoire.png|centre|vignette|upright=2|Exemple : on demande à la mémoire de sélectionner la case mémoire d'adresse 1002 et on récupère son contenu (ici, 17).]]
L'adresse mémoire est générée par le processeur. Le processeur peut parfaitement calculer des adresses, en extraire du programme qu'il exécute, et bien d'autres choses. Nous détaillerons d'ailleurs les mécanismes pour dans les chapitres portant sur les modes d'adressage du processeur. Mais pour le moment, nous avons juste besoin de savoir que c'est le processeur qui envoie des adresses aux mémoires RAM et ROM.
Les adresses générées par le processeur sont alors envoyées à la RAM ou la ROM via une connexion dédiée, un ensemble de fils qui connecte le processeur à la mémoire : le '''bus d'adresse mémoire'''. L'adresse sélectionne une case mémoire, le processeur peut alors récupérer la donnée dedans pour une lecture, écrire une donnée pour l'écriture. Pour cela, un second ensemble de fil connecte le processeur à la RAM/ROM, mais cette fois-ci pour échanger des données. Il s'agit du '''bus de données mémoire'''. Les deux sont souvent regroupés sous le terme de '''bus mémoire'''.
Un ordinateur contient toujours une RAM et une ROM, ce qui demande aux bus mémoire de s'adapter à la présence de deux mémoires. Il y a alors deux solutions, illustrées dans les deux schémas ci-dessous. Avec la première, il y a un seul bus mémoire partagé entre la RAM et la ROM, comme illustré ci-dessous. Une autre solution utilise deux bus séparés : un pour la RAM et un autre pour la ROM. Nous verrons les différences pratiques entre les deux à la fin du chapitre. Pour le moment, nous allons partir du principe qu'il y a un bus pour la mémoire ROM, et un autre bus pour la RAM.
[[File:CPT-System-Architecture-gapfill1-ANS.svg|centre|vignette|upright=2|Architecture avec une ROM et une RAM.]]
[[File:Réseau d'interconnexion avec un processeur au centre.png|centre|vignette|upright=2|Réseau d'interconnexion avec un processeur au centre]]
===L'alignement mémoire : introduction===
Plus haut, nous avions dit qu'il y a une adresse par case mémoire, chaque case mémoire contenant un ou plusieurs octets. Mais les processeurs modernes partent du principe que la mémoire a un octet par adresse, pas plus. Et ce même si la mémoire reliée au processeur utilise des cases mémoires de 2, 3, 4 octets ou plus. D'ailleurs, la majorité des mémoires RAM actuelle a des cases mémoires de 64 bits, soit 8 octets par case mémoire. Les raisons à cela sont multiple, mais nous les verrons en détail dans le chapitre sur l'alignement mémoire. Toujours est-il qu'il faut distinguer les '''adresses mémoire''' et les '''adresses d'octet''' gérées par le processeur.
Le processeur génère des adresses d'octet, qui permettent de sélectionner un octet bien précis. L'adresse d'octet permet de sélectionner un octet parmi tous les autres. Mais la mémoire ne comprend pas directement cette adresse d'octet. Heureusement, l'octet en question est dans une case mémoire bien précise, qui a elle-même une adresse mémoire bien précise. L'adresse d'octet est alors convertie en une adresse mémoire, qui sélectionne la case mémoire adéquate, celle qui contient l'octet voulu. La case mémoire entière est lue, puis le processeur ne récupère que les données adéquates. Pour cela, des circuits d'alignement mémoire se chargent de faire la conversion entre adresses du processeur et adresse mémoire. Nous verrons cela dans le détail dans le chapitre sur l'alignement mémoire.
Il existe des mémoires qui n'utilisent pas d'adresses mémoire, mais passons : ce sera pour la suite du cours.
==Le processeur==
Dans les ordinateurs, l'unité de traitement porte le nom de '''processeur''', ou encore de '''''Central Processing Unit''''', abrévié en CPU. Le rôle principal du processeur est de faire des calculs. La plupart des processeurs actuels supportent au minimum l'addition, la soustraction et la multiplication. Quelques processeurs ne gèrent pas la division, qui est une opération très gourmande en circuit, peu utilisée, très lente. Il arrive que des processeurs très peu performants ne gèrent pas la multiplication, mais c'est assez rare.
Un processeur ne fait pas que des calculs. Tout processeur est conçu pour effectuer un nombre limité d'opérations bien précises, comme des calculs, des échanges de données avec la mémoire, etc. Ces opérations sont appelées des '''instructions'''. Les plus intuitives sont les '''instructions arithmétiques''', qui font des calculs, comme l'addition, la soustraction, la multiplication, la division. Mais il y a aussi des '''instructions d'accès mémoire''', qui échangent des données entre la mémoire RAM et le processeur. Les autres instructions ne sont pas très intuitives, aussi passons-les sous silence pour le moment, tout deviendra plus clair dans les chapitres sur le processeur.
===Le processeur exécute un programme, une suite d'instructions===
Tout processeur est conçu pour exécuter une suite d'instructions dans l'ordre demandé, cette suite s'appelant un '''programme'''. Ce que fait le processeur est défini par la suite d'instructions qu'il exécute, par le programme qu'on lui demande de faire. Les instructions sont exécutées dans un ordre bien précis, les unes après les autres. L'ordre en question est décidé par le programmeur. La totalité des logiciels présents sur un ordinateur sont des programmes comme les autres.
Le programme à exécuter est stockée dans la mémoire de l'ordinateur. C'est ainsi que l'ordinateur est rendu programmable : modifier le contenu de la mémoire permet de changer le programme exécuté. Mine de rien, cette idée de stocker le programme en mémoire est ce qui a fait que l’informatique est ce qu'elle est aujourd’hui. C'est la définition même d'ordinateur : appareil programmable qui stocke son programme dans une mémoire modifiable.
Une instruction est codée comme les données : sous la forme de suites de bits. Telle suite de bit indique qu'il faut faire une addition, telle autre demande de faire une soustraction, etc. Pour simplifier, nous allons supposer qu'il y a une instruction par adresse mémoire. Sur la grosse majorité des ordinateurs, les instructions sont placées les unes à la suite des autres dans l'ordre où elles doivent être exécutées. Un programme informatique n'est donc qu'une vulgaire suite d'instructions stockée quelque part dans la mémoire de l'ordinateur.
{|class="wikitable"
|+ Exemple de programme informatique
|-
! Adresse
! Instruction
|-
! 0
| Copier le contenu de l'adresse 0F05 dans le registre numéro 5
|-
! 1
| Charger le contenu de l'adresse 0555 dans le registre numéro 4
|-
! 2
| Additionner ces deux nombres
|-
! 3
| Charger le contenu de l'adresse 0555
|-
! 4
| Faire en XOR avec le résultat antérieur
|-
! ...
| ...
|-
! 5464
| Instruction d'arrêt
|}
Pour exécuter une suite d'instructions dans le bon ordre, le processeur détermine à chaque cycle quelle est la prochaine instruction à exécuter. Pour cela, le processeur mémorise l'adresse de l'instruction en cours dans un registre : le '''Program Counter'''. Je rappelle que des instructions consécutives sont dans des adresses consécutives. Pour passer à la prochaine instruction, il suffit donc d'incrémenter le ''program counter''.
: Si une instruction prend plusieurs octets, plusieurs adresses, il suffit de l'incrémenter du nombre d'octets/adresses.
D'autres processeurs font autrement : chaque instruction précise l'adresse de la suivante, directement dans la suite de bit représentant l'instruction en mémoire. Ces processeurs n'ont pas besoin de calculer une adresse qui leur est fournie sur un plateau d'argent. Sur des processeurs aussi bizarres, pas besoin de stocker les instructions en mémoire dans l'ordre dans lesquelles elles sont censées être exécutées. Mais ces processeurs sont très très rares et peuvent être considérés comme des exceptions à la règle.
Nous venons de voir qu'un processeur contient un registre appelé le ''program counter''. Mais il n'est pas le seul. Pour pouvoir fonctionner, tout processeur doit mémoriser un certain nombre d’informations nécessaires à son fonctionnement, qui sont mémorisées dans des '''registres de contrôle'''. La plupart ont des noms assez barbares (registre d'état, ''program counter'') et nous ne pouvons pas en parler à ce moment du cours. Nous les verrons en temps voulu, mais il est important de préciser qu'ils existent.
===L'intérieur d'un processeur===
Fort de ce que nous savons, nous pouvons expliquer ce qu'il y a à l'intérieur d'un processeur. Le premier point est qu'un processeur fait des calculs, ce qui implique qu'il contient des circuits de calcul. Ils sont regroupés dans une ou plusieurs '''unités de calcul'''. Nous avons déjà vu comment fabriquer une unité de calcul simple, dans un chapitre dédié, et c'est la même qui est présente dans un processeur. Du moins dans les grandes lignes, les circuits des processeurs modernes étant particulièrement optimisés. Il en est de même pour les autres circuits de calcul comme ceux pour les multiplications/division/autres.
Si le processeur fait des calculs, qu'en est-il des opérandes ? Et où sont mémorisés les résultats des opérations ? Pour cela, le processeur incorpore des '''registres généraux'''. Les registres généraux servent à mémoriser les opérandes et résultats des instructions. Ils mémorisent des données, contrairement aux registres de contrôle mentionnés plus haut. Le nombre de registres généraux dépend grandement du processeur. Les tout premiers processeurs se débrouillaient avec un seul registre, mais les processeurs actuels utilisent plusieurs registres, pour mémoriser plusieurs opérandes/résultats. Mais la présence de registres est source de pas mal de petites complications. Par exemple, il faut échanger les données entre la RAM et les registres, il faut gérer l'adressage des registres, etc. Il s'agit là de détails que nous expliquerons dans les chapitres sur le processeur.
Le processeur contient enfin un circuit pour interpréter les instructions, appelé l''''unité de contrôle'''. Elle lit les instructions depuis la mémoire, interprète la suite de bit associée, et commande le reste du processeur pour qu'il exécute l'instruction. Ses fonctions sont assez variées, mais nous allons simplifier en disant qu'elle configure l'unité de calcul et les registres pour faire le bon calcul. Son rôle est d'analyser la suite de bit qui constitue l'instruction, et d'en déduire quelle opération effectuer. Elle gère aussi l'accès à la mémoire RAM, et notamment ce qui est envoyé sur son bus d'adresse.
: Dans ce qui suit, on suppose que le ''program counter'' fait partie de l'unité de contrôle.
Pour résumer, un processeur contient une unité de calcul, des registres et une interface avec la mémoire RAM. Le tout est interconnecté, afin de pouvoir échanger des données. L’ensemble forme le '''chemin de données''', nom qui trahit le fait que c'est là que les données se déplacent et sont traitées. Il faut aussi ajouter l'unité de contrôle pour commander le tout. Elle lit les instructions en mémoire, puis commande le chemin de données pour que l'instruction soit exécutée correctement.
[[File:Microarchitecture d'un processeur.png|centre|vignette|upright=2|Microarchitecture d'un processeur]]
Un processeur parait donc assez simple expliqué comme ça, mais il y a de nombreuses subtilités. L'une d'entre elle est liée aux registres, et notamment à la manière dont on les utilise. Pour expliquer ces subtilités, nous allons voir comment les premiers processeurs fonctionnaient, avant de passer aux processeurs un peu plus modernes. Les tout premiers processeurs n'utilisaient qu'un seul registre, ce qui fait que l'utilisation des registres était très simple. Le passage à plusieurs registres a complexifié le tout.
===D'où viennent les adresses ?===
Il est maintenant temps de répondre à une question qui s'était posée dans la section sur l'adressage : d'où viennent les adresses envoyées à la mémoire ? Pour ce qui est des adresses des instructions, on connait déjà la réponse : c'est le ''program counter'' qui gère tout. Mais pour les données, il y a deux possibilités, qui correspondent à deux types de données : les données statiques et les données dynamiques.
Les '''données statiques''' sont les plus simples : elles existent durant toute la durée de vie du programme. Tant que celui-ci s'exécute, il aura besoin de ces données. En conséquence, il leur réserve une place en mémoire, qui est toujours la même. La donnée se situe donc à une adresse bien précise, qui ne change jamais. Attention cependant : les données peuvent être modifiées, changer de valeur. Le programme écrit dans les donnée statiques, c'est même assez fréquent. Ce sont ne sont pas forcément des données constantes !
Pour les données statiques, elles sont toujours placées à la même adresse mémoire. Pour le dire autrement, l'adresse mémoire est une constante, qui ne change pas. L'adresse est connue avant d’exécuter le programme, le programme a été codé pour utiliser cette adresse pour telle donnée, on a réservé une adresse pour la donnée voulue. Et même si vous quittez le programme et vous le relancez plusieurs jours après, l'adresse mémoire sera la même avant et après.
Et cela permet d'utiliser l''''adressage direct'''. L'idée est que les instructions précisent donc l'adresse à lire ou écrire. Pour cela, l'adresse est intégrée dans l’instruction elle-même. Pour rappel, l'instruction est codée par une suite de bit en mémoire RAM/ROM, dont certains précisent l'opération à faire, les autres servant à autre chose. L'idée est que certains bits précisent l'adresse mémoire de la donnée à lire. Les instructions sont donc du genre :
* ''LOAD 56'' - lit l'adresse numéro 56 et copie son contenu dans un registre;
* ''STORE R5 , adress 99'', copie le registre R5 dans l'adresse 99 ;
* ''ADD R5 , adress 209'' : additionne le registre R5 avec le contenu de l'adresse 209.
S'il existe des données statiques, c'est signe qu'il existe des '''données dynamiques'''. Ces dernières sont des données qui sont créées ou détruites selon les besoins. Pour comprendre d'où viennent ces données dynamiques, prenons le cas d'une personne qui écrit du texte sur un ordinateur. Le texte qu'il écrit est mémorisé dans la RAM de l’ordinateur, puis est sauvegardé sur le disque dur quand il sauvegarde son document. Au fur et à mesure qu'il écrit du texte, la RAM utilisée par ce texte augmente. Donc, ce texte est une donnée dynamique, dont la taille varie dans le temps.
Pour gérer des données dynamiques, la plupart des systèmes d'exploitation incorporent des fonctionnalités d''''allocation mémoire'''. Derrière ce nom barbare, se cache quelque chose de simple : les programmes peuvent réclamer de la mémoire au système d'exploitation, pour y placer les données qu'ils souhaitent. Les langages de programmation bas niveau supportent des fonctions comme malloc(), qui permettent de demander un bloc de mémoire de N octets à l'OS, qui doit alors accommoder la demande. De même, un programme peut libérer de la mémoire qu'il n'utilise plus avec des fonctions comme free().
Avec l'allocation mémoire, les données n'ont pas de place fixe en mémoire. Leur adresse mémoire peut varier d'une exécution du programme à l'autre. Pire que ça : les données peuvent être déplacées dans la mémoire RAM, si besoin. En clair : l'adresse est déterminée lors de l'exécution du programme. L'adresse est alors soit calculée, soit lue depuis la mémoire RAM, soit déterminée autrement. Toujours est-il qu'elle se retrouve dans un registre général. Pour gérer ces adresse variables, les processeurs utilisent l''''adressage indirect'''. L'adressage indirect permet d'utiliser une adresse qui est dans un registre de données. L'adresse en question peut être envoyée à la mémoire RAM sans problème, le processeur peut automatiquement connecter le registre adéquat sur le bus d'adresse.
Au tout début de l'informatique, les processeurs ne supportaient que l'adressage direct, pas plus. L'adressage indirect n'était tout simplement pas possible. Avec l'adressage direct, l'adresse à lire est extraite directement des instructions, par l'unité de contrôle. Le bus d'adresse de la RAM est alors relié directement à l'unité de contrôle, le bus de données est relié aux registres.
[[File:Architecture Harvard avec adressage direct uniquement.png|centre|vignette|upright=2|Architecture Harvard avec adressage direct uniquement]]
Mais dès les années 70, l'adressage indirect est apparu, rendant la programmation bien plus simple. Mais cela a demandé quelques adaptation au niveau du processeur. Avec l'adressage indirect, le bus d'adresse est connecté aux registres. Il a donc fallu rajouter un multiplexeur pour que le processeur décide de relier le bus d'adresse soit aux registres, soit à l'unité de contrôle.
===Un ordinateur peut avoir plusieurs processeurs===
La plupart des ordinateurs n'ont qu'un seul processeur, ce qui fait qu'on désigne avec le terme d''''ordinateurs mono-processeur'''. Mais il a existé (et existe encore) des '''ordinateurs multi-processeurs''', avec plusieurs processeurs sur la même carte mère. L'idée était de gagner en performance : deux processeurs permettent de faire deux fois plus de calcul qu'un seul, quatre permettent d'en faire quatre fois plus, etc. C'est très courant sur les supercalculateurs, des ordinateurs très puissants conçus pour du calcul industriel ou scientifique, mais aussi sur les serveurs ! Dans le cas le plus courant, ils utilisent plusieurs processeurs identiques : on utilise deux processeurs Core i3 de même modèle, ou quatre Pentium 3, etc.
Pour utiliser plusieurs processeurs, les programmes doivent être adaptés. Pour cela, il y a plusieurs possibilités :
* Une première possibilité, assez intuitive, est d’exécuter des programmes différents sur des processeurs différents. Par exemple, on exécute le navigateur web sur un processeur, le lecteur vidéo sur un autre, etc.
* La seconde option est de créer des programmes spéciaux, qui utilisent plusieurs processeurs. Ils répartissent les calculs à faire sur les différents processeurs. Un exemple est la lecture d'une vidéo sur le web : un processeur peut télécharger la vidéo pendant le visionnage et bufferiser celle-ci, un autre processeur peut décoder la vidéo, un autre décoder l'audio. De tels programmes restent des suites d'instructions, mais ils sont plus complexes que les programmes normaux, aussi nous les passons sous silence.
* La troisième option est d’exécuter le même programme sur les différents processeurs, mais chaque processeur traite son propre ensemble de données. Par exemple, pour un programme de rendu 3D, quatre processeurs peuvent s'occuper chacun d'une portion de l'image.
[[File:Architecture de Von Neumann Princeton multi processeurs.svg|centre|vignette|upright=2|Architecture de Von Neumann Princeton multi processeurs]]
De nos jours, les ordinateurs grand public les plus utilisés sont dans un cas intermédiaire, ils ne sont ni mono-, ni multi-processeur. Ils n'ont qu'un seul processeur, dans le sens où si on ouvre l'ordinateur et qu'on regarde la carte mère, il n'y a qu'un seul processeur. Mais ce processeur est en réalité assez similaire à un regroupement de plusieurs processeurs dans le même boitier. Il s'agit de '''processeurs multicœurs''', qui contiennent plusieurs cœurs, chaque cœur pouvant exécuter un programme tout seul.
La différence entre cœur et processeur est assez difficile à saisir, mais pour simplifier : un cœur est l'ensemble des circuits nécessaires pour exécuter un programme. Chaque cœur dispose de toute la machinerie électronique pour exécuter un programme, à savoir des circuits aux noms barbares comme : un séquenceur d'instruction, des registres, une unité de calcul. Par contre, certains circuits d'un processeur ne sont présents qu'en un seul exemplaire dans un processeur multicœur, comme les circuits de communication avec la mémoire ou les circuits d’interfaçage avec la carte mère.
Suivant le nombre de cœurs présents dans notre processeur, celui-ci sera appelé un processeur double-cœur (deux cœurs), quadruple-cœur (4 cœurs), octuple-cœur (8 cœurs), etc. Un processeur double-cœur est équivalent à avoir deux processeurs dans l'ordinateur, un processeur quadruple-cœur est équivalent à avoir quatre processeurs dans l'ordinateur, etc. Ces processeurs sont devenus la norme dans les ordinateurs grand public et les logiciels et systèmes d'exploitation se sont adaptés.
===Les coprocesseurs===
Quelques ordinateurs assez anciens disposaient de '''coprocesseurs''', des processeurs qui complémentaient un processeur principal. Les ordinateurs de ce type avaient un processeur principal, le '''CPU''', qui était secondé par un ou plusieurs coprocesseurs. Sauf exception, le CPU et le coprocesseur exécutent des programmes différents, ils travaillent en parallèle.
Les coprocesseurs les plus connus sont les '''coprocesseurs pour le rendu 2D/3D'''. Ils ont eu leur heure de gloire sur les anciennes consoles de jeux vidéo, comme Super Nintendo, la Playstation et autres consoles de cette génération ou antérieure. Ils s'occupaient respectivement de calculer les graphismes des jeux vidéos. De nos jours, ils ont été remplacés par des cartes graphiques, ou des ''Graphic Processing Units'', qui ne sont pas considérées comme des coprocesseurs.
Les '''coprocesseurs sonores''' sont une sorte d'ancêtre des cartes son, utilisés sur les anciennes consoles de jeux vidéo, comme La Nintendo 64, la Playstation et autres consoles antérieures. Ils s'occupaient respectivement de calculer tout ce qui a trait au son. Pour donner un exemple, on peut citer la console Neo-géo, qui disposait de deux processeurs travaillant en parallèle : un processeur principal, et un coprocesseur sonore. Le processeur principal était un Motorola 68000, alors que le coprocesseur sonore était un processeur Z80.
L'accès aux périphériques est quelque chose sur lequel nous passerons plusieurs chapitres dans ce cours. Mais sachez que l'accès aux périphériques peut demander pas mal de puissance de calculs. Le CPU principal peut faire ce genre de calculs par lui-même, mais il n'est pas rare qu'un '''coprocesseur d'IO''' soit dédié à l'accès aux périphériques. Un exemple assez récent est celui de la console de jeu Nintendo 3DS. Elle disposait d'un processeur principal de type ARM9, d'un coprocesseur pour les divisions qu'on abordera plus bas, et d'un second processeur ARM7. L'ARM 7 était utilisé comme coprocesseur d'I/O, ainsi que pour l'émulation de la console GBA.
[[File:Asmp 2.gif|centre|vignette|upright=2|Co-processeur pour l'accès aux entrées-sorties.]]
Les '''coprocesseurs arithmétiques''' sont un peu à part des autres. Ils sont spécialisés dans les calculs en virgule flottante. Ils étaient utilisés à une époque où les CPU ne géraient que des calculs entiers (en binaire ou en BCD). Un exemple est le coprocesseur flottant x87, complémentaire des premiers processeurs Intel x86. Il y a eu la même chose sur les processeurs Motorola 68000, avec deux coprocesseurs flottants appelés les Motorola 68881 et les Motorola 68882.
Un exemple récent de coprocesseur est celui utilisé sur la console de jeu Nintendo DS. La console utilisait deux processeurs, un ARM9 et un ARM7, qui ne pouvaient pas faire de division entière. Il s'agit pourtant d'opérations importantes dans le cas du rendu 3D, ce qui fait que les concepteurs de la console ont rajouté un coprocesseur spécialisé dans les divisions entières et les racines carrées. Le coprocesseur était adressable directement par le processeur, comme peuvent l'être la RAM ou les périphériques.
==Les entrées-sorties==
Tous les circuits vus précédemment traitent des données codées en binaire. Ceci dit, les données ne sortent pas de n'importe où : l'ordinateur contient des composants électroniques qui traduisent des informations venant de l’extérieur en nombres. Ces composants sont ce qu'on appelle des '''entrées'''. Par exemple, le clavier est une entrée : l'électronique du clavier attribue un nombre entier (''scancode'') à une touche, nombre qui sera communiqué à l’ordinateur lors de l'appui d'une touche. Pareil pour la souris : quand vous bougez la souris, celle-ci envoie des informations sur la position ou le mouvement du curseur, informations qui sont codées sous la forme de nombres. La carte son évoquée il y a quelques chapitres est bien sûr une entrée : elle est capable d'enregistrer un son, et de le restituer sous la forme de nombres.
S’il y a des entrées, on trouve aussi des '''sorties''', des composants électroniques qui transforment des nombres présents dans l'ordinateur en quelque chose d'utile. Ces sorties effectuent la traduction inverse de celle faite par les entrées : si les entrées convertissent une information en nombre, les sorties font l'inverse : là où les entrées encodent, les sorties décodent. Par exemple, un écran LCD est un circuit de sortie : il reçoit des informations, et les transforme en image affichée à l'écran. Même chose pour une imprimante : elle reçoit des documents texte encodés sous forme de nombres, et permet de les imprimer sur du papier. Et la carte son est aussi une sortie, vu qu'elle transforme les sons d'un fichier audio en tensions destinées à un haut-parleur : c'est à la fois une entrée, et une sortie.
Les '''entrées-sorties''' incluent toutes les entrées et sorties, et même certains composants qui sont les deux à la fois. Il s'agit d'un terme générique, qui regroupe des composants forts différents. Dans ce qui va suivre, nous allons parfois parler de périphériques au lieu d'entrées-sorties, mais les deux termes ne sont pas équivalents. Dans le détail, les entrées-sorties regroupent :
* Les '''périphériques''' sont les composants connectés sur l'unité centrale. Exemple : les claviers, souris, webcam, imprimantes, écrans, clés USB, disques durs externes, la Box internet, etc.
* Les '''cartes d'extension''', qui se connectent sur la carte mère via un connecteur, comme les cartes son ou les cartes graphiques.
* D'autres composants sont soudés à la carte mère mais sont techniquement des entrées-sorties : les cartes sons soudées sur les cartes mères actuelles, par exemple.
===L'interface avec le reste de l'ordinateur===
Les entrées-sorties sont très diverses, fonctionnent très différemment les unes des autres. Mais du point de vue du reste de l'ordinateur, les choses sont relativement standardisées. Du point de vue du processeur, les entrées-sorties sont juste des paquets de registres ! Tous les périphériques, toutes les entrées-sorties contiennent des '''registres d’interfaçage''', qui permettent de faire l'intermédiaire entre l'entrée/sortie et le reste de l'ordinateur. L'entrée/sortie est conçu pour réagir automatiquement quand on écrit dans ces registres.
[[File:Registres d'interfaçage.png|centre|vignette|upright=2|Registres d'interfaçage.]]
Les registres d’interfaçage sont assez variés. Les plus évidents sont les '''registres de données''', qui permettent l'échange de données entre le processeur et les périphériques. Pour échanger des données avec l'entrée/sortie, le processeur a juste à lire ou écrire dans ces registres de données. On trouve généralement un registre de lecture et un registre d'écriture, mais il se peut que les deux soient fusionnés en un seul registre d’interfaçage de données. Si le processeur veut envoyer une donnée à une entrée/sortie, il a juste à écrire dans ces registres. Inversement, s'il veut lire une donnée, il a juste à lire le registre adéquat.
Mais le processeur ne fait pas que transmettre des données à l'entrée/sortie. Le processeur lui envoie aussi des « commandes », des valeurs numériques auxquelles l'entrée/sortie répond en effectuant un ensemble d'actions préprogrammées. En clair, ce sont l'équivalent des instructions du processeur, mais pour l'entrée/sortie. Par exemple, les commandes envoyées à une carte graphique peuvent être : affiche l'image présente à cette adresse mémoire, calcule le rendu 3D à partir des données présentes dans ta mémoire, etc. Pour recevoir les commandes, l'entrée/sortie contient des ''registres de commande'' qui mémorisent les commandes envoyées par le processeur. Quand le processeur veut envoyer une commande à l'entrée/sortie, il écrit la commande en question dans ce ou ces registres.
Enfin, beaucoup d'entrée/sortie ont un ''registre d'état'', lisible par le processeur, qui contient des informations sur l'état de l'entrée/sortie. Ils servent notamment à indiquer au processeur que l'entrée/sortie est disponible, qu'il est en train d’exécuter une commande, qu'il est occupé, qu'il y a un problème, qu'il y a une erreur de configuration, etc.
===Les adresses des registres d’interfaçage===
Les registres des périphériques sont identifiés par des adresses mémoires. Et les adresses sont conçues de façon à ce que les adresses des différentes entrées/sorties ne se marchent pas sur les pieds. Chaque entrée/sortie, chaque registre, chaque contrôleur a sa propre adresse. D'ordinaire, certains bits de l'adresse indiquent quel est le destinataire. Certains indiquent quel est l'entrée/sortie voulue, les restants indiquant le registre de destination.
Il existe deux organisations possibles pour les adresses des registres d’interfaçages. La première possibilité est de séparer les adresses pour les registres d’interfaçage et les adresses pour la mémoire. Le processeur doit avoir des instructions séparées pour gérer les périphériques et adresser la mémoire. Il a des instructions de lecture/écriture pour lire/écrire en mémoire, et d'autres pour lire/écrire les registres d’interfaçage. Sans cela, le processeur ne saurait pas si une adresse est destinée à un périphérique ou à la mémoire.
[[File:Espaces d'adressages séparés entre mémoire et périphérique.png|centre|vignette|upright=2.5|Espaces d'adressages séparés entre mémoire et périphérique]]
L'autre méthode mélange les adresses mémoire et des entrées-sorties. Si on prend par exemple un processeur de 16 bits, où les adresses font 16 bits, alors les 65536 adresses possibles seront découpées en deux portions : une partie ira adresser la RAM/ROM, l'autre les périphériques. On parle alors d''''entrées-sorties mappées en mémoire'''. L'avantage est que le processeur n'a pas besoin d'avoir des instructions séparées pour les deux.
[[File:IO mappées en mémoire.png|centre|vignette|upright=2.0|IO mappées en mémoire]]
Pour résumer, communiquer avec une entrée/sortie est similaire à ce qu'on a avec les mémoires. Il suffit de lire ou écrire dans des registres d’interfaçage, qui ont chacun une adresse mémoire. Le problème est que le système d'exploitation ne connaît pas toujours le fonctionnement d'une entrée/sortie : il faut installer un programme qui va s'exécuter quand on souhaite communiquer avec l'entrée/sortie, et qui s'occupera de tout ce qui est nécessaire pour le transfert des données, l'adressage du périphérique, etc. Ce petit programme est appelé un driver ou '''pilote de périphérique'''. La « programmation » périphérique est très simple : il suffit de savoir quoi mettre dans les registres, et c'est le pilote qui s'en charge.
==Les architectures Harvard et Von Neumann==
Après avoir vu le processeur, les mémoires et les entrées-sorties, voyons voir comment le tout est interconnecté. Tous les ordinateurs ne sont pas organisés de la même manière, pour ce qui est de leurs bus. Mais pour comprendre pourquoi, nous devons regarder qui communique avec qui, dans un ordinateur. Pour rappel, les données sont placées en mémoire RAM, alors que les instructions sont placées en mémoire ROM. Le processeur lit des instructions dans la mémoire ROM, il lit et écrit dans la mémoire RAM, et accède aux registres d’interfaçage des entrées-sorties. Il y a donc besoins de trois interconnexions : CPU-ROM, CPU-RAM et CPU-IO.
[[File:Réseau d'interconnexion avec un processeur au centre.png|centre|vignette|upright=2|Réseau d'interconnexion avec un processeur au centre]]
Il parait intéressant d'utiliser trois interconnexions, au minimum CPU-ROM, CPU-RAM et CPU-IO. Néanmoins, faire ainsi a de nombreux désavantages. Déjà, il faut pouvoir brancher tout ça sur le processeur. Et celui-ci n'a pas forcément assez de broches pour. Aussi, il est parfois préférable de mutualiser des bus, à savoir de connecter plusieurs composants sur un même bus. Par exemple, on peut mutualiser le bus pour la mémoire RAM et pour la mémoire ROM. Il faut dire que les deux bus sont des bus mémoire, avec un bus d'adresse, un bus de données, et surtout : des bus de commande similaires. Les mutualiser est alors très simple, et permet d'économiser pas mal de broches.
[[File:Réseau d'interconnexion avec un processeur au centre et une architecture Harvard.png|centre|vignette|upright=2|Réseau d'interconnexion avec un processeur au centre et une architecture Harvard]]
Cette mutualisation nous amène naturellement à parler de la distinction entre les architectures Harvard d'un côté et les architectures Von Neumann de l'autre. Elle est très liée au fait d'utiliser soit un bus mémoire unique, soit des bus séparés pour la ROM et la RAM. Voyons cela en détail.
===Les architectures Harvard et Von Neumann : des bus séparés ou unifiés===
Avec l''''architecture Harvard''', la mémoire ROM et la mémoire RAM sont reliées au processeur par deux bus séparés. Il y a un bus RAM pour la mémoire RAM, un bus ROM pour la mémoire ROM. L'avantage de cette architecture est qu'elle permet de charger une instruction et une donnée simultanément : une instruction chargée sur le bus relié à la mémoire programme, et une donnée chargée sur le bus relié à la mémoire de données. Et cela simplifie fortement la conception du processeur.
[[File:Harvard Architecture.png|centre|vignette|upright=2|Architecture Harvard, avec une ROM et une RAM séparées.]]
Avec l''''architecture Von Neumann''', mémoire ROM et mémoire RAM sont reliées au processeur par un bus unique. Le bus unique qui relie processeur, RAM et ROM, s'appelle le '''bus mémoire'''. Un défaut de ces architecture est qu'elles ne peuvent pas charger une instruction et une donnée en même temps. Et cela pose quelques problèmes pour la conception du processeur. Par contre, nous verrons dans ce qui suit qu'utiliser un bus mémoire partagé est bien plus flexible et permet des choses que les architectures Harvard ne peuvent pas faire.
[[File:Architecture Von Neumann, avec deux bus séparés.png|centre|vignette|upright=2|Architecture Von Neumann, avec deux bus séparés.]]
===Les architectures Harvard et Von Neumann : des espaces d'adressage séparés ou unifiés===
La distinction précédente se base sur les connexions entre RAM, ROM et processeur. Mais il existe une autre distinction, très liée, qui est souvent utilisée comme seconde définition des architectures Harvard/Von Neumann. Elle est liée aux adresses mémoire que le processeur peut gérer. Prenons un processeur 16 bits, par exemple, qui gère naturellement des adresses de 16 bits. Il peut gérer 2^16 adresses, soit 64 kibioctets de mémoire. L'ensemble de ces adresses est appelé un '''espace d'adressage'''. Mais comment cet espace d'adressage est utilisé pour adresser une RAM et une ROM ?
Sur les architectures Harvard, le processeur voit deux mémoires séparées avec leur lot d'adresses distinctes. Une même adresse peut donc correspondre soit à la mémoire ROM, soit à la mémoire RAM, suivant le bus utilisé. L'espace d'adressage est donc doublé, dupliqué, avec un pour la ROM, un autre pour la RAM. Rien d'étonnant à cela : il y a deux bus d'adresses, chacun correspondant à un espace d'adressage.
[[File:Vision de la mémoire par un processeur sur une architecture Harvard.png|centre|vignette|upright=2|Vision de la mémoire par un processeur sur une architecture Harvard.]]
Avec l'architecture Von Neumann, la RAM et la ROM doivent se partager les adresses mémoires disponibles. Il n'y a qu'un seul espace d'adressage qui est coupé en deux, avec une partie pour la ROM et une autre pour la RAM. Une adresse correspond soit à la mémoire RAM, soit à la mémoire ROM, mais pas aux deux. Typiquement, la mémoire ROM occupe une partie des adresses, la mémoire RAM utilise le reste. La répartition des adresses est réalisée par les circuits de décodage d'adresse mentionnés plus haut.
[[File:Vision de la mémoire par un processeur sur une architecture Von Neumann.png|centre|vignette|upright=2|Vision de la mémoire par un processeur sur une architecture Von Neumann.]]
Les '''architectures Harvard modifiées''' sont des intermédiaires entre architectures Harvard et architectures Von Neumann, bien qu'elles penchent bien plus du côté des architectures Harvard. Précisons que la terminologie n'est pas claire, beaucoup d'auteurs mettent des définitions différentes derrière ces deux termes. Mais dans ce cours, nous utiliserons une définition très stricte de ce qu'est une architecture Harvard modifiée.
Une architecture Harvard modifiée est une architecture Harvard, où le processeur peut lire des données constantes depuis la mémoire ROM. Nous avions vu plus haut que les mémoires ROM peuvent mémoriser, en plus d'un programme exécutable, des données constantes, qui ne varient pas. Les architectures Harvard pures ne permettent pas de lire des données de ce genre depuis la mémoire ROM, alors que les architectures Harvard modifiées le permettent.
Une architecture Harvard modifiée dispose d'une instruction pour lire les données en mémoire RWM, et d'une instruction pour lire des données en mémoire ROM. Il y a donc deux versions de l'instruction LOAD, qui copient la donnée dans un registre général, mais dont la source de la donnée est différente. Une autre possibilité, plus rare, est que une instruction de copie, qui copie une constante depuis la mémoire ROM vers la mémoire RAM. Le cas le plus commun est l'utilisation de deux instructions LOAD séparées.
[[File:Espaces d'adressage sur une archi harvard modifiée.png|centre|vignette|upright=2.5|Espaces d'adressage sur une archi harvard modifiée]]
Ceci étant dit, revenons à la distinction entre architecture Harvard et Von Neumann. Il faut noter que la RAM et la ROM n'ont pas forcément la même taille. Et ce que ce soit sur une architecture Harvard que sur une architecture Von Neumann, mais c'est plus facile à expliquer sur une architecture Harvard.
On peut par exemple imaginer une architecture Harvard qui utilise des adresses de 16 bits pour la ROM, et seulement 8 bits pour la RAM. Le résultat est qu'il peut adresser 64 kibioctets de ROM, mais seulement 256 octets de RAM. Les deux bus d'adresse sont alors de taille différente, l'un faisant 8 bits, l'autre 16. Quelques processeurs 8 bits étaient dans ce cas, comme on le verra dans le chapitre sur les CPU 8bits. Mais d'autres processeurs utilisent des valeurs différentes, avec par exemple des adresses de 16 bits pour la RAM, mais de 20 bits pour la ROM, ou inversement.
Sur une architecture Von Neumann, tout dépend de comment les adresses sont réparties. La solution la plus simple découpe l'espace d'adressage en deux parties égales, avec la RAM qui est dans la moitié basse (qui part de l'adresse 0 jusqu'à l'adresse au milieu), alors que la ROM est dans la moitié haute (entre l'adresse du milieu et l'adresse maximale). Mais ce n'est pas la seule possibilité, la limite entre RAM et ROM peut être mise n'importe où. Prenons par exemple un processeur 32 bits, capable de gérer 4 milliards d'adresse. Il est parfaitement possible de réserver 128 mébioctets de poids fort à la mémoire ROM, et de laisser le reste à la mémoire RAM.
===Le décodage d'adresse sur les architectures Von Neumann===
Pour résumer, les architectures Harvard et Von Neumann se distinguent sur deux points :
* L'accès à la RAM et à la ROM se font par des bus séparés sur l'architecture Harvard, sur le même bus avec l'architecture Von Neumann.
* Les adresses pour la mémoire ROM et la mémoire RAM sont séparées sur les architectures Harvard, partagées sur l’architecture Von Neumann.
Les architectures Von Neumann utilisent donc un seul bus pour connecter la RAM et la ROM au processeur. Mais cela ne parait pas intuitif : comment deux composants peuvent se connecter aux mêmes fils ? Parce que c'est ce qu'implique le fait de partager un bus. Si je prends une mémoire RAM et une mémoire ROM, toutes deux de 8 bits, elles seront connectées à un bus mémoire de 8 bits. Intuitivement, on se dit qu'il y aura des conflits, du genre : la RAM et la ROM vont accéder au bus en même temps, comment savoir si une adresse est destinée à la RAM ou la ROM, etc ?
Tous ces problèmes sont résolus avec une solution très simple : à chaque instant, seule une mémoire est connectée au bus. L'idée est que les mémoires sont connectées ou déconnectées du bus selon les besoins. Si le processeur veut envoyer lire une donnée en mémoire RAM, il déconnecte la mémoire ROM du bus. Et inversement, s'il veut lire une instruction, il déconnecte la RAM et connecte la ROM.
Pour cela, les mémoires RAM et ROM possèdent une entrée ''Chip Select'' ou ''Output Enable'', qui agit comme une sorte de bouton ON/OFF. Lorsqu'on met un 1 sur cette entrée, la mémoire se connectera au bus. Ses entrées et sorties fonctionneront normalement, elle pourra recevoir des adresses, envoyer ou recevoir des données, tout sera normal. Par contre, si on met un 0 sur cette entrée, la mémoire se "désactive", ses entrée-sorties ne répondent plus aux sollicitations extérieures. Pire que ça : elles sont électriquement déconnectées.
Au total, tout cela demande de gérer deux bit ''Chip Select''/''Output Enable'' : un pour la RAM, un pour la ROM. Et ces deux bits sont configurés pour chaque accès mémoire, pour chaque lecture ou écriture. Pour cela, un circuit de '''décodage d'adresse''' prend en entrée l'adresse mémoire à lire/écrire, et active/désactive les mémoires RAM/ROM selon les besoins. Il prend l'adresse et configure les bits ''Chip Select''/''Output Enable''.
[[File:Décodage d'adresse sur une architecture Von Neumann.png|centre|vignette|upright=2|Décodage d'adresse sur une architecture Von Neumann.]]
L'implémentation la plus simple réserve la moitié des adresses pour la RAM, l'autre moitié pour la ROM. Typiquement, la ROM prend la moitié basse, la RAM la moitié haute. Dans ce cas, activer/désactiver la RAM et la ROM se fait avec seulement le bit de poids fort de l'adresse. Si le bit de poids fort est à 1, alors on accède à la RAM et la ROM doit être désactivée. Mais si ce bit est à 0, alors on accède à la moitié basse et il faut désactiver la RAM.
Une remarque intéressante : le fait de séparer la mémoire en deux parts égales permet de simuler une architecture Harvard à partir d'une architecture Von Neumann. Par exemple, le tout premier processeur d'Intel, le 4004, était l'un de ceux là. La RAM et la ROM sont reliés au même bus, et il y a donc un unique espace d'adressage, qui est séparé en deux parties égales. Le truc est que le processeur traite les deux parties égales comme deux espaces d'adressage séparés. Le processeur se débrouille pour cacher le fait qu'il y a un espace d'adressage unique coupé en deux, ce qui fait que les programmeurs voient bien deux espaces d'adressages distincts.
[[File:Décodage d'adresse sur une architecture Von Neumann basique.png|centre|vignette|upright=2|Décodage d'adresse sur une architecture Von Neumann basique.]]
Pour résumer, quand une adresse est envoyée sur le bus, les deux mémoires vont la recevoir mais une seule va répondre et se connecter au bus. Le décodage d'adresse garantit que seule la mémoire adéquate réponde à un accès mémoire. Le décodage d'adresse est réalisé par la carte mère, par un composant dédié.
Le mécanisme peut être utilisé pour combiner plusieurs RAM en une seule, idem avec les ROM. Pour comprendre l'idée, je vais prendre l'exemple de l'IBM PC, un des tout premier PC existant. Nous étudierons ce PC dans une section dédiée, à la fin du chapitre, aussi je vais passer rapidement dessus. Tout ce que je vais faire est vous présenter la carte mère du PC, et vous demander de faire est de compter les mémoires ROM et mémoires RAM sur la carte mère :
[[File:IBM 5150 Motherboard.svg|centre|vignette|upright=3|Carte mère de l'IBM 5150, un modèle de l'IBM PC.]]
Si vous remarquerez qu'il y a 5 mémoires ROM et 8 à 32 mémoires RAM. Le fait est que le processeur voit les différentes mémoires ROM comme une seule mémoire ROM. Idem avec les mémoires RAM : elle font chacune 2 kibioctets, et l'ensemble est vu par le processeur comme une seule RAM de 16 à 64 kibioctets. Et cela grâce aux circuits de décodage d'adresse, qui sont situés en haut à droite de la carte mère.
Pour comprendre l'idée, prenons l'exemple d'un processeur 16 bits, capable de gérer 64 kibioctets de mémoire. L'espace d'adressage est découpé en quatre portions, de 16 kibioctets chacune. Une portion est réservée à une ROM de 16 kibioctet, les autres sont chacune réservée à une RAM de 16 kibioctet. Le décodage d'adresse sélectionne alors la mémoire adéquate en utilisant les deux bits de poids fort de l'adresse.
* S'ils valent 00, alors c'est la mémoire ROM qui est activée, connectée au bus.
* S'ils valent 01, alors c'est la première mémoire RAM qui est connectée au bus.
* S'ils valent 10, alors c'est la seconde mémoire RAM qui est connectée au bus.
* S'ils valent 11, alors c'est la troisième mémoire RAM qui est connectée au bus.
[[File:Décodage d'adresse sur une architecture Von Neumann, utilisant plusieurs RAM et une ROM.png|centre|vignette|upright=3|Décodage d'adresse sur une architecture Von Neumann, utilisant plusieurs RAM et une ROM]]
===L'impact sur la conception du processeur===
Plus haut, j'ai parlé d'un des avantages des architectures Harvard : elles peuvent lire une instruction en même temps qu'elles accèdent à une donnée. La donnée est lue/écrite en RAM, alors que l'instruction est lue en ROM. Et cela permet de simplifier l'intérieur du processeur. Pas de beaucoup, mais c'est déjà ça de pris. Voyons maintenant comment cela impacte l'intérieur du processeur. Tout ce dont vous avez à vous rappeler est la séparation entre chemin de données et unité de contrôle, et que les registres généraux sont dans le premier, le ''program counter'' dans la seconde.
Avec une architecture Harvard, les instructions et les données passent par des bus différent : bus ROM pour les instructions, bus RAM pour les données. L'intuition nous dit que le bus pour la mémoire ROM est connecté à l'unité de contrôle, alors que le bus pour la RAM est connecté au chemin de données. Et dans les grandes lignes, c'est vrai. La logique est imparable pour ce qui est des bus de données. Mais il y a une petite subtilité pour les bus d'adresse.
Pour comprendre comment le processeur exploite ces deux bus, voyons ce qui transite dessus. Pour la mémoire ROM, elle reçoit l'adresse de l'instruction à lire, elle renvoie l'instruction adéquate. Pour cela, le ''program counter'' est envoyé sur le bus d'adresse, l'instruction sur le bus de données. Pour la mémoire RAM, elle échange des données avec les registres généraux, les registres pour les données. Les adresses utilisées pour la RAM viennent elles soit du chemin de données, soit de l'unité de contrôle, tout dépend du mode d'adressage. Mais le ''program counter'' n'est pas impliqué.
[[File:Architecture Harvard - échanges de données.png|centre|vignette|upright=2|Architecture Harvard - échanges de données]]
Les architectures Harvard modifiées doivent cependant rajouter une connexion entre le bus ROM et les registres généraux. C'est nécessaire pour charger une donnée constante depuis la mémoire ROM. Rappelons que la donnée constante est copiée dans un registre général, donc dans le chemin de données.
[[File:Architecture Harvard modifiée - implémentation du processeur.png|centre|vignette|upright=2|Architecture Harvard modifiée - implémentation du processeur]]
Avec les architectures Von Neumann, il y a un seul bus qui est relié à la fois au chemin de données et à l'unité de contrôle. Si le processeur lit une instruction, le bus doit être relié à l'unité de contrôle. Par contre, s'il accède à une donnée, il doit être relié au chemin de données (le bus d'adresse peut éventuellement être connecté au séquenceur, si celui-ci fournit l'adresse à lire). Il faut donc utiliser un paquet de multiplexeurs et de démultiplexeurs pour faire la connexion au bon endroit.
[[File:Architecture Von Neumann - implémentation du processeur.png|centre|vignette|upright=2|Architecture Von Neumann - implémentation du processeur]]
Une instruction se fait en deux temps : on charge l'instruction depuis la mémoire ROM, puis on l'exécute. Avec une architecture Harvard, tout cela se fait en un seul cycle d'horloge, vu que charger la ROM et accéder aux données peut se faire en même temps. Pas avec les architectures Von Neumann, qui doivent libérer le bus mémoire après avoir chargé une instruction. Elles n'ont pas le choix : elles chargent l'instruction lors d'un premier cycle d'horloge, puis l'exécutent lors du second.
Pour cela, ils incorporent un registre appelé le '''registre d'instruction''', qui mémorise l'instruction chargée. L'instruction est copiée dans ce registre lors du premier cycle, puis est utilisée lors du second cycle. Le registre permet de ne pas oublier l’instruction entre les deux cycles. Le registre d'instruction est obligatoire sur les architectures Von Neumann. En comparaison, il est facultatif sur les architectures Harvard. Elles peuvent en avoir un, pour des raisons techniques, mais ce n'est pas obligatoire.
[[File:Registre d'instruction.png|centre|vignette|upright=2|Registre d'instruction.]]
===Les architectures Von Neumann sont plus flexibles===
Sur les architectures Harvard, le processeur sait faire la distinction entre programme et données. Les données sont stockées dans la mémoire RAM, le programme est stocké dans la mémoire ROM. Les deux sont séparés, accédés par le processeur sur des bus séparés, et c'est ce qui permet de faire la différence entre les deux. Il est impossible que le processeur exécute des données ou modifie le programme. Du moins, tant que la mémoire qui stocke le programme est bien une ROM.
Par contre, sur les architectures Von Neumann, il est impossible de distinguer programme et données, sauf en ajoutant des techniques de protection mémoire avancées. La raison est qu'il est impossible de faire la différence entre donnée et instruction, vu que rien ne ressemble plus à une suite de bits qu'une autre suite de bits. Et c'est à l'origine d'un des avantages majeur de l'architecture Von Neumann : il est possible que des programmes soient copiés dans la mémoire RWM et exécutés dans celle-ci.
Un cas d'utilisation familier est celui de votre ordinateur personnel. Le système d'exploitation et les autres logiciels sont copiés en mémoire RAM à chaque fois que vous les lancez. Mais cet exemple implique un disque dur, ce qui rend les choses plus compliquées que prévu. Un autre exemple serait la compilation de code à la volée, mais il ne sera pas très parlant.
Un exemple plus adapté serait celui où la ROM mémorise un programme compressée dans la mémoire ROM, qui est décompressé pour être exécuté en mémoire RAM. Le programme de décompression est stocké en mémoire ROM et est exécuté au lancement de l’ordinateur. Cette méthode permet d'utiliser une mémoire ROM très petite et très lente, tout en ayant un programme rapide (si la mémoire RWM est rapide).
Il est aussi possible de créer des programmes qui modifient leurs propres instructions : cela s'appelle du '''code auto-modifiant'''. Ce genre de choses servait autrefois sur des ordinateurs rudimentaires, au tout début de l'informatique. À l'époque, les adresses à lire/écrire devaient être écrites en dur dans le programme, dans les instructions exécutées. Pour gérer certaines fonctionnalités des langages de programmation qui ont besoin d'adresses modifiables, comme les tableaux, on devait corriger les adresses au besoin avec du code auto-modifiant. De nos jours, le code automodifiant est utilisée occasionnellement pour rendre un programme indétectable dans la mémoire (les virus informatiques utilisent beaucoup ce genre de procédés).
L'impossibilité de séparer données et instructions est à l'origine de problèmes assez fâcheux. Il est parfaitement possible que le processeur charge et exécute des données, qu'il prend par erreur pour des instructions. C'est le cas quand des pirates informatiques arrivent à exploiter des bugs. Il arrive que des pirates informatiques vous fournissent des données corrompues, qui contiennent un virus ou un programme malveillant est caché dans les données. Les bugs en question permettent d'exécuter ces données, donc virus. Pour éviter cela, le système d'exploitation peut marquer certaines zones de la mémoire comme non-exécutable, c’est-à-dire que le système d'exploitation interdit d’exécution de quoi que ce soit qui est dans cette zone. Mais ce n'est pas parfait.
Toujours est-il que tout cela est impossible sur les architectures Harvard. Et ce serait très limitant. Imaginez : pas possible de lancer un programme depuis le disque dur ou une clé USB, le programme doit impérativement être dans une mémoire ROM, pas de compilation à la volée, etc. Que des techniques très utilisées dans l'informatique moderne. Malgré ses défauts, les architectures Von Neumann ne sont pas les plus utilisées pour rien. Les architectures Harvard sont concrètement utilisées uniquement dans l'informatique embarquée, sur des microcontrôleurs très spécifiques.
==Le bus de communication avec les entrées-sorties==
Le processeur, la mémoire et les entrées-sorties sont connectées par un ou plusieurs '''bus de communication'''. Ce bus n'est rien d'autre qu'un ensemble de fils électriques sur lesquels on envoie des zéros ou des uns. Pour communiquer avec la mémoire, il y a trois prérequis qu'un bus doit respecter : pouvoir sélectionner la case mémoire (ou l'entrée-sortie) dont on a besoin, préciser à la mémoire s'il s'agit d'une lecture ou d'une écriture, et enfin pouvoir transférer la donnée. Pour cela, on doit donc avoir trois bus spécialisés, bien distincts, qu'on nommera le bus de commande, le bus d'adresse, et le bus de donnée.
* Le '''bus de données''', sur lequel s'échangent les données entre les composants.
* Le '''bus de commande''' pour configurer la mémoire et les entrées-sorties.
* Le '''bus d'adresse''', facultatif, permet de préciser quelle adresse mémoire il faut lire/écrire.
Chaque composant possède des entrées séparées pour le bus d'adresse, le bus de commande et le bus de données. Par exemple, une mémoire RAM possédera des entrées sur lesquelles brancher le bus d'adresse, d'autres sur lesquelles brancher le bus de commande, et des broches d'entrée-sortie pour le bus de données. Précisons cependant que le bus de commande n'est pas exactement le même entre des mémoires RAM/ROM et des entrées-sorties.
[[File:Bus general schematic.svg|centre|vignette|upright=2|Contenu d'un bus, généralités.]]
===Le réseau d'interconnexion : généralités===
Reprenons où nous nous étions arrêté. Avant de voir les architectures Harvard et Von Neumann, nous avions dit que le processeur, les mémoires et les entrées-sorties sont reliées entre eux par un réseau d'interconnexion. Nous venons de voir qu'il est possible de mutualiser certains bus, notamment celui de la mémoire RAM et celui de la mémoire ROM. Mais il est possible de faire la même chose pour les entrées-sorties. Là encore, il est possible de regrouper le bus mémoire avec les bus pour les entrées-sorties. Voyons ce que cela implique.
{|
|[[File:Réseau d'interconnexion avec un processeur au centre.png|centre|vignette|upright=2|Réseau d'interconnexion avec une architecture Harvard.]]
|[[File:Réseau d'interconnexion avec un processeur au centre et une architecture Harvard.png|centre|vignette|upright=2|Interconnexions d'une architecture Von Neumann.]]
|}
Avant de poursuivre, nous devons préciser quelque chose d'important. Sur les ordinateurs modernes, les entrées-sorties peuvent accéder à la mémoire RAM. Les ordinateurs modernes intègrent des techniques de '''''Direct Memory Access''''' (DMA) qui permettent aux entrées-sorties de lire ou d'écrire en mémoire RAM. Les transferts DMA se font sans intervention du processeur. Ils permettent de copier un bloc de plusieurs octets, dans deux sens : de la mémoire RAM vers une entrée-sortie, ou inversement. Le DMA demande d'ajouter un circuit dédié sur la carte mère : le contrôleur DMA. Il effectue la copie d'un paquet d'octets de la RAM vers l'entrée-sortie ou dans l'autre sens.
[[File:Réseau d'interconnexion avec un processeur au centre, et direct memory access.png|centre|vignette|upright=2|Réseau d'interconnexion avec un processeur au centre, et direct memory access]]
===Les bus systèmes===
La première solution utilise un bus unique, celui-ci est appelé le '''bus système''', aussi appelé ''backplane bus''. Le bus système est connecté à la mémoire RAM, la mémoire ROM, au processeur, et aux entrées-sorties. Tous les composants présents dans l'ordinateur sont connectés à ce bus, sans exception. De tels bus avaient pour avantage la simplicité. Le processeur n'est connecté qu'à un seul bus, ce qui utilise peu de broches et économise des fils. La mutualisation des bus est totale, le câblage est plus simple, la fabrication aussi.
[[File:Architecture minimale d'un ordinateur.png|centre|vignette|upright=2|Architecture minimale d'un ordinateur.]]
Un bus système contient un bus d'adresse, de données et de commande. Un bus système se marie bien avec des entrées-sorties mappées en mémoire. La conséquence est que le bus d'adresse ne sert pas que pour l'accès à la mémoire RAM/ROM, mais aussi pour l'accès aux entrées-sorties. Il y a moyen d'implémenter un système d'adresse séparés avec, mais c'est pas l'idéal.
[[File:Architecture Von Neumann avec les bus.png|centre|vignette|upright=2|Architecture Von Neumann avec les bus.]]
Un bus système n'a pas de limitations quant aux échanges de données. Le processeur peut communiquer directement avec les mémoires et les entrées-sorties, les entrées-sorties peuvent communiquer avec la mémoire RAM, etc. Notamment, un bus système peut implémenter le ''Direct Memory Access''. Il suffit juste de connecter un contrôleur DMA sur le bus système. Le contrôleur DMA est considéré comme une entrée-sortie, ses registres sont mappés en mémoire et sont donc accessibles directement par le processeur.
[[File:Bus système avec controleur DMA.png|centre|vignette|upright=2|Bus système avec contrôleur DMA.]]
Si on suit la définition à la lettre, un bus système est systématiquement une architecture Von Neumann, vu que la mémoire ROM et la mémoire RAM sont reliées sur le bus système. La conséquence est que les circuits de décodage d'adresse sont présents. Ils sont toujours sur la carte mère, et sont plus ou moins à côté du bus système. Cependant, le décodage d'adresse est parfois étendu pour tenir compte des entrées-sorties.
Les entrées-sorties soudées sur la carte mère ont elles aussi des entrées ''Chip Select'' ou quelque chose de similaire. Le décodage d'adresse peut alors les activer ou les désactiver suivant l'adresse envoyée sur le bus d'adresse. C'est ce qui arrive quand le processeur écrit dans un registre d’interfaçage : il envoie l'adresse de ce registre sur le bus d'adresse, le circuit de décodage d'adresse active seulement l'entrée-sortie associée. Il faut noter que ce n'est pas systématique, il existe des techniques pour se passer de décodage d'adresse. Mais nous en reparlerons dans le chapitre sur les bus de communication.
[[File:Chipselectfr.png|centre|vignette|upright=1.5|Exemple détaillé.]]
Les bus systèmes sont certes très simples, mais ils ont aussi des désavantages. Par exemple, il faut éviter que le processeur et les entrées-sorties se marchent sur les pieds, ils ne peuvent pas utiliser le bus en même temps. De tels conflits d'accès au bus système sont fréquents et ils réduisent la performance, comme on le verra dans le chapitre sur les bus. De plus, un bus système a le fâcheux désavantage de relier des composants allant à des vitesses très différentes : il arrivait fréquemment qu'un composant rapide doive attendre qu'un composant lent libère le bus. Le processeur était le composant le plus touché par ces temps d'attente.
Elle était utilisée sur les tout premiers ordinateurs, pour sa simplicité. Elle était parfaitement adaptée aux anciens composants, qui allaient tous à la même vitesse. De nos jours, les ordinateurs à haute performance ne l'utilisent plus trop, mais elle est encore utilisée sur certains systèmes embarqués, en informatique industrielle dans des systèmes très peu puissants.
===Les bus d'entrées-sorties===
Les bus systèmes ont de nombreux problèmes, ce qui fait que d'anciens ordinateurs faisaient autrement. À la place d'un bus système unique, ils utilisent un bus séparé pour les mémoires, et un autre séparé pour les entrées-sorties. Le bus spécialisé pour la mémoire est appelé le '''bus mémoire''', l'autre bus est appelé le '''bus d'entrées-sorties'''. Le bus mémoire est généralement relié à la fois à la mémoire RAM et à la mémoire ROM, les exceptions ne sont pas rares, cependant.
[[File:Bus mémoire séparé du bus pour les IO.png|centre|vignette|upright=2|Bus mémoire séparé du bus pour les IO]]
Les bus d'entrée-sorties peuvent être spécialisés et simplifiés. Par exemple, ils peuvent avoir un bus de commande différent de celui de la mémoire, qui utilise nettement moins de fils. Le bus d'adresse peut aussi être réduit, et utiliser des adresses plus courtes que celles du bus mémoire. Les bus de données peuvent aussi être de taille différentes. Il est ainsi possible d'avoir un bus mémoire capable de lire/écrire 64 bits à la fois, alors que la communication avec les entrées-sorties se fait octet par octet ! En général, les bus d'entrée-sortie sont assez petits, ils ont une taille de 8 ou 16 bits, même si le bus mémoire est plus grand. Cela permet de ne pas gaspiller trop de broches. Ajouter un bus d'entrée-sortie n'est donc pas très gourmand en broches et en fils.
: Il est en théorie possible d'avoir une fréquence différente pour les deux bus, avec un bus mémoire ultra-rapide et un bus pour les entrées-sorties est un bus moins rapide. Mais il faut que le processeur soit prévu pour, et c'est très rare.
Niveau performances, le processeur peut théoriquement accéder à la mémoire en attendant qu'une entrée/sortie réponde, mais il faut que le processeur soit prévu pour, et ce n'est pas de la tarte. Par contre, cela implique d'avoir des adresses séparées pour les registres d’interfaçage et la mémoire. En clair : pas d'entrée-sortie mappée en mémoire ! Un autre problème est que les entrées-sorties ne peuvent pas communiquer avec la mémoire directement, elles doivent passer par l'intermédiaire du processeur. En clair : pas de ''Direct Memory Access'' ! Les deux sont des défauts rédhibitoires pour les programmeurs système, notamment pour ceux qui codent les pilotes de périphériques.
Pour résumer, les défauts sont assez problématiques : pas d'entrées-sorties mappées en mémoire, pas de ''Direct Memory Access'', économie de broches limitée. Les deux premiers sont des défauts majeurs, qui font que de tels bus ne sont pas utilisés dans les ordinateurs modernes. À la place, ils utilisent une troisième solution, distincte des bus systèmes et des bus d'entrée-sorties.
===Les bus avec répartiteur===
Il existe une méthode intermédiaire, qui garde deux bus séparés pour la mémoire et les entrées-sorties, mais élimine les problèmes de brochage sur le processeur. L'idée est d'intercaler, entre le processeur et les deux bus, un '''circuit répartiteur'''. Il récupère tous les accès et distribue ceux-ci soit sur le bus mémoire, soit sur le bus des périphériques. Le ou les répartiteurs s'appellent aussi le '''''chipset''''' de la carte mère.
C'était ce qui était fait à l'époque des premiers Pentium. À l'époque, la puce de gestion du bus PCI faisait office de répartiteur. Elle mémorisait des plages mémoires entières, certaines étant attribuées à la RAM, les autres aux périphériques mappés en mémoire. Elles utilisaient ces plages pour faire la répartition.
[[File:IO mappées en mémoire avec séparation des bus.png|centre|vignette|upright=2|IO mappées en mémoire avec séparation des bus]]
Niveau adresses des registres d'interfacage, il est possible d'avoir soit des adresses unifiées avec les adresses mémoire, soit des adresses séparées.
L'usage d'un répartiteur ne pose pas de problèmes particuliers pour implémenter le DMA. La seule contrainte est que le contrôleur DMA soit intégré dans le répartiteur. Les échanges entre IO et mémoire passent par le répartiteur, qui fait le pont entre bus mémoire et bus des IO.
[[File:Implémentation du DMA avec un répartiteur.png|centre|vignette|upright=2|Implémentation du DMA avec un répartiteur]]
==Les microcontrôleurs et ''system on chip''==
Parfois, on décide de regrouper la mémoire, les bus, le CPU et les ports d'entrée-sortie dans un seul circuit intégré, un seul boitier. L'ensemble forme alors ce qu'on appelle un '''''System on Chip''''' (système sur une puce), abrévié en SoC. Le nom est assez explicite : un SoC comprend un système informatique complet sur une seule puce de silicium, microprocesseurs, mémoires et périphériques inclus. Ils incorporent aussi des ''timers'', des compteurs, et autres circuits très utiles.
[[File:ARMSoCBlockDiagram.svg|centre|vignette|upright=2|SoC basé sur un processeur ARM, avec des entrées-sorties typiques de celles d'un µ-contrôleur. Le support du bus CAN, d'Ethernet, du bus SPI, d'un circuit de PWM (génération de signaux spécifiques), de convertisseurs analogique-digital et inverse, sont typiques des µ-contrôleurs.]]
Le terme SoC regroupe des circuits imprimés assez variés, aux usages foncièrement différents et à la conception distincte. Les plus simples d’entre eux sont des microcontrôleurs, qui sont utilisés pour des applications à base performance. Les plus complexes sont utilisés pour des applications qui demandent plus de puissance, nous les appellerons SoC haute performance.
La relation entre SoC et microcontrôleurs est assez compliquée à expliquer, la terminologie n'est pas clairement établie. Il existe quelques cours/livres qui séparent les deux, d'autres qui pensent que les deux sont très liés. Dans ce cours, nous allons partir du principe que tous les systèmes qui regroupent processeur, mémoire et quelques périphériques/entrées-sorties sont des SoC. Les microcontrôleurs sont donc un cas particulier de SoC, en suivant cette définition.
===Les microcontrôleurs===
Les '''microcontrôleurs''' sont des composants utilisés dans l'embarqué ou d'informatique industrielle. Leur nom trahit leur rôle. Ils sont utilisés pour contrôler de l'électroménager, des chaines de fabrication dans une usine, des applications robotiques, les alarmes domestiques, les voitures. De manière générale, on les trouve dans tous les systèmes dits embarqués et/ou temps réel. Ils ont besoin de s'interconnecter à un grand nombre de composants et intègrent pour cela un grand nombre d'entrée-sorties. Les microcontrôleurs sont généralement peu puissants, et doivent consommer peu d'énergie/électricité.
Fait amusant, on en trouve dans certains périphériques informatiques. Par exemple, les anciens disques durs intégraient un microcontrôleur qui contrôlait plusieurs moteurs/ Les moteurs pour faire tourner les plateaux magnétiques et les moteurs pour déplacer les têtes de lecture/écriture étaient commandés par ce microcontrôleur. Comme autre exemple, les claviers d'ordinateurs intègrent un microcontrôleur connecté aux touches, qui détecte quand les touches sont appuyées et qui communique avec l'ordinateur. Nous détaillerons ces deux exemples dans les chapitres dédiés aux périphériques et aux disques durs, tout deviendra plus clair à ce moment là. La majorité des périphériques ou des composants internes à un ordinateur contiennent des microcontrôleurs.
[[File:Microcontroller 8051.gif|centre|vignette|upright=2.5|Microcontrôleur Intel 8051.]]
Un microcontrôleur tend à intégrer des entrées-sorties assez spécifiques, qu'on ne retrouve pas dans les SoC destinés au grand public. Un microcontrôleur est typiquement relié à un paquet de senseurs et son rôle est de commander des moteurs ou d'autres composants. Et les entrées-sorties intégrées sont adaptées à cette tâche. Par exemple, ils tendent à intégrer de nombreux convertisseurs numériques-analogiques pour gérer des senseurs. Ils intègrent aussi des circuits de génération de signaux PWM spécialisés pour commander des moteurs, le processeur peut gérer des calculs trigonométriques (utiles pour commander la rotation d'un moteur), etc.
[[File:C8051F340-9 A B C D.png|centre|vignette|upright=2|Exemple d'entrées-sorties intégrées à un microcontroleur.]]
En plus des entrées-sorties intégrées, les microcontrôleurs ont souvent des '''ports d'entrées-sorties''' banalisés, à savoir qu'on peut brancher n'importe quoi dessus. Il était possible de brancher un capteur de température, un moteur à commander, un port série, un port parallèle, un écran, un clavier, une souris, peu importe. Les ports font souvent un octet et ils sont généralement reliées directement ou indirectement au processeur. Le logiciel qui s'exécute sur le processeur décide quoi envoyer sur des broches et comment interprète ce qui est reçu dessus.
Les ports banalisés de ce type sont parfois appelés des '''GPIO''', abréviation de ''General Purpose Input/Output'', mais nous utiliserons le terme de ''port I/O''. Un port regroupe plusieurs broches qui peuvent être utilisés à volonté. C'est le logiciel qui s'exécute sur le processeur qui décide de la fonction de broches. Un port IO peut fonctionner soit en tant qu'entrée, soit en tant que sortie. Il est possible de changer de sens en cours de fonctionnement, pour passer d'une entrée à une sortie ou inversement.
[[File:Afficheurs7seg.png|centre|vignette|upright=2|Exemple d'utilisation d'un port I/O. le port est connecté à un afficheur LCD dit 7-segments. Les 8 entrées de cet afficheur sont connectées à un port I/O d'un octet.]]
===Les SoC haute performance===
Les SoC les plus performants sont actuellement utilisés dans les téléphones mobiles, tablettes, ''Netbook'', ''smartphones'', ou tout appareil informatique grand public qui ne doit pas prendre beaucoup de place. La petite taille de ces appareils fait qu'ils gagnent à regrouper toute leur électronique dans un circuit imprimé unique. Mais les contraintes font qu'ils doivent être assez puissants. Ils incorporent des processeurs assez puissants, surtout ceux des ''smartphones''. C'est absolument nécessaire pour faire tourner le système d'exploitation du téléphone et les applications installées dessus.
Niveau entrées-sorties, ils incorporent souvent des interfaces WIFI et cellulaires (4G/5G), des ports USB, des ports audio, et même des cartes graphiques pour les plus puissants d'entre eux. Les SoC incorporent des cartes graphiques pour gérer tout ce qui a trait à l'écran LCD/OLED, mais aussi pour gérer la caméra, voire le visionnage de vidéo (avec des décodeurs/encodeurs matériel). Par exemple, les SoC Tegra de NVIDIA incorporent une carte graphique, avec des interfaces HDMI et VGA, avec des décodeurs vidéo matériel H.264 & VC-1 gérant le 720p. Pour résumer, les périphériques sont adaptés à leur utilisation et sont donc foncièrement différents de ceux des microcontrôleurs.
[[File:SOMblk.png|centre|vignette|upright=3|Exemple de SoC.]]
Un point important est que les processeurs d'un SoC haute performance sont... performants. Ils sont le plus souvent des processeurs de marque ARM, qui sont différents de ceux utilisés dans les PC fixe/portables grand public qui sont eux de type x86. Nous verrons dans quelques chapitres en quoi consistent ces différences, quand nous parlerons des jeux d'instruction du processeur. Autrefois réservé au monde des PCs, les processeurs multicœurs deviennent de plus en plus fréquents pour les SoC de haute performance. Il n'est pas rare qu'un SoC incorpore plusieurs cœurs. Il arrive même qu'ils soient foncièrement différents, avec plusieurs cœurs d'architecture différente.
La frontière entre SoC haute performance et microcontrôleur est de plus en plus floue. De nombreux appareils du quotidien intègrent des SoC haute performance, d'autres des microcontrôleurs. Par exemple, les lecteurs CD/DVD/BR et certains trackers GPS intègrent un SoC ou des processeurs dont la performance est assez pêchue. À l'opposé, les systèmes domotiques intègrent souvent des microcontrôleurs simples. Malgré tout, les deux cas d'utilisation font que le SoC/microcontrôleur est connecté à un grand nombre d'entrées-sorties très divers, comme des capteurs, des écrans, des LEDs, etc.
[[File:GPS tracker Hardware Architecture.png|centre|vignette|upright=2|Hardware d'un tracker GPS.]]
==Étude de quelques exemples d'architectures==
Après avoir vu la théorie, nous allons voir des exemples réels d'ordinateurs. Dans ce qui suit, nous allons voir des ordinateurs assez anciens, pour une raison simple : ils collent assez bien à l''''architecture de base''' vue plus haut, avec un CPU, une RAM et une ROM, quelques entrées-sorties. Tous les ordinateurs modernes, mais aussi dans les smartphones, les consoles de jeu et autres, utilisent une architecture grandement modifiée et améliorée, avec un grand nombre de périphériques, disques durs/SSD, un grand nombre de mémoires différentes, etc.
Il pourrait sembler pertinent d’étudier des microcontrôleurs ou des ''System On Chip'', en premier lieu. Mais nous éviterons soigneusement de tels systèmes pour le moment. La raison est qu'ils ont un grand nombre d'entrées-sorties, qui sont peu familières. Attendez-vous à avoir près d'une vingtaine ou centaine d'entrée-sorties différentes pour de tels systèmes. Le tout est très complexe, bien trop pour un premier exemple. À la place, nous allons voir précisément des exemples plus simples : les premiers PC, et des consoles de jeu 8 et 16 bits.
Bien que ce soit des systèmes très simples, ils sont cependant plus complexes que l'architecture de base. Et leur avantages/désavantages sont un peu inverse l'un de l'autre. Si on devait résumer les différences, on aurait ceci :
* Les PC ont plus d'entrées-sorties que les consoles, bien que nettement moins que pour les microcontrôleurs/SoC.
* Les PC utilisent des disques durs, les consoles font avec soit des cartouches de jeu, soit des CD/DVD.
* Les PC utilisent des cartes électroniques séparées pour le son et l'écran, les consoles utilisent des circuits soudés sur la carte mère, qui sont souvent des co-processeurs.
* Les PC ont une mémoire ROM soudées sur la carte mère, les consoles 8 bits font sans.
Les PC et micro-ordinateurs ont plus d'entrées-sorties que les consoles. Même si on mets de côté les périphériques, ils ont aussi beaucoup de composants soudées sur la carte mère. En comparaison, les consoles de jeu 8/16 bits se débrouillent avec : une cartouche de jeu et une manette en entrée, une sortie vidéo et une sortie son.
Un autre point important est l'absence de disque dur ou de lecteur CD. La présence d'un disque dur ou d'un lecteur CD/DVD complexifie tout de suite l'architecture des PC. Il faut leur réserver un bus dédié ou les connecter à un bus système, cela demande d'ajouter des circuits sur la carte mère, etc. Et surtout, il faut expliquer comment l'ordinateur exécute des programmes, ce qui demande de parler de l'interaction avec le disque dur et la ROM du BIOS. Rien de tout cela sur les consoles de jeu 8 et 16 bits. Elles utilisent à la place des cartouches de jeu, qui intègrent une mémoire ROM, pour mémoriser les données du jeu, voire son code. Pas besoin de parler des mémoires de stockage, on est beaucoup plus proche de l'architecture de base avec une ROM unique.
Par contre, n'allez pas croire que tout est rose avec les consoles 8/16 bits. Il y a quelques différences qui font qu'elles sont plus complexes qu'un PC sur certains points.
Les PC utilisent des cartes électroniques à brancher sur la carte mère pour alimenter l'écran et les hauts-parleurs/casques, alors que les consoles de jeu utilisent des souvent co-processeurs dédiés pour le son et les graphismes. La différence parait mineure, mais elle avantage les consoles. Nous avons déjà expliqué ce que sont les co-processeurs plus haut, aussi les co-processeurs des consoles nous paraitrons familiers. On n'a pas à s’embêter à expliquer ce que sont les cartes d'extension, les bus associés et tout ce qui va avec, cela peut être retardé pour la section sur l'architecture des PC.
La gestion de la cartouche de jeu est aussi un peu subtile à comprendre, bien que ce soit bien plus simple à comprendre qu'un système avec un disque dur. Les cartouches de jeu intègrent une mémoire ROM, pour mémoriser les données du jeu, voire son code. Et le processeur doit exécuter le code depuis cette mémoire ROM. La conséquence est que les consoles 8/16 bits utilisent une architecture Harvard, avec un bus relié à la cartouche pour lire les instructions. Mais si ce n'était que ça... Les cartouches mémorisent aussi les données pour les graphismes, ce qui fait que le co-processeur vidéo doit lui aussi lire la cartouche pour récupérer ces données...
===L'architecture de la TurboGraphX-16===
La console PC Engine, aussi appelée TurboGraphX, est une ancienne console 8 bits. Elle contient un processeur 65C02, 8 kibioctets de RAM, un port manettes, une carte son et une carte vidéo. La '''carte son''' est le composant qui s'occupe de commander les haut-parleurs et de gérer tout ce qui a rapport au son. La '''carte graphique''' est le composant qui est en charge de calculer les graphismes, tout ce qui s'affiche à l'écran. Sur cette console, les cartes son et graphique ne sont PAS des co-processeurs, ce sont des circuits électroniques dits fixes. C'est totalement différent de ce qu'on a sur les consoles modernes, aussi le préciser est important.
Bien que la carte graphique ne soit pas un processeur, elle a 64 kibioctets de RAM rien que pour elle. La RAM en question est séparée de la RAM normale, c'est un circuit intégré séparé. Et c'est un cas très fréquent, qui reviendra par la suite. La majeure partie des cartes graphiques dispose de leur propre '''mémoire vidéo''', totalement réservée à la carte graphique. La RAM vidéo est connectée à la carte graphique via un bus séparé. Le processeur est souvent connecté à ce bus, afin de pouvoir écrire des données dedans, mais ce n'est pas le cas ici.
[[File:Architecture de la PC Engine, aussi appelée TurboGrafx-16.png|centre|vignette|upright=2.5|Architecture de la PC Engine, aussi appelée TurboGrafx-16]]
L'architecture de la console était particulièrement simple. Le processeur était le centre de l'architecture, tout était connecté dessus. Il y a un bus pour la cartouche de jeu, un autre pour la RAM, un autre pour les manettes, un autre pour carte son, et un dernier pour la carte graphique. Le fait d'avoir un bus par composant est assez rare et ce n'est le cas ici que parce des conditions particulières sont remplies. Déjà, il y a peu d'entrée-sorties. Ensuite, les bus font tous 8 bits, vu que le processeur est un CPU 8 bits. Avec 5 connexions de 8 bits, le tout utilise 40 broches, ce qui est beaucoup, mais totalement gérable. Par contre, les choses changerons pour les autres consoles.
Au final, l'organisation des bus peut s'expliquer avec ce qu'on a vu dans la section sur les bus de communication. La console utilise une architecture Harvard, car la ROM et la RAM utilisent des bus différents. De plus, il y a des bus dédiés aux entrées-sorties, séparés des bus mémoire. Enfin, la carte graphique a droit à ses propres bus pour lire dans la cartouche et dans sa RAM vidéo dédiée.
===L'architecture de la console de jeu NES===
Maintenant, nous allons voir la console de Jeu Famicom, aussi appelée la NES en occident. Elle a une architecture centrée sur un processeur Ricoh 2A03, similaire au processeur 6502, un ancien processeur autrefois très utilisé et très populaire. Le processeur est associé à 2 KB de mémoire RAM.
Sur certaines cartouches, on trouve une RAM utilisée pour les sauvegardes, qui est adressée par le processeur directement. Première variation par rapport à l'architecture de la console précédente : l'ajout de la RAM pour les sauvegardes dans les cartouches.
Niveau carte graphique, une différence importante est que la carte graphique est connectée à la cartouche de jeu via un autre bus, afin de pouvoir lire les sprites et textures du jeu dans la cartouche.
[[File:Architecture de la NES.png|centre|vignette|upright=2.5|Architecture de la NES]]
La différence avec l'architecture précédente est que des bus ont été fusionnés. Comme dit plus haut, le système utilise une architecture Harvard, vu que la ROM est dans la cartouche, alors que la RAM est soudée à la carte mère. Par contre, la Famicon utilise un bus dédié aux entrées-sorties. Il est utilisé pour la carte son et la carte graphique, seules les manettes sont sur un bus à part. Ce qui fait qu'on devrait plutôt parler de bus de sorties, mais passons... L'essentiel est qu'on n'est plus tout à fait dans le cas de la console précédente, avec un bus par composant.
===L'architecture de la SNES===
L'architecture de la SNES est illustrée ci-dessous. Les changements pour le processeur et la RAM sont mineurs.La RAM a augmenté en taille et passe à 128 KB. Pareil pour la RAM de la carte vidéo, qui passe à 64 KB. Par contre, on remarque un changement complet au niveau des bus, de la carte graphique et de la carte son.
[[File:Architecture de la SNES.png|centre|vignette|upright=2|Architecture de la SNES]]
La console utilise un '''bus système unique''', sur lequel tout est connecté : ROM, RAM, entrées-sorties, etc. La seule exception est pour les manettes, qui sont encore connectées directement sur le processeur, via un bus séparé. La transition vers un bus système s'explique par le fait que la console est maintenant de 16 bits, ce qui fait que les bus doivent être plus larges. Le processeur adresse des mémoires RAM et ROM plus grandes, ce qui double la taille de leurs bus. De plus, les entrées-sorties aussi ont besoin d'un bus plus large. Le processeur n'ayant pas un nombre illimité de broches, la seule solution est de fusionner les bus en un seul bus système.
Un autre changement est que la carte graphique est maintenant composée de deux circuits séparés. Encore une fois, il ne s'agit pas de coprocesseurs, mais de circuits non-programmables. Par contre, la carte son est remplacée par deux coprocesseurs audio ! De plus, les deux processeurs sont connectés à une mémoire RAM dédiée de 64 KB, comme pour la carte graphique. L'un est un processeur 8 bits (le DSP), l'autre est un processeur 16 bits.
Un point très intéressant : certains jeux intégraient des coprocesseurs dans leurs cartouches de jeu ! Par exemple, les cartouches de Starfox et de Super Mario 2 contenait un coprocesseur Super FX, qui gérait des calculs de rendu 2D/3D. Le Cx4 faisait plus ou moins la même chose, il était spécialisé dans les calculs trigonométriques, et diverses opérations de rendu 2D/3D. En tout, il y a environ 16 coprocesseurs d'utiliser et on en trouve facilement la liste sur le net. La console était conçue pour, des pins sur les ports cartouches étaient prévues pour des fonctionnalités de cartouche annexes, dont ces coprocesseurs. Ces pins connectaient le coprocesseur au bus des entrées-sorties. Les coprocesseurs des cartouches de NES avaient souvent de la mémoire rien que pour eux, qui était intégrée dans la cartouche.
===L'architecture de la Megadrive et de la néo-géo===
Passons maintenant à la console de jeu Megadrive, une console 16 bits. Elle a une architecture similaire à celle de la néo-géo, une autre console bien plus puissante, sorti à peu près en même temps. Elles intègrent deux processeurs : un Motorola 68000 qui sert de processeur principal, un Z80 qui sert de processeur dédié à l'audio. Le Z80 et le Motorola 68000 étaient deux processeurs très populaires à l'époque. Le Z80 est une sorte de version améliorée de l'Intel 8088 utilisé sur les anciens PC et de nombreuses consoles utilisaient des Z80 comme processeur principal. Il était familier pour les programmeurs de l'époque, pour son cout réduit, sa bonne disponibilité, et bien d'autres avantages liés à sa production de masse.
Le Z80 est utilisé comme co-processeur audio. Il commande un synthétiseur sonore, et est relié à sa propre mémoire, distincte de la mémoire principale. Le MC68000 est le processeur principal et a une relation maitre-esclave avec le Z80 : le MC68000 envoie des commandes au Z80, mais la communication ne va pas dans l'autre sens.
Le Motorola 68000 était un processeur 16 bits, alors que le Z80 est un processeur 8 bits. Et cette différence fait que l'on ne peut pas connecter directement les deux sur le même bus, ou du moins pas facilement. La solution retenue est d'utiliser deux bus séparés : un bus de 16 bits connecté au 68000, un bus de 8 bits connecté au Z80. Le premier bus est un bus système sur lequel est connecté le 68000, 64 kibioctets de RAM, la cartouche de jeu, et la carte graphique. Le second bus est un bus de 8 bits, plus court, relié au Z80, à un synthétiseur sonore, et 8 kibioctets de RAM
Les deux bus sont connectés à un '''''chipset''''', un circuit répartiteur, qui fait le pont entre les deux bus. Les manettes sont connectées sur le ''chipset''. Il contient un registre de 8 bits, dans lequel le MC68000 peut écrire dedans à sa guise, le registre étant adressable par le processeur. Lorsque le MC68000 écrit une valeur dedans, cela déclenche l’exécution automatique d'un programme pré-déterminé sur le Z80.
: Pour ceux qui savent ce qu'est une interruption, les valeurs écrites dans ce registre sont des numéros d'interruption, qui indiquent quelle routine d'interruption exécuter.
[[File:Architecture de la Megadrive et de la Néogeo.png|centre|vignette|upright=2.5|Architecture de la Megadrive et de la Néogeo]]
Cet exemple nous montre que les bus systèmes sont certes très simples, mais aussi inflexibles. Ils fonctionnent bien quand les composants branchés dessus sont tous des composants 8 bits, ou sont tous de 16 bits, ou tous 32 bits. Mais dès qu'on mélange composants 8, 16, 32 ou 64 bits, les choses deviennent plus compliquées. Il est alors préférable d'utiliser des bus séparés, avec des répartiteurs pour faire le pont entre les différents bus. Et nous verrons que le problème s'est posé lui aussi sur les PC.
===L'architecture des anciennes consoles Playstation : beaucoup de co-processeurs===
Les consoles que nous venons d'aborder étaient des consoles 8 ou 16 bits. A partir des consoles 32 bits, leur architecture s'est rapprochée de celle des PC, avec un usage plus complexes de répartiteurs. La XBOX était très semblable à un PC : le processeur était un Pentium 3 modifié, la carte graphique était une Geforce 3 modifiée, les 64 mébioctets de RAM était la même mémoire DDR que celle des PC, le répartiteur secondaire était un ''chipset'' nForce de NVIDIA, etc. Mais les Playstation 1, 2 et 3 se distinguent de leur contemporains. Elles disposent de très nombreux co-processeurs, qui sont en plus très variés.
La Playstation 1 a été une des premières console à utiliser les CD-ROM comme support de stockage, en remplacement des cartouches. La conséquence est que la console contient une mémoire ROM, soudée à la carte mère, de 512 kibioctets. Elle contient aussi 2 mébioctets de RAM, une carte graphique avec 1 mébioctet de mémoire vidéo, un processeur, et de quoi gérer les périphériques. Il y a un co-processeur audio spécialisé, avec 512 kibioctets de RAM, ce qui nous est familier. Par contre, les autres co-processeurs ne le sont pas.
Déjà, le lecteur de CD-ROM est associé à des circuits sur la carte mère, il y a tout un sous-système dédié au lecteur de CD. Il y a un contrôleur qui sert d'interface avec le lecteur proprement dit, mais aussi deux co-processeurs audio et 32 kibioctets de RAM. Les co-processeurs audio servent à lire des CD sans trop utiliser le second co-processeur audio, ils lui servent de complément.
Ensuite, le processeur incorpore plusieurs cœurs, avec un cœur principal et plusieurs co-processeurs. Le premier est un co-processeur système, qui est utilisé pour gérer la mémoire cache intégrée au processeur, pour des fonctionnalités appelées interruptions et exceptions, ainsi que pour configurer le processeur. Le second est un co-processeur arithmétique spécialisé dans les calculs en virgule flottante, très importants pour le rendu 3D. Enfin, il y a un décodeur vidéo, qui n'est pas un co-processeur, mais un circuit non-programmable, spécialisé dans le décodage vidéo. De nos jours, ce circuit aurait été intégré dans la carte graphique, mais il était intégré dans le processeur sur la Playstation 2.
Pour le reste, le processeur est la figure centrale de la console. Il est connecté à 4 bus : un pour la RAM, un pour la carte graphique, un pour les manettes, un autre pour le reste. Le dernier bus est connecté au système audio et au système pour le lecteur CD. Ce serait un bus d'entrée-sortie, s'il n'était pas connecté à la mémoire ROM. Vous avez bien lu : la mémoire ROM est reliée au bus d'entrée-sortie.
[[File:Architecture de la Playstation.png|centre|vignette|upright=2.5|Architecture de la Playstation]]
La Playstation 2 est composé d'un processeur, couplé à 32 Mébioctets de RAM, et d'un paquet de co-processeurs. Plus de co-processeurs que la PS1. Le processeur principal n'est pas la même que celui de la PS1, mais il a une architecture similaire. Il intègre un décodeur vidéo sur le même circuit intégré, ainsi que deux co-processeur. Les co-processeurs ne sont cependant pas les mêmes.
Le co-processeur système disparait et est remplacé par un second co-processeur arithmétique. Les deux co-processeurs arithmétiques sont spécialisés dans les nombres flottants, avec quelques différences entre les deux. Par exemple, le second co-processeur gérait des calculs trigonométriques, des exponentielles, des logarithmes, et d'autres fonctions complexes du genre ; mais pas le premier co-processeur. Ils sont reliés à 4 kibioctets de RAM pour le premier, 16 kibioctets de RAM pour le second ; qui sont intégrées dans le processeur et non-représentés dans le diagramme ci-dessous.
La PS2 intègre aussi un co-processeur d'entrées-sorties. Pour information, il s'agit du processeur principal de la Playstation 1, qui est ici utilisé différemment, suivant que l'on place un jeu PS1 ou PS1 dans la console. Si on met un jeu PS1, il est utilisé pour émuler la Playstation 1, afin de faire tourner le jeu PS1 sur la PS2. Si on met un jeu PS2, il est utilisé comme co-processeur d'entrée-sortie et fait l'interface entre CPU et entrées-sorties. Il est relié à 2 mébioctets de RAM, soit exactement la même quantité de mémoire que la Playstation 1.
Tous les périphériques sont connectés au co-processeur d'entrées-sortie. Pour cela, le co-processeur d'entrées-sortie est relié à deux bus dédiés aux périphériques. Le premier bus est relié aux manettes, aux ports USB et aux ports pour cartes mémoires. Le second bus est relié à la carte son, la carte réseau, le lecteur DVD, et un port PCMIA. Notons que la carte son intègre un co-processeur audio, qui n'est pas représenté dans le diagramme ci-dessous.
[[File:Playstation 2 architecture.png|centre|vignette|upright=2.5|Playstation 2 architecture]]
==L'architecture des PC et son évolution==
Après avoir vu les consoles, nous allons maintenant voir les anciens PC, des années 80 ou 90. Le tout premier PC était techniquement l''''IBM PC'''. Par la suite, de nombreux ordinateurs ont tenté de reproduire l'IBM PC originel, avec parfois quelques modifications mineures. De tels ordinateurs ''IBM PC compatibles'', ont été très nombreux, pour des raisons diverses. Le fait d'utiliser des composants banalisés, facilement disponibles, ainsi qu'une bonne documentation de l'IBM PC originel, a grandement aidé. Les IBM PC compatibles ont progressivement évolué pour donner les PC actuels. L'IBM PC compatible a donné naissance à de nombreux standards divers.
===L'IBM PC originel et l'IBM PC XT===
[[File:IBM PC XT 02.jpg|vignette|IBM PC XT.]]
Nous allons commencer par voir l'IBM PC originel, et son successeur : l'IBM Personal Computer XT. Nous les appelerons tous deux l'IBM PC. L'IBM PC utilisait un processeur Intel 8088, qui était un processeur 8 bits. Ils utilisaient un bus système unique, appelé le '''bus XT'''. Le bus système allait à 4.77 MHz, soit la même fréquence que le processeur. C'était un bus de 8 bits, ce qui collait parfaitement avec les processeurs 8 bits commercialisés par Intel à l'époque.
L'IBM PC comprenait une mémoire ROM avec de quoi faire fonctionner le PC. La ROM en question contenait un programme minimal, appelé le '''BIOS''', sans lequel le PC ne fonctionnait pas du tout. Il servait de base pour le système d'exploitation et MS-DOS ne fonctionnait pas sans elle. De nos jours, son rôle est plus limité : sans elle, le PC ne démarre pas. Mais nous détaillerons cela dans le prochain chapitre.
En plus de la ROM pour le BIOS, l'IBM PC avait quatre mémoires ROM dédiée au langage de programmation BASIC. Lorsque le PC démarrait, il ne bootait pas un système d'exploitation, mais lançait l'interpréteur pour le langage BASIC. De nos jours, ce serait l'équivalent d'un ordinateur qui boote directement sur du Python, à savoir la console Python que vous avez peut-être déjà utilisé si vous avez testé Python. Ceux qui ont déjà touché à un ordinateur de l'époque savent ce que ca veut dire, mais c'est malheureusement très difficile à expliquer sans ce genre d'expérience. Toujours est-il que c'était une sorte de norme à l'époque
: les ordinateurs bootaient généralement sur un interpréteur BASIC.
[[File:XT Bus pins.svg|vignette|Connecteur du bus XT.]]
Les PC étaient conçus pour qu'on branche des '''cartes d'extension''', à savoir des cartes électroniques qu'on branchait sur la carte mère, à l'intérieur du PC. Les cartes d'extension de l'époque étaient surtout des cartes son ou des cartes graphiques, mais aussi des cartes pour brancher des péripéhriques. par exemple, on pouvait ajouter deux cartes graphiques dans l'IBM PC originel : l'''IBM Monochrome Display Adapter'' et/ou la ''IBM Color Graphics Adapter''. De nos jours, les cartes son sont intégrées à la carte mère, mais les cartes graphiques sont restées des cartes d'extension.
Les cartes d'extension étaient branchées sur un '''connecteur XT''', qui était directement relié au bus XT. Le connecteur XT est illustré ci-contre, mais ne vous en souciez pas trop pour le moment. La carte mère de l'IBM PC avait 5 connecteurs de ce type, qu'on pouvait peupler avec autant de cartes d'extension. L'IBM Personal Computer XT est passé à 8 connecteurs XT, soit trois de plus.
Pour ce qui est des périphériques, l'IBM PC avait plusieurs connecteurs : un port série, un port parallèle, un port pour le clavier, et un port pour un lecteur cassette. Le clavier et le lecteur cassette étaient connectés directement sur la carte mère, qui contenait quelques circuits pour gérer le clavier. Par contre, les deux premiers n'étaient pas connectés à la carte mère. Le port série était en réalité une carte d'extension, branchée sur un connecteur XT. Et il en est de même pour le port parallèle.
Pour ce qui est des supports de stockage, l'IBM PC originel n'avait pas de disque dur et n'avait que des lecteurs de disquette. De plus, le lecteur de disquette n'était pas connecté directement sur la carte mère, mais était connecté à une carte d'extension, branchée sur un connecteur XT. La carte d'extension avait deux connecteurs, un par lecteur de disquette, ce qui fait que les deux lecteurs de disquettes pouvaient être branchés sur une seule carte d'extension. L'IBM Personal Computer XT a ajouté un disque dur, sauf sur quelques sous-modèles spécifiques.
Le PC avait aussi un petit haut-parleur capable de faire des bips.
Pour résumer, l'IBM PC originel se reposait beaucoup sur les cartes d'extension, sa carte mère contenait peu de choses. Enfin, peu de choses... Il y avait un processeur Intel 8088, éventuellement un coprocesseur flottant 8087, de la RAM, de la ROM, et des circuits intégrés assez divers. En voici la liste, certains vous seront familiers, d'autres vous seront inconnus à ce stade du cours :
* les circuits de décodage d'adresse ;
* un contrôleur DMA intel 8273 ;
* un contrôleur d'interruption 8259 ;
* un contrôleur de bus Intel 8288 pour gérer le bus XT ;
* un générateur d'horloge Intel 8284 et un diviseur de fréquence ;
* un ''timer'' Intel 8253, le même que celui étudié dans le chapitre sur les ''timers'' ;
* un contrôleur parallèle 8255.
Les multiplexeurs, registres et portes logiques, sont des circuits de décodage d'adresse, qui permettent de combiner plusieurs RAM en une seule, idem avec la mémoire ROM. Si vous verrez qu'il y a 5 mémoires ROM : une ROM pour le BIOS, et quatre autres ROM pour le BASIC. Les 4 ROM du BASIC sont combinées en une seule mémoire ROM. Pour les RAM, il y en a 8 à 32, qui sont combinées en une seule RAM de 16 à 64 kibioctets.
[[File:IBM 5150 Motherboard.svg|centre|vignette|upright=3|Carte mère de l'IBM 5150, un modèle de l'IBM PC.]]
===L'architecture d'un IBM PC compatible 16 bits===
Les PC suivants sont passés à des processeurs 16 bits, mais c'était toujours des processeurs x86 d'Intel, à savoir des Intel 286 et 386. La RAM a grossi, quelques entrées-sorties ont été ajoutées, mais l'architecture globale est plus moins resté le même. C'est surtout au niveau du bus et des périphériques que les changements majeurs ont eu lieu.
[[File:ISA Bus pins.svg|vignette|Connecteur ISA.]]
Les PC 16 bits utilisaient un bus système unique, sur lequel tout était connecté : le processeur, la RAM, la ROM, les cartes d'extension et tout le reste. Le bus en question s'appelait le '''bus AT''', mais il a rapidement été renommé en '''bus ISA''' (''Industry Standard Architecture''). Le bus ISA était prévu pour avoir une compatibilité avec le bus 8 bits de l'IBM PC originel. D'ailleurs, cela se ressent jusque dans le connecteur utilisé : le connecteur ISA est un connecteur XT qu'on a fusionné avec un second connecteur pour l'étendre de 8 à 16 bits.
Les PC 16 bits avaient toujours un port série, un port parallèle, un clavier, un lecteur de disquette et des cartes d'extension. Des disques durs pouvaient être ajoutés, aussi. Mais pour ces périphériques, un changement majeur a eu lieu comparé à l'IBM PC originel. L'IBM PC originel utilisait des cartes d'extension pour tout, sauf le clavier. Mais maintenant, les périphériques ne sont plus connectés à une carte d'extension. À la place, les circuits de la carte d'extension sont déplacés sur la carte mère. Mais n'allez pas croire qu'ils étaient connectés directement au bus ISA, il y avait des intermédiaires.
Le clavier était relié à un '''contrôleur de clavier''', qui faisait l'interface entre le connecteur du clavier et le bus ISA. Le contrôleur de clavier était appelé le ''Keyboard Controler'', abrévié en KB. Il recevait ce qui est tapé au clavier et traduisait cela en quelque chose de compréhensible par l'ordinateur.
Les autres périphériques étaient connectés à un circuit intégré dédié : l''''Intel 82091AA'''. Il était connecté au lecteur de disquette, au port série et au port parallèle. Il servait d'intermédiaire entre ces périphériques et le bus ISA. Vous pouvez le voir comme une sorte de répartiteur, mais qui ne serait pas connecté sur le processeur et la RAM
Enfin, il ne faut pas oublier les autres composants présents sur l'IBM PC originel. Le BIOS est toujours là, de même que les ''timers'' Intel 8253 PIT, le contrôleur d'interruption Intel 8259 et le contrôleur DMA Intel 8237. Les PC 16 bits ont aussi intégré une ''Real Time Clock'' (RTC). Pour rappel, c'est un composant qui permet au PC de mémoriser la date et l'heure courante, à la seconde près. Le tout est résumé dans le schéma ci-dessous.
[[File:Architecture de l'IBM PC compatible.png|centre|vignette|upright=2.5|Architecture de l'IBM PC compatible]]
Un point important est que le bus ISA allait à la même fréquence que le processeur, vu que c'était un bus système. Les processeurs de l'époque étaient des CPU 286 d'Intel, ou le 386 d'Intel. Les Intel 286 allaient de 4 MHz minimum, à 25 MHz maximum. Le 386, quant à lui, allait de 12 à 40 MHz. Le bus ISA devait aller à cette fréquence, il était synchrone avec le processeur.
Par la suite, les processeurs ont gagné en performance, ce qui fait que le bus ISA est devenu trop lent pour le processeur. Une idée a alors été de conserver le bus ISA, pour des raisons de compatibilité, mais de le reléguer comme bus secondaire. L'ordinateur contient alors deux bus : un bus système, et un bus ISA secondaire. Le lien entre les deux est réalisé par un '''pont ISA''', ''ISA Bridge'' en anglais. Le bus ISA fonctionnait alors sa fréquence usuelle, alors que le bus système était beaucoup plus rapide. Le bus système fonctionnait à une fréquence bien plus élevée, ce qui fait que le processeur pouvait communiquer à pleine vitesse, notamment avec la RAM. Le processeur n'était alors plus forcé à aller à la même fréquence que le bus ISA
[[File:Architecture de l'IBM PC compatible avec bridge ISA.png|centre|vignette|upright=2.5|Architecture de l'IBM PC compatible avec bridge ISA]]
Les PC de l'époque intégraient donc plusieurs bus séparés. Vous avez bien lu : plusieurs bus ! Ici, il s'agit de ce que j'appelle des '''bus en cascade''', à savoir qu'un bus est connecté à un autre bus par un intermédiaire. Au passage, si j'aborde ces exemples, car c'est pareil sur les ordinateurs modernes. Le pont ISA a été remplacé par des circuits différents, mais qui ont un rôle assez similaire. Le ''chipset'' de votre carte mère n'est qu'un lointain descendant du pont ISA, qui s'interface avec des bus différents.
===L'arrivée des standards AT et IDE pour les disques durs===
Initialement, les disques durs étaient placés dans l'ordinateur et étaient connectés sur le bus ISA, via une carte d'extension ISA. En clair, il fallait connecter le disque dur sur une carte d'extension, et non sur la carte mère. Les cartes d'extension en question permettaient de connecter un ou plusieurs disques durs, parfois des lecteurs de disquette supplémentaires. Les cartes ISA de ce type faisaient juste l'interface entre le bus ISA et les disques durs, rien de plus. L'interface en question a été standardisée, ce qui a donné le standard ''AT Bus Attachment'', qui a été abrévié en ATA.
Et ce n'était pas que pour les disques durs, de nombreux composants étaient dans ce cas. Une carte d'extension servait d'intermédiaire entre eux et la carte mère. Les cartes d'extension en question étaient appelées des ''Host bus adapter''.
[[File:Acculogic sIDE-4 Controller ISA.jpg|centre|vignette|upright=2|Carte ISA d'interface disque dur, de marque Acculogic.]]
Mais les choses ont rapidement évoluées, que ce soit du côté des cartes mères que du côté des disques durs. Le '''standard IDE''' a permis de brancher un disque dur directement sur la carte mère, sans passer par une carte d'interface ISA. Pour cela, la carte mère réservait un connecteur ISA pour le disque dur, renommé '''connecteur ATA'''. Pour que cela soit possible, il a fallu rajouter des circuits sur la carte mère. Tout ce qui était sur les cartes d'interface ISA s'est retrouvé sur la carte mère.
[[File:Ajout des ports IDE sur la carte mère.png|centre|vignette|upright=2|Ajout des ports IDE sur la carte mère]]
En réalité, les connecteurs ATA étaient des connecteurs ISA simplifiés. Un connecteur ISA avait en tout 98 broches, alors qu'un connecteur ATA n'en contient que 40. Les broches qui étaient inutiles pour les disques durs ont simplement été enlevées. Et qui dit connecteur spécialisé, dit câble spécialisé. Les disques durs étaient branchés sur le connecteur AT grâce à un câble ATA, sur lequel on pouvait connecter deux disques durs.
[[File:ATA Plug.svg|centre|vignette|upright=2|Connecteur ATA.]]
[[File:ATA cables.jpg|centre|vignette|upright=2|Cable ATA.]]
Il était donc possible de connecter deux disques durs sur un seul connecteur ATA. Et cette possibilité est devenue d'autant plus utile par la suite. A partir de la version 2, ATA supportait aussi les lecteurs de disquettes, les lecteurs de CD/DVD, et bien d'autres supports de stockage. Il était alors possible de connecter un lecteur CD et un disque dur sur un seul connecteur. Les cartes mères avaient généralement deux connecteurs ATA, et n'avaient pas besoin de plus. C'était suffisant pour connecter un disque dur, un lecteur de disquette et un lecteur CD, configuration courante entre les années 90 et 2000.
Un câble est donc connecté à deux supports de stockage. Pour distinguer les deux, le standard ATA ajoute une possibilité de configuration. Sur un câble, il doit y avoir un support de stockage "maitre" et un support "esclave". C'était la terminologie de l'époque, que je reproduis ici, même si elle est fortement trompeuse. N'allez pas croire que cela implique que l'un ait des avantages sur l'autre. Le support 'maitre" n'a pas droit à plus de bande passante, il n'a pas la priorité sur l'autre, rien du tout. Il s'agit juste d'un nombre qui permet de savoir avec qui le processeur communique, qui vaut 0 pour le premier support, 1 pour l'autre. Une sorte d'adresse de 1 bit, si l'on veut.
[[File:ATA-Konfiguration02.png|centre|vignette|upright=2|Configuration ATA.]]
Pour configurer un support de stockage en mode "maitre" ou "esclave", le support de stockage avait quelques pins dédiés. Il suffisait de placer un détrompeur en plastique sur les pins adéquats. Les pins se trouvaient à l'arrière du disque dur ou du lecteur de CD/DVD/Disquette/autre.
[[File:HDD Master and Slave Description.jpg|centre|vignette|upright=2|Configuration ''Master/Slave''.]]
===L'architecture d'un PC avec un processeur Intel 486===
Maintenant, passons aux ordinateurs 32 bits, avec l'exemple d'un PC avec un processeur 486 d'Intel. A cette époque, le bus ISA était devenu trop limité et était en place d'être remplacé par le bus PCI, qui avait la même fonction. De nombreuses cartes d'extension utilisaient déjà ce standard et étaient branchées sur des connecteurs PCI dédiés, différents des connecteurs ISA. Intuitivement, on se dit que le bus PCI remplaçait le bus ISA, mais les choses étaient plus compliquées. Les disques durs gardaient leur connecteur ATA, et ne passaient pas par le bus PCI. Ils avaient un bus IDE séparé, qui était un bus ISA modifié.
Là encore, les processeurs étaient devenus beaucoup plus rapides que le bus PCI. Les deux allaient à des fréquences assez différentes, ce qui fait que le bus PCI était séparé du bus système. Il y avait alors deux implémentations possibles.
* La première utilise un répartiteur unique, relié au processeur, à la RAM, au bus PCI, et au bus IDE.
* La seconde utilise un bus système séparé du bus PCI, avec un '''pont PCI''' pour faire l'interface entre les deux.
Le '''''System Controler''''' était un circuit intégré, placé sur la carte mère, qui peut servir soit de pont PCI, soit de répartiteur. Le répartiteur PCI sert d'intermédiaire avec le bus PCI, mais aussi avec le bus IDE, utilisé pour les disques durs, aussi appelé le bus ''Parallel ATA''. Il peut aussi être connecté au processeur, à la mémoire RAM, ainsi qu'à la mémoire cache, mais cela ne sert que quand il est utilisé comme répartiteur.
[[File:Architecture d'un PC utilisant un bus PCI, implémentation avec un répartiteur.png|centre|vignette|upright=2|Architecture d'un PC utilisant un bus PCI, implémentation avec un répartiteur]]
Pour des raisons de compatibilité, le bus ISA avait été conservé, aux côtés du bus PCI. Il y avait un pont ISA en plus du pont/répartiteur PCI. Une implémentation possible aurait été de connecter les deux ponts ISA et PCI à un bus système unique. Mais cette solution n'a pas été retenue. La raison est que le bus PCI et le bus ISA ont des performances très différentes. Le bus PCI est très rapide, le bus ISA beaucoup plus lent. La différence est d'un ordre de grandeur, environ. Dans ces conditions, il est possible de faire passer les communications ISA à travers le bus PCI. Pour cela, le pont ISA est directement connecté sur le pont PCI, comme illustré ci-dessous.
Et il en est de même pour le bus dédié aux disques durs. En effet, les disques durs étaient autrefois reliés au bus ISA, mais cela a changé depuis. Ils disposent maintenant de leur propre bus dédié, le '''bus IDE''', qui est un bus ISA simplifié. Et ce bus ISA simplifié était connecté directement sur le pont PCI.
[[File:Architecture de l'IBM PC compatible avec pont PCI.png|centre|vignette|upright=2|Architecture de l'IBM PC compatible avec pont PCI]]
Dans ce qui va suivre, nous allons étudier un exemple qui utilise un bus système séparé, avec un pont PCI, sans répartiteur. Voilà pour les grandes lignes, mais le schéma ci-dessous montre que tout est plus complexe. Vous remarquerez des connexions optionnelles entre le pont PCI et la mémoire RAM et la mémoire cache. La raison est que le pont PCI peut aussi servir de répartiteur en remplacement du bus système. Concrètement, on peut alors retirer le bus système. La mémoire, le bus PCI, le bus ISA, le bus IDE, le processeur et la RAM sont alors connectés au répartiteur PCI, qui sert d'intermédiaire central entre tous ces composants. Mais ce n'est pas la solution qui a été retenue dans notre exemple.
[[File:Intel486-Typ PCI System.png|centre|vignette|upright=2|PC IBM compatible avec un 486, un bus PCI et un bus ISA. Le ''host bus'' est le bus système.]]
Le pont ISA sert ici d'intermédiaire entre le bus système et le bus ISA. De plus, il a été amélioré sur de nombreux points. Il inclut notamment des circuits qui étaient autrefois sur la carte mère, à savoir le contrôleur DMA 82C87 et le contrôleur d'interruption 82C59, ainsi que les ''timers'' Intel 82C54. Les composants restants sont eux reliés sur un quatrième bus : le bus X, l'ancêtre du bus ''Low Pin Count''. Le bus X était celui du BIOS, du contrôleur de clavier, de la ''Real Time Clock'', et du contrôleur de périphérique 82091AA d'Intel.
[[File:ISA Bridge schematic.png|centre|vignette|upright=2|ISA Bridge.]]
===L'architecture des PC des années 90-2000===
Par la suite, les ponts PCI et ISA ont évolué avec l'évolution des bus de l'ordinateur. Le bus ISA a progressivement été remplacé par d'autres bus, comme le bus ''Low Pin Count'', le bus PCI a été remplacé par le PCI Express, d'autres bus ont été ajoutés, etc. Mais la séparation du ''chipset'' en deux a été conservée.
[[File:Chipset schematic.svg|vignette|upright=1.0|Chipset séparé en northbridge et southbridge.]]
Le pont PCI et le pont ISA ont été remplacés respectivement par le '''pont nord''' et le '''pont sud''', plus connus par leurs noms anglais de ''northbridge'' et de ''southbridge''. Le pont nord servait d'interface entre le processeur, la mémoire et la carte graphique et est connecté à chacun par un bus dédié. Il intégrait aussi le contrôleur mémoire. Le pont sud est le répartiteur pour les composants lents, à savoir l'USB, l'Ethernet, etc. Le bus qui relie le processeur au pont nord était appelé le '''''Front Side Bus''''', abrévié en FSB.
[[File:IMac Chipset.png|centre|vignette|upright=2|Chipset séparé en northbridge et southbridge.]]
Un point important est que le bus PCI est devenu un bus assez lent, ce qui fait qu'il a finit par être connecté au pont sud. Le pont PCI est donc devenu le pont sud, dans le courant des années 2000. Durant un moment, un équivalent du pont ISA a subsisté dans un circuit de '''''Super IO'''''. Concrètement, il s'occupait du lecteur de disquette, du port parallèle, du port série, et des ports PS/2 pour le clavier et la souris. Mais il ne gérait pas le bus ISA, mais son remplaçant, le bus ''Low Pin Count''.
[[File:Motherboard diagram fr.svg|centre|vignette|upright=1.5|Carte mère avec circuit Super IO.]]
===L'architecture des PC depuis les années 2000===
Depuis la sortie du processeur AMD Athlon 64, le pont nord a été fusionné dans le processeur. La fusion ne s'est pas faite en une fois, des fonctionnalités ont progressivement été progressivement intégrées dans le processeur. Le pont sud est resté, mais il a alors été progressivement connecté directement au processeur. La raison derrière cette intégration est que les processeurs avaient de plus en plus de transistors à leur disposition. Ils en ont profité pour intégrer le pont nord. Et cela permettait de simplifier le câblage des cartes mères, sans pour autant rendre vraiment plus complexe la fabrication du processeur. Les industriels y trouvent leur compte.
La première étape a été l'intégration du contrôleur mémoire a été intégré au processeur. Concrètement, le résultat était que la mémoire RAM n'était plus connectée au pont nord, mais était connectée directement au processeur ! Il y a donc eu un retour d'un bus mémoire, mais spécialisé pour la mémoire RAM. En théorie, une telle intégration permet diverses optimisations quant aux transferts avec la mémoire RAM. Les transferts ne passent pas par un répartiteur, ce qui réduit le temps d'accès à la mémoire RAM. Ajoutons de sombres histoires de prefetching, d'optimisation des commandes, et j'en passe. Toujours est-il que le pont nord ne servait alors d'intermédiaire que pour les ports PCI Express, et le pont sud.
[[File:X58 Block Diagram.png|centre|vignette|upright=2|Chipset X58 d'Intel.]]
Par la suite, la carte graphique fût aussi connectée directement sur le processeur. Le processeur incorpore pour cela des contrôleurs PCI-Express. Le pont nord a alors disparu complétement, son intégration dans le processeur était complète. Sur les cartes mères Intel récentes, le pont sdud subsiste, il est appelé le ''Platform Controler Hub'', ou PCH. L'organisation des bus sur la carte mère qui résulte de cette connexion du processeur à la carte graphique, est illustrée ci-dessous, avec l'exemple du PCH.
[[File:Intel 5 Series architecture.png|centre|vignette|upright=2|Intel 5 Series architecture]]
<noinclude>
{{NavChapitre | book=Fonctionnement d'un ordinateur
| prev=L'interface électrique entre circuits intégrés et bus
| prevText=L'interface électrique entre circuits intégrés et bus
| next=La hiérarchie mémoire
| nextText=La hiérarchie mémoire
}}
</noinclude>
jkofu64ilyzkscj36k4t222rlccc4qc
765745
765744
2026-05-01T22:06:47Z
Mewtow
31375
/* Les microcontrôleurs */
765745
wikitext
text/x-wiki
Dans les chapitres précédents, nous avons vu comment représenter de l'information, la traiter et la mémoriser avec des circuits. Mais un ordinateur n'est pas qu'un amoncellement de circuits et est organisé d'une manière bien précise. Il est structuré autour de trois circuits principaux :
* un '''processeur''', qui manipule l'information et donne un résultat ;
* une '''mémoire''' qui mémorise les données à manipuler ;
* les '''entrées/sorties''', qui permettent à l'ordinateur de communiquer avec l'extérieur.
[[File:Architecture Von Neumann.png|centre|vignette|upright=2|Architecture d'un système à mémoire.]]
Pour faire simple, le processeur est un circuit qui s'occupe de faire des calculs. Rien d'étonnant à cela. Je rappelle que tout est codé par des nombres dans un ordinateur, ce qui fait que manipuler des nombres revient simplement à faire des calculs. Un ordinateur n'est donc qu'une grosse calculatrice améliorée, et le processeur est le composant qui fait les calculs.
La mémoire s'occupe purement de la mémorisation des données, des nombres sur lesquelles faire des calculs. Pour être plus précis, il y a deux mémoires : une pour les données proprement dites, une autre pour le programme à exécuter. La première est la '''mémoire RAM''', la seconde est la '''mémoire ROM'''. Nous détaillerons ce que sont ces deux mémoires dans la suite du chapitre, mais sachez que nous avions déjà rencontré ces deux types de mémoires dans les chapitres sur les registres et les mémoires adressables.
Les entrées-sorties permettent au processeur et à la mémoire de communiquer avec l'extérieur et d'échanger des informations avec des périphériques. Les '''périphériques''' regroupent, pour rappel, tout ce est branché sur un ordinateur, mais n'est pas à l'intérieur de celui-ci.
Le processeur, les mémoires et les entrées-sorties communiquent ensemble via un '''réseau d'interconnexions'''. Le terme est assez barbare, mais rien de compliqué sur le principe. C'est juste un ensemble de fils électriques qui relie les différents éléments d'un ordinateur. Les interconnexions sont souvent appelées le bus de communication, mais le terme est un abus de langage, comme on le verra plus bas.
Afin de simplifier les explications, on va supposer que le réseau d'interconnexion est le suivant. Tout est connecté au processeur. Il y a des interconnexions entre le processeur et la mémoire RAM, d'autres interconnexions entre processeur et mémoire ROM, et d'autres entre le processeur et les entrées-sorties. Nous verrons que d'autres réseaux d'interconnexions fusionnent certaines interconnexions, pour les partager entre la ROM et la RAM, par exemple. Mais pour le moment, gardez le schéma ci-dessous en tête.
[[File:Réseau d'interconnexion avec un processeur au centre.png|centre|vignette|upright=2|Réseau d'interconnexion avec un processeur au centre]]
==Les mémoires RAM et ROM==
La mémoire est le composant qui mémorise des informations, des données. Dans la majorité des cas, la mémoire est composée de plusieurs '''cases mémoire''', chacune mémorisant plusieurs bits, le nombre de bits étant identique pour toutes les cases mémoire. Dans le cas le plus simple, une case mémoire mémorise un '''octet''', un groupe de 8 bits. Mais les mémoires modernes mémorisent plusieurs octets par case mémoire : elles ont des cases mémoires de 16, 32 ou 64 bits, soit respectivement 2/4/8 octets. De rares mémoires assez anciennes utilisaient des cases mémoires contenant 1, 2, 3, 4, 5, 6 7, 13, 17, 23, 36 ou 48 bits. Mais ce n'était pas des mémoires électroniques, aussi nous allons les passer sous silence.
Tout ce qu'il faut savoir est que la quasi-totalité des mémoires électronique a un ou plusieurs octets par case mémoire. Pour simplifier, vous pouvez imaginer qu'une mémoire RAM est un regroupement de registre, chacun étant une case mémoire. C'est une description pas trop mauvaise pour décrire les mémoires RAM, qu'on abordera dans ce qui suit.
{|class="wikitable"
|+ Contenu d'une mémoire, case mémoire de 16 bits (deux octets)
|-
! Case mémoire N°1
| 0001 0110 1111 1110
|-
! Case mémoire N°2
| 1111 1110 0110 1111
|-
! Case mémoire N°3
| 0001 0000 0110 0001
|-
! Case mémoire N°4
| 1000 0110 0001 0000
|-
! Case mémoire N°5
| 1100 1010 0110 0001
|-
! ...
| ...
|-
! Case mémoire N°1023
| 0001 0110 0001 0110
|-
! Case mémoire N°1024
| 0001 0110 0001 0110
|}
Dans ce cours, il nous arrivera de partir du principe qu'il y a un octet par case mémoire, par souci de simplification. Mais ce ne sera pas systématique. De plus, il nous arrivera d'utiliser le terme adresse pour parler en réalité de la case mémoire associée, par métonymie.
===La capacité mémoire===
Bien évidemment, une mémoire ne peut stocker qu'une quantité finie de données. Et à ce petit jeu, certaines mémoires s'en sortent mieux que d'autres et peuvent stocker beaucoup plus de données que les autres. La '''capacité''' d'une mémoire correspond à la quantité d'informations que celle-ci peut mémoriser. Plus précisément, il s'agit du nombre maximal de bits qu'une mémoire peut contenir. Elle est le produit entre le nombre de cases mémoire, et la taille en bit d'une case mémoire.
Toutes les mémoires actuelles utilisant des cases mémoire d'un ou plusieurs octets, ce qui nous arrange pour compter la capacité d'une mémoire. Au lieu de compter cette capacité en bits, on préfère mesurer la capacité d'une mémoire avec le nombre d'octets qu'elle contient. Mais les mémoires des PC font plusieurs millions ou milliards d'octets. Pour se faciliter la tâche, on utilise des préfixes pour désigner les différentes capacités mémoires. Vous connaissez sûrement ces préfixes : kibioctets, mébioctets et gibioctets, notés respectivement Kio, Mio et Gio.
{|class="wikitable"
|-
!Préfixe!!Capacité mémoire en octets!!Puissance de deux
|-
||Kio||1024||2<sup>10</sup> octets
|-
||Mio||1 048 576||2<sup>20</sup> octets
|-
||Gio||1 073 741 824||2<sup>30</sup> octets
|}
On peut se demander pourquoi utiliser des puissances de 1024, et ne pas utiliser des puissances un peu plus communes ? Dans la majorité des situations, les électroniciens préfèrent manipuler des puissances de deux pour se faciliter la vie. Par convention, on utilise souvent des puissances de 1024, qui est la puissance de deux la plus proche de 1000. Or, dans le langage courant, kilo, méga et giga sont des multiples de 1000. Quand vous vous pesez sur votre balance et que celle-ci vous indique 58 kilogrammes, cela veut dire que vous pesez 58 000 grammes. De même, un kilomètre est égal à 1000 mètres, et non 1024 mètres.
Autrefois, on utilisait les termes kilo, méga et giga à la place de nos kibi, mebi et gibi, par abus de langage. Mais peu de personnes sont au courant de l'existence de ces nouvelles unités, et celles-ci sont rarement utilisées. Et cette confusion permet aux fabricants de disques durs de nous « arnaquer » : Ceux-ci donnent la capacité des disques durs qu'ils vendent en kilo, méga ou giga octets : l’acheteur croit implicitement avoir une capacité exprimée en kibi, mébi ou gibi octets, et se retrouve avec un disque dur qui contient moins de mémoire que prévu.
===Lecture et écriture : mémoires ROM et RWM===
Pour simplifier grandement, on peut grossièrement classer les mémoires en deux types : les ''Read Only Memory'' et les ''Read Write Memory'', aussi appelées mémoires ROM et mémoires RWM. Pour les '''mémoires ROM''', on ne peut pas modifier leur contenu. On peut y récupérer une donnée ou une instruction : on dit qu'on y accède en lecture. Mais on ne peut pas modifier les données qu'elles contiennent. Quant aux '''mémoires RWM''', on peut y accéder en lecture (récupérer une donnée stockée en mémoire), mais aussi en écriture : on peut stocker une donnée dans la mémoire, ou modifier une donnée existante.
Tout ordinateur contient au minimum une ROM et une RWM (souvent une mémoire RAM), les deux n'ont pas exactement le même rôle. Pour simplifier, la mémoire ROM mémorise le programme à exécuter, la mémoire RWM stocke des données. Il a existé des ordinateurs où la mémoire RWM était une mémoire magnétique, voire acoustique, mais ce n'est plus le cas de nos jours. Pour les ordinateurs modernes, la mémoire RWM est une mémoire électronique. Pour faire la différence avec ces anciennes mémoires RWM, elle est appelée la '''mémoire RAM'''. Il s'agit d'une mémoire qui stocke temporairement des données que le processeur doit manipuler (on dit qu'elle est volatile). Elle s'efface complètement quand on coupe l'alimentation de l'ordinateur.
Il existe d'autres différences entre mémoire RWM et RAM :
* la mémoire RWM peut ne pas être volatile et donc conserver les données écrites ;
* la mémoire RAM possède un temps d'accès constant aux données (quelle que soit l'adresse), ce qui n'est pas garanti pour les mémoires RWM.
Outre le programme à exécuter, la mémoire ROM peut mémoriser des constantes, des données qui ne changent pas. Elles ne sont jamais modifiées et gardent la même valeur quoi qu'il se passe lors de l'exécution du programme. En conséquence, elles ne sont jamais accédées en écriture durant l'exécution du programme, ce qui fait que leur place est dans une mémoire ROM. La mémoire RWM est alors destinée aux données temporaires, qui changent ou sont modifiées lors de l'exécution du programme, et qui sont donc manipulées aussi bien en lecture et en écriture. La mémoire RWM mémorise alors les variables du programme à exécuter, qui sont des données que le programme va manipuler. Pour les systèmes les plus simples, la mémoire RWM ne sert à rien de plus.
[[File:Espaces d'adressage sur une archi harvard modifiée.png|centre|vignette|upright=2.5|Espaces d'adressage sur une archi harvard modifiée]]
Pour donner un exemple de données stockées en ROM, on peut prendre l'exemple des anciennes consoles de jeu 8 et 16 bits. Les jeux vidéos sur ces consoles étaient placés dans des cartouches de jeu, précisément dans une mémoire ROM à l'intérieur de la cartouche de jeu. La ROM mémorisait non seulement le code du jeu, le programme du jeu vidéo, mais aussi les niveaux et les ''sprites'' et autres données graphiques.
Une conséquence est que les consoles 8/16 bits n'avaient pas besoin de beaucoup de RAM, comparé aux ordinateurs de l'époque, vu qu'une grande partie des données utiles étaient dans une ROM directement accessible par le processeur. À l'opposé, les micro-ordinateurs devaient copier les données d'un jeu depuis une disquette dans la mémoire RAM, ce qui demandait d'avoir plus de RAM. Le passage au support CD sur les consoles 32 bits a eu la même conséquence. Le processeur ne pouvant pas lire directement le CD à sa guise, il fallait copier les données du CD en RAM. D'où l'apparition de temps de chargement assez longs, inexistants sur support cartouche.
===L'adressage mémoire===
Sur une mémoire RAM ou ROM, on ne peut lire ou écrire qu'une case mémoire, qu'un registre à la fois : une lecture ou écriture ne peut lire ou modifier qu'une seule case mémoire. Techniquement, le processeur doit préciser à quel case mémoire il veut accéder à chaque lecture/écriture. Pour cela, chaque case mémoire se voit attribuer un nombre binaire unique, l''''adresse''', qui va permettre de le sélectionner et de l'identifier celle-ci parmi toutes les autres. En fait, on peut comparer une adresse à un numéro de téléphone (ou à une adresse d'appartement) : chacun de vos correspondants a un numéro de téléphone et vous savez que pour appeler telle personne, vous devez composer tel numéro. Les adresses mémoires en sont l'équivalent pour les cases mémoire.
[[File:Adressage mémoire.png|centre|vignette|upright=2|Exemple : on demande à la mémoire de sélectionner la case mémoire d'adresse 1002 et on récupère son contenu (ici, 17).]]
L'adresse mémoire est générée par le processeur. Le processeur peut parfaitement calculer des adresses, en extraire du programme qu'il exécute, et bien d'autres choses. Nous détaillerons d'ailleurs les mécanismes pour dans les chapitres portant sur les modes d'adressage du processeur. Mais pour le moment, nous avons juste besoin de savoir que c'est le processeur qui envoie des adresses aux mémoires RAM et ROM.
Les adresses générées par le processeur sont alors envoyées à la RAM ou la ROM via une connexion dédiée, un ensemble de fils qui connecte le processeur à la mémoire : le '''bus d'adresse mémoire'''. L'adresse sélectionne une case mémoire, le processeur peut alors récupérer la donnée dedans pour une lecture, écrire une donnée pour l'écriture. Pour cela, un second ensemble de fil connecte le processeur à la RAM/ROM, mais cette fois-ci pour échanger des données. Il s'agit du '''bus de données mémoire'''. Les deux sont souvent regroupés sous le terme de '''bus mémoire'''.
Un ordinateur contient toujours une RAM et une ROM, ce qui demande aux bus mémoire de s'adapter à la présence de deux mémoires. Il y a alors deux solutions, illustrées dans les deux schémas ci-dessous. Avec la première, il y a un seul bus mémoire partagé entre la RAM et la ROM, comme illustré ci-dessous. Une autre solution utilise deux bus séparés : un pour la RAM et un autre pour la ROM. Nous verrons les différences pratiques entre les deux à la fin du chapitre. Pour le moment, nous allons partir du principe qu'il y a un bus pour la mémoire ROM, et un autre bus pour la RAM.
[[File:CPT-System-Architecture-gapfill1-ANS.svg|centre|vignette|upright=2|Architecture avec une ROM et une RAM.]]
[[File:Réseau d'interconnexion avec un processeur au centre.png|centre|vignette|upright=2|Réseau d'interconnexion avec un processeur au centre]]
===L'alignement mémoire : introduction===
Plus haut, nous avions dit qu'il y a une adresse par case mémoire, chaque case mémoire contenant un ou plusieurs octets. Mais les processeurs modernes partent du principe que la mémoire a un octet par adresse, pas plus. Et ce même si la mémoire reliée au processeur utilise des cases mémoires de 2, 3, 4 octets ou plus. D'ailleurs, la majorité des mémoires RAM actuelle a des cases mémoires de 64 bits, soit 8 octets par case mémoire. Les raisons à cela sont multiple, mais nous les verrons en détail dans le chapitre sur l'alignement mémoire. Toujours est-il qu'il faut distinguer les '''adresses mémoire''' et les '''adresses d'octet''' gérées par le processeur.
Le processeur génère des adresses d'octet, qui permettent de sélectionner un octet bien précis. L'adresse d'octet permet de sélectionner un octet parmi tous les autres. Mais la mémoire ne comprend pas directement cette adresse d'octet. Heureusement, l'octet en question est dans une case mémoire bien précise, qui a elle-même une adresse mémoire bien précise. L'adresse d'octet est alors convertie en une adresse mémoire, qui sélectionne la case mémoire adéquate, celle qui contient l'octet voulu. La case mémoire entière est lue, puis le processeur ne récupère que les données adéquates. Pour cela, des circuits d'alignement mémoire se chargent de faire la conversion entre adresses du processeur et adresse mémoire. Nous verrons cela dans le détail dans le chapitre sur l'alignement mémoire.
Il existe des mémoires qui n'utilisent pas d'adresses mémoire, mais passons : ce sera pour la suite du cours.
==Le processeur==
Dans les ordinateurs, l'unité de traitement porte le nom de '''processeur''', ou encore de '''''Central Processing Unit''''', abrévié en CPU. Le rôle principal du processeur est de faire des calculs. La plupart des processeurs actuels supportent au minimum l'addition, la soustraction et la multiplication. Quelques processeurs ne gèrent pas la division, qui est une opération très gourmande en circuit, peu utilisée, très lente. Il arrive que des processeurs très peu performants ne gèrent pas la multiplication, mais c'est assez rare.
Un processeur ne fait pas que des calculs. Tout processeur est conçu pour effectuer un nombre limité d'opérations bien précises, comme des calculs, des échanges de données avec la mémoire, etc. Ces opérations sont appelées des '''instructions'''. Les plus intuitives sont les '''instructions arithmétiques''', qui font des calculs, comme l'addition, la soustraction, la multiplication, la division. Mais il y a aussi des '''instructions d'accès mémoire''', qui échangent des données entre la mémoire RAM et le processeur. Les autres instructions ne sont pas très intuitives, aussi passons-les sous silence pour le moment, tout deviendra plus clair dans les chapitres sur le processeur.
===Le processeur exécute un programme, une suite d'instructions===
Tout processeur est conçu pour exécuter une suite d'instructions dans l'ordre demandé, cette suite s'appelant un '''programme'''. Ce que fait le processeur est défini par la suite d'instructions qu'il exécute, par le programme qu'on lui demande de faire. Les instructions sont exécutées dans un ordre bien précis, les unes après les autres. L'ordre en question est décidé par le programmeur. La totalité des logiciels présents sur un ordinateur sont des programmes comme les autres.
Le programme à exécuter est stockée dans la mémoire de l'ordinateur. C'est ainsi que l'ordinateur est rendu programmable : modifier le contenu de la mémoire permet de changer le programme exécuté. Mine de rien, cette idée de stocker le programme en mémoire est ce qui a fait que l’informatique est ce qu'elle est aujourd’hui. C'est la définition même d'ordinateur : appareil programmable qui stocke son programme dans une mémoire modifiable.
Une instruction est codée comme les données : sous la forme de suites de bits. Telle suite de bit indique qu'il faut faire une addition, telle autre demande de faire une soustraction, etc. Pour simplifier, nous allons supposer qu'il y a une instruction par adresse mémoire. Sur la grosse majorité des ordinateurs, les instructions sont placées les unes à la suite des autres dans l'ordre où elles doivent être exécutées. Un programme informatique n'est donc qu'une vulgaire suite d'instructions stockée quelque part dans la mémoire de l'ordinateur.
{|class="wikitable"
|+ Exemple de programme informatique
|-
! Adresse
! Instruction
|-
! 0
| Copier le contenu de l'adresse 0F05 dans le registre numéro 5
|-
! 1
| Charger le contenu de l'adresse 0555 dans le registre numéro 4
|-
! 2
| Additionner ces deux nombres
|-
! 3
| Charger le contenu de l'adresse 0555
|-
! 4
| Faire en XOR avec le résultat antérieur
|-
! ...
| ...
|-
! 5464
| Instruction d'arrêt
|}
Pour exécuter une suite d'instructions dans le bon ordre, le processeur détermine à chaque cycle quelle est la prochaine instruction à exécuter. Pour cela, le processeur mémorise l'adresse de l'instruction en cours dans un registre : le '''Program Counter'''. Je rappelle que des instructions consécutives sont dans des adresses consécutives. Pour passer à la prochaine instruction, il suffit donc d'incrémenter le ''program counter''.
: Si une instruction prend plusieurs octets, plusieurs adresses, il suffit de l'incrémenter du nombre d'octets/adresses.
D'autres processeurs font autrement : chaque instruction précise l'adresse de la suivante, directement dans la suite de bit représentant l'instruction en mémoire. Ces processeurs n'ont pas besoin de calculer une adresse qui leur est fournie sur un plateau d'argent. Sur des processeurs aussi bizarres, pas besoin de stocker les instructions en mémoire dans l'ordre dans lesquelles elles sont censées être exécutées. Mais ces processeurs sont très très rares et peuvent être considérés comme des exceptions à la règle.
Nous venons de voir qu'un processeur contient un registre appelé le ''program counter''. Mais il n'est pas le seul. Pour pouvoir fonctionner, tout processeur doit mémoriser un certain nombre d’informations nécessaires à son fonctionnement, qui sont mémorisées dans des '''registres de contrôle'''. La plupart ont des noms assez barbares (registre d'état, ''program counter'') et nous ne pouvons pas en parler à ce moment du cours. Nous les verrons en temps voulu, mais il est important de préciser qu'ils existent.
===L'intérieur d'un processeur===
Fort de ce que nous savons, nous pouvons expliquer ce qu'il y a à l'intérieur d'un processeur. Le premier point est qu'un processeur fait des calculs, ce qui implique qu'il contient des circuits de calcul. Ils sont regroupés dans une ou plusieurs '''unités de calcul'''. Nous avons déjà vu comment fabriquer une unité de calcul simple, dans un chapitre dédié, et c'est la même qui est présente dans un processeur. Du moins dans les grandes lignes, les circuits des processeurs modernes étant particulièrement optimisés. Il en est de même pour les autres circuits de calcul comme ceux pour les multiplications/division/autres.
Si le processeur fait des calculs, qu'en est-il des opérandes ? Et où sont mémorisés les résultats des opérations ? Pour cela, le processeur incorpore des '''registres généraux'''. Les registres généraux servent à mémoriser les opérandes et résultats des instructions. Ils mémorisent des données, contrairement aux registres de contrôle mentionnés plus haut. Le nombre de registres généraux dépend grandement du processeur. Les tout premiers processeurs se débrouillaient avec un seul registre, mais les processeurs actuels utilisent plusieurs registres, pour mémoriser plusieurs opérandes/résultats. Mais la présence de registres est source de pas mal de petites complications. Par exemple, il faut échanger les données entre la RAM et les registres, il faut gérer l'adressage des registres, etc. Il s'agit là de détails que nous expliquerons dans les chapitres sur le processeur.
Le processeur contient enfin un circuit pour interpréter les instructions, appelé l''''unité de contrôle'''. Elle lit les instructions depuis la mémoire, interprète la suite de bit associée, et commande le reste du processeur pour qu'il exécute l'instruction. Ses fonctions sont assez variées, mais nous allons simplifier en disant qu'elle configure l'unité de calcul et les registres pour faire le bon calcul. Son rôle est d'analyser la suite de bit qui constitue l'instruction, et d'en déduire quelle opération effectuer. Elle gère aussi l'accès à la mémoire RAM, et notamment ce qui est envoyé sur son bus d'adresse.
: Dans ce qui suit, on suppose que le ''program counter'' fait partie de l'unité de contrôle.
Pour résumer, un processeur contient une unité de calcul, des registres et une interface avec la mémoire RAM. Le tout est interconnecté, afin de pouvoir échanger des données. L’ensemble forme le '''chemin de données''', nom qui trahit le fait que c'est là que les données se déplacent et sont traitées. Il faut aussi ajouter l'unité de contrôle pour commander le tout. Elle lit les instructions en mémoire, puis commande le chemin de données pour que l'instruction soit exécutée correctement.
[[File:Microarchitecture d'un processeur.png|centre|vignette|upright=2|Microarchitecture d'un processeur]]
Un processeur parait donc assez simple expliqué comme ça, mais il y a de nombreuses subtilités. L'une d'entre elle est liée aux registres, et notamment à la manière dont on les utilise. Pour expliquer ces subtilités, nous allons voir comment les premiers processeurs fonctionnaient, avant de passer aux processeurs un peu plus modernes. Les tout premiers processeurs n'utilisaient qu'un seul registre, ce qui fait que l'utilisation des registres était très simple. Le passage à plusieurs registres a complexifié le tout.
===D'où viennent les adresses ?===
Il est maintenant temps de répondre à une question qui s'était posée dans la section sur l'adressage : d'où viennent les adresses envoyées à la mémoire ? Pour ce qui est des adresses des instructions, on connait déjà la réponse : c'est le ''program counter'' qui gère tout. Mais pour les données, il y a deux possibilités, qui correspondent à deux types de données : les données statiques et les données dynamiques.
Les '''données statiques''' sont les plus simples : elles existent durant toute la durée de vie du programme. Tant que celui-ci s'exécute, il aura besoin de ces données. En conséquence, il leur réserve une place en mémoire, qui est toujours la même. La donnée se situe donc à une adresse bien précise, qui ne change jamais. Attention cependant : les données peuvent être modifiées, changer de valeur. Le programme écrit dans les donnée statiques, c'est même assez fréquent. Ce sont ne sont pas forcément des données constantes !
Pour les données statiques, elles sont toujours placées à la même adresse mémoire. Pour le dire autrement, l'adresse mémoire est une constante, qui ne change pas. L'adresse est connue avant d’exécuter le programme, le programme a été codé pour utiliser cette adresse pour telle donnée, on a réservé une adresse pour la donnée voulue. Et même si vous quittez le programme et vous le relancez plusieurs jours après, l'adresse mémoire sera la même avant et après.
Et cela permet d'utiliser l''''adressage direct'''. L'idée est que les instructions précisent donc l'adresse à lire ou écrire. Pour cela, l'adresse est intégrée dans l’instruction elle-même. Pour rappel, l'instruction est codée par une suite de bit en mémoire RAM/ROM, dont certains précisent l'opération à faire, les autres servant à autre chose. L'idée est que certains bits précisent l'adresse mémoire de la donnée à lire. Les instructions sont donc du genre :
* ''LOAD 56'' - lit l'adresse numéro 56 et copie son contenu dans un registre;
* ''STORE R5 , adress 99'', copie le registre R5 dans l'adresse 99 ;
* ''ADD R5 , adress 209'' : additionne le registre R5 avec le contenu de l'adresse 209.
S'il existe des données statiques, c'est signe qu'il existe des '''données dynamiques'''. Ces dernières sont des données qui sont créées ou détruites selon les besoins. Pour comprendre d'où viennent ces données dynamiques, prenons le cas d'une personne qui écrit du texte sur un ordinateur. Le texte qu'il écrit est mémorisé dans la RAM de l’ordinateur, puis est sauvegardé sur le disque dur quand il sauvegarde son document. Au fur et à mesure qu'il écrit du texte, la RAM utilisée par ce texte augmente. Donc, ce texte est une donnée dynamique, dont la taille varie dans le temps.
Pour gérer des données dynamiques, la plupart des systèmes d'exploitation incorporent des fonctionnalités d''''allocation mémoire'''. Derrière ce nom barbare, se cache quelque chose de simple : les programmes peuvent réclamer de la mémoire au système d'exploitation, pour y placer les données qu'ils souhaitent. Les langages de programmation bas niveau supportent des fonctions comme malloc(), qui permettent de demander un bloc de mémoire de N octets à l'OS, qui doit alors accommoder la demande. De même, un programme peut libérer de la mémoire qu'il n'utilise plus avec des fonctions comme free().
Avec l'allocation mémoire, les données n'ont pas de place fixe en mémoire. Leur adresse mémoire peut varier d'une exécution du programme à l'autre. Pire que ça : les données peuvent être déplacées dans la mémoire RAM, si besoin. En clair : l'adresse est déterminée lors de l'exécution du programme. L'adresse est alors soit calculée, soit lue depuis la mémoire RAM, soit déterminée autrement. Toujours est-il qu'elle se retrouve dans un registre général. Pour gérer ces adresse variables, les processeurs utilisent l''''adressage indirect'''. L'adressage indirect permet d'utiliser une adresse qui est dans un registre de données. L'adresse en question peut être envoyée à la mémoire RAM sans problème, le processeur peut automatiquement connecter le registre adéquat sur le bus d'adresse.
Au tout début de l'informatique, les processeurs ne supportaient que l'adressage direct, pas plus. L'adressage indirect n'était tout simplement pas possible. Avec l'adressage direct, l'adresse à lire est extraite directement des instructions, par l'unité de contrôle. Le bus d'adresse de la RAM est alors relié directement à l'unité de contrôle, le bus de données est relié aux registres.
[[File:Architecture Harvard avec adressage direct uniquement.png|centre|vignette|upright=2|Architecture Harvard avec adressage direct uniquement]]
Mais dès les années 70, l'adressage indirect est apparu, rendant la programmation bien plus simple. Mais cela a demandé quelques adaptation au niveau du processeur. Avec l'adressage indirect, le bus d'adresse est connecté aux registres. Il a donc fallu rajouter un multiplexeur pour que le processeur décide de relier le bus d'adresse soit aux registres, soit à l'unité de contrôle.
===Un ordinateur peut avoir plusieurs processeurs===
La plupart des ordinateurs n'ont qu'un seul processeur, ce qui fait qu'on désigne avec le terme d''''ordinateurs mono-processeur'''. Mais il a existé (et existe encore) des '''ordinateurs multi-processeurs''', avec plusieurs processeurs sur la même carte mère. L'idée était de gagner en performance : deux processeurs permettent de faire deux fois plus de calcul qu'un seul, quatre permettent d'en faire quatre fois plus, etc. C'est très courant sur les supercalculateurs, des ordinateurs très puissants conçus pour du calcul industriel ou scientifique, mais aussi sur les serveurs ! Dans le cas le plus courant, ils utilisent plusieurs processeurs identiques : on utilise deux processeurs Core i3 de même modèle, ou quatre Pentium 3, etc.
Pour utiliser plusieurs processeurs, les programmes doivent être adaptés. Pour cela, il y a plusieurs possibilités :
* Une première possibilité, assez intuitive, est d’exécuter des programmes différents sur des processeurs différents. Par exemple, on exécute le navigateur web sur un processeur, le lecteur vidéo sur un autre, etc.
* La seconde option est de créer des programmes spéciaux, qui utilisent plusieurs processeurs. Ils répartissent les calculs à faire sur les différents processeurs. Un exemple est la lecture d'une vidéo sur le web : un processeur peut télécharger la vidéo pendant le visionnage et bufferiser celle-ci, un autre processeur peut décoder la vidéo, un autre décoder l'audio. De tels programmes restent des suites d'instructions, mais ils sont plus complexes que les programmes normaux, aussi nous les passons sous silence.
* La troisième option est d’exécuter le même programme sur les différents processeurs, mais chaque processeur traite son propre ensemble de données. Par exemple, pour un programme de rendu 3D, quatre processeurs peuvent s'occuper chacun d'une portion de l'image.
[[File:Architecture de Von Neumann Princeton multi processeurs.svg|centre|vignette|upright=2|Architecture de Von Neumann Princeton multi processeurs]]
De nos jours, les ordinateurs grand public les plus utilisés sont dans un cas intermédiaire, ils ne sont ni mono-, ni multi-processeur. Ils n'ont qu'un seul processeur, dans le sens où si on ouvre l'ordinateur et qu'on regarde la carte mère, il n'y a qu'un seul processeur. Mais ce processeur est en réalité assez similaire à un regroupement de plusieurs processeurs dans le même boitier. Il s'agit de '''processeurs multicœurs''', qui contiennent plusieurs cœurs, chaque cœur pouvant exécuter un programme tout seul.
La différence entre cœur et processeur est assez difficile à saisir, mais pour simplifier : un cœur est l'ensemble des circuits nécessaires pour exécuter un programme. Chaque cœur dispose de toute la machinerie électronique pour exécuter un programme, à savoir des circuits aux noms barbares comme : un séquenceur d'instruction, des registres, une unité de calcul. Par contre, certains circuits d'un processeur ne sont présents qu'en un seul exemplaire dans un processeur multicœur, comme les circuits de communication avec la mémoire ou les circuits d’interfaçage avec la carte mère.
Suivant le nombre de cœurs présents dans notre processeur, celui-ci sera appelé un processeur double-cœur (deux cœurs), quadruple-cœur (4 cœurs), octuple-cœur (8 cœurs), etc. Un processeur double-cœur est équivalent à avoir deux processeurs dans l'ordinateur, un processeur quadruple-cœur est équivalent à avoir quatre processeurs dans l'ordinateur, etc. Ces processeurs sont devenus la norme dans les ordinateurs grand public et les logiciels et systèmes d'exploitation se sont adaptés.
===Les coprocesseurs===
Quelques ordinateurs assez anciens disposaient de '''coprocesseurs''', des processeurs qui complémentaient un processeur principal. Les ordinateurs de ce type avaient un processeur principal, le '''CPU''', qui était secondé par un ou plusieurs coprocesseurs. Sauf exception, le CPU et le coprocesseur exécutent des programmes différents, ils travaillent en parallèle.
Les coprocesseurs les plus connus sont les '''coprocesseurs pour le rendu 2D/3D'''. Ils ont eu leur heure de gloire sur les anciennes consoles de jeux vidéo, comme Super Nintendo, la Playstation et autres consoles de cette génération ou antérieure. Ils s'occupaient respectivement de calculer les graphismes des jeux vidéos. De nos jours, ils ont été remplacés par des cartes graphiques, ou des ''Graphic Processing Units'', qui ne sont pas considérées comme des coprocesseurs.
Les '''coprocesseurs sonores''' sont une sorte d'ancêtre des cartes son, utilisés sur les anciennes consoles de jeux vidéo, comme La Nintendo 64, la Playstation et autres consoles antérieures. Ils s'occupaient respectivement de calculer tout ce qui a trait au son. Pour donner un exemple, on peut citer la console Neo-géo, qui disposait de deux processeurs travaillant en parallèle : un processeur principal, et un coprocesseur sonore. Le processeur principal était un Motorola 68000, alors que le coprocesseur sonore était un processeur Z80.
L'accès aux périphériques est quelque chose sur lequel nous passerons plusieurs chapitres dans ce cours. Mais sachez que l'accès aux périphériques peut demander pas mal de puissance de calculs. Le CPU principal peut faire ce genre de calculs par lui-même, mais il n'est pas rare qu'un '''coprocesseur d'IO''' soit dédié à l'accès aux périphériques. Un exemple assez récent est celui de la console de jeu Nintendo 3DS. Elle disposait d'un processeur principal de type ARM9, d'un coprocesseur pour les divisions qu'on abordera plus bas, et d'un second processeur ARM7. L'ARM 7 était utilisé comme coprocesseur d'I/O, ainsi que pour l'émulation de la console GBA.
[[File:Asmp 2.gif|centre|vignette|upright=2|Co-processeur pour l'accès aux entrées-sorties.]]
Les '''coprocesseurs arithmétiques''' sont un peu à part des autres. Ils sont spécialisés dans les calculs en virgule flottante. Ils étaient utilisés à une époque où les CPU ne géraient que des calculs entiers (en binaire ou en BCD). Un exemple est le coprocesseur flottant x87, complémentaire des premiers processeurs Intel x86. Il y a eu la même chose sur les processeurs Motorola 68000, avec deux coprocesseurs flottants appelés les Motorola 68881 et les Motorola 68882.
Un exemple récent de coprocesseur est celui utilisé sur la console de jeu Nintendo DS. La console utilisait deux processeurs, un ARM9 et un ARM7, qui ne pouvaient pas faire de division entière. Il s'agit pourtant d'opérations importantes dans le cas du rendu 3D, ce qui fait que les concepteurs de la console ont rajouté un coprocesseur spécialisé dans les divisions entières et les racines carrées. Le coprocesseur était adressable directement par le processeur, comme peuvent l'être la RAM ou les périphériques.
==Les entrées-sorties==
Tous les circuits vus précédemment traitent des données codées en binaire. Ceci dit, les données ne sortent pas de n'importe où : l'ordinateur contient des composants électroniques qui traduisent des informations venant de l’extérieur en nombres. Ces composants sont ce qu'on appelle des '''entrées'''. Par exemple, le clavier est une entrée : l'électronique du clavier attribue un nombre entier (''scancode'') à une touche, nombre qui sera communiqué à l’ordinateur lors de l'appui d'une touche. Pareil pour la souris : quand vous bougez la souris, celle-ci envoie des informations sur la position ou le mouvement du curseur, informations qui sont codées sous la forme de nombres. La carte son évoquée il y a quelques chapitres est bien sûr une entrée : elle est capable d'enregistrer un son, et de le restituer sous la forme de nombres.
S’il y a des entrées, on trouve aussi des '''sorties''', des composants électroniques qui transforment des nombres présents dans l'ordinateur en quelque chose d'utile. Ces sorties effectuent la traduction inverse de celle faite par les entrées : si les entrées convertissent une information en nombre, les sorties font l'inverse : là où les entrées encodent, les sorties décodent. Par exemple, un écran LCD est un circuit de sortie : il reçoit des informations, et les transforme en image affichée à l'écran. Même chose pour une imprimante : elle reçoit des documents texte encodés sous forme de nombres, et permet de les imprimer sur du papier. Et la carte son est aussi une sortie, vu qu'elle transforme les sons d'un fichier audio en tensions destinées à un haut-parleur : c'est à la fois une entrée, et une sortie.
Les '''entrées-sorties''' incluent toutes les entrées et sorties, et même certains composants qui sont les deux à la fois. Il s'agit d'un terme générique, qui regroupe des composants forts différents. Dans ce qui va suivre, nous allons parfois parler de périphériques au lieu d'entrées-sorties, mais les deux termes ne sont pas équivalents. Dans le détail, les entrées-sorties regroupent :
* Les '''périphériques''' sont les composants connectés sur l'unité centrale. Exemple : les claviers, souris, webcam, imprimantes, écrans, clés USB, disques durs externes, la Box internet, etc.
* Les '''cartes d'extension''', qui se connectent sur la carte mère via un connecteur, comme les cartes son ou les cartes graphiques.
* D'autres composants sont soudés à la carte mère mais sont techniquement des entrées-sorties : les cartes sons soudées sur les cartes mères actuelles, par exemple.
===L'interface avec le reste de l'ordinateur===
Les entrées-sorties sont très diverses, fonctionnent très différemment les unes des autres. Mais du point de vue du reste de l'ordinateur, les choses sont relativement standardisées. Du point de vue du processeur, les entrées-sorties sont juste des paquets de registres ! Tous les périphériques, toutes les entrées-sorties contiennent des '''registres d’interfaçage''', qui permettent de faire l'intermédiaire entre l'entrée/sortie et le reste de l'ordinateur. L'entrée/sortie est conçu pour réagir automatiquement quand on écrit dans ces registres.
[[File:Registres d'interfaçage.png|centre|vignette|upright=2|Registres d'interfaçage.]]
Les registres d’interfaçage sont assez variés. Les plus évidents sont les '''registres de données''', qui permettent l'échange de données entre le processeur et les périphériques. Pour échanger des données avec l'entrée/sortie, le processeur a juste à lire ou écrire dans ces registres de données. On trouve généralement un registre de lecture et un registre d'écriture, mais il se peut que les deux soient fusionnés en un seul registre d’interfaçage de données. Si le processeur veut envoyer une donnée à une entrée/sortie, il a juste à écrire dans ces registres. Inversement, s'il veut lire une donnée, il a juste à lire le registre adéquat.
Mais le processeur ne fait pas que transmettre des données à l'entrée/sortie. Le processeur lui envoie aussi des « commandes », des valeurs numériques auxquelles l'entrée/sortie répond en effectuant un ensemble d'actions préprogrammées. En clair, ce sont l'équivalent des instructions du processeur, mais pour l'entrée/sortie. Par exemple, les commandes envoyées à une carte graphique peuvent être : affiche l'image présente à cette adresse mémoire, calcule le rendu 3D à partir des données présentes dans ta mémoire, etc. Pour recevoir les commandes, l'entrée/sortie contient des ''registres de commande'' qui mémorisent les commandes envoyées par le processeur. Quand le processeur veut envoyer une commande à l'entrée/sortie, il écrit la commande en question dans ce ou ces registres.
Enfin, beaucoup d'entrée/sortie ont un ''registre d'état'', lisible par le processeur, qui contient des informations sur l'état de l'entrée/sortie. Ils servent notamment à indiquer au processeur que l'entrée/sortie est disponible, qu'il est en train d’exécuter une commande, qu'il est occupé, qu'il y a un problème, qu'il y a une erreur de configuration, etc.
===Les adresses des registres d’interfaçage===
Les registres des périphériques sont identifiés par des adresses mémoires. Et les adresses sont conçues de façon à ce que les adresses des différentes entrées/sorties ne se marchent pas sur les pieds. Chaque entrée/sortie, chaque registre, chaque contrôleur a sa propre adresse. D'ordinaire, certains bits de l'adresse indiquent quel est le destinataire. Certains indiquent quel est l'entrée/sortie voulue, les restants indiquant le registre de destination.
Il existe deux organisations possibles pour les adresses des registres d’interfaçages. La première possibilité est de séparer les adresses pour les registres d’interfaçage et les adresses pour la mémoire. Le processeur doit avoir des instructions séparées pour gérer les périphériques et adresser la mémoire. Il a des instructions de lecture/écriture pour lire/écrire en mémoire, et d'autres pour lire/écrire les registres d’interfaçage. Sans cela, le processeur ne saurait pas si une adresse est destinée à un périphérique ou à la mémoire.
[[File:Espaces d'adressages séparés entre mémoire et périphérique.png|centre|vignette|upright=2.5|Espaces d'adressages séparés entre mémoire et périphérique]]
L'autre méthode mélange les adresses mémoire et des entrées-sorties. Si on prend par exemple un processeur de 16 bits, où les adresses font 16 bits, alors les 65536 adresses possibles seront découpées en deux portions : une partie ira adresser la RAM/ROM, l'autre les périphériques. On parle alors d''''entrées-sorties mappées en mémoire'''. L'avantage est que le processeur n'a pas besoin d'avoir des instructions séparées pour les deux.
[[File:IO mappées en mémoire.png|centre|vignette|upright=2.0|IO mappées en mémoire]]
Pour résumer, communiquer avec une entrée/sortie est similaire à ce qu'on a avec les mémoires. Il suffit de lire ou écrire dans des registres d’interfaçage, qui ont chacun une adresse mémoire. Le problème est que le système d'exploitation ne connaît pas toujours le fonctionnement d'une entrée/sortie : il faut installer un programme qui va s'exécuter quand on souhaite communiquer avec l'entrée/sortie, et qui s'occupera de tout ce qui est nécessaire pour le transfert des données, l'adressage du périphérique, etc. Ce petit programme est appelé un driver ou '''pilote de périphérique'''. La « programmation » périphérique est très simple : il suffit de savoir quoi mettre dans les registres, et c'est le pilote qui s'en charge.
==Les architectures Harvard et Von Neumann==
Après avoir vu le processeur, les mémoires et les entrées-sorties, voyons voir comment le tout est interconnecté. Tous les ordinateurs ne sont pas organisés de la même manière, pour ce qui est de leurs bus. Mais pour comprendre pourquoi, nous devons regarder qui communique avec qui, dans un ordinateur. Pour rappel, les données sont placées en mémoire RAM, alors que les instructions sont placées en mémoire ROM. Le processeur lit des instructions dans la mémoire ROM, il lit et écrit dans la mémoire RAM, et accède aux registres d’interfaçage des entrées-sorties. Il y a donc besoins de trois interconnexions : CPU-ROM, CPU-RAM et CPU-IO.
[[File:Réseau d'interconnexion avec un processeur au centre.png|centre|vignette|upright=2|Réseau d'interconnexion avec un processeur au centre]]
Il parait intéressant d'utiliser trois interconnexions, au minimum CPU-ROM, CPU-RAM et CPU-IO. Néanmoins, faire ainsi a de nombreux désavantages. Déjà, il faut pouvoir brancher tout ça sur le processeur. Et celui-ci n'a pas forcément assez de broches pour. Aussi, il est parfois préférable de mutualiser des bus, à savoir de connecter plusieurs composants sur un même bus. Par exemple, on peut mutualiser le bus pour la mémoire RAM et pour la mémoire ROM. Il faut dire que les deux bus sont des bus mémoire, avec un bus d'adresse, un bus de données, et surtout : des bus de commande similaires. Les mutualiser est alors très simple, et permet d'économiser pas mal de broches.
[[File:Réseau d'interconnexion avec un processeur au centre et une architecture Harvard.png|centre|vignette|upright=2|Réseau d'interconnexion avec un processeur au centre et une architecture Harvard]]
Cette mutualisation nous amène naturellement à parler de la distinction entre les architectures Harvard d'un côté et les architectures Von Neumann de l'autre. Elle est très liée au fait d'utiliser soit un bus mémoire unique, soit des bus séparés pour la ROM et la RAM. Voyons cela en détail.
===Les architectures Harvard et Von Neumann : des bus séparés ou unifiés===
Avec l''''architecture Harvard''', la mémoire ROM et la mémoire RAM sont reliées au processeur par deux bus séparés. Il y a un bus RAM pour la mémoire RAM, un bus ROM pour la mémoire ROM. L'avantage de cette architecture est qu'elle permet de charger une instruction et une donnée simultanément : une instruction chargée sur le bus relié à la mémoire programme, et une donnée chargée sur le bus relié à la mémoire de données. Et cela simplifie fortement la conception du processeur.
[[File:Harvard Architecture.png|centre|vignette|upright=2|Architecture Harvard, avec une ROM et une RAM séparées.]]
Avec l''''architecture Von Neumann''', mémoire ROM et mémoire RAM sont reliées au processeur par un bus unique. Le bus unique qui relie processeur, RAM et ROM, s'appelle le '''bus mémoire'''. Un défaut de ces architecture est qu'elles ne peuvent pas charger une instruction et une donnée en même temps. Et cela pose quelques problèmes pour la conception du processeur. Par contre, nous verrons dans ce qui suit qu'utiliser un bus mémoire partagé est bien plus flexible et permet des choses que les architectures Harvard ne peuvent pas faire.
[[File:Architecture Von Neumann, avec deux bus séparés.png|centre|vignette|upright=2|Architecture Von Neumann, avec deux bus séparés.]]
===Les architectures Harvard et Von Neumann : des espaces d'adressage séparés ou unifiés===
La distinction précédente se base sur les connexions entre RAM, ROM et processeur. Mais il existe une autre distinction, très liée, qui est souvent utilisée comme seconde définition des architectures Harvard/Von Neumann. Elle est liée aux adresses mémoire que le processeur peut gérer. Prenons un processeur 16 bits, par exemple, qui gère naturellement des adresses de 16 bits. Il peut gérer 2^16 adresses, soit 64 kibioctets de mémoire. L'ensemble de ces adresses est appelé un '''espace d'adressage'''. Mais comment cet espace d'adressage est utilisé pour adresser une RAM et une ROM ?
Sur les architectures Harvard, le processeur voit deux mémoires séparées avec leur lot d'adresses distinctes. Une même adresse peut donc correspondre soit à la mémoire ROM, soit à la mémoire RAM, suivant le bus utilisé. L'espace d'adressage est donc doublé, dupliqué, avec un pour la ROM, un autre pour la RAM. Rien d'étonnant à cela : il y a deux bus d'adresses, chacun correspondant à un espace d'adressage.
[[File:Vision de la mémoire par un processeur sur une architecture Harvard.png|centre|vignette|upright=2|Vision de la mémoire par un processeur sur une architecture Harvard.]]
Avec l'architecture Von Neumann, la RAM et la ROM doivent se partager les adresses mémoires disponibles. Il n'y a qu'un seul espace d'adressage qui est coupé en deux, avec une partie pour la ROM et une autre pour la RAM. Une adresse correspond soit à la mémoire RAM, soit à la mémoire ROM, mais pas aux deux. Typiquement, la mémoire ROM occupe une partie des adresses, la mémoire RAM utilise le reste. La répartition des adresses est réalisée par les circuits de décodage d'adresse mentionnés plus haut.
[[File:Vision de la mémoire par un processeur sur une architecture Von Neumann.png|centre|vignette|upright=2|Vision de la mémoire par un processeur sur une architecture Von Neumann.]]
Les '''architectures Harvard modifiées''' sont des intermédiaires entre architectures Harvard et architectures Von Neumann, bien qu'elles penchent bien plus du côté des architectures Harvard. Précisons que la terminologie n'est pas claire, beaucoup d'auteurs mettent des définitions différentes derrière ces deux termes. Mais dans ce cours, nous utiliserons une définition très stricte de ce qu'est une architecture Harvard modifiée.
Une architecture Harvard modifiée est une architecture Harvard, où le processeur peut lire des données constantes depuis la mémoire ROM. Nous avions vu plus haut que les mémoires ROM peuvent mémoriser, en plus d'un programme exécutable, des données constantes, qui ne varient pas. Les architectures Harvard pures ne permettent pas de lire des données de ce genre depuis la mémoire ROM, alors que les architectures Harvard modifiées le permettent.
Une architecture Harvard modifiée dispose d'une instruction pour lire les données en mémoire RWM, et d'une instruction pour lire des données en mémoire ROM. Il y a donc deux versions de l'instruction LOAD, qui copient la donnée dans un registre général, mais dont la source de la donnée est différente. Une autre possibilité, plus rare, est que une instruction de copie, qui copie une constante depuis la mémoire ROM vers la mémoire RAM. Le cas le plus commun est l'utilisation de deux instructions LOAD séparées.
[[File:Espaces d'adressage sur une archi harvard modifiée.png|centre|vignette|upright=2.5|Espaces d'adressage sur une archi harvard modifiée]]
Ceci étant dit, revenons à la distinction entre architecture Harvard et Von Neumann. Il faut noter que la RAM et la ROM n'ont pas forcément la même taille. Et ce que ce soit sur une architecture Harvard que sur une architecture Von Neumann, mais c'est plus facile à expliquer sur une architecture Harvard.
On peut par exemple imaginer une architecture Harvard qui utilise des adresses de 16 bits pour la ROM, et seulement 8 bits pour la RAM. Le résultat est qu'il peut adresser 64 kibioctets de ROM, mais seulement 256 octets de RAM. Les deux bus d'adresse sont alors de taille différente, l'un faisant 8 bits, l'autre 16. Quelques processeurs 8 bits étaient dans ce cas, comme on le verra dans le chapitre sur les CPU 8bits. Mais d'autres processeurs utilisent des valeurs différentes, avec par exemple des adresses de 16 bits pour la RAM, mais de 20 bits pour la ROM, ou inversement.
Sur une architecture Von Neumann, tout dépend de comment les adresses sont réparties. La solution la plus simple découpe l'espace d'adressage en deux parties égales, avec la RAM qui est dans la moitié basse (qui part de l'adresse 0 jusqu'à l'adresse au milieu), alors que la ROM est dans la moitié haute (entre l'adresse du milieu et l'adresse maximale). Mais ce n'est pas la seule possibilité, la limite entre RAM et ROM peut être mise n'importe où. Prenons par exemple un processeur 32 bits, capable de gérer 4 milliards d'adresse. Il est parfaitement possible de réserver 128 mébioctets de poids fort à la mémoire ROM, et de laisser le reste à la mémoire RAM.
===Le décodage d'adresse sur les architectures Von Neumann===
Pour résumer, les architectures Harvard et Von Neumann se distinguent sur deux points :
* L'accès à la RAM et à la ROM se font par des bus séparés sur l'architecture Harvard, sur le même bus avec l'architecture Von Neumann.
* Les adresses pour la mémoire ROM et la mémoire RAM sont séparées sur les architectures Harvard, partagées sur l’architecture Von Neumann.
Les architectures Von Neumann utilisent donc un seul bus pour connecter la RAM et la ROM au processeur. Mais cela ne parait pas intuitif : comment deux composants peuvent se connecter aux mêmes fils ? Parce que c'est ce qu'implique le fait de partager un bus. Si je prends une mémoire RAM et une mémoire ROM, toutes deux de 8 bits, elles seront connectées à un bus mémoire de 8 bits. Intuitivement, on se dit qu'il y aura des conflits, du genre : la RAM et la ROM vont accéder au bus en même temps, comment savoir si une adresse est destinée à la RAM ou la ROM, etc ?
Tous ces problèmes sont résolus avec une solution très simple : à chaque instant, seule une mémoire est connectée au bus. L'idée est que les mémoires sont connectées ou déconnectées du bus selon les besoins. Si le processeur veut envoyer lire une donnée en mémoire RAM, il déconnecte la mémoire ROM du bus. Et inversement, s'il veut lire une instruction, il déconnecte la RAM et connecte la ROM.
Pour cela, les mémoires RAM et ROM possèdent une entrée ''Chip Select'' ou ''Output Enable'', qui agit comme une sorte de bouton ON/OFF. Lorsqu'on met un 1 sur cette entrée, la mémoire se connectera au bus. Ses entrées et sorties fonctionneront normalement, elle pourra recevoir des adresses, envoyer ou recevoir des données, tout sera normal. Par contre, si on met un 0 sur cette entrée, la mémoire se "désactive", ses entrée-sorties ne répondent plus aux sollicitations extérieures. Pire que ça : elles sont électriquement déconnectées.
Au total, tout cela demande de gérer deux bit ''Chip Select''/''Output Enable'' : un pour la RAM, un pour la ROM. Et ces deux bits sont configurés pour chaque accès mémoire, pour chaque lecture ou écriture. Pour cela, un circuit de '''décodage d'adresse''' prend en entrée l'adresse mémoire à lire/écrire, et active/désactive les mémoires RAM/ROM selon les besoins. Il prend l'adresse et configure les bits ''Chip Select''/''Output Enable''.
[[File:Décodage d'adresse sur une architecture Von Neumann.png|centre|vignette|upright=2|Décodage d'adresse sur une architecture Von Neumann.]]
L'implémentation la plus simple réserve la moitié des adresses pour la RAM, l'autre moitié pour la ROM. Typiquement, la ROM prend la moitié basse, la RAM la moitié haute. Dans ce cas, activer/désactiver la RAM et la ROM se fait avec seulement le bit de poids fort de l'adresse. Si le bit de poids fort est à 1, alors on accède à la RAM et la ROM doit être désactivée. Mais si ce bit est à 0, alors on accède à la moitié basse et il faut désactiver la RAM.
Une remarque intéressante : le fait de séparer la mémoire en deux parts égales permet de simuler une architecture Harvard à partir d'une architecture Von Neumann. Par exemple, le tout premier processeur d'Intel, le 4004, était l'un de ceux là. La RAM et la ROM sont reliés au même bus, et il y a donc un unique espace d'adressage, qui est séparé en deux parties égales. Le truc est que le processeur traite les deux parties égales comme deux espaces d'adressage séparés. Le processeur se débrouille pour cacher le fait qu'il y a un espace d'adressage unique coupé en deux, ce qui fait que les programmeurs voient bien deux espaces d'adressages distincts.
[[File:Décodage d'adresse sur une architecture Von Neumann basique.png|centre|vignette|upright=2|Décodage d'adresse sur une architecture Von Neumann basique.]]
Pour résumer, quand une adresse est envoyée sur le bus, les deux mémoires vont la recevoir mais une seule va répondre et se connecter au bus. Le décodage d'adresse garantit que seule la mémoire adéquate réponde à un accès mémoire. Le décodage d'adresse est réalisé par la carte mère, par un composant dédié.
Le mécanisme peut être utilisé pour combiner plusieurs RAM en une seule, idem avec les ROM. Pour comprendre l'idée, je vais prendre l'exemple de l'IBM PC, un des tout premier PC existant. Nous étudierons ce PC dans une section dédiée, à la fin du chapitre, aussi je vais passer rapidement dessus. Tout ce que je vais faire est vous présenter la carte mère du PC, et vous demander de faire est de compter les mémoires ROM et mémoires RAM sur la carte mère :
[[File:IBM 5150 Motherboard.svg|centre|vignette|upright=3|Carte mère de l'IBM 5150, un modèle de l'IBM PC.]]
Si vous remarquerez qu'il y a 5 mémoires ROM et 8 à 32 mémoires RAM. Le fait est que le processeur voit les différentes mémoires ROM comme une seule mémoire ROM. Idem avec les mémoires RAM : elle font chacune 2 kibioctets, et l'ensemble est vu par le processeur comme une seule RAM de 16 à 64 kibioctets. Et cela grâce aux circuits de décodage d'adresse, qui sont situés en haut à droite de la carte mère.
Pour comprendre l'idée, prenons l'exemple d'un processeur 16 bits, capable de gérer 64 kibioctets de mémoire. L'espace d'adressage est découpé en quatre portions, de 16 kibioctets chacune. Une portion est réservée à une ROM de 16 kibioctet, les autres sont chacune réservée à une RAM de 16 kibioctet. Le décodage d'adresse sélectionne alors la mémoire adéquate en utilisant les deux bits de poids fort de l'adresse.
* S'ils valent 00, alors c'est la mémoire ROM qui est activée, connectée au bus.
* S'ils valent 01, alors c'est la première mémoire RAM qui est connectée au bus.
* S'ils valent 10, alors c'est la seconde mémoire RAM qui est connectée au bus.
* S'ils valent 11, alors c'est la troisième mémoire RAM qui est connectée au bus.
[[File:Décodage d'adresse sur une architecture Von Neumann, utilisant plusieurs RAM et une ROM.png|centre|vignette|upright=3|Décodage d'adresse sur une architecture Von Neumann, utilisant plusieurs RAM et une ROM]]
===L'impact sur la conception du processeur===
Plus haut, j'ai parlé d'un des avantages des architectures Harvard : elles peuvent lire une instruction en même temps qu'elles accèdent à une donnée. La donnée est lue/écrite en RAM, alors que l'instruction est lue en ROM. Et cela permet de simplifier l'intérieur du processeur. Pas de beaucoup, mais c'est déjà ça de pris. Voyons maintenant comment cela impacte l'intérieur du processeur. Tout ce dont vous avez à vous rappeler est la séparation entre chemin de données et unité de contrôle, et que les registres généraux sont dans le premier, le ''program counter'' dans la seconde.
Avec une architecture Harvard, les instructions et les données passent par des bus différent : bus ROM pour les instructions, bus RAM pour les données. L'intuition nous dit que le bus pour la mémoire ROM est connecté à l'unité de contrôle, alors que le bus pour la RAM est connecté au chemin de données. Et dans les grandes lignes, c'est vrai. La logique est imparable pour ce qui est des bus de données. Mais il y a une petite subtilité pour les bus d'adresse.
Pour comprendre comment le processeur exploite ces deux bus, voyons ce qui transite dessus. Pour la mémoire ROM, elle reçoit l'adresse de l'instruction à lire, elle renvoie l'instruction adéquate. Pour cela, le ''program counter'' est envoyé sur le bus d'adresse, l'instruction sur le bus de données. Pour la mémoire RAM, elle échange des données avec les registres généraux, les registres pour les données. Les adresses utilisées pour la RAM viennent elles soit du chemin de données, soit de l'unité de contrôle, tout dépend du mode d'adressage. Mais le ''program counter'' n'est pas impliqué.
[[File:Architecture Harvard - échanges de données.png|centre|vignette|upright=2|Architecture Harvard - échanges de données]]
Les architectures Harvard modifiées doivent cependant rajouter une connexion entre le bus ROM et les registres généraux. C'est nécessaire pour charger une donnée constante depuis la mémoire ROM. Rappelons que la donnée constante est copiée dans un registre général, donc dans le chemin de données.
[[File:Architecture Harvard modifiée - implémentation du processeur.png|centre|vignette|upright=2|Architecture Harvard modifiée - implémentation du processeur]]
Avec les architectures Von Neumann, il y a un seul bus qui est relié à la fois au chemin de données et à l'unité de contrôle. Si le processeur lit une instruction, le bus doit être relié à l'unité de contrôle. Par contre, s'il accède à une donnée, il doit être relié au chemin de données (le bus d'adresse peut éventuellement être connecté au séquenceur, si celui-ci fournit l'adresse à lire). Il faut donc utiliser un paquet de multiplexeurs et de démultiplexeurs pour faire la connexion au bon endroit.
[[File:Architecture Von Neumann - implémentation du processeur.png|centre|vignette|upright=2|Architecture Von Neumann - implémentation du processeur]]
Une instruction se fait en deux temps : on charge l'instruction depuis la mémoire ROM, puis on l'exécute. Avec une architecture Harvard, tout cela se fait en un seul cycle d'horloge, vu que charger la ROM et accéder aux données peut se faire en même temps. Pas avec les architectures Von Neumann, qui doivent libérer le bus mémoire après avoir chargé une instruction. Elles n'ont pas le choix : elles chargent l'instruction lors d'un premier cycle d'horloge, puis l'exécutent lors du second.
Pour cela, ils incorporent un registre appelé le '''registre d'instruction''', qui mémorise l'instruction chargée. L'instruction est copiée dans ce registre lors du premier cycle, puis est utilisée lors du second cycle. Le registre permet de ne pas oublier l’instruction entre les deux cycles. Le registre d'instruction est obligatoire sur les architectures Von Neumann. En comparaison, il est facultatif sur les architectures Harvard. Elles peuvent en avoir un, pour des raisons techniques, mais ce n'est pas obligatoire.
[[File:Registre d'instruction.png|centre|vignette|upright=2|Registre d'instruction.]]
===Les architectures Von Neumann sont plus flexibles===
Sur les architectures Harvard, le processeur sait faire la distinction entre programme et données. Les données sont stockées dans la mémoire RAM, le programme est stocké dans la mémoire ROM. Les deux sont séparés, accédés par le processeur sur des bus séparés, et c'est ce qui permet de faire la différence entre les deux. Il est impossible que le processeur exécute des données ou modifie le programme. Du moins, tant que la mémoire qui stocke le programme est bien une ROM.
Par contre, sur les architectures Von Neumann, il est impossible de distinguer programme et données, sauf en ajoutant des techniques de protection mémoire avancées. La raison est qu'il est impossible de faire la différence entre donnée et instruction, vu que rien ne ressemble plus à une suite de bits qu'une autre suite de bits. Et c'est à l'origine d'un des avantages majeur de l'architecture Von Neumann : il est possible que des programmes soient copiés dans la mémoire RWM et exécutés dans celle-ci.
Un cas d'utilisation familier est celui de votre ordinateur personnel. Le système d'exploitation et les autres logiciels sont copiés en mémoire RAM à chaque fois que vous les lancez. Mais cet exemple implique un disque dur, ce qui rend les choses plus compliquées que prévu. Un autre exemple serait la compilation de code à la volée, mais il ne sera pas très parlant.
Un exemple plus adapté serait celui où la ROM mémorise un programme compressée dans la mémoire ROM, qui est décompressé pour être exécuté en mémoire RAM. Le programme de décompression est stocké en mémoire ROM et est exécuté au lancement de l’ordinateur. Cette méthode permet d'utiliser une mémoire ROM très petite et très lente, tout en ayant un programme rapide (si la mémoire RWM est rapide).
Il est aussi possible de créer des programmes qui modifient leurs propres instructions : cela s'appelle du '''code auto-modifiant'''. Ce genre de choses servait autrefois sur des ordinateurs rudimentaires, au tout début de l'informatique. À l'époque, les adresses à lire/écrire devaient être écrites en dur dans le programme, dans les instructions exécutées. Pour gérer certaines fonctionnalités des langages de programmation qui ont besoin d'adresses modifiables, comme les tableaux, on devait corriger les adresses au besoin avec du code auto-modifiant. De nos jours, le code automodifiant est utilisée occasionnellement pour rendre un programme indétectable dans la mémoire (les virus informatiques utilisent beaucoup ce genre de procédés).
L'impossibilité de séparer données et instructions est à l'origine de problèmes assez fâcheux. Il est parfaitement possible que le processeur charge et exécute des données, qu'il prend par erreur pour des instructions. C'est le cas quand des pirates informatiques arrivent à exploiter des bugs. Il arrive que des pirates informatiques vous fournissent des données corrompues, qui contiennent un virus ou un programme malveillant est caché dans les données. Les bugs en question permettent d'exécuter ces données, donc virus. Pour éviter cela, le système d'exploitation peut marquer certaines zones de la mémoire comme non-exécutable, c’est-à-dire que le système d'exploitation interdit d’exécution de quoi que ce soit qui est dans cette zone. Mais ce n'est pas parfait.
Toujours est-il que tout cela est impossible sur les architectures Harvard. Et ce serait très limitant. Imaginez : pas possible de lancer un programme depuis le disque dur ou une clé USB, le programme doit impérativement être dans une mémoire ROM, pas de compilation à la volée, etc. Que des techniques très utilisées dans l'informatique moderne. Malgré ses défauts, les architectures Von Neumann ne sont pas les plus utilisées pour rien. Les architectures Harvard sont concrètement utilisées uniquement dans l'informatique embarquée, sur des microcontrôleurs très spécifiques.
==Le bus de communication avec les entrées-sorties==
Le processeur, la mémoire et les entrées-sorties sont connectées par un ou plusieurs '''bus de communication'''. Ce bus n'est rien d'autre qu'un ensemble de fils électriques sur lesquels on envoie des zéros ou des uns. Pour communiquer avec la mémoire, il y a trois prérequis qu'un bus doit respecter : pouvoir sélectionner la case mémoire (ou l'entrée-sortie) dont on a besoin, préciser à la mémoire s'il s'agit d'une lecture ou d'une écriture, et enfin pouvoir transférer la donnée. Pour cela, on doit donc avoir trois bus spécialisés, bien distincts, qu'on nommera le bus de commande, le bus d'adresse, et le bus de donnée.
* Le '''bus de données''', sur lequel s'échangent les données entre les composants.
* Le '''bus de commande''' pour configurer la mémoire et les entrées-sorties.
* Le '''bus d'adresse''', facultatif, permet de préciser quelle adresse mémoire il faut lire/écrire.
Chaque composant possède des entrées séparées pour le bus d'adresse, le bus de commande et le bus de données. Par exemple, une mémoire RAM possédera des entrées sur lesquelles brancher le bus d'adresse, d'autres sur lesquelles brancher le bus de commande, et des broches d'entrée-sortie pour le bus de données. Précisons cependant que le bus de commande n'est pas exactement le même entre des mémoires RAM/ROM et des entrées-sorties.
[[File:Bus general schematic.svg|centre|vignette|upright=2|Contenu d'un bus, généralités.]]
===Le réseau d'interconnexion : généralités===
Reprenons où nous nous étions arrêté. Avant de voir les architectures Harvard et Von Neumann, nous avions dit que le processeur, les mémoires et les entrées-sorties sont reliées entre eux par un réseau d'interconnexion. Nous venons de voir qu'il est possible de mutualiser certains bus, notamment celui de la mémoire RAM et celui de la mémoire ROM. Mais il est possible de faire la même chose pour les entrées-sorties. Là encore, il est possible de regrouper le bus mémoire avec les bus pour les entrées-sorties. Voyons ce que cela implique.
{|
|[[File:Réseau d'interconnexion avec un processeur au centre.png|centre|vignette|upright=2|Réseau d'interconnexion avec une architecture Harvard.]]
|[[File:Réseau d'interconnexion avec un processeur au centre et une architecture Harvard.png|centre|vignette|upright=2|Interconnexions d'une architecture Von Neumann.]]
|}
Avant de poursuivre, nous devons préciser quelque chose d'important. Sur les ordinateurs modernes, les entrées-sorties peuvent accéder à la mémoire RAM. Les ordinateurs modernes intègrent des techniques de '''''Direct Memory Access''''' (DMA) qui permettent aux entrées-sorties de lire ou d'écrire en mémoire RAM. Les transferts DMA se font sans intervention du processeur. Ils permettent de copier un bloc de plusieurs octets, dans deux sens : de la mémoire RAM vers une entrée-sortie, ou inversement. Le DMA demande d'ajouter un circuit dédié sur la carte mère : le contrôleur DMA. Il effectue la copie d'un paquet d'octets de la RAM vers l'entrée-sortie ou dans l'autre sens.
[[File:Réseau d'interconnexion avec un processeur au centre, et direct memory access.png|centre|vignette|upright=2|Réseau d'interconnexion avec un processeur au centre, et direct memory access]]
===Les bus systèmes===
La première solution utilise un bus unique, celui-ci est appelé le '''bus système''', aussi appelé ''backplane bus''. Le bus système est connecté à la mémoire RAM, la mémoire ROM, au processeur, et aux entrées-sorties. Tous les composants présents dans l'ordinateur sont connectés à ce bus, sans exception. De tels bus avaient pour avantage la simplicité. Le processeur n'est connecté qu'à un seul bus, ce qui utilise peu de broches et économise des fils. La mutualisation des bus est totale, le câblage est plus simple, la fabrication aussi.
[[File:Architecture minimale d'un ordinateur.png|centre|vignette|upright=2|Architecture minimale d'un ordinateur.]]
Un bus système contient un bus d'adresse, de données et de commande. Un bus système se marie bien avec des entrées-sorties mappées en mémoire. La conséquence est que le bus d'adresse ne sert pas que pour l'accès à la mémoire RAM/ROM, mais aussi pour l'accès aux entrées-sorties. Il y a moyen d'implémenter un système d'adresse séparés avec, mais c'est pas l'idéal.
[[File:Architecture Von Neumann avec les bus.png|centre|vignette|upright=2|Architecture Von Neumann avec les bus.]]
Un bus système n'a pas de limitations quant aux échanges de données. Le processeur peut communiquer directement avec les mémoires et les entrées-sorties, les entrées-sorties peuvent communiquer avec la mémoire RAM, etc. Notamment, un bus système peut implémenter le ''Direct Memory Access''. Il suffit juste de connecter un contrôleur DMA sur le bus système. Le contrôleur DMA est considéré comme une entrée-sortie, ses registres sont mappés en mémoire et sont donc accessibles directement par le processeur.
[[File:Bus système avec controleur DMA.png|centre|vignette|upright=2|Bus système avec contrôleur DMA.]]
Si on suit la définition à la lettre, un bus système est systématiquement une architecture Von Neumann, vu que la mémoire ROM et la mémoire RAM sont reliées sur le bus système. La conséquence est que les circuits de décodage d'adresse sont présents. Ils sont toujours sur la carte mère, et sont plus ou moins à côté du bus système. Cependant, le décodage d'adresse est parfois étendu pour tenir compte des entrées-sorties.
Les entrées-sorties soudées sur la carte mère ont elles aussi des entrées ''Chip Select'' ou quelque chose de similaire. Le décodage d'adresse peut alors les activer ou les désactiver suivant l'adresse envoyée sur le bus d'adresse. C'est ce qui arrive quand le processeur écrit dans un registre d’interfaçage : il envoie l'adresse de ce registre sur le bus d'adresse, le circuit de décodage d'adresse active seulement l'entrée-sortie associée. Il faut noter que ce n'est pas systématique, il existe des techniques pour se passer de décodage d'adresse. Mais nous en reparlerons dans le chapitre sur les bus de communication.
[[File:Chipselectfr.png|centre|vignette|upright=1.5|Exemple détaillé.]]
Les bus systèmes sont certes très simples, mais ils ont aussi des désavantages. Par exemple, il faut éviter que le processeur et les entrées-sorties se marchent sur les pieds, ils ne peuvent pas utiliser le bus en même temps. De tels conflits d'accès au bus système sont fréquents et ils réduisent la performance, comme on le verra dans le chapitre sur les bus. De plus, un bus système a le fâcheux désavantage de relier des composants allant à des vitesses très différentes : il arrivait fréquemment qu'un composant rapide doive attendre qu'un composant lent libère le bus. Le processeur était le composant le plus touché par ces temps d'attente.
Elle était utilisée sur les tout premiers ordinateurs, pour sa simplicité. Elle était parfaitement adaptée aux anciens composants, qui allaient tous à la même vitesse. De nos jours, les ordinateurs à haute performance ne l'utilisent plus trop, mais elle est encore utilisée sur certains systèmes embarqués, en informatique industrielle dans des systèmes très peu puissants.
===Les bus d'entrées-sorties===
Les bus systèmes ont de nombreux problèmes, ce qui fait que d'anciens ordinateurs faisaient autrement. À la place d'un bus système unique, ils utilisent un bus séparé pour les mémoires, et un autre séparé pour les entrées-sorties. Le bus spécialisé pour la mémoire est appelé le '''bus mémoire''', l'autre bus est appelé le '''bus d'entrées-sorties'''. Le bus mémoire est généralement relié à la fois à la mémoire RAM et à la mémoire ROM, les exceptions ne sont pas rares, cependant.
[[File:Bus mémoire séparé du bus pour les IO.png|centre|vignette|upright=2|Bus mémoire séparé du bus pour les IO]]
Les bus d'entrée-sorties peuvent être spécialisés et simplifiés. Par exemple, ils peuvent avoir un bus de commande différent de celui de la mémoire, qui utilise nettement moins de fils. Le bus d'adresse peut aussi être réduit, et utiliser des adresses plus courtes que celles du bus mémoire. Les bus de données peuvent aussi être de taille différentes. Il est ainsi possible d'avoir un bus mémoire capable de lire/écrire 64 bits à la fois, alors que la communication avec les entrées-sorties se fait octet par octet ! En général, les bus d'entrée-sortie sont assez petits, ils ont une taille de 8 ou 16 bits, même si le bus mémoire est plus grand. Cela permet de ne pas gaspiller trop de broches. Ajouter un bus d'entrée-sortie n'est donc pas très gourmand en broches et en fils.
: Il est en théorie possible d'avoir une fréquence différente pour les deux bus, avec un bus mémoire ultra-rapide et un bus pour les entrées-sorties est un bus moins rapide. Mais il faut que le processeur soit prévu pour, et c'est très rare.
Niveau performances, le processeur peut théoriquement accéder à la mémoire en attendant qu'une entrée/sortie réponde, mais il faut que le processeur soit prévu pour, et ce n'est pas de la tarte. Par contre, cela implique d'avoir des adresses séparées pour les registres d’interfaçage et la mémoire. En clair : pas d'entrée-sortie mappée en mémoire ! Un autre problème est que les entrées-sorties ne peuvent pas communiquer avec la mémoire directement, elles doivent passer par l'intermédiaire du processeur. En clair : pas de ''Direct Memory Access'' ! Les deux sont des défauts rédhibitoires pour les programmeurs système, notamment pour ceux qui codent les pilotes de périphériques.
Pour résumer, les défauts sont assez problématiques : pas d'entrées-sorties mappées en mémoire, pas de ''Direct Memory Access'', économie de broches limitée. Les deux premiers sont des défauts majeurs, qui font que de tels bus ne sont pas utilisés dans les ordinateurs modernes. À la place, ils utilisent une troisième solution, distincte des bus systèmes et des bus d'entrée-sorties.
===Les bus avec répartiteur===
Il existe une méthode intermédiaire, qui garde deux bus séparés pour la mémoire et les entrées-sorties, mais élimine les problèmes de brochage sur le processeur. L'idée est d'intercaler, entre le processeur et les deux bus, un '''circuit répartiteur'''. Il récupère tous les accès et distribue ceux-ci soit sur le bus mémoire, soit sur le bus des périphériques. Le ou les répartiteurs s'appellent aussi le '''''chipset''''' de la carte mère.
C'était ce qui était fait à l'époque des premiers Pentium. À l'époque, la puce de gestion du bus PCI faisait office de répartiteur. Elle mémorisait des plages mémoires entières, certaines étant attribuées à la RAM, les autres aux périphériques mappés en mémoire. Elles utilisaient ces plages pour faire la répartition.
[[File:IO mappées en mémoire avec séparation des bus.png|centre|vignette|upright=2|IO mappées en mémoire avec séparation des bus]]
Niveau adresses des registres d'interfacage, il est possible d'avoir soit des adresses unifiées avec les adresses mémoire, soit des adresses séparées.
L'usage d'un répartiteur ne pose pas de problèmes particuliers pour implémenter le DMA. La seule contrainte est que le contrôleur DMA soit intégré dans le répartiteur. Les échanges entre IO et mémoire passent par le répartiteur, qui fait le pont entre bus mémoire et bus des IO.
[[File:Implémentation du DMA avec un répartiteur.png|centre|vignette|upright=2|Implémentation du DMA avec un répartiteur]]
==Les microcontrôleurs et ''system on chip''==
Parfois, on décide de regrouper la mémoire, les bus, le CPU et les ports d'entrée-sortie dans un seul circuit intégré, un seul boitier. L'ensemble forme alors ce qu'on appelle un '''''System on Chip''''' (système sur une puce), abrévié en SoC. Le nom est assez explicite : un SoC comprend un système informatique complet sur une seule puce de silicium, microprocesseurs, mémoires et périphériques inclus. Ils incorporent aussi des ''timers'', des compteurs, et autres circuits très utiles.
[[File:ARMSoCBlockDiagram.svg|centre|vignette|upright=2|SoC basé sur un processeur ARM, avec des entrées-sorties typiques de celles d'un µ-contrôleur. Le support du bus CAN, d'Ethernet, du bus SPI, d'un circuit de PWM (génération de signaux spécifiques), de convertisseurs analogique-digital et inverse, sont typiques des µ-contrôleurs.]]
Le terme SoC regroupe des circuits imprimés assez variés, aux usages foncièrement différents et à la conception distincte. Les plus simples d’entre eux sont des microcontrôleurs, qui sont utilisés pour des applications à base performance. Les plus complexes sont utilisés pour des applications qui demandent plus de puissance, nous les appellerons SoC haute performance.
La relation entre SoC et microcontrôleurs est assez compliquée à expliquer, la terminologie n'est pas clairement établie. Il existe quelques cours/livres qui séparent les deux, d'autres qui pensent que les deux sont très liés. Dans ce cours, nous allons partir du principe que tous les systèmes qui regroupent processeur, mémoire et quelques périphériques/entrées-sorties sont des SoC. Les microcontrôleurs sont donc un cas particulier de SoC, en suivant cette définition.
===Les microcontrôleurs===
Les '''microcontrôleurs''' sont des composants utilisés dans l'embarqué ou d'informatique industrielle. Leur nom trahit leur rôle. Ils sont utilisés pour contrôler de l'électroménager, des chaines de fabrication dans une usine, des applications robotiques, les alarmes domestiques, les voitures. De manière générale, on les trouve dans tous les systèmes dits embarqués et/ou temps réel. Ils ont besoin de s'interconnecter à un grand nombre de composants et intègrent pour cela un grand nombre d'entrée-sorties. Les microcontrôleurs sont généralement peu puissants, et doivent consommer peu d'énergie/électricité.
Fait amusant, on en trouve dans certains périphériques informatiques. Par exemple, les anciens disques durs intégraient un microcontrôleur qui contrôlait plusieurs moteurs/ Les moteurs pour faire tourner les plateaux magnétiques et les moteurs pour déplacer les têtes de lecture/écriture étaient commandés par ce microcontrôleur. Comme autre exemple, les claviers d'ordinateurs intègrent un microcontrôleur connecté aux touches, qui détecte quand les touches sont appuyées et qui communique avec l'ordinateur. Nous détaillerons ces deux exemples dans les chapitres dédiés aux périphériques et aux disques durs, tout deviendra plus clair à ce moment là. La majorité des périphériques ou des composants internes à un ordinateur contiennent des microcontrôleurs.
Un microcontrôleur tend à intégrer des entrées-sorties assez spécifiques, qu'on ne retrouve pas dans les SoC destinés au grand public. Un microcontrôleur est typiquement relié à un paquet de senseurs et son rôle est de commander des moteurs ou d'autres composants. Et les entrées-sorties intégrées sont adaptées à cette tâche. Par exemple, ils tendent à intégrer de nombreux convertisseurs numériques-analogiques pour gérer des senseurs. Ils intègrent aussi des circuits de génération de signaux PWM spécialisés pour commander des moteurs, le processeur peut gérer des calculs trigonométriques (utiles pour commander la rotation d'un moteur), etc.
[[File:C8051F340-9 A B C D.png|centre|vignette|upright=2|Exemple d'entrées-sorties intégrées à un microcontroleur.]]
En plus des entrées-sorties intégrées, les microcontrôleurs ont souvent des '''ports d'entrées-sorties''' banalisés, à savoir qu'on peut brancher n'importe quoi dessus. Il était possible de brancher un capteur de température, un moteur à commander, un port série, un port parallèle, un écran, un clavier, une souris, peu importe. Les ports font souvent un octet et ils sont généralement reliées directement ou indirectement au processeur. Le logiciel qui s'exécute sur le processeur décide quoi envoyer sur des broches et comment interprète ce qui est reçu dessus.
Les ports banalisés de ce type sont parfois appelés des '''GPIO''', abréviation de ''General Purpose Input/Output'', mais nous utiliserons le terme de ''port I/O''. Un port regroupe plusieurs broches qui peuvent être utilisés à volonté. C'est le logiciel qui s'exécute sur le processeur qui décide de la fonction de broches. Un port IO peut fonctionner soit en tant qu'entrée, soit en tant que sortie. Il est possible de changer de sens en cours de fonctionnement, pour passer d'une entrée à une sortie ou inversement.
[[File:Afficheurs7seg.png|centre|vignette|upright=2|Exemple d'utilisation d'un port I/O. le port est connecté à un afficheur LCD dit 7-segments. Les 8 entrées de cet afficheur sont connectées à un port I/O d'un octet.]]
===Les SoC haute performance===
Les SoC les plus performants sont actuellement utilisés dans les téléphones mobiles, tablettes, ''Netbook'', ''smartphones'', ou tout appareil informatique grand public qui ne doit pas prendre beaucoup de place. La petite taille de ces appareils fait qu'ils gagnent à regrouper toute leur électronique dans un circuit imprimé unique. Mais les contraintes font qu'ils doivent être assez puissants. Ils incorporent des processeurs assez puissants, surtout ceux des ''smartphones''. C'est absolument nécessaire pour faire tourner le système d'exploitation du téléphone et les applications installées dessus.
Niveau entrées-sorties, ils incorporent souvent des interfaces WIFI et cellulaires (4G/5G), des ports USB, des ports audio, et même des cartes graphiques pour les plus puissants d'entre eux. Les SoC incorporent des cartes graphiques pour gérer tout ce qui a trait à l'écran LCD/OLED, mais aussi pour gérer la caméra, voire le visionnage de vidéo (avec des décodeurs/encodeurs matériel). Par exemple, les SoC Tegra de NVIDIA incorporent une carte graphique, avec des interfaces HDMI et VGA, avec des décodeurs vidéo matériel H.264 & VC-1 gérant le 720p. Pour résumer, les périphériques sont adaptés à leur utilisation et sont donc foncièrement différents de ceux des microcontrôleurs.
[[File:SOMblk.png|centre|vignette|upright=3|Exemple de SoC.]]
Un point important est que les processeurs d'un SoC haute performance sont... performants. Ils sont le plus souvent des processeurs de marque ARM, qui sont différents de ceux utilisés dans les PC fixe/portables grand public qui sont eux de type x86. Nous verrons dans quelques chapitres en quoi consistent ces différences, quand nous parlerons des jeux d'instruction du processeur. Autrefois réservé au monde des PCs, les processeurs multicœurs deviennent de plus en plus fréquents pour les SoC de haute performance. Il n'est pas rare qu'un SoC incorpore plusieurs cœurs. Il arrive même qu'ils soient foncièrement différents, avec plusieurs cœurs d'architecture différente.
La frontière entre SoC haute performance et microcontrôleur est de plus en plus floue. De nombreux appareils du quotidien intègrent des SoC haute performance, d'autres des microcontrôleurs. Par exemple, les lecteurs CD/DVD/BR et certains trackers GPS intègrent un SoC ou des processeurs dont la performance est assez pêchue. À l'opposé, les systèmes domotiques intègrent souvent des microcontrôleurs simples. Malgré tout, les deux cas d'utilisation font que le SoC/microcontrôleur est connecté à un grand nombre d'entrées-sorties très divers, comme des capteurs, des écrans, des LEDs, etc.
[[File:GPS tracker Hardware Architecture.png|centre|vignette|upright=2|Hardware d'un tracker GPS.]]
==Étude de quelques exemples d'architectures==
Après avoir vu la théorie, nous allons voir des exemples réels d'ordinateurs. Dans ce qui suit, nous allons voir des ordinateurs assez anciens, pour une raison simple : ils collent assez bien à l''''architecture de base''' vue plus haut, avec un CPU, une RAM et une ROM, quelques entrées-sorties. Tous les ordinateurs modernes, mais aussi dans les smartphones, les consoles de jeu et autres, utilisent une architecture grandement modifiée et améliorée, avec un grand nombre de périphériques, disques durs/SSD, un grand nombre de mémoires différentes, etc.
Il pourrait sembler pertinent d’étudier des microcontrôleurs ou des ''System On Chip'', en premier lieu. Mais nous éviterons soigneusement de tels systèmes pour le moment. La raison est qu'ils ont un grand nombre d'entrées-sorties, qui sont peu familières. Attendez-vous à avoir près d'une vingtaine ou centaine d'entrée-sorties différentes pour de tels systèmes. Le tout est très complexe, bien trop pour un premier exemple. À la place, nous allons voir précisément des exemples plus simples : les premiers PC, et des consoles de jeu 8 et 16 bits.
Bien que ce soit des systèmes très simples, ils sont cependant plus complexes que l'architecture de base. Et leur avantages/désavantages sont un peu inverse l'un de l'autre. Si on devait résumer les différences, on aurait ceci :
* Les PC ont plus d'entrées-sorties que les consoles, bien que nettement moins que pour les microcontrôleurs/SoC.
* Les PC utilisent des disques durs, les consoles font avec soit des cartouches de jeu, soit des CD/DVD.
* Les PC utilisent des cartes électroniques séparées pour le son et l'écran, les consoles utilisent des circuits soudés sur la carte mère, qui sont souvent des co-processeurs.
* Les PC ont une mémoire ROM soudées sur la carte mère, les consoles 8 bits font sans.
Les PC et micro-ordinateurs ont plus d'entrées-sorties que les consoles. Même si on mets de côté les périphériques, ils ont aussi beaucoup de composants soudées sur la carte mère. En comparaison, les consoles de jeu 8/16 bits se débrouillent avec : une cartouche de jeu et une manette en entrée, une sortie vidéo et une sortie son.
Un autre point important est l'absence de disque dur ou de lecteur CD. La présence d'un disque dur ou d'un lecteur CD/DVD complexifie tout de suite l'architecture des PC. Il faut leur réserver un bus dédié ou les connecter à un bus système, cela demande d'ajouter des circuits sur la carte mère, etc. Et surtout, il faut expliquer comment l'ordinateur exécute des programmes, ce qui demande de parler de l'interaction avec le disque dur et la ROM du BIOS. Rien de tout cela sur les consoles de jeu 8 et 16 bits. Elles utilisent à la place des cartouches de jeu, qui intègrent une mémoire ROM, pour mémoriser les données du jeu, voire son code. Pas besoin de parler des mémoires de stockage, on est beaucoup plus proche de l'architecture de base avec une ROM unique.
Par contre, n'allez pas croire que tout est rose avec les consoles 8/16 bits. Il y a quelques différences qui font qu'elles sont plus complexes qu'un PC sur certains points.
Les PC utilisent des cartes électroniques à brancher sur la carte mère pour alimenter l'écran et les hauts-parleurs/casques, alors que les consoles de jeu utilisent des souvent co-processeurs dédiés pour le son et les graphismes. La différence parait mineure, mais elle avantage les consoles. Nous avons déjà expliqué ce que sont les co-processeurs plus haut, aussi les co-processeurs des consoles nous paraitrons familiers. On n'a pas à s’embêter à expliquer ce que sont les cartes d'extension, les bus associés et tout ce qui va avec, cela peut être retardé pour la section sur l'architecture des PC.
La gestion de la cartouche de jeu est aussi un peu subtile à comprendre, bien que ce soit bien plus simple à comprendre qu'un système avec un disque dur. Les cartouches de jeu intègrent une mémoire ROM, pour mémoriser les données du jeu, voire son code. Et le processeur doit exécuter le code depuis cette mémoire ROM. La conséquence est que les consoles 8/16 bits utilisent une architecture Harvard, avec un bus relié à la cartouche pour lire les instructions. Mais si ce n'était que ça... Les cartouches mémorisent aussi les données pour les graphismes, ce qui fait que le co-processeur vidéo doit lui aussi lire la cartouche pour récupérer ces données...
===L'architecture de la TurboGraphX-16===
La console PC Engine, aussi appelée TurboGraphX, est une ancienne console 8 bits. Elle contient un processeur 65C02, 8 kibioctets de RAM, un port manettes, une carte son et une carte vidéo. La '''carte son''' est le composant qui s'occupe de commander les haut-parleurs et de gérer tout ce qui a rapport au son. La '''carte graphique''' est le composant qui est en charge de calculer les graphismes, tout ce qui s'affiche à l'écran. Sur cette console, les cartes son et graphique ne sont PAS des co-processeurs, ce sont des circuits électroniques dits fixes. C'est totalement différent de ce qu'on a sur les consoles modernes, aussi le préciser est important.
Bien que la carte graphique ne soit pas un processeur, elle a 64 kibioctets de RAM rien que pour elle. La RAM en question est séparée de la RAM normale, c'est un circuit intégré séparé. Et c'est un cas très fréquent, qui reviendra par la suite. La majeure partie des cartes graphiques dispose de leur propre '''mémoire vidéo''', totalement réservée à la carte graphique. La RAM vidéo est connectée à la carte graphique via un bus séparé. Le processeur est souvent connecté à ce bus, afin de pouvoir écrire des données dedans, mais ce n'est pas le cas ici.
[[File:Architecture de la PC Engine, aussi appelée TurboGrafx-16.png|centre|vignette|upright=2.5|Architecture de la PC Engine, aussi appelée TurboGrafx-16]]
L'architecture de la console était particulièrement simple. Le processeur était le centre de l'architecture, tout était connecté dessus. Il y a un bus pour la cartouche de jeu, un autre pour la RAM, un autre pour les manettes, un autre pour carte son, et un dernier pour la carte graphique. Le fait d'avoir un bus par composant est assez rare et ce n'est le cas ici que parce des conditions particulières sont remplies. Déjà, il y a peu d'entrée-sorties. Ensuite, les bus font tous 8 bits, vu que le processeur est un CPU 8 bits. Avec 5 connexions de 8 bits, le tout utilise 40 broches, ce qui est beaucoup, mais totalement gérable. Par contre, les choses changerons pour les autres consoles.
Au final, l'organisation des bus peut s'expliquer avec ce qu'on a vu dans la section sur les bus de communication. La console utilise une architecture Harvard, car la ROM et la RAM utilisent des bus différents. De plus, il y a des bus dédiés aux entrées-sorties, séparés des bus mémoire. Enfin, la carte graphique a droit à ses propres bus pour lire dans la cartouche et dans sa RAM vidéo dédiée.
===L'architecture de la console de jeu NES===
Maintenant, nous allons voir la console de Jeu Famicom, aussi appelée la NES en occident. Elle a une architecture centrée sur un processeur Ricoh 2A03, similaire au processeur 6502, un ancien processeur autrefois très utilisé et très populaire. Le processeur est associé à 2 KB de mémoire RAM.
Sur certaines cartouches, on trouve une RAM utilisée pour les sauvegardes, qui est adressée par le processeur directement. Première variation par rapport à l'architecture de la console précédente : l'ajout de la RAM pour les sauvegardes dans les cartouches.
Niveau carte graphique, une différence importante est que la carte graphique est connectée à la cartouche de jeu via un autre bus, afin de pouvoir lire les sprites et textures du jeu dans la cartouche.
[[File:Architecture de la NES.png|centre|vignette|upright=2.5|Architecture de la NES]]
La différence avec l'architecture précédente est que des bus ont été fusionnés. Comme dit plus haut, le système utilise une architecture Harvard, vu que la ROM est dans la cartouche, alors que la RAM est soudée à la carte mère. Par contre, la Famicon utilise un bus dédié aux entrées-sorties. Il est utilisé pour la carte son et la carte graphique, seules les manettes sont sur un bus à part. Ce qui fait qu'on devrait plutôt parler de bus de sorties, mais passons... L'essentiel est qu'on n'est plus tout à fait dans le cas de la console précédente, avec un bus par composant.
===L'architecture de la SNES===
L'architecture de la SNES est illustrée ci-dessous. Les changements pour le processeur et la RAM sont mineurs.La RAM a augmenté en taille et passe à 128 KB. Pareil pour la RAM de la carte vidéo, qui passe à 64 KB. Par contre, on remarque un changement complet au niveau des bus, de la carte graphique et de la carte son.
[[File:Architecture de la SNES.png|centre|vignette|upright=2|Architecture de la SNES]]
La console utilise un '''bus système unique''', sur lequel tout est connecté : ROM, RAM, entrées-sorties, etc. La seule exception est pour les manettes, qui sont encore connectées directement sur le processeur, via un bus séparé. La transition vers un bus système s'explique par le fait que la console est maintenant de 16 bits, ce qui fait que les bus doivent être plus larges. Le processeur adresse des mémoires RAM et ROM plus grandes, ce qui double la taille de leurs bus. De plus, les entrées-sorties aussi ont besoin d'un bus plus large. Le processeur n'ayant pas un nombre illimité de broches, la seule solution est de fusionner les bus en un seul bus système.
Un autre changement est que la carte graphique est maintenant composée de deux circuits séparés. Encore une fois, il ne s'agit pas de coprocesseurs, mais de circuits non-programmables. Par contre, la carte son est remplacée par deux coprocesseurs audio ! De plus, les deux processeurs sont connectés à une mémoire RAM dédiée de 64 KB, comme pour la carte graphique. L'un est un processeur 8 bits (le DSP), l'autre est un processeur 16 bits.
Un point très intéressant : certains jeux intégraient des coprocesseurs dans leurs cartouches de jeu ! Par exemple, les cartouches de Starfox et de Super Mario 2 contenait un coprocesseur Super FX, qui gérait des calculs de rendu 2D/3D. Le Cx4 faisait plus ou moins la même chose, il était spécialisé dans les calculs trigonométriques, et diverses opérations de rendu 2D/3D. En tout, il y a environ 16 coprocesseurs d'utiliser et on en trouve facilement la liste sur le net. La console était conçue pour, des pins sur les ports cartouches étaient prévues pour des fonctionnalités de cartouche annexes, dont ces coprocesseurs. Ces pins connectaient le coprocesseur au bus des entrées-sorties. Les coprocesseurs des cartouches de NES avaient souvent de la mémoire rien que pour eux, qui était intégrée dans la cartouche.
===L'architecture de la Megadrive et de la néo-géo===
Passons maintenant à la console de jeu Megadrive, une console 16 bits. Elle a une architecture similaire à celle de la néo-géo, une autre console bien plus puissante, sorti à peu près en même temps. Elles intègrent deux processeurs : un Motorola 68000 qui sert de processeur principal, un Z80 qui sert de processeur dédié à l'audio. Le Z80 et le Motorola 68000 étaient deux processeurs très populaires à l'époque. Le Z80 est une sorte de version améliorée de l'Intel 8088 utilisé sur les anciens PC et de nombreuses consoles utilisaient des Z80 comme processeur principal. Il était familier pour les programmeurs de l'époque, pour son cout réduit, sa bonne disponibilité, et bien d'autres avantages liés à sa production de masse.
Le Z80 est utilisé comme co-processeur audio. Il commande un synthétiseur sonore, et est relié à sa propre mémoire, distincte de la mémoire principale. Le MC68000 est le processeur principal et a une relation maitre-esclave avec le Z80 : le MC68000 envoie des commandes au Z80, mais la communication ne va pas dans l'autre sens.
Le Motorola 68000 était un processeur 16 bits, alors que le Z80 est un processeur 8 bits. Et cette différence fait que l'on ne peut pas connecter directement les deux sur le même bus, ou du moins pas facilement. La solution retenue est d'utiliser deux bus séparés : un bus de 16 bits connecté au 68000, un bus de 8 bits connecté au Z80. Le premier bus est un bus système sur lequel est connecté le 68000, 64 kibioctets de RAM, la cartouche de jeu, et la carte graphique. Le second bus est un bus de 8 bits, plus court, relié au Z80, à un synthétiseur sonore, et 8 kibioctets de RAM
Les deux bus sont connectés à un '''''chipset''''', un circuit répartiteur, qui fait le pont entre les deux bus. Les manettes sont connectées sur le ''chipset''. Il contient un registre de 8 bits, dans lequel le MC68000 peut écrire dedans à sa guise, le registre étant adressable par le processeur. Lorsque le MC68000 écrit une valeur dedans, cela déclenche l’exécution automatique d'un programme pré-déterminé sur le Z80.
: Pour ceux qui savent ce qu'est une interruption, les valeurs écrites dans ce registre sont des numéros d'interruption, qui indiquent quelle routine d'interruption exécuter.
[[File:Architecture de la Megadrive et de la Néogeo.png|centre|vignette|upright=2.5|Architecture de la Megadrive et de la Néogeo]]
Cet exemple nous montre que les bus systèmes sont certes très simples, mais aussi inflexibles. Ils fonctionnent bien quand les composants branchés dessus sont tous des composants 8 bits, ou sont tous de 16 bits, ou tous 32 bits. Mais dès qu'on mélange composants 8, 16, 32 ou 64 bits, les choses deviennent plus compliquées. Il est alors préférable d'utiliser des bus séparés, avec des répartiteurs pour faire le pont entre les différents bus. Et nous verrons que le problème s'est posé lui aussi sur les PC.
===L'architecture des anciennes consoles Playstation : beaucoup de co-processeurs===
Les consoles que nous venons d'aborder étaient des consoles 8 ou 16 bits. A partir des consoles 32 bits, leur architecture s'est rapprochée de celle des PC, avec un usage plus complexes de répartiteurs. La XBOX était très semblable à un PC : le processeur était un Pentium 3 modifié, la carte graphique était une Geforce 3 modifiée, les 64 mébioctets de RAM était la même mémoire DDR que celle des PC, le répartiteur secondaire était un ''chipset'' nForce de NVIDIA, etc. Mais les Playstation 1, 2 et 3 se distinguent de leur contemporains. Elles disposent de très nombreux co-processeurs, qui sont en plus très variés.
La Playstation 1 a été une des premières console à utiliser les CD-ROM comme support de stockage, en remplacement des cartouches. La conséquence est que la console contient une mémoire ROM, soudée à la carte mère, de 512 kibioctets. Elle contient aussi 2 mébioctets de RAM, une carte graphique avec 1 mébioctet de mémoire vidéo, un processeur, et de quoi gérer les périphériques. Il y a un co-processeur audio spécialisé, avec 512 kibioctets de RAM, ce qui nous est familier. Par contre, les autres co-processeurs ne le sont pas.
Déjà, le lecteur de CD-ROM est associé à des circuits sur la carte mère, il y a tout un sous-système dédié au lecteur de CD. Il y a un contrôleur qui sert d'interface avec le lecteur proprement dit, mais aussi deux co-processeurs audio et 32 kibioctets de RAM. Les co-processeurs audio servent à lire des CD sans trop utiliser le second co-processeur audio, ils lui servent de complément.
Ensuite, le processeur incorpore plusieurs cœurs, avec un cœur principal et plusieurs co-processeurs. Le premier est un co-processeur système, qui est utilisé pour gérer la mémoire cache intégrée au processeur, pour des fonctionnalités appelées interruptions et exceptions, ainsi que pour configurer le processeur. Le second est un co-processeur arithmétique spécialisé dans les calculs en virgule flottante, très importants pour le rendu 3D. Enfin, il y a un décodeur vidéo, qui n'est pas un co-processeur, mais un circuit non-programmable, spécialisé dans le décodage vidéo. De nos jours, ce circuit aurait été intégré dans la carte graphique, mais il était intégré dans le processeur sur la Playstation 2.
Pour le reste, le processeur est la figure centrale de la console. Il est connecté à 4 bus : un pour la RAM, un pour la carte graphique, un pour les manettes, un autre pour le reste. Le dernier bus est connecté au système audio et au système pour le lecteur CD. Ce serait un bus d'entrée-sortie, s'il n'était pas connecté à la mémoire ROM. Vous avez bien lu : la mémoire ROM est reliée au bus d'entrée-sortie.
[[File:Architecture de la Playstation.png|centre|vignette|upright=2.5|Architecture de la Playstation]]
La Playstation 2 est composé d'un processeur, couplé à 32 Mébioctets de RAM, et d'un paquet de co-processeurs. Plus de co-processeurs que la PS1. Le processeur principal n'est pas la même que celui de la PS1, mais il a une architecture similaire. Il intègre un décodeur vidéo sur le même circuit intégré, ainsi que deux co-processeur. Les co-processeurs ne sont cependant pas les mêmes.
Le co-processeur système disparait et est remplacé par un second co-processeur arithmétique. Les deux co-processeurs arithmétiques sont spécialisés dans les nombres flottants, avec quelques différences entre les deux. Par exemple, le second co-processeur gérait des calculs trigonométriques, des exponentielles, des logarithmes, et d'autres fonctions complexes du genre ; mais pas le premier co-processeur. Ils sont reliés à 4 kibioctets de RAM pour le premier, 16 kibioctets de RAM pour le second ; qui sont intégrées dans le processeur et non-représentés dans le diagramme ci-dessous.
La PS2 intègre aussi un co-processeur d'entrées-sorties. Pour information, il s'agit du processeur principal de la Playstation 1, qui est ici utilisé différemment, suivant que l'on place un jeu PS1 ou PS1 dans la console. Si on met un jeu PS1, il est utilisé pour émuler la Playstation 1, afin de faire tourner le jeu PS1 sur la PS2. Si on met un jeu PS2, il est utilisé comme co-processeur d'entrée-sortie et fait l'interface entre CPU et entrées-sorties. Il est relié à 2 mébioctets de RAM, soit exactement la même quantité de mémoire que la Playstation 1.
Tous les périphériques sont connectés au co-processeur d'entrées-sortie. Pour cela, le co-processeur d'entrées-sortie est relié à deux bus dédiés aux périphériques. Le premier bus est relié aux manettes, aux ports USB et aux ports pour cartes mémoires. Le second bus est relié à la carte son, la carte réseau, le lecteur DVD, et un port PCMIA. Notons que la carte son intègre un co-processeur audio, qui n'est pas représenté dans le diagramme ci-dessous.
[[File:Playstation 2 architecture.png|centre|vignette|upright=2.5|Playstation 2 architecture]]
==L'architecture des PC et son évolution==
Après avoir vu les consoles, nous allons maintenant voir les anciens PC, des années 80 ou 90. Le tout premier PC était techniquement l''''IBM PC'''. Par la suite, de nombreux ordinateurs ont tenté de reproduire l'IBM PC originel, avec parfois quelques modifications mineures. De tels ordinateurs ''IBM PC compatibles'', ont été très nombreux, pour des raisons diverses. Le fait d'utiliser des composants banalisés, facilement disponibles, ainsi qu'une bonne documentation de l'IBM PC originel, a grandement aidé. Les IBM PC compatibles ont progressivement évolué pour donner les PC actuels. L'IBM PC compatible a donné naissance à de nombreux standards divers.
===L'IBM PC originel et l'IBM PC XT===
[[File:IBM PC XT 02.jpg|vignette|IBM PC XT.]]
Nous allons commencer par voir l'IBM PC originel, et son successeur : l'IBM Personal Computer XT. Nous les appelerons tous deux l'IBM PC. L'IBM PC utilisait un processeur Intel 8088, qui était un processeur 8 bits. Ils utilisaient un bus système unique, appelé le '''bus XT'''. Le bus système allait à 4.77 MHz, soit la même fréquence que le processeur. C'était un bus de 8 bits, ce qui collait parfaitement avec les processeurs 8 bits commercialisés par Intel à l'époque.
L'IBM PC comprenait une mémoire ROM avec de quoi faire fonctionner le PC. La ROM en question contenait un programme minimal, appelé le '''BIOS''', sans lequel le PC ne fonctionnait pas du tout. Il servait de base pour le système d'exploitation et MS-DOS ne fonctionnait pas sans elle. De nos jours, son rôle est plus limité : sans elle, le PC ne démarre pas. Mais nous détaillerons cela dans le prochain chapitre.
En plus de la ROM pour le BIOS, l'IBM PC avait quatre mémoires ROM dédiée au langage de programmation BASIC. Lorsque le PC démarrait, il ne bootait pas un système d'exploitation, mais lançait l'interpréteur pour le langage BASIC. De nos jours, ce serait l'équivalent d'un ordinateur qui boote directement sur du Python, à savoir la console Python que vous avez peut-être déjà utilisé si vous avez testé Python. Ceux qui ont déjà touché à un ordinateur de l'époque savent ce que ca veut dire, mais c'est malheureusement très difficile à expliquer sans ce genre d'expérience. Toujours est-il que c'était une sorte de norme à l'époque
: les ordinateurs bootaient généralement sur un interpréteur BASIC.
[[File:XT Bus pins.svg|vignette|Connecteur du bus XT.]]
Les PC étaient conçus pour qu'on branche des '''cartes d'extension''', à savoir des cartes électroniques qu'on branchait sur la carte mère, à l'intérieur du PC. Les cartes d'extension de l'époque étaient surtout des cartes son ou des cartes graphiques, mais aussi des cartes pour brancher des péripéhriques. par exemple, on pouvait ajouter deux cartes graphiques dans l'IBM PC originel : l'''IBM Monochrome Display Adapter'' et/ou la ''IBM Color Graphics Adapter''. De nos jours, les cartes son sont intégrées à la carte mère, mais les cartes graphiques sont restées des cartes d'extension.
Les cartes d'extension étaient branchées sur un '''connecteur XT''', qui était directement relié au bus XT. Le connecteur XT est illustré ci-contre, mais ne vous en souciez pas trop pour le moment. La carte mère de l'IBM PC avait 5 connecteurs de ce type, qu'on pouvait peupler avec autant de cartes d'extension. L'IBM Personal Computer XT est passé à 8 connecteurs XT, soit trois de plus.
Pour ce qui est des périphériques, l'IBM PC avait plusieurs connecteurs : un port série, un port parallèle, un port pour le clavier, et un port pour un lecteur cassette. Le clavier et le lecteur cassette étaient connectés directement sur la carte mère, qui contenait quelques circuits pour gérer le clavier. Par contre, les deux premiers n'étaient pas connectés à la carte mère. Le port série était en réalité une carte d'extension, branchée sur un connecteur XT. Et il en est de même pour le port parallèle.
Pour ce qui est des supports de stockage, l'IBM PC originel n'avait pas de disque dur et n'avait que des lecteurs de disquette. De plus, le lecteur de disquette n'était pas connecté directement sur la carte mère, mais était connecté à une carte d'extension, branchée sur un connecteur XT. La carte d'extension avait deux connecteurs, un par lecteur de disquette, ce qui fait que les deux lecteurs de disquettes pouvaient être branchés sur une seule carte d'extension. L'IBM Personal Computer XT a ajouté un disque dur, sauf sur quelques sous-modèles spécifiques.
Le PC avait aussi un petit haut-parleur capable de faire des bips.
Pour résumer, l'IBM PC originel se reposait beaucoup sur les cartes d'extension, sa carte mère contenait peu de choses. Enfin, peu de choses... Il y avait un processeur Intel 8088, éventuellement un coprocesseur flottant 8087, de la RAM, de la ROM, et des circuits intégrés assez divers. En voici la liste, certains vous seront familiers, d'autres vous seront inconnus à ce stade du cours :
* les circuits de décodage d'adresse ;
* un contrôleur DMA intel 8273 ;
* un contrôleur d'interruption 8259 ;
* un contrôleur de bus Intel 8288 pour gérer le bus XT ;
* un générateur d'horloge Intel 8284 et un diviseur de fréquence ;
* un ''timer'' Intel 8253, le même que celui étudié dans le chapitre sur les ''timers'' ;
* un contrôleur parallèle 8255.
Les multiplexeurs, registres et portes logiques, sont des circuits de décodage d'adresse, qui permettent de combiner plusieurs RAM en une seule, idem avec la mémoire ROM. Si vous verrez qu'il y a 5 mémoires ROM : une ROM pour le BIOS, et quatre autres ROM pour le BASIC. Les 4 ROM du BASIC sont combinées en une seule mémoire ROM. Pour les RAM, il y en a 8 à 32, qui sont combinées en une seule RAM de 16 à 64 kibioctets.
[[File:IBM 5150 Motherboard.svg|centre|vignette|upright=3|Carte mère de l'IBM 5150, un modèle de l'IBM PC.]]
===L'architecture d'un IBM PC compatible 16 bits===
Les PC suivants sont passés à des processeurs 16 bits, mais c'était toujours des processeurs x86 d'Intel, à savoir des Intel 286 et 386. La RAM a grossi, quelques entrées-sorties ont été ajoutées, mais l'architecture globale est plus moins resté le même. C'est surtout au niveau du bus et des périphériques que les changements majeurs ont eu lieu.
[[File:ISA Bus pins.svg|vignette|Connecteur ISA.]]
Les PC 16 bits utilisaient un bus système unique, sur lequel tout était connecté : le processeur, la RAM, la ROM, les cartes d'extension et tout le reste. Le bus en question s'appelait le '''bus AT''', mais il a rapidement été renommé en '''bus ISA''' (''Industry Standard Architecture''). Le bus ISA était prévu pour avoir une compatibilité avec le bus 8 bits de l'IBM PC originel. D'ailleurs, cela se ressent jusque dans le connecteur utilisé : le connecteur ISA est un connecteur XT qu'on a fusionné avec un second connecteur pour l'étendre de 8 à 16 bits.
Les PC 16 bits avaient toujours un port série, un port parallèle, un clavier, un lecteur de disquette et des cartes d'extension. Des disques durs pouvaient être ajoutés, aussi. Mais pour ces périphériques, un changement majeur a eu lieu comparé à l'IBM PC originel. L'IBM PC originel utilisait des cartes d'extension pour tout, sauf le clavier. Mais maintenant, les périphériques ne sont plus connectés à une carte d'extension. À la place, les circuits de la carte d'extension sont déplacés sur la carte mère. Mais n'allez pas croire qu'ils étaient connectés directement au bus ISA, il y avait des intermédiaires.
Le clavier était relié à un '''contrôleur de clavier''', qui faisait l'interface entre le connecteur du clavier et le bus ISA. Le contrôleur de clavier était appelé le ''Keyboard Controler'', abrévié en KB. Il recevait ce qui est tapé au clavier et traduisait cela en quelque chose de compréhensible par l'ordinateur.
Les autres périphériques étaient connectés à un circuit intégré dédié : l''''Intel 82091AA'''. Il était connecté au lecteur de disquette, au port série et au port parallèle. Il servait d'intermédiaire entre ces périphériques et le bus ISA. Vous pouvez le voir comme une sorte de répartiteur, mais qui ne serait pas connecté sur le processeur et la RAM
Enfin, il ne faut pas oublier les autres composants présents sur l'IBM PC originel. Le BIOS est toujours là, de même que les ''timers'' Intel 8253 PIT, le contrôleur d'interruption Intel 8259 et le contrôleur DMA Intel 8237. Les PC 16 bits ont aussi intégré une ''Real Time Clock'' (RTC). Pour rappel, c'est un composant qui permet au PC de mémoriser la date et l'heure courante, à la seconde près. Le tout est résumé dans le schéma ci-dessous.
[[File:Architecture de l'IBM PC compatible.png|centre|vignette|upright=2.5|Architecture de l'IBM PC compatible]]
Un point important est que le bus ISA allait à la même fréquence que le processeur, vu que c'était un bus système. Les processeurs de l'époque étaient des CPU 286 d'Intel, ou le 386 d'Intel. Les Intel 286 allaient de 4 MHz minimum, à 25 MHz maximum. Le 386, quant à lui, allait de 12 à 40 MHz. Le bus ISA devait aller à cette fréquence, il était synchrone avec le processeur.
Par la suite, les processeurs ont gagné en performance, ce qui fait que le bus ISA est devenu trop lent pour le processeur. Une idée a alors été de conserver le bus ISA, pour des raisons de compatibilité, mais de le reléguer comme bus secondaire. L'ordinateur contient alors deux bus : un bus système, et un bus ISA secondaire. Le lien entre les deux est réalisé par un '''pont ISA''', ''ISA Bridge'' en anglais. Le bus ISA fonctionnait alors sa fréquence usuelle, alors que le bus système était beaucoup plus rapide. Le bus système fonctionnait à une fréquence bien plus élevée, ce qui fait que le processeur pouvait communiquer à pleine vitesse, notamment avec la RAM. Le processeur n'était alors plus forcé à aller à la même fréquence que le bus ISA
[[File:Architecture de l'IBM PC compatible avec bridge ISA.png|centre|vignette|upright=2.5|Architecture de l'IBM PC compatible avec bridge ISA]]
Les PC de l'époque intégraient donc plusieurs bus séparés. Vous avez bien lu : plusieurs bus ! Ici, il s'agit de ce que j'appelle des '''bus en cascade''', à savoir qu'un bus est connecté à un autre bus par un intermédiaire. Au passage, si j'aborde ces exemples, car c'est pareil sur les ordinateurs modernes. Le pont ISA a été remplacé par des circuits différents, mais qui ont un rôle assez similaire. Le ''chipset'' de votre carte mère n'est qu'un lointain descendant du pont ISA, qui s'interface avec des bus différents.
===L'arrivée des standards AT et IDE pour les disques durs===
Initialement, les disques durs étaient placés dans l'ordinateur et étaient connectés sur le bus ISA, via une carte d'extension ISA. En clair, il fallait connecter le disque dur sur une carte d'extension, et non sur la carte mère. Les cartes d'extension en question permettaient de connecter un ou plusieurs disques durs, parfois des lecteurs de disquette supplémentaires. Les cartes ISA de ce type faisaient juste l'interface entre le bus ISA et les disques durs, rien de plus. L'interface en question a été standardisée, ce qui a donné le standard ''AT Bus Attachment'', qui a été abrévié en ATA.
Et ce n'était pas que pour les disques durs, de nombreux composants étaient dans ce cas. Une carte d'extension servait d'intermédiaire entre eux et la carte mère. Les cartes d'extension en question étaient appelées des ''Host bus adapter''.
[[File:Acculogic sIDE-4 Controller ISA.jpg|centre|vignette|upright=2|Carte ISA d'interface disque dur, de marque Acculogic.]]
Mais les choses ont rapidement évoluées, que ce soit du côté des cartes mères que du côté des disques durs. Le '''standard IDE''' a permis de brancher un disque dur directement sur la carte mère, sans passer par une carte d'interface ISA. Pour cela, la carte mère réservait un connecteur ISA pour le disque dur, renommé '''connecteur ATA'''. Pour que cela soit possible, il a fallu rajouter des circuits sur la carte mère. Tout ce qui était sur les cartes d'interface ISA s'est retrouvé sur la carte mère.
[[File:Ajout des ports IDE sur la carte mère.png|centre|vignette|upright=2|Ajout des ports IDE sur la carte mère]]
En réalité, les connecteurs ATA étaient des connecteurs ISA simplifiés. Un connecteur ISA avait en tout 98 broches, alors qu'un connecteur ATA n'en contient que 40. Les broches qui étaient inutiles pour les disques durs ont simplement été enlevées. Et qui dit connecteur spécialisé, dit câble spécialisé. Les disques durs étaient branchés sur le connecteur AT grâce à un câble ATA, sur lequel on pouvait connecter deux disques durs.
[[File:ATA Plug.svg|centre|vignette|upright=2|Connecteur ATA.]]
[[File:ATA cables.jpg|centre|vignette|upright=2|Cable ATA.]]
Il était donc possible de connecter deux disques durs sur un seul connecteur ATA. Et cette possibilité est devenue d'autant plus utile par la suite. A partir de la version 2, ATA supportait aussi les lecteurs de disquettes, les lecteurs de CD/DVD, et bien d'autres supports de stockage. Il était alors possible de connecter un lecteur CD et un disque dur sur un seul connecteur. Les cartes mères avaient généralement deux connecteurs ATA, et n'avaient pas besoin de plus. C'était suffisant pour connecter un disque dur, un lecteur de disquette et un lecteur CD, configuration courante entre les années 90 et 2000.
Un câble est donc connecté à deux supports de stockage. Pour distinguer les deux, le standard ATA ajoute une possibilité de configuration. Sur un câble, il doit y avoir un support de stockage "maitre" et un support "esclave". C'était la terminologie de l'époque, que je reproduis ici, même si elle est fortement trompeuse. N'allez pas croire que cela implique que l'un ait des avantages sur l'autre. Le support 'maitre" n'a pas droit à plus de bande passante, il n'a pas la priorité sur l'autre, rien du tout. Il s'agit juste d'un nombre qui permet de savoir avec qui le processeur communique, qui vaut 0 pour le premier support, 1 pour l'autre. Une sorte d'adresse de 1 bit, si l'on veut.
[[File:ATA-Konfiguration02.png|centre|vignette|upright=2|Configuration ATA.]]
Pour configurer un support de stockage en mode "maitre" ou "esclave", le support de stockage avait quelques pins dédiés. Il suffisait de placer un détrompeur en plastique sur les pins adéquats. Les pins se trouvaient à l'arrière du disque dur ou du lecteur de CD/DVD/Disquette/autre.
[[File:HDD Master and Slave Description.jpg|centre|vignette|upright=2|Configuration ''Master/Slave''.]]
===L'architecture d'un PC avec un processeur Intel 486===
Maintenant, passons aux ordinateurs 32 bits, avec l'exemple d'un PC avec un processeur 486 d'Intel. A cette époque, le bus ISA était devenu trop limité et était en place d'être remplacé par le bus PCI, qui avait la même fonction. De nombreuses cartes d'extension utilisaient déjà ce standard et étaient branchées sur des connecteurs PCI dédiés, différents des connecteurs ISA. Intuitivement, on se dit que le bus PCI remplaçait le bus ISA, mais les choses étaient plus compliquées. Les disques durs gardaient leur connecteur ATA, et ne passaient pas par le bus PCI. Ils avaient un bus IDE séparé, qui était un bus ISA modifié.
Là encore, les processeurs étaient devenus beaucoup plus rapides que le bus PCI. Les deux allaient à des fréquences assez différentes, ce qui fait que le bus PCI était séparé du bus système. Il y avait alors deux implémentations possibles.
* La première utilise un répartiteur unique, relié au processeur, à la RAM, au bus PCI, et au bus IDE.
* La seconde utilise un bus système séparé du bus PCI, avec un '''pont PCI''' pour faire l'interface entre les deux.
Le '''''System Controler''''' était un circuit intégré, placé sur la carte mère, qui peut servir soit de pont PCI, soit de répartiteur. Le répartiteur PCI sert d'intermédiaire avec le bus PCI, mais aussi avec le bus IDE, utilisé pour les disques durs, aussi appelé le bus ''Parallel ATA''. Il peut aussi être connecté au processeur, à la mémoire RAM, ainsi qu'à la mémoire cache, mais cela ne sert que quand il est utilisé comme répartiteur.
[[File:Architecture d'un PC utilisant un bus PCI, implémentation avec un répartiteur.png|centre|vignette|upright=2|Architecture d'un PC utilisant un bus PCI, implémentation avec un répartiteur]]
Pour des raisons de compatibilité, le bus ISA avait été conservé, aux côtés du bus PCI. Il y avait un pont ISA en plus du pont/répartiteur PCI. Une implémentation possible aurait été de connecter les deux ponts ISA et PCI à un bus système unique. Mais cette solution n'a pas été retenue. La raison est que le bus PCI et le bus ISA ont des performances très différentes. Le bus PCI est très rapide, le bus ISA beaucoup plus lent. La différence est d'un ordre de grandeur, environ. Dans ces conditions, il est possible de faire passer les communications ISA à travers le bus PCI. Pour cela, le pont ISA est directement connecté sur le pont PCI, comme illustré ci-dessous.
Et il en est de même pour le bus dédié aux disques durs. En effet, les disques durs étaient autrefois reliés au bus ISA, mais cela a changé depuis. Ils disposent maintenant de leur propre bus dédié, le '''bus IDE''', qui est un bus ISA simplifié. Et ce bus ISA simplifié était connecté directement sur le pont PCI.
[[File:Architecture de l'IBM PC compatible avec pont PCI.png|centre|vignette|upright=2|Architecture de l'IBM PC compatible avec pont PCI]]
Dans ce qui va suivre, nous allons étudier un exemple qui utilise un bus système séparé, avec un pont PCI, sans répartiteur. Voilà pour les grandes lignes, mais le schéma ci-dessous montre que tout est plus complexe. Vous remarquerez des connexions optionnelles entre le pont PCI et la mémoire RAM et la mémoire cache. La raison est que le pont PCI peut aussi servir de répartiteur en remplacement du bus système. Concrètement, on peut alors retirer le bus système. La mémoire, le bus PCI, le bus ISA, le bus IDE, le processeur et la RAM sont alors connectés au répartiteur PCI, qui sert d'intermédiaire central entre tous ces composants. Mais ce n'est pas la solution qui a été retenue dans notre exemple.
[[File:Intel486-Typ PCI System.png|centre|vignette|upright=2|PC IBM compatible avec un 486, un bus PCI et un bus ISA. Le ''host bus'' est le bus système.]]
Le pont ISA sert ici d'intermédiaire entre le bus système et le bus ISA. De plus, il a été amélioré sur de nombreux points. Il inclut notamment des circuits qui étaient autrefois sur la carte mère, à savoir le contrôleur DMA 82C87 et le contrôleur d'interruption 82C59, ainsi que les ''timers'' Intel 82C54. Les composants restants sont eux reliés sur un quatrième bus : le bus X, l'ancêtre du bus ''Low Pin Count''. Le bus X était celui du BIOS, du contrôleur de clavier, de la ''Real Time Clock'', et du contrôleur de périphérique 82091AA d'Intel.
[[File:ISA Bridge schematic.png|centre|vignette|upright=2|ISA Bridge.]]
===L'architecture des PC des années 90-2000===
Par la suite, les ponts PCI et ISA ont évolué avec l'évolution des bus de l'ordinateur. Le bus ISA a progressivement été remplacé par d'autres bus, comme le bus ''Low Pin Count'', le bus PCI a été remplacé par le PCI Express, d'autres bus ont été ajoutés, etc. Mais la séparation du ''chipset'' en deux a été conservée.
[[File:Chipset schematic.svg|vignette|upright=1.0|Chipset séparé en northbridge et southbridge.]]
Le pont PCI et le pont ISA ont été remplacés respectivement par le '''pont nord''' et le '''pont sud''', plus connus par leurs noms anglais de ''northbridge'' et de ''southbridge''. Le pont nord servait d'interface entre le processeur, la mémoire et la carte graphique et est connecté à chacun par un bus dédié. Il intégrait aussi le contrôleur mémoire. Le pont sud est le répartiteur pour les composants lents, à savoir l'USB, l'Ethernet, etc. Le bus qui relie le processeur au pont nord était appelé le '''''Front Side Bus''''', abrévié en FSB.
[[File:IMac Chipset.png|centre|vignette|upright=2|Chipset séparé en northbridge et southbridge.]]
Un point important est que le bus PCI est devenu un bus assez lent, ce qui fait qu'il a finit par être connecté au pont sud. Le pont PCI est donc devenu le pont sud, dans le courant des années 2000. Durant un moment, un équivalent du pont ISA a subsisté dans un circuit de '''''Super IO'''''. Concrètement, il s'occupait du lecteur de disquette, du port parallèle, du port série, et des ports PS/2 pour le clavier et la souris. Mais il ne gérait pas le bus ISA, mais son remplaçant, le bus ''Low Pin Count''.
[[File:Motherboard diagram fr.svg|centre|vignette|upright=1.5|Carte mère avec circuit Super IO.]]
===L'architecture des PC depuis les années 2000===
Depuis la sortie du processeur AMD Athlon 64, le pont nord a été fusionné dans le processeur. La fusion ne s'est pas faite en une fois, des fonctionnalités ont progressivement été progressivement intégrées dans le processeur. Le pont sud est resté, mais il a alors été progressivement connecté directement au processeur. La raison derrière cette intégration est que les processeurs avaient de plus en plus de transistors à leur disposition. Ils en ont profité pour intégrer le pont nord. Et cela permettait de simplifier le câblage des cartes mères, sans pour autant rendre vraiment plus complexe la fabrication du processeur. Les industriels y trouvent leur compte.
La première étape a été l'intégration du contrôleur mémoire a été intégré au processeur. Concrètement, le résultat était que la mémoire RAM n'était plus connectée au pont nord, mais était connectée directement au processeur ! Il y a donc eu un retour d'un bus mémoire, mais spécialisé pour la mémoire RAM. En théorie, une telle intégration permet diverses optimisations quant aux transferts avec la mémoire RAM. Les transferts ne passent pas par un répartiteur, ce qui réduit le temps d'accès à la mémoire RAM. Ajoutons de sombres histoires de prefetching, d'optimisation des commandes, et j'en passe. Toujours est-il que le pont nord ne servait alors d'intermédiaire que pour les ports PCI Express, et le pont sud.
[[File:X58 Block Diagram.png|centre|vignette|upright=2|Chipset X58 d'Intel.]]
Par la suite, la carte graphique fût aussi connectée directement sur le processeur. Le processeur incorpore pour cela des contrôleurs PCI-Express. Le pont nord a alors disparu complétement, son intégration dans le processeur était complète. Sur les cartes mères Intel récentes, le pont sdud subsiste, il est appelé le ''Platform Controler Hub'', ou PCH. L'organisation des bus sur la carte mère qui résulte de cette connexion du processeur à la carte graphique, est illustrée ci-dessous, avec l'exemple du PCH.
[[File:Intel 5 Series architecture.png|centre|vignette|upright=2|Intel 5 Series architecture]]
<noinclude>
{{NavChapitre | book=Fonctionnement d'un ordinateur
| prev=L'interface électrique entre circuits intégrés et bus
| prevText=L'interface électrique entre circuits intégrés et bus
| next=La hiérarchie mémoire
| nextText=La hiérarchie mémoire
}}
</noinclude>
3shu86pw486wrpn8ude2n0cvc149ihz
765746
765745
2026-05-01T22:09:49Z
Mewtow
31375
/* Étude de quelques exemples d'architectures */
765746
wikitext
text/x-wiki
Dans les chapitres précédents, nous avons vu comment représenter de l'information, la traiter et la mémoriser avec des circuits. Mais un ordinateur n'est pas qu'un amoncellement de circuits et est organisé d'une manière bien précise. Il est structuré autour de trois circuits principaux :
* un '''processeur''', qui manipule l'information et donne un résultat ;
* une '''mémoire''' qui mémorise les données à manipuler ;
* les '''entrées/sorties''', qui permettent à l'ordinateur de communiquer avec l'extérieur.
[[File:Architecture Von Neumann.png|centre|vignette|upright=2|Architecture d'un système à mémoire.]]
Pour faire simple, le processeur est un circuit qui s'occupe de faire des calculs. Rien d'étonnant à cela. Je rappelle que tout est codé par des nombres dans un ordinateur, ce qui fait que manipuler des nombres revient simplement à faire des calculs. Un ordinateur n'est donc qu'une grosse calculatrice améliorée, et le processeur est le composant qui fait les calculs.
La mémoire s'occupe purement de la mémorisation des données, des nombres sur lesquelles faire des calculs. Pour être plus précis, il y a deux mémoires : une pour les données proprement dites, une autre pour le programme à exécuter. La première est la '''mémoire RAM''', la seconde est la '''mémoire ROM'''. Nous détaillerons ce que sont ces deux mémoires dans la suite du chapitre, mais sachez que nous avions déjà rencontré ces deux types de mémoires dans les chapitres sur les registres et les mémoires adressables.
Les entrées-sorties permettent au processeur et à la mémoire de communiquer avec l'extérieur et d'échanger des informations avec des périphériques. Les '''périphériques''' regroupent, pour rappel, tout ce est branché sur un ordinateur, mais n'est pas à l'intérieur de celui-ci.
Le processeur, les mémoires et les entrées-sorties communiquent ensemble via un '''réseau d'interconnexions'''. Le terme est assez barbare, mais rien de compliqué sur le principe. C'est juste un ensemble de fils électriques qui relie les différents éléments d'un ordinateur. Les interconnexions sont souvent appelées le bus de communication, mais le terme est un abus de langage, comme on le verra plus bas.
Afin de simplifier les explications, on va supposer que le réseau d'interconnexion est le suivant. Tout est connecté au processeur. Il y a des interconnexions entre le processeur et la mémoire RAM, d'autres interconnexions entre processeur et mémoire ROM, et d'autres entre le processeur et les entrées-sorties. Nous verrons que d'autres réseaux d'interconnexions fusionnent certaines interconnexions, pour les partager entre la ROM et la RAM, par exemple. Mais pour le moment, gardez le schéma ci-dessous en tête.
[[File:Réseau d'interconnexion avec un processeur au centre.png|centre|vignette|upright=2|Réseau d'interconnexion avec un processeur au centre]]
==Les mémoires RAM et ROM==
La mémoire est le composant qui mémorise des informations, des données. Dans la majorité des cas, la mémoire est composée de plusieurs '''cases mémoire''', chacune mémorisant plusieurs bits, le nombre de bits étant identique pour toutes les cases mémoire. Dans le cas le plus simple, une case mémoire mémorise un '''octet''', un groupe de 8 bits. Mais les mémoires modernes mémorisent plusieurs octets par case mémoire : elles ont des cases mémoires de 16, 32 ou 64 bits, soit respectivement 2/4/8 octets. De rares mémoires assez anciennes utilisaient des cases mémoires contenant 1, 2, 3, 4, 5, 6 7, 13, 17, 23, 36 ou 48 bits. Mais ce n'était pas des mémoires électroniques, aussi nous allons les passer sous silence.
Tout ce qu'il faut savoir est que la quasi-totalité des mémoires électronique a un ou plusieurs octets par case mémoire. Pour simplifier, vous pouvez imaginer qu'une mémoire RAM est un regroupement de registre, chacun étant une case mémoire. C'est une description pas trop mauvaise pour décrire les mémoires RAM, qu'on abordera dans ce qui suit.
{|class="wikitable"
|+ Contenu d'une mémoire, case mémoire de 16 bits (deux octets)
|-
! Case mémoire N°1
| 0001 0110 1111 1110
|-
! Case mémoire N°2
| 1111 1110 0110 1111
|-
! Case mémoire N°3
| 0001 0000 0110 0001
|-
! Case mémoire N°4
| 1000 0110 0001 0000
|-
! Case mémoire N°5
| 1100 1010 0110 0001
|-
! ...
| ...
|-
! Case mémoire N°1023
| 0001 0110 0001 0110
|-
! Case mémoire N°1024
| 0001 0110 0001 0110
|}
Dans ce cours, il nous arrivera de partir du principe qu'il y a un octet par case mémoire, par souci de simplification. Mais ce ne sera pas systématique. De plus, il nous arrivera d'utiliser le terme adresse pour parler en réalité de la case mémoire associée, par métonymie.
===La capacité mémoire===
Bien évidemment, une mémoire ne peut stocker qu'une quantité finie de données. Et à ce petit jeu, certaines mémoires s'en sortent mieux que d'autres et peuvent stocker beaucoup plus de données que les autres. La '''capacité''' d'une mémoire correspond à la quantité d'informations que celle-ci peut mémoriser. Plus précisément, il s'agit du nombre maximal de bits qu'une mémoire peut contenir. Elle est le produit entre le nombre de cases mémoire, et la taille en bit d'une case mémoire.
Toutes les mémoires actuelles utilisant des cases mémoire d'un ou plusieurs octets, ce qui nous arrange pour compter la capacité d'une mémoire. Au lieu de compter cette capacité en bits, on préfère mesurer la capacité d'une mémoire avec le nombre d'octets qu'elle contient. Mais les mémoires des PC font plusieurs millions ou milliards d'octets. Pour se faciliter la tâche, on utilise des préfixes pour désigner les différentes capacités mémoires. Vous connaissez sûrement ces préfixes : kibioctets, mébioctets et gibioctets, notés respectivement Kio, Mio et Gio.
{|class="wikitable"
|-
!Préfixe!!Capacité mémoire en octets!!Puissance de deux
|-
||Kio||1024||2<sup>10</sup> octets
|-
||Mio||1 048 576||2<sup>20</sup> octets
|-
||Gio||1 073 741 824||2<sup>30</sup> octets
|}
On peut se demander pourquoi utiliser des puissances de 1024, et ne pas utiliser des puissances un peu plus communes ? Dans la majorité des situations, les électroniciens préfèrent manipuler des puissances de deux pour se faciliter la vie. Par convention, on utilise souvent des puissances de 1024, qui est la puissance de deux la plus proche de 1000. Or, dans le langage courant, kilo, méga et giga sont des multiples de 1000. Quand vous vous pesez sur votre balance et que celle-ci vous indique 58 kilogrammes, cela veut dire que vous pesez 58 000 grammes. De même, un kilomètre est égal à 1000 mètres, et non 1024 mètres.
Autrefois, on utilisait les termes kilo, méga et giga à la place de nos kibi, mebi et gibi, par abus de langage. Mais peu de personnes sont au courant de l'existence de ces nouvelles unités, et celles-ci sont rarement utilisées. Et cette confusion permet aux fabricants de disques durs de nous « arnaquer » : Ceux-ci donnent la capacité des disques durs qu'ils vendent en kilo, méga ou giga octets : l’acheteur croit implicitement avoir une capacité exprimée en kibi, mébi ou gibi octets, et se retrouve avec un disque dur qui contient moins de mémoire que prévu.
===Lecture et écriture : mémoires ROM et RWM===
Pour simplifier grandement, on peut grossièrement classer les mémoires en deux types : les ''Read Only Memory'' et les ''Read Write Memory'', aussi appelées mémoires ROM et mémoires RWM. Pour les '''mémoires ROM''', on ne peut pas modifier leur contenu. On peut y récupérer une donnée ou une instruction : on dit qu'on y accède en lecture. Mais on ne peut pas modifier les données qu'elles contiennent. Quant aux '''mémoires RWM''', on peut y accéder en lecture (récupérer une donnée stockée en mémoire), mais aussi en écriture : on peut stocker une donnée dans la mémoire, ou modifier une donnée existante.
Tout ordinateur contient au minimum une ROM et une RWM (souvent une mémoire RAM), les deux n'ont pas exactement le même rôle. Pour simplifier, la mémoire ROM mémorise le programme à exécuter, la mémoire RWM stocke des données. Il a existé des ordinateurs où la mémoire RWM était une mémoire magnétique, voire acoustique, mais ce n'est plus le cas de nos jours. Pour les ordinateurs modernes, la mémoire RWM est une mémoire électronique. Pour faire la différence avec ces anciennes mémoires RWM, elle est appelée la '''mémoire RAM'''. Il s'agit d'une mémoire qui stocke temporairement des données que le processeur doit manipuler (on dit qu'elle est volatile). Elle s'efface complètement quand on coupe l'alimentation de l'ordinateur.
Il existe d'autres différences entre mémoire RWM et RAM :
* la mémoire RWM peut ne pas être volatile et donc conserver les données écrites ;
* la mémoire RAM possède un temps d'accès constant aux données (quelle que soit l'adresse), ce qui n'est pas garanti pour les mémoires RWM.
Outre le programme à exécuter, la mémoire ROM peut mémoriser des constantes, des données qui ne changent pas. Elles ne sont jamais modifiées et gardent la même valeur quoi qu'il se passe lors de l'exécution du programme. En conséquence, elles ne sont jamais accédées en écriture durant l'exécution du programme, ce qui fait que leur place est dans une mémoire ROM. La mémoire RWM est alors destinée aux données temporaires, qui changent ou sont modifiées lors de l'exécution du programme, et qui sont donc manipulées aussi bien en lecture et en écriture. La mémoire RWM mémorise alors les variables du programme à exécuter, qui sont des données que le programme va manipuler. Pour les systèmes les plus simples, la mémoire RWM ne sert à rien de plus.
[[File:Espaces d'adressage sur une archi harvard modifiée.png|centre|vignette|upright=2.5|Espaces d'adressage sur une archi harvard modifiée]]
Pour donner un exemple de données stockées en ROM, on peut prendre l'exemple des anciennes consoles de jeu 8 et 16 bits. Les jeux vidéos sur ces consoles étaient placés dans des cartouches de jeu, précisément dans une mémoire ROM à l'intérieur de la cartouche de jeu. La ROM mémorisait non seulement le code du jeu, le programme du jeu vidéo, mais aussi les niveaux et les ''sprites'' et autres données graphiques.
Une conséquence est que les consoles 8/16 bits n'avaient pas besoin de beaucoup de RAM, comparé aux ordinateurs de l'époque, vu qu'une grande partie des données utiles étaient dans une ROM directement accessible par le processeur. À l'opposé, les micro-ordinateurs devaient copier les données d'un jeu depuis une disquette dans la mémoire RAM, ce qui demandait d'avoir plus de RAM. Le passage au support CD sur les consoles 32 bits a eu la même conséquence. Le processeur ne pouvant pas lire directement le CD à sa guise, il fallait copier les données du CD en RAM. D'où l'apparition de temps de chargement assez longs, inexistants sur support cartouche.
===L'adressage mémoire===
Sur une mémoire RAM ou ROM, on ne peut lire ou écrire qu'une case mémoire, qu'un registre à la fois : une lecture ou écriture ne peut lire ou modifier qu'une seule case mémoire. Techniquement, le processeur doit préciser à quel case mémoire il veut accéder à chaque lecture/écriture. Pour cela, chaque case mémoire se voit attribuer un nombre binaire unique, l''''adresse''', qui va permettre de le sélectionner et de l'identifier celle-ci parmi toutes les autres. En fait, on peut comparer une adresse à un numéro de téléphone (ou à une adresse d'appartement) : chacun de vos correspondants a un numéro de téléphone et vous savez que pour appeler telle personne, vous devez composer tel numéro. Les adresses mémoires en sont l'équivalent pour les cases mémoire.
[[File:Adressage mémoire.png|centre|vignette|upright=2|Exemple : on demande à la mémoire de sélectionner la case mémoire d'adresse 1002 et on récupère son contenu (ici, 17).]]
L'adresse mémoire est générée par le processeur. Le processeur peut parfaitement calculer des adresses, en extraire du programme qu'il exécute, et bien d'autres choses. Nous détaillerons d'ailleurs les mécanismes pour dans les chapitres portant sur les modes d'adressage du processeur. Mais pour le moment, nous avons juste besoin de savoir que c'est le processeur qui envoie des adresses aux mémoires RAM et ROM.
Les adresses générées par le processeur sont alors envoyées à la RAM ou la ROM via une connexion dédiée, un ensemble de fils qui connecte le processeur à la mémoire : le '''bus d'adresse mémoire'''. L'adresse sélectionne une case mémoire, le processeur peut alors récupérer la donnée dedans pour une lecture, écrire une donnée pour l'écriture. Pour cela, un second ensemble de fil connecte le processeur à la RAM/ROM, mais cette fois-ci pour échanger des données. Il s'agit du '''bus de données mémoire'''. Les deux sont souvent regroupés sous le terme de '''bus mémoire'''.
Un ordinateur contient toujours une RAM et une ROM, ce qui demande aux bus mémoire de s'adapter à la présence de deux mémoires. Il y a alors deux solutions, illustrées dans les deux schémas ci-dessous. Avec la première, il y a un seul bus mémoire partagé entre la RAM et la ROM, comme illustré ci-dessous. Une autre solution utilise deux bus séparés : un pour la RAM et un autre pour la ROM. Nous verrons les différences pratiques entre les deux à la fin du chapitre. Pour le moment, nous allons partir du principe qu'il y a un bus pour la mémoire ROM, et un autre bus pour la RAM.
[[File:CPT-System-Architecture-gapfill1-ANS.svg|centre|vignette|upright=2|Architecture avec une ROM et une RAM.]]
[[File:Réseau d'interconnexion avec un processeur au centre.png|centre|vignette|upright=2|Réseau d'interconnexion avec un processeur au centre]]
===L'alignement mémoire : introduction===
Plus haut, nous avions dit qu'il y a une adresse par case mémoire, chaque case mémoire contenant un ou plusieurs octets. Mais les processeurs modernes partent du principe que la mémoire a un octet par adresse, pas plus. Et ce même si la mémoire reliée au processeur utilise des cases mémoires de 2, 3, 4 octets ou plus. D'ailleurs, la majorité des mémoires RAM actuelle a des cases mémoires de 64 bits, soit 8 octets par case mémoire. Les raisons à cela sont multiple, mais nous les verrons en détail dans le chapitre sur l'alignement mémoire. Toujours est-il qu'il faut distinguer les '''adresses mémoire''' et les '''adresses d'octet''' gérées par le processeur.
Le processeur génère des adresses d'octet, qui permettent de sélectionner un octet bien précis. L'adresse d'octet permet de sélectionner un octet parmi tous les autres. Mais la mémoire ne comprend pas directement cette adresse d'octet. Heureusement, l'octet en question est dans une case mémoire bien précise, qui a elle-même une adresse mémoire bien précise. L'adresse d'octet est alors convertie en une adresse mémoire, qui sélectionne la case mémoire adéquate, celle qui contient l'octet voulu. La case mémoire entière est lue, puis le processeur ne récupère que les données adéquates. Pour cela, des circuits d'alignement mémoire se chargent de faire la conversion entre adresses du processeur et adresse mémoire. Nous verrons cela dans le détail dans le chapitre sur l'alignement mémoire.
Il existe des mémoires qui n'utilisent pas d'adresses mémoire, mais passons : ce sera pour la suite du cours.
==Le processeur==
Dans les ordinateurs, l'unité de traitement porte le nom de '''processeur''', ou encore de '''''Central Processing Unit''''', abrévié en CPU. Le rôle principal du processeur est de faire des calculs. La plupart des processeurs actuels supportent au minimum l'addition, la soustraction et la multiplication. Quelques processeurs ne gèrent pas la division, qui est une opération très gourmande en circuit, peu utilisée, très lente. Il arrive que des processeurs très peu performants ne gèrent pas la multiplication, mais c'est assez rare.
Un processeur ne fait pas que des calculs. Tout processeur est conçu pour effectuer un nombre limité d'opérations bien précises, comme des calculs, des échanges de données avec la mémoire, etc. Ces opérations sont appelées des '''instructions'''. Les plus intuitives sont les '''instructions arithmétiques''', qui font des calculs, comme l'addition, la soustraction, la multiplication, la division. Mais il y a aussi des '''instructions d'accès mémoire''', qui échangent des données entre la mémoire RAM et le processeur. Les autres instructions ne sont pas très intuitives, aussi passons-les sous silence pour le moment, tout deviendra plus clair dans les chapitres sur le processeur.
===Le processeur exécute un programme, une suite d'instructions===
Tout processeur est conçu pour exécuter une suite d'instructions dans l'ordre demandé, cette suite s'appelant un '''programme'''. Ce que fait le processeur est défini par la suite d'instructions qu'il exécute, par le programme qu'on lui demande de faire. Les instructions sont exécutées dans un ordre bien précis, les unes après les autres. L'ordre en question est décidé par le programmeur. La totalité des logiciels présents sur un ordinateur sont des programmes comme les autres.
Le programme à exécuter est stockée dans la mémoire de l'ordinateur. C'est ainsi que l'ordinateur est rendu programmable : modifier le contenu de la mémoire permet de changer le programme exécuté. Mine de rien, cette idée de stocker le programme en mémoire est ce qui a fait que l’informatique est ce qu'elle est aujourd’hui. C'est la définition même d'ordinateur : appareil programmable qui stocke son programme dans une mémoire modifiable.
Une instruction est codée comme les données : sous la forme de suites de bits. Telle suite de bit indique qu'il faut faire une addition, telle autre demande de faire une soustraction, etc. Pour simplifier, nous allons supposer qu'il y a une instruction par adresse mémoire. Sur la grosse majorité des ordinateurs, les instructions sont placées les unes à la suite des autres dans l'ordre où elles doivent être exécutées. Un programme informatique n'est donc qu'une vulgaire suite d'instructions stockée quelque part dans la mémoire de l'ordinateur.
{|class="wikitable"
|+ Exemple de programme informatique
|-
! Adresse
! Instruction
|-
! 0
| Copier le contenu de l'adresse 0F05 dans le registre numéro 5
|-
! 1
| Charger le contenu de l'adresse 0555 dans le registre numéro 4
|-
! 2
| Additionner ces deux nombres
|-
! 3
| Charger le contenu de l'adresse 0555
|-
! 4
| Faire en XOR avec le résultat antérieur
|-
! ...
| ...
|-
! 5464
| Instruction d'arrêt
|}
Pour exécuter une suite d'instructions dans le bon ordre, le processeur détermine à chaque cycle quelle est la prochaine instruction à exécuter. Pour cela, le processeur mémorise l'adresse de l'instruction en cours dans un registre : le '''Program Counter'''. Je rappelle que des instructions consécutives sont dans des adresses consécutives. Pour passer à la prochaine instruction, il suffit donc d'incrémenter le ''program counter''.
: Si une instruction prend plusieurs octets, plusieurs adresses, il suffit de l'incrémenter du nombre d'octets/adresses.
D'autres processeurs font autrement : chaque instruction précise l'adresse de la suivante, directement dans la suite de bit représentant l'instruction en mémoire. Ces processeurs n'ont pas besoin de calculer une adresse qui leur est fournie sur un plateau d'argent. Sur des processeurs aussi bizarres, pas besoin de stocker les instructions en mémoire dans l'ordre dans lesquelles elles sont censées être exécutées. Mais ces processeurs sont très très rares et peuvent être considérés comme des exceptions à la règle.
Nous venons de voir qu'un processeur contient un registre appelé le ''program counter''. Mais il n'est pas le seul. Pour pouvoir fonctionner, tout processeur doit mémoriser un certain nombre d’informations nécessaires à son fonctionnement, qui sont mémorisées dans des '''registres de contrôle'''. La plupart ont des noms assez barbares (registre d'état, ''program counter'') et nous ne pouvons pas en parler à ce moment du cours. Nous les verrons en temps voulu, mais il est important de préciser qu'ils existent.
===L'intérieur d'un processeur===
Fort de ce que nous savons, nous pouvons expliquer ce qu'il y a à l'intérieur d'un processeur. Le premier point est qu'un processeur fait des calculs, ce qui implique qu'il contient des circuits de calcul. Ils sont regroupés dans une ou plusieurs '''unités de calcul'''. Nous avons déjà vu comment fabriquer une unité de calcul simple, dans un chapitre dédié, et c'est la même qui est présente dans un processeur. Du moins dans les grandes lignes, les circuits des processeurs modernes étant particulièrement optimisés. Il en est de même pour les autres circuits de calcul comme ceux pour les multiplications/division/autres.
Si le processeur fait des calculs, qu'en est-il des opérandes ? Et où sont mémorisés les résultats des opérations ? Pour cela, le processeur incorpore des '''registres généraux'''. Les registres généraux servent à mémoriser les opérandes et résultats des instructions. Ils mémorisent des données, contrairement aux registres de contrôle mentionnés plus haut. Le nombre de registres généraux dépend grandement du processeur. Les tout premiers processeurs se débrouillaient avec un seul registre, mais les processeurs actuels utilisent plusieurs registres, pour mémoriser plusieurs opérandes/résultats. Mais la présence de registres est source de pas mal de petites complications. Par exemple, il faut échanger les données entre la RAM et les registres, il faut gérer l'adressage des registres, etc. Il s'agit là de détails que nous expliquerons dans les chapitres sur le processeur.
Le processeur contient enfin un circuit pour interpréter les instructions, appelé l''''unité de contrôle'''. Elle lit les instructions depuis la mémoire, interprète la suite de bit associée, et commande le reste du processeur pour qu'il exécute l'instruction. Ses fonctions sont assez variées, mais nous allons simplifier en disant qu'elle configure l'unité de calcul et les registres pour faire le bon calcul. Son rôle est d'analyser la suite de bit qui constitue l'instruction, et d'en déduire quelle opération effectuer. Elle gère aussi l'accès à la mémoire RAM, et notamment ce qui est envoyé sur son bus d'adresse.
: Dans ce qui suit, on suppose que le ''program counter'' fait partie de l'unité de contrôle.
Pour résumer, un processeur contient une unité de calcul, des registres et une interface avec la mémoire RAM. Le tout est interconnecté, afin de pouvoir échanger des données. L’ensemble forme le '''chemin de données''', nom qui trahit le fait que c'est là que les données se déplacent et sont traitées. Il faut aussi ajouter l'unité de contrôle pour commander le tout. Elle lit les instructions en mémoire, puis commande le chemin de données pour que l'instruction soit exécutée correctement.
[[File:Microarchitecture d'un processeur.png|centre|vignette|upright=2|Microarchitecture d'un processeur]]
Un processeur parait donc assez simple expliqué comme ça, mais il y a de nombreuses subtilités. L'une d'entre elle est liée aux registres, et notamment à la manière dont on les utilise. Pour expliquer ces subtilités, nous allons voir comment les premiers processeurs fonctionnaient, avant de passer aux processeurs un peu plus modernes. Les tout premiers processeurs n'utilisaient qu'un seul registre, ce qui fait que l'utilisation des registres était très simple. Le passage à plusieurs registres a complexifié le tout.
===D'où viennent les adresses ?===
Il est maintenant temps de répondre à une question qui s'était posée dans la section sur l'adressage : d'où viennent les adresses envoyées à la mémoire ? Pour ce qui est des adresses des instructions, on connait déjà la réponse : c'est le ''program counter'' qui gère tout. Mais pour les données, il y a deux possibilités, qui correspondent à deux types de données : les données statiques et les données dynamiques.
Les '''données statiques''' sont les plus simples : elles existent durant toute la durée de vie du programme. Tant que celui-ci s'exécute, il aura besoin de ces données. En conséquence, il leur réserve une place en mémoire, qui est toujours la même. La donnée se situe donc à une adresse bien précise, qui ne change jamais. Attention cependant : les données peuvent être modifiées, changer de valeur. Le programme écrit dans les donnée statiques, c'est même assez fréquent. Ce sont ne sont pas forcément des données constantes !
Pour les données statiques, elles sont toujours placées à la même adresse mémoire. Pour le dire autrement, l'adresse mémoire est une constante, qui ne change pas. L'adresse est connue avant d’exécuter le programme, le programme a été codé pour utiliser cette adresse pour telle donnée, on a réservé une adresse pour la donnée voulue. Et même si vous quittez le programme et vous le relancez plusieurs jours après, l'adresse mémoire sera la même avant et après.
Et cela permet d'utiliser l''''adressage direct'''. L'idée est que les instructions précisent donc l'adresse à lire ou écrire. Pour cela, l'adresse est intégrée dans l’instruction elle-même. Pour rappel, l'instruction est codée par une suite de bit en mémoire RAM/ROM, dont certains précisent l'opération à faire, les autres servant à autre chose. L'idée est que certains bits précisent l'adresse mémoire de la donnée à lire. Les instructions sont donc du genre :
* ''LOAD 56'' - lit l'adresse numéro 56 et copie son contenu dans un registre;
* ''STORE R5 , adress 99'', copie le registre R5 dans l'adresse 99 ;
* ''ADD R5 , adress 209'' : additionne le registre R5 avec le contenu de l'adresse 209.
S'il existe des données statiques, c'est signe qu'il existe des '''données dynamiques'''. Ces dernières sont des données qui sont créées ou détruites selon les besoins. Pour comprendre d'où viennent ces données dynamiques, prenons le cas d'une personne qui écrit du texte sur un ordinateur. Le texte qu'il écrit est mémorisé dans la RAM de l’ordinateur, puis est sauvegardé sur le disque dur quand il sauvegarde son document. Au fur et à mesure qu'il écrit du texte, la RAM utilisée par ce texte augmente. Donc, ce texte est une donnée dynamique, dont la taille varie dans le temps.
Pour gérer des données dynamiques, la plupart des systèmes d'exploitation incorporent des fonctionnalités d''''allocation mémoire'''. Derrière ce nom barbare, se cache quelque chose de simple : les programmes peuvent réclamer de la mémoire au système d'exploitation, pour y placer les données qu'ils souhaitent. Les langages de programmation bas niveau supportent des fonctions comme malloc(), qui permettent de demander un bloc de mémoire de N octets à l'OS, qui doit alors accommoder la demande. De même, un programme peut libérer de la mémoire qu'il n'utilise plus avec des fonctions comme free().
Avec l'allocation mémoire, les données n'ont pas de place fixe en mémoire. Leur adresse mémoire peut varier d'une exécution du programme à l'autre. Pire que ça : les données peuvent être déplacées dans la mémoire RAM, si besoin. En clair : l'adresse est déterminée lors de l'exécution du programme. L'adresse est alors soit calculée, soit lue depuis la mémoire RAM, soit déterminée autrement. Toujours est-il qu'elle se retrouve dans un registre général. Pour gérer ces adresse variables, les processeurs utilisent l''''adressage indirect'''. L'adressage indirect permet d'utiliser une adresse qui est dans un registre de données. L'adresse en question peut être envoyée à la mémoire RAM sans problème, le processeur peut automatiquement connecter le registre adéquat sur le bus d'adresse.
Au tout début de l'informatique, les processeurs ne supportaient que l'adressage direct, pas plus. L'adressage indirect n'était tout simplement pas possible. Avec l'adressage direct, l'adresse à lire est extraite directement des instructions, par l'unité de contrôle. Le bus d'adresse de la RAM est alors relié directement à l'unité de contrôle, le bus de données est relié aux registres.
[[File:Architecture Harvard avec adressage direct uniquement.png|centre|vignette|upright=2|Architecture Harvard avec adressage direct uniquement]]
Mais dès les années 70, l'adressage indirect est apparu, rendant la programmation bien plus simple. Mais cela a demandé quelques adaptation au niveau du processeur. Avec l'adressage indirect, le bus d'adresse est connecté aux registres. Il a donc fallu rajouter un multiplexeur pour que le processeur décide de relier le bus d'adresse soit aux registres, soit à l'unité de contrôle.
===Un ordinateur peut avoir plusieurs processeurs===
La plupart des ordinateurs n'ont qu'un seul processeur, ce qui fait qu'on désigne avec le terme d''''ordinateurs mono-processeur'''. Mais il a existé (et existe encore) des '''ordinateurs multi-processeurs''', avec plusieurs processeurs sur la même carte mère. L'idée était de gagner en performance : deux processeurs permettent de faire deux fois plus de calcul qu'un seul, quatre permettent d'en faire quatre fois plus, etc. C'est très courant sur les supercalculateurs, des ordinateurs très puissants conçus pour du calcul industriel ou scientifique, mais aussi sur les serveurs ! Dans le cas le plus courant, ils utilisent plusieurs processeurs identiques : on utilise deux processeurs Core i3 de même modèle, ou quatre Pentium 3, etc.
Pour utiliser plusieurs processeurs, les programmes doivent être adaptés. Pour cela, il y a plusieurs possibilités :
* Une première possibilité, assez intuitive, est d’exécuter des programmes différents sur des processeurs différents. Par exemple, on exécute le navigateur web sur un processeur, le lecteur vidéo sur un autre, etc.
* La seconde option est de créer des programmes spéciaux, qui utilisent plusieurs processeurs. Ils répartissent les calculs à faire sur les différents processeurs. Un exemple est la lecture d'une vidéo sur le web : un processeur peut télécharger la vidéo pendant le visionnage et bufferiser celle-ci, un autre processeur peut décoder la vidéo, un autre décoder l'audio. De tels programmes restent des suites d'instructions, mais ils sont plus complexes que les programmes normaux, aussi nous les passons sous silence.
* La troisième option est d’exécuter le même programme sur les différents processeurs, mais chaque processeur traite son propre ensemble de données. Par exemple, pour un programme de rendu 3D, quatre processeurs peuvent s'occuper chacun d'une portion de l'image.
[[File:Architecture de Von Neumann Princeton multi processeurs.svg|centre|vignette|upright=2|Architecture de Von Neumann Princeton multi processeurs]]
De nos jours, les ordinateurs grand public les plus utilisés sont dans un cas intermédiaire, ils ne sont ni mono-, ni multi-processeur. Ils n'ont qu'un seul processeur, dans le sens où si on ouvre l'ordinateur et qu'on regarde la carte mère, il n'y a qu'un seul processeur. Mais ce processeur est en réalité assez similaire à un regroupement de plusieurs processeurs dans le même boitier. Il s'agit de '''processeurs multicœurs''', qui contiennent plusieurs cœurs, chaque cœur pouvant exécuter un programme tout seul.
La différence entre cœur et processeur est assez difficile à saisir, mais pour simplifier : un cœur est l'ensemble des circuits nécessaires pour exécuter un programme. Chaque cœur dispose de toute la machinerie électronique pour exécuter un programme, à savoir des circuits aux noms barbares comme : un séquenceur d'instruction, des registres, une unité de calcul. Par contre, certains circuits d'un processeur ne sont présents qu'en un seul exemplaire dans un processeur multicœur, comme les circuits de communication avec la mémoire ou les circuits d’interfaçage avec la carte mère.
Suivant le nombre de cœurs présents dans notre processeur, celui-ci sera appelé un processeur double-cœur (deux cœurs), quadruple-cœur (4 cœurs), octuple-cœur (8 cœurs), etc. Un processeur double-cœur est équivalent à avoir deux processeurs dans l'ordinateur, un processeur quadruple-cœur est équivalent à avoir quatre processeurs dans l'ordinateur, etc. Ces processeurs sont devenus la norme dans les ordinateurs grand public et les logiciels et systèmes d'exploitation se sont adaptés.
===Les coprocesseurs===
Quelques ordinateurs assez anciens disposaient de '''coprocesseurs''', des processeurs qui complémentaient un processeur principal. Les ordinateurs de ce type avaient un processeur principal, le '''CPU''', qui était secondé par un ou plusieurs coprocesseurs. Sauf exception, le CPU et le coprocesseur exécutent des programmes différents, ils travaillent en parallèle.
Les coprocesseurs les plus connus sont les '''coprocesseurs pour le rendu 2D/3D'''. Ils ont eu leur heure de gloire sur les anciennes consoles de jeux vidéo, comme Super Nintendo, la Playstation et autres consoles de cette génération ou antérieure. Ils s'occupaient respectivement de calculer les graphismes des jeux vidéos. De nos jours, ils ont été remplacés par des cartes graphiques, ou des ''Graphic Processing Units'', qui ne sont pas considérées comme des coprocesseurs.
Les '''coprocesseurs sonores''' sont une sorte d'ancêtre des cartes son, utilisés sur les anciennes consoles de jeux vidéo, comme La Nintendo 64, la Playstation et autres consoles antérieures. Ils s'occupaient respectivement de calculer tout ce qui a trait au son. Pour donner un exemple, on peut citer la console Neo-géo, qui disposait de deux processeurs travaillant en parallèle : un processeur principal, et un coprocesseur sonore. Le processeur principal était un Motorola 68000, alors que le coprocesseur sonore était un processeur Z80.
L'accès aux périphériques est quelque chose sur lequel nous passerons plusieurs chapitres dans ce cours. Mais sachez que l'accès aux périphériques peut demander pas mal de puissance de calculs. Le CPU principal peut faire ce genre de calculs par lui-même, mais il n'est pas rare qu'un '''coprocesseur d'IO''' soit dédié à l'accès aux périphériques. Un exemple assez récent est celui de la console de jeu Nintendo 3DS. Elle disposait d'un processeur principal de type ARM9, d'un coprocesseur pour les divisions qu'on abordera plus bas, et d'un second processeur ARM7. L'ARM 7 était utilisé comme coprocesseur d'I/O, ainsi que pour l'émulation de la console GBA.
[[File:Asmp 2.gif|centre|vignette|upright=2|Co-processeur pour l'accès aux entrées-sorties.]]
Les '''coprocesseurs arithmétiques''' sont un peu à part des autres. Ils sont spécialisés dans les calculs en virgule flottante. Ils étaient utilisés à une époque où les CPU ne géraient que des calculs entiers (en binaire ou en BCD). Un exemple est le coprocesseur flottant x87, complémentaire des premiers processeurs Intel x86. Il y a eu la même chose sur les processeurs Motorola 68000, avec deux coprocesseurs flottants appelés les Motorola 68881 et les Motorola 68882.
Un exemple récent de coprocesseur est celui utilisé sur la console de jeu Nintendo DS. La console utilisait deux processeurs, un ARM9 et un ARM7, qui ne pouvaient pas faire de division entière. Il s'agit pourtant d'opérations importantes dans le cas du rendu 3D, ce qui fait que les concepteurs de la console ont rajouté un coprocesseur spécialisé dans les divisions entières et les racines carrées. Le coprocesseur était adressable directement par le processeur, comme peuvent l'être la RAM ou les périphériques.
==Les entrées-sorties==
Tous les circuits vus précédemment traitent des données codées en binaire. Ceci dit, les données ne sortent pas de n'importe où : l'ordinateur contient des composants électroniques qui traduisent des informations venant de l’extérieur en nombres. Ces composants sont ce qu'on appelle des '''entrées'''. Par exemple, le clavier est une entrée : l'électronique du clavier attribue un nombre entier (''scancode'') à une touche, nombre qui sera communiqué à l’ordinateur lors de l'appui d'une touche. Pareil pour la souris : quand vous bougez la souris, celle-ci envoie des informations sur la position ou le mouvement du curseur, informations qui sont codées sous la forme de nombres. La carte son évoquée il y a quelques chapitres est bien sûr une entrée : elle est capable d'enregistrer un son, et de le restituer sous la forme de nombres.
S’il y a des entrées, on trouve aussi des '''sorties''', des composants électroniques qui transforment des nombres présents dans l'ordinateur en quelque chose d'utile. Ces sorties effectuent la traduction inverse de celle faite par les entrées : si les entrées convertissent une information en nombre, les sorties font l'inverse : là où les entrées encodent, les sorties décodent. Par exemple, un écran LCD est un circuit de sortie : il reçoit des informations, et les transforme en image affichée à l'écran. Même chose pour une imprimante : elle reçoit des documents texte encodés sous forme de nombres, et permet de les imprimer sur du papier. Et la carte son est aussi une sortie, vu qu'elle transforme les sons d'un fichier audio en tensions destinées à un haut-parleur : c'est à la fois une entrée, et une sortie.
Les '''entrées-sorties''' incluent toutes les entrées et sorties, et même certains composants qui sont les deux à la fois. Il s'agit d'un terme générique, qui regroupe des composants forts différents. Dans ce qui va suivre, nous allons parfois parler de périphériques au lieu d'entrées-sorties, mais les deux termes ne sont pas équivalents. Dans le détail, les entrées-sorties regroupent :
* Les '''périphériques''' sont les composants connectés sur l'unité centrale. Exemple : les claviers, souris, webcam, imprimantes, écrans, clés USB, disques durs externes, la Box internet, etc.
* Les '''cartes d'extension''', qui se connectent sur la carte mère via un connecteur, comme les cartes son ou les cartes graphiques.
* D'autres composants sont soudés à la carte mère mais sont techniquement des entrées-sorties : les cartes sons soudées sur les cartes mères actuelles, par exemple.
===L'interface avec le reste de l'ordinateur===
Les entrées-sorties sont très diverses, fonctionnent très différemment les unes des autres. Mais du point de vue du reste de l'ordinateur, les choses sont relativement standardisées. Du point de vue du processeur, les entrées-sorties sont juste des paquets de registres ! Tous les périphériques, toutes les entrées-sorties contiennent des '''registres d’interfaçage''', qui permettent de faire l'intermédiaire entre l'entrée/sortie et le reste de l'ordinateur. L'entrée/sortie est conçu pour réagir automatiquement quand on écrit dans ces registres.
[[File:Registres d'interfaçage.png|centre|vignette|upright=2|Registres d'interfaçage.]]
Les registres d’interfaçage sont assez variés. Les plus évidents sont les '''registres de données''', qui permettent l'échange de données entre le processeur et les périphériques. Pour échanger des données avec l'entrée/sortie, le processeur a juste à lire ou écrire dans ces registres de données. On trouve généralement un registre de lecture et un registre d'écriture, mais il se peut que les deux soient fusionnés en un seul registre d’interfaçage de données. Si le processeur veut envoyer une donnée à une entrée/sortie, il a juste à écrire dans ces registres. Inversement, s'il veut lire une donnée, il a juste à lire le registre adéquat.
Mais le processeur ne fait pas que transmettre des données à l'entrée/sortie. Le processeur lui envoie aussi des « commandes », des valeurs numériques auxquelles l'entrée/sortie répond en effectuant un ensemble d'actions préprogrammées. En clair, ce sont l'équivalent des instructions du processeur, mais pour l'entrée/sortie. Par exemple, les commandes envoyées à une carte graphique peuvent être : affiche l'image présente à cette adresse mémoire, calcule le rendu 3D à partir des données présentes dans ta mémoire, etc. Pour recevoir les commandes, l'entrée/sortie contient des ''registres de commande'' qui mémorisent les commandes envoyées par le processeur. Quand le processeur veut envoyer une commande à l'entrée/sortie, il écrit la commande en question dans ce ou ces registres.
Enfin, beaucoup d'entrée/sortie ont un ''registre d'état'', lisible par le processeur, qui contient des informations sur l'état de l'entrée/sortie. Ils servent notamment à indiquer au processeur que l'entrée/sortie est disponible, qu'il est en train d’exécuter une commande, qu'il est occupé, qu'il y a un problème, qu'il y a une erreur de configuration, etc.
===Les adresses des registres d’interfaçage===
Les registres des périphériques sont identifiés par des adresses mémoires. Et les adresses sont conçues de façon à ce que les adresses des différentes entrées/sorties ne se marchent pas sur les pieds. Chaque entrée/sortie, chaque registre, chaque contrôleur a sa propre adresse. D'ordinaire, certains bits de l'adresse indiquent quel est le destinataire. Certains indiquent quel est l'entrée/sortie voulue, les restants indiquant le registre de destination.
Il existe deux organisations possibles pour les adresses des registres d’interfaçages. La première possibilité est de séparer les adresses pour les registres d’interfaçage et les adresses pour la mémoire. Le processeur doit avoir des instructions séparées pour gérer les périphériques et adresser la mémoire. Il a des instructions de lecture/écriture pour lire/écrire en mémoire, et d'autres pour lire/écrire les registres d’interfaçage. Sans cela, le processeur ne saurait pas si une adresse est destinée à un périphérique ou à la mémoire.
[[File:Espaces d'adressages séparés entre mémoire et périphérique.png|centre|vignette|upright=2.5|Espaces d'adressages séparés entre mémoire et périphérique]]
L'autre méthode mélange les adresses mémoire et des entrées-sorties. Si on prend par exemple un processeur de 16 bits, où les adresses font 16 bits, alors les 65536 adresses possibles seront découpées en deux portions : une partie ira adresser la RAM/ROM, l'autre les périphériques. On parle alors d''''entrées-sorties mappées en mémoire'''. L'avantage est que le processeur n'a pas besoin d'avoir des instructions séparées pour les deux.
[[File:IO mappées en mémoire.png|centre|vignette|upright=2.0|IO mappées en mémoire]]
Pour résumer, communiquer avec une entrée/sortie est similaire à ce qu'on a avec les mémoires. Il suffit de lire ou écrire dans des registres d’interfaçage, qui ont chacun une adresse mémoire. Le problème est que le système d'exploitation ne connaît pas toujours le fonctionnement d'une entrée/sortie : il faut installer un programme qui va s'exécuter quand on souhaite communiquer avec l'entrée/sortie, et qui s'occupera de tout ce qui est nécessaire pour le transfert des données, l'adressage du périphérique, etc. Ce petit programme est appelé un driver ou '''pilote de périphérique'''. La « programmation » périphérique est très simple : il suffit de savoir quoi mettre dans les registres, et c'est le pilote qui s'en charge.
==Les architectures Harvard et Von Neumann==
Après avoir vu le processeur, les mémoires et les entrées-sorties, voyons voir comment le tout est interconnecté. Tous les ordinateurs ne sont pas organisés de la même manière, pour ce qui est de leurs bus. Mais pour comprendre pourquoi, nous devons regarder qui communique avec qui, dans un ordinateur. Pour rappel, les données sont placées en mémoire RAM, alors que les instructions sont placées en mémoire ROM. Le processeur lit des instructions dans la mémoire ROM, il lit et écrit dans la mémoire RAM, et accède aux registres d’interfaçage des entrées-sorties. Il y a donc besoins de trois interconnexions : CPU-ROM, CPU-RAM et CPU-IO.
[[File:Réseau d'interconnexion avec un processeur au centre.png|centre|vignette|upright=2|Réseau d'interconnexion avec un processeur au centre]]
Il parait intéressant d'utiliser trois interconnexions, au minimum CPU-ROM, CPU-RAM et CPU-IO. Néanmoins, faire ainsi a de nombreux désavantages. Déjà, il faut pouvoir brancher tout ça sur le processeur. Et celui-ci n'a pas forcément assez de broches pour. Aussi, il est parfois préférable de mutualiser des bus, à savoir de connecter plusieurs composants sur un même bus. Par exemple, on peut mutualiser le bus pour la mémoire RAM et pour la mémoire ROM. Il faut dire que les deux bus sont des bus mémoire, avec un bus d'adresse, un bus de données, et surtout : des bus de commande similaires. Les mutualiser est alors très simple, et permet d'économiser pas mal de broches.
[[File:Réseau d'interconnexion avec un processeur au centre et une architecture Harvard.png|centre|vignette|upright=2|Réseau d'interconnexion avec un processeur au centre et une architecture Harvard]]
Cette mutualisation nous amène naturellement à parler de la distinction entre les architectures Harvard d'un côté et les architectures Von Neumann de l'autre. Elle est très liée au fait d'utiliser soit un bus mémoire unique, soit des bus séparés pour la ROM et la RAM. Voyons cela en détail.
===Les architectures Harvard et Von Neumann : des bus séparés ou unifiés===
Avec l''''architecture Harvard''', la mémoire ROM et la mémoire RAM sont reliées au processeur par deux bus séparés. Il y a un bus RAM pour la mémoire RAM, un bus ROM pour la mémoire ROM. L'avantage de cette architecture est qu'elle permet de charger une instruction et une donnée simultanément : une instruction chargée sur le bus relié à la mémoire programme, et une donnée chargée sur le bus relié à la mémoire de données. Et cela simplifie fortement la conception du processeur.
[[File:Harvard Architecture.png|centre|vignette|upright=2|Architecture Harvard, avec une ROM et une RAM séparées.]]
Avec l''''architecture Von Neumann''', mémoire ROM et mémoire RAM sont reliées au processeur par un bus unique. Le bus unique qui relie processeur, RAM et ROM, s'appelle le '''bus mémoire'''. Un défaut de ces architecture est qu'elles ne peuvent pas charger une instruction et une donnée en même temps. Et cela pose quelques problèmes pour la conception du processeur. Par contre, nous verrons dans ce qui suit qu'utiliser un bus mémoire partagé est bien plus flexible et permet des choses que les architectures Harvard ne peuvent pas faire.
[[File:Architecture Von Neumann, avec deux bus séparés.png|centre|vignette|upright=2|Architecture Von Neumann, avec deux bus séparés.]]
===Les architectures Harvard et Von Neumann : des espaces d'adressage séparés ou unifiés===
La distinction précédente se base sur les connexions entre RAM, ROM et processeur. Mais il existe une autre distinction, très liée, qui est souvent utilisée comme seconde définition des architectures Harvard/Von Neumann. Elle est liée aux adresses mémoire que le processeur peut gérer. Prenons un processeur 16 bits, par exemple, qui gère naturellement des adresses de 16 bits. Il peut gérer 2^16 adresses, soit 64 kibioctets de mémoire. L'ensemble de ces adresses est appelé un '''espace d'adressage'''. Mais comment cet espace d'adressage est utilisé pour adresser une RAM et une ROM ?
Sur les architectures Harvard, le processeur voit deux mémoires séparées avec leur lot d'adresses distinctes. Une même adresse peut donc correspondre soit à la mémoire ROM, soit à la mémoire RAM, suivant le bus utilisé. L'espace d'adressage est donc doublé, dupliqué, avec un pour la ROM, un autre pour la RAM. Rien d'étonnant à cela : il y a deux bus d'adresses, chacun correspondant à un espace d'adressage.
[[File:Vision de la mémoire par un processeur sur une architecture Harvard.png|centre|vignette|upright=2|Vision de la mémoire par un processeur sur une architecture Harvard.]]
Avec l'architecture Von Neumann, la RAM et la ROM doivent se partager les adresses mémoires disponibles. Il n'y a qu'un seul espace d'adressage qui est coupé en deux, avec une partie pour la ROM et une autre pour la RAM. Une adresse correspond soit à la mémoire RAM, soit à la mémoire ROM, mais pas aux deux. Typiquement, la mémoire ROM occupe une partie des adresses, la mémoire RAM utilise le reste. La répartition des adresses est réalisée par les circuits de décodage d'adresse mentionnés plus haut.
[[File:Vision de la mémoire par un processeur sur une architecture Von Neumann.png|centre|vignette|upright=2|Vision de la mémoire par un processeur sur une architecture Von Neumann.]]
Les '''architectures Harvard modifiées''' sont des intermédiaires entre architectures Harvard et architectures Von Neumann, bien qu'elles penchent bien plus du côté des architectures Harvard. Précisons que la terminologie n'est pas claire, beaucoup d'auteurs mettent des définitions différentes derrière ces deux termes. Mais dans ce cours, nous utiliserons une définition très stricte de ce qu'est une architecture Harvard modifiée.
Une architecture Harvard modifiée est une architecture Harvard, où le processeur peut lire des données constantes depuis la mémoire ROM. Nous avions vu plus haut que les mémoires ROM peuvent mémoriser, en plus d'un programme exécutable, des données constantes, qui ne varient pas. Les architectures Harvard pures ne permettent pas de lire des données de ce genre depuis la mémoire ROM, alors que les architectures Harvard modifiées le permettent.
Une architecture Harvard modifiée dispose d'une instruction pour lire les données en mémoire RWM, et d'une instruction pour lire des données en mémoire ROM. Il y a donc deux versions de l'instruction LOAD, qui copient la donnée dans un registre général, mais dont la source de la donnée est différente. Une autre possibilité, plus rare, est que une instruction de copie, qui copie une constante depuis la mémoire ROM vers la mémoire RAM. Le cas le plus commun est l'utilisation de deux instructions LOAD séparées.
[[File:Espaces d'adressage sur une archi harvard modifiée.png|centre|vignette|upright=2.5|Espaces d'adressage sur une archi harvard modifiée]]
Ceci étant dit, revenons à la distinction entre architecture Harvard et Von Neumann. Il faut noter que la RAM et la ROM n'ont pas forcément la même taille. Et ce que ce soit sur une architecture Harvard que sur une architecture Von Neumann, mais c'est plus facile à expliquer sur une architecture Harvard.
On peut par exemple imaginer une architecture Harvard qui utilise des adresses de 16 bits pour la ROM, et seulement 8 bits pour la RAM. Le résultat est qu'il peut adresser 64 kibioctets de ROM, mais seulement 256 octets de RAM. Les deux bus d'adresse sont alors de taille différente, l'un faisant 8 bits, l'autre 16. Quelques processeurs 8 bits étaient dans ce cas, comme on le verra dans le chapitre sur les CPU 8bits. Mais d'autres processeurs utilisent des valeurs différentes, avec par exemple des adresses de 16 bits pour la RAM, mais de 20 bits pour la ROM, ou inversement.
Sur une architecture Von Neumann, tout dépend de comment les adresses sont réparties. La solution la plus simple découpe l'espace d'adressage en deux parties égales, avec la RAM qui est dans la moitié basse (qui part de l'adresse 0 jusqu'à l'adresse au milieu), alors que la ROM est dans la moitié haute (entre l'adresse du milieu et l'adresse maximale). Mais ce n'est pas la seule possibilité, la limite entre RAM et ROM peut être mise n'importe où. Prenons par exemple un processeur 32 bits, capable de gérer 4 milliards d'adresse. Il est parfaitement possible de réserver 128 mébioctets de poids fort à la mémoire ROM, et de laisser le reste à la mémoire RAM.
===Le décodage d'adresse sur les architectures Von Neumann===
Pour résumer, les architectures Harvard et Von Neumann se distinguent sur deux points :
* L'accès à la RAM et à la ROM se font par des bus séparés sur l'architecture Harvard, sur le même bus avec l'architecture Von Neumann.
* Les adresses pour la mémoire ROM et la mémoire RAM sont séparées sur les architectures Harvard, partagées sur l’architecture Von Neumann.
Les architectures Von Neumann utilisent donc un seul bus pour connecter la RAM et la ROM au processeur. Mais cela ne parait pas intuitif : comment deux composants peuvent se connecter aux mêmes fils ? Parce que c'est ce qu'implique le fait de partager un bus. Si je prends une mémoire RAM et une mémoire ROM, toutes deux de 8 bits, elles seront connectées à un bus mémoire de 8 bits. Intuitivement, on se dit qu'il y aura des conflits, du genre : la RAM et la ROM vont accéder au bus en même temps, comment savoir si une adresse est destinée à la RAM ou la ROM, etc ?
Tous ces problèmes sont résolus avec une solution très simple : à chaque instant, seule une mémoire est connectée au bus. L'idée est que les mémoires sont connectées ou déconnectées du bus selon les besoins. Si le processeur veut envoyer lire une donnée en mémoire RAM, il déconnecte la mémoire ROM du bus. Et inversement, s'il veut lire une instruction, il déconnecte la RAM et connecte la ROM.
Pour cela, les mémoires RAM et ROM possèdent une entrée ''Chip Select'' ou ''Output Enable'', qui agit comme une sorte de bouton ON/OFF. Lorsqu'on met un 1 sur cette entrée, la mémoire se connectera au bus. Ses entrées et sorties fonctionneront normalement, elle pourra recevoir des adresses, envoyer ou recevoir des données, tout sera normal. Par contre, si on met un 0 sur cette entrée, la mémoire se "désactive", ses entrée-sorties ne répondent plus aux sollicitations extérieures. Pire que ça : elles sont électriquement déconnectées.
Au total, tout cela demande de gérer deux bit ''Chip Select''/''Output Enable'' : un pour la RAM, un pour la ROM. Et ces deux bits sont configurés pour chaque accès mémoire, pour chaque lecture ou écriture. Pour cela, un circuit de '''décodage d'adresse''' prend en entrée l'adresse mémoire à lire/écrire, et active/désactive les mémoires RAM/ROM selon les besoins. Il prend l'adresse et configure les bits ''Chip Select''/''Output Enable''.
[[File:Décodage d'adresse sur une architecture Von Neumann.png|centre|vignette|upright=2|Décodage d'adresse sur une architecture Von Neumann.]]
L'implémentation la plus simple réserve la moitié des adresses pour la RAM, l'autre moitié pour la ROM. Typiquement, la ROM prend la moitié basse, la RAM la moitié haute. Dans ce cas, activer/désactiver la RAM et la ROM se fait avec seulement le bit de poids fort de l'adresse. Si le bit de poids fort est à 1, alors on accède à la RAM et la ROM doit être désactivée. Mais si ce bit est à 0, alors on accède à la moitié basse et il faut désactiver la RAM.
Une remarque intéressante : le fait de séparer la mémoire en deux parts égales permet de simuler une architecture Harvard à partir d'une architecture Von Neumann. Par exemple, le tout premier processeur d'Intel, le 4004, était l'un de ceux là. La RAM et la ROM sont reliés au même bus, et il y a donc un unique espace d'adressage, qui est séparé en deux parties égales. Le truc est que le processeur traite les deux parties égales comme deux espaces d'adressage séparés. Le processeur se débrouille pour cacher le fait qu'il y a un espace d'adressage unique coupé en deux, ce qui fait que les programmeurs voient bien deux espaces d'adressages distincts.
[[File:Décodage d'adresse sur une architecture Von Neumann basique.png|centre|vignette|upright=2|Décodage d'adresse sur une architecture Von Neumann basique.]]
Pour résumer, quand une adresse est envoyée sur le bus, les deux mémoires vont la recevoir mais une seule va répondre et se connecter au bus. Le décodage d'adresse garantit que seule la mémoire adéquate réponde à un accès mémoire. Le décodage d'adresse est réalisé par la carte mère, par un composant dédié.
Le mécanisme peut être utilisé pour combiner plusieurs RAM en une seule, idem avec les ROM. Pour comprendre l'idée, je vais prendre l'exemple de l'IBM PC, un des tout premier PC existant. Nous étudierons ce PC dans une section dédiée, à la fin du chapitre, aussi je vais passer rapidement dessus. Tout ce que je vais faire est vous présenter la carte mère du PC, et vous demander de faire est de compter les mémoires ROM et mémoires RAM sur la carte mère :
[[File:IBM 5150 Motherboard.svg|centre|vignette|upright=3|Carte mère de l'IBM 5150, un modèle de l'IBM PC.]]
Si vous remarquerez qu'il y a 5 mémoires ROM et 8 à 32 mémoires RAM. Le fait est que le processeur voit les différentes mémoires ROM comme une seule mémoire ROM. Idem avec les mémoires RAM : elle font chacune 2 kibioctets, et l'ensemble est vu par le processeur comme une seule RAM de 16 à 64 kibioctets. Et cela grâce aux circuits de décodage d'adresse, qui sont situés en haut à droite de la carte mère.
Pour comprendre l'idée, prenons l'exemple d'un processeur 16 bits, capable de gérer 64 kibioctets de mémoire. L'espace d'adressage est découpé en quatre portions, de 16 kibioctets chacune. Une portion est réservée à une ROM de 16 kibioctet, les autres sont chacune réservée à une RAM de 16 kibioctet. Le décodage d'adresse sélectionne alors la mémoire adéquate en utilisant les deux bits de poids fort de l'adresse.
* S'ils valent 00, alors c'est la mémoire ROM qui est activée, connectée au bus.
* S'ils valent 01, alors c'est la première mémoire RAM qui est connectée au bus.
* S'ils valent 10, alors c'est la seconde mémoire RAM qui est connectée au bus.
* S'ils valent 11, alors c'est la troisième mémoire RAM qui est connectée au bus.
[[File:Décodage d'adresse sur une architecture Von Neumann, utilisant plusieurs RAM et une ROM.png|centre|vignette|upright=3|Décodage d'adresse sur une architecture Von Neumann, utilisant plusieurs RAM et une ROM]]
===L'impact sur la conception du processeur===
Plus haut, j'ai parlé d'un des avantages des architectures Harvard : elles peuvent lire une instruction en même temps qu'elles accèdent à une donnée. La donnée est lue/écrite en RAM, alors que l'instruction est lue en ROM. Et cela permet de simplifier l'intérieur du processeur. Pas de beaucoup, mais c'est déjà ça de pris. Voyons maintenant comment cela impacte l'intérieur du processeur. Tout ce dont vous avez à vous rappeler est la séparation entre chemin de données et unité de contrôle, et que les registres généraux sont dans le premier, le ''program counter'' dans la seconde.
Avec une architecture Harvard, les instructions et les données passent par des bus différent : bus ROM pour les instructions, bus RAM pour les données. L'intuition nous dit que le bus pour la mémoire ROM est connecté à l'unité de contrôle, alors que le bus pour la RAM est connecté au chemin de données. Et dans les grandes lignes, c'est vrai. La logique est imparable pour ce qui est des bus de données. Mais il y a une petite subtilité pour les bus d'adresse.
Pour comprendre comment le processeur exploite ces deux bus, voyons ce qui transite dessus. Pour la mémoire ROM, elle reçoit l'adresse de l'instruction à lire, elle renvoie l'instruction adéquate. Pour cela, le ''program counter'' est envoyé sur le bus d'adresse, l'instruction sur le bus de données. Pour la mémoire RAM, elle échange des données avec les registres généraux, les registres pour les données. Les adresses utilisées pour la RAM viennent elles soit du chemin de données, soit de l'unité de contrôle, tout dépend du mode d'adressage. Mais le ''program counter'' n'est pas impliqué.
[[File:Architecture Harvard - échanges de données.png|centre|vignette|upright=2|Architecture Harvard - échanges de données]]
Les architectures Harvard modifiées doivent cependant rajouter une connexion entre le bus ROM et les registres généraux. C'est nécessaire pour charger une donnée constante depuis la mémoire ROM. Rappelons que la donnée constante est copiée dans un registre général, donc dans le chemin de données.
[[File:Architecture Harvard modifiée - implémentation du processeur.png|centre|vignette|upright=2|Architecture Harvard modifiée - implémentation du processeur]]
Avec les architectures Von Neumann, il y a un seul bus qui est relié à la fois au chemin de données et à l'unité de contrôle. Si le processeur lit une instruction, le bus doit être relié à l'unité de contrôle. Par contre, s'il accède à une donnée, il doit être relié au chemin de données (le bus d'adresse peut éventuellement être connecté au séquenceur, si celui-ci fournit l'adresse à lire). Il faut donc utiliser un paquet de multiplexeurs et de démultiplexeurs pour faire la connexion au bon endroit.
[[File:Architecture Von Neumann - implémentation du processeur.png|centre|vignette|upright=2|Architecture Von Neumann - implémentation du processeur]]
Une instruction se fait en deux temps : on charge l'instruction depuis la mémoire ROM, puis on l'exécute. Avec une architecture Harvard, tout cela se fait en un seul cycle d'horloge, vu que charger la ROM et accéder aux données peut se faire en même temps. Pas avec les architectures Von Neumann, qui doivent libérer le bus mémoire après avoir chargé une instruction. Elles n'ont pas le choix : elles chargent l'instruction lors d'un premier cycle d'horloge, puis l'exécutent lors du second.
Pour cela, ils incorporent un registre appelé le '''registre d'instruction''', qui mémorise l'instruction chargée. L'instruction est copiée dans ce registre lors du premier cycle, puis est utilisée lors du second cycle. Le registre permet de ne pas oublier l’instruction entre les deux cycles. Le registre d'instruction est obligatoire sur les architectures Von Neumann. En comparaison, il est facultatif sur les architectures Harvard. Elles peuvent en avoir un, pour des raisons techniques, mais ce n'est pas obligatoire.
[[File:Registre d'instruction.png|centre|vignette|upright=2|Registre d'instruction.]]
===Les architectures Von Neumann sont plus flexibles===
Sur les architectures Harvard, le processeur sait faire la distinction entre programme et données. Les données sont stockées dans la mémoire RAM, le programme est stocké dans la mémoire ROM. Les deux sont séparés, accédés par le processeur sur des bus séparés, et c'est ce qui permet de faire la différence entre les deux. Il est impossible que le processeur exécute des données ou modifie le programme. Du moins, tant que la mémoire qui stocke le programme est bien une ROM.
Par contre, sur les architectures Von Neumann, il est impossible de distinguer programme et données, sauf en ajoutant des techniques de protection mémoire avancées. La raison est qu'il est impossible de faire la différence entre donnée et instruction, vu que rien ne ressemble plus à une suite de bits qu'une autre suite de bits. Et c'est à l'origine d'un des avantages majeur de l'architecture Von Neumann : il est possible que des programmes soient copiés dans la mémoire RWM et exécutés dans celle-ci.
Un cas d'utilisation familier est celui de votre ordinateur personnel. Le système d'exploitation et les autres logiciels sont copiés en mémoire RAM à chaque fois que vous les lancez. Mais cet exemple implique un disque dur, ce qui rend les choses plus compliquées que prévu. Un autre exemple serait la compilation de code à la volée, mais il ne sera pas très parlant.
Un exemple plus adapté serait celui où la ROM mémorise un programme compressée dans la mémoire ROM, qui est décompressé pour être exécuté en mémoire RAM. Le programme de décompression est stocké en mémoire ROM et est exécuté au lancement de l’ordinateur. Cette méthode permet d'utiliser une mémoire ROM très petite et très lente, tout en ayant un programme rapide (si la mémoire RWM est rapide).
Il est aussi possible de créer des programmes qui modifient leurs propres instructions : cela s'appelle du '''code auto-modifiant'''. Ce genre de choses servait autrefois sur des ordinateurs rudimentaires, au tout début de l'informatique. À l'époque, les adresses à lire/écrire devaient être écrites en dur dans le programme, dans les instructions exécutées. Pour gérer certaines fonctionnalités des langages de programmation qui ont besoin d'adresses modifiables, comme les tableaux, on devait corriger les adresses au besoin avec du code auto-modifiant. De nos jours, le code automodifiant est utilisée occasionnellement pour rendre un programme indétectable dans la mémoire (les virus informatiques utilisent beaucoup ce genre de procédés).
L'impossibilité de séparer données et instructions est à l'origine de problèmes assez fâcheux. Il est parfaitement possible que le processeur charge et exécute des données, qu'il prend par erreur pour des instructions. C'est le cas quand des pirates informatiques arrivent à exploiter des bugs. Il arrive que des pirates informatiques vous fournissent des données corrompues, qui contiennent un virus ou un programme malveillant est caché dans les données. Les bugs en question permettent d'exécuter ces données, donc virus. Pour éviter cela, le système d'exploitation peut marquer certaines zones de la mémoire comme non-exécutable, c’est-à-dire que le système d'exploitation interdit d’exécution de quoi que ce soit qui est dans cette zone. Mais ce n'est pas parfait.
Toujours est-il que tout cela est impossible sur les architectures Harvard. Et ce serait très limitant. Imaginez : pas possible de lancer un programme depuis le disque dur ou une clé USB, le programme doit impérativement être dans une mémoire ROM, pas de compilation à la volée, etc. Que des techniques très utilisées dans l'informatique moderne. Malgré ses défauts, les architectures Von Neumann ne sont pas les plus utilisées pour rien. Les architectures Harvard sont concrètement utilisées uniquement dans l'informatique embarquée, sur des microcontrôleurs très spécifiques.
==Le bus de communication avec les entrées-sorties==
Le processeur, la mémoire et les entrées-sorties sont connectées par un ou plusieurs '''bus de communication'''. Ce bus n'est rien d'autre qu'un ensemble de fils électriques sur lesquels on envoie des zéros ou des uns. Pour communiquer avec la mémoire, il y a trois prérequis qu'un bus doit respecter : pouvoir sélectionner la case mémoire (ou l'entrée-sortie) dont on a besoin, préciser à la mémoire s'il s'agit d'une lecture ou d'une écriture, et enfin pouvoir transférer la donnée. Pour cela, on doit donc avoir trois bus spécialisés, bien distincts, qu'on nommera le bus de commande, le bus d'adresse, et le bus de donnée.
* Le '''bus de données''', sur lequel s'échangent les données entre les composants.
* Le '''bus de commande''' pour configurer la mémoire et les entrées-sorties.
* Le '''bus d'adresse''', facultatif, permet de préciser quelle adresse mémoire il faut lire/écrire.
Chaque composant possède des entrées séparées pour le bus d'adresse, le bus de commande et le bus de données. Par exemple, une mémoire RAM possédera des entrées sur lesquelles brancher le bus d'adresse, d'autres sur lesquelles brancher le bus de commande, et des broches d'entrée-sortie pour le bus de données. Précisons cependant que le bus de commande n'est pas exactement le même entre des mémoires RAM/ROM et des entrées-sorties.
[[File:Bus general schematic.svg|centre|vignette|upright=2|Contenu d'un bus, généralités.]]
===Le réseau d'interconnexion : généralités===
Reprenons où nous nous étions arrêté. Avant de voir les architectures Harvard et Von Neumann, nous avions dit que le processeur, les mémoires et les entrées-sorties sont reliées entre eux par un réseau d'interconnexion. Nous venons de voir qu'il est possible de mutualiser certains bus, notamment celui de la mémoire RAM et celui de la mémoire ROM. Mais il est possible de faire la même chose pour les entrées-sorties. Là encore, il est possible de regrouper le bus mémoire avec les bus pour les entrées-sorties. Voyons ce que cela implique.
{|
|[[File:Réseau d'interconnexion avec un processeur au centre.png|centre|vignette|upright=2|Réseau d'interconnexion avec une architecture Harvard.]]
|[[File:Réseau d'interconnexion avec un processeur au centre et une architecture Harvard.png|centre|vignette|upright=2|Interconnexions d'une architecture Von Neumann.]]
|}
Avant de poursuivre, nous devons préciser quelque chose d'important. Sur les ordinateurs modernes, les entrées-sorties peuvent accéder à la mémoire RAM. Les ordinateurs modernes intègrent des techniques de '''''Direct Memory Access''''' (DMA) qui permettent aux entrées-sorties de lire ou d'écrire en mémoire RAM. Les transferts DMA se font sans intervention du processeur. Ils permettent de copier un bloc de plusieurs octets, dans deux sens : de la mémoire RAM vers une entrée-sortie, ou inversement. Le DMA demande d'ajouter un circuit dédié sur la carte mère : le contrôleur DMA. Il effectue la copie d'un paquet d'octets de la RAM vers l'entrée-sortie ou dans l'autre sens.
[[File:Réseau d'interconnexion avec un processeur au centre, et direct memory access.png|centre|vignette|upright=2|Réseau d'interconnexion avec un processeur au centre, et direct memory access]]
===Les bus systèmes===
La première solution utilise un bus unique, celui-ci est appelé le '''bus système''', aussi appelé ''backplane bus''. Le bus système est connecté à la mémoire RAM, la mémoire ROM, au processeur, et aux entrées-sorties. Tous les composants présents dans l'ordinateur sont connectés à ce bus, sans exception. De tels bus avaient pour avantage la simplicité. Le processeur n'est connecté qu'à un seul bus, ce qui utilise peu de broches et économise des fils. La mutualisation des bus est totale, le câblage est plus simple, la fabrication aussi.
[[File:Architecture minimale d'un ordinateur.png|centre|vignette|upright=2|Architecture minimale d'un ordinateur.]]
Un bus système contient un bus d'adresse, de données et de commande. Un bus système se marie bien avec des entrées-sorties mappées en mémoire. La conséquence est que le bus d'adresse ne sert pas que pour l'accès à la mémoire RAM/ROM, mais aussi pour l'accès aux entrées-sorties. Il y a moyen d'implémenter un système d'adresse séparés avec, mais c'est pas l'idéal.
[[File:Architecture Von Neumann avec les bus.png|centre|vignette|upright=2|Architecture Von Neumann avec les bus.]]
Un bus système n'a pas de limitations quant aux échanges de données. Le processeur peut communiquer directement avec les mémoires et les entrées-sorties, les entrées-sorties peuvent communiquer avec la mémoire RAM, etc. Notamment, un bus système peut implémenter le ''Direct Memory Access''. Il suffit juste de connecter un contrôleur DMA sur le bus système. Le contrôleur DMA est considéré comme une entrée-sortie, ses registres sont mappés en mémoire et sont donc accessibles directement par le processeur.
[[File:Bus système avec controleur DMA.png|centre|vignette|upright=2|Bus système avec contrôleur DMA.]]
Si on suit la définition à la lettre, un bus système est systématiquement une architecture Von Neumann, vu que la mémoire ROM et la mémoire RAM sont reliées sur le bus système. La conséquence est que les circuits de décodage d'adresse sont présents. Ils sont toujours sur la carte mère, et sont plus ou moins à côté du bus système. Cependant, le décodage d'adresse est parfois étendu pour tenir compte des entrées-sorties.
Les entrées-sorties soudées sur la carte mère ont elles aussi des entrées ''Chip Select'' ou quelque chose de similaire. Le décodage d'adresse peut alors les activer ou les désactiver suivant l'adresse envoyée sur le bus d'adresse. C'est ce qui arrive quand le processeur écrit dans un registre d’interfaçage : il envoie l'adresse de ce registre sur le bus d'adresse, le circuit de décodage d'adresse active seulement l'entrée-sortie associée. Il faut noter que ce n'est pas systématique, il existe des techniques pour se passer de décodage d'adresse. Mais nous en reparlerons dans le chapitre sur les bus de communication.
[[File:Chipselectfr.png|centre|vignette|upright=1.5|Exemple détaillé.]]
Les bus systèmes sont certes très simples, mais ils ont aussi des désavantages. Par exemple, il faut éviter que le processeur et les entrées-sorties se marchent sur les pieds, ils ne peuvent pas utiliser le bus en même temps. De tels conflits d'accès au bus système sont fréquents et ils réduisent la performance, comme on le verra dans le chapitre sur les bus. De plus, un bus système a le fâcheux désavantage de relier des composants allant à des vitesses très différentes : il arrivait fréquemment qu'un composant rapide doive attendre qu'un composant lent libère le bus. Le processeur était le composant le plus touché par ces temps d'attente.
Elle était utilisée sur les tout premiers ordinateurs, pour sa simplicité. Elle était parfaitement adaptée aux anciens composants, qui allaient tous à la même vitesse. De nos jours, les ordinateurs à haute performance ne l'utilisent plus trop, mais elle est encore utilisée sur certains systèmes embarqués, en informatique industrielle dans des systèmes très peu puissants.
===Les bus d'entrées-sorties===
Les bus systèmes ont de nombreux problèmes, ce qui fait que d'anciens ordinateurs faisaient autrement. À la place d'un bus système unique, ils utilisent un bus séparé pour les mémoires, et un autre séparé pour les entrées-sorties. Le bus spécialisé pour la mémoire est appelé le '''bus mémoire''', l'autre bus est appelé le '''bus d'entrées-sorties'''. Le bus mémoire est généralement relié à la fois à la mémoire RAM et à la mémoire ROM, les exceptions ne sont pas rares, cependant.
[[File:Bus mémoire séparé du bus pour les IO.png|centre|vignette|upright=2|Bus mémoire séparé du bus pour les IO]]
Les bus d'entrée-sorties peuvent être spécialisés et simplifiés. Par exemple, ils peuvent avoir un bus de commande différent de celui de la mémoire, qui utilise nettement moins de fils. Le bus d'adresse peut aussi être réduit, et utiliser des adresses plus courtes que celles du bus mémoire. Les bus de données peuvent aussi être de taille différentes. Il est ainsi possible d'avoir un bus mémoire capable de lire/écrire 64 bits à la fois, alors que la communication avec les entrées-sorties se fait octet par octet ! En général, les bus d'entrée-sortie sont assez petits, ils ont une taille de 8 ou 16 bits, même si le bus mémoire est plus grand. Cela permet de ne pas gaspiller trop de broches. Ajouter un bus d'entrée-sortie n'est donc pas très gourmand en broches et en fils.
: Il est en théorie possible d'avoir une fréquence différente pour les deux bus, avec un bus mémoire ultra-rapide et un bus pour les entrées-sorties est un bus moins rapide. Mais il faut que le processeur soit prévu pour, et c'est très rare.
Niveau performances, le processeur peut théoriquement accéder à la mémoire en attendant qu'une entrée/sortie réponde, mais il faut que le processeur soit prévu pour, et ce n'est pas de la tarte. Par contre, cela implique d'avoir des adresses séparées pour les registres d’interfaçage et la mémoire. En clair : pas d'entrée-sortie mappée en mémoire ! Un autre problème est que les entrées-sorties ne peuvent pas communiquer avec la mémoire directement, elles doivent passer par l'intermédiaire du processeur. En clair : pas de ''Direct Memory Access'' ! Les deux sont des défauts rédhibitoires pour les programmeurs système, notamment pour ceux qui codent les pilotes de périphériques.
Pour résumer, les défauts sont assez problématiques : pas d'entrées-sorties mappées en mémoire, pas de ''Direct Memory Access'', économie de broches limitée. Les deux premiers sont des défauts majeurs, qui font que de tels bus ne sont pas utilisés dans les ordinateurs modernes. À la place, ils utilisent une troisième solution, distincte des bus systèmes et des bus d'entrée-sorties.
===Les bus avec répartiteur===
Il existe une méthode intermédiaire, qui garde deux bus séparés pour la mémoire et les entrées-sorties, mais élimine les problèmes de brochage sur le processeur. L'idée est d'intercaler, entre le processeur et les deux bus, un '''circuit répartiteur'''. Il récupère tous les accès et distribue ceux-ci soit sur le bus mémoire, soit sur le bus des périphériques. Le ou les répartiteurs s'appellent aussi le '''''chipset''''' de la carte mère.
C'était ce qui était fait à l'époque des premiers Pentium. À l'époque, la puce de gestion du bus PCI faisait office de répartiteur. Elle mémorisait des plages mémoires entières, certaines étant attribuées à la RAM, les autres aux périphériques mappés en mémoire. Elles utilisaient ces plages pour faire la répartition.
[[File:IO mappées en mémoire avec séparation des bus.png|centre|vignette|upright=2|IO mappées en mémoire avec séparation des bus]]
Niveau adresses des registres d'interfacage, il est possible d'avoir soit des adresses unifiées avec les adresses mémoire, soit des adresses séparées.
L'usage d'un répartiteur ne pose pas de problèmes particuliers pour implémenter le DMA. La seule contrainte est que le contrôleur DMA soit intégré dans le répartiteur. Les échanges entre IO et mémoire passent par le répartiteur, qui fait le pont entre bus mémoire et bus des IO.
[[File:Implémentation du DMA avec un répartiteur.png|centre|vignette|upright=2|Implémentation du DMA avec un répartiteur]]
==Les microcontrôleurs et ''system on chip''==
Parfois, on décide de regrouper la mémoire, les bus, le CPU et les ports d'entrée-sortie dans un seul circuit intégré, un seul boitier. L'ensemble forme alors ce qu'on appelle un '''''System on Chip''''' (système sur une puce), abrévié en SoC. Le nom est assez explicite : un SoC comprend un système informatique complet sur une seule puce de silicium, microprocesseurs, mémoires et périphériques inclus. Ils incorporent aussi des ''timers'', des compteurs, et autres circuits très utiles.
[[File:ARMSoCBlockDiagram.svg|centre|vignette|upright=2|SoC basé sur un processeur ARM, avec des entrées-sorties typiques de celles d'un µ-contrôleur. Le support du bus CAN, d'Ethernet, du bus SPI, d'un circuit de PWM (génération de signaux spécifiques), de convertisseurs analogique-digital et inverse, sont typiques des µ-contrôleurs.]]
Le terme SoC regroupe des circuits imprimés assez variés, aux usages foncièrement différents et à la conception distincte. Les plus simples d’entre eux sont des microcontrôleurs, qui sont utilisés pour des applications à base performance. Les plus complexes sont utilisés pour des applications qui demandent plus de puissance, nous les appellerons SoC haute performance.
La relation entre SoC et microcontrôleurs est assez compliquée à expliquer, la terminologie n'est pas clairement établie. Il existe quelques cours/livres qui séparent les deux, d'autres qui pensent que les deux sont très liés. Dans ce cours, nous allons partir du principe que tous les systèmes qui regroupent processeur, mémoire et quelques périphériques/entrées-sorties sont des SoC. Les microcontrôleurs sont donc un cas particulier de SoC, en suivant cette définition.
===Les microcontrôleurs===
Les '''microcontrôleurs''' sont des composants utilisés dans l'embarqué ou d'informatique industrielle. Leur nom trahit leur rôle. Ils sont utilisés pour contrôler de l'électroménager, des chaines de fabrication dans une usine, des applications robotiques, les alarmes domestiques, les voitures. De manière générale, on les trouve dans tous les systèmes dits embarqués et/ou temps réel. Ils ont besoin de s'interconnecter à un grand nombre de composants et intègrent pour cela un grand nombre d'entrée-sorties. Les microcontrôleurs sont généralement peu puissants, et doivent consommer peu d'énergie/électricité.
Fait amusant, on en trouve dans certains périphériques informatiques. Par exemple, les anciens disques durs intégraient un microcontrôleur qui contrôlait plusieurs moteurs/ Les moteurs pour faire tourner les plateaux magnétiques et les moteurs pour déplacer les têtes de lecture/écriture étaient commandés par ce microcontrôleur. Comme autre exemple, les claviers d'ordinateurs intègrent un microcontrôleur connecté aux touches, qui détecte quand les touches sont appuyées et qui communique avec l'ordinateur. Nous détaillerons ces deux exemples dans les chapitres dédiés aux périphériques et aux disques durs, tout deviendra plus clair à ce moment là. La majorité des périphériques ou des composants internes à un ordinateur contiennent des microcontrôleurs.
Un microcontrôleur tend à intégrer des entrées-sorties assez spécifiques, qu'on ne retrouve pas dans les SoC destinés au grand public. Un microcontrôleur est typiquement relié à un paquet de senseurs et son rôle est de commander des moteurs ou d'autres composants. Et les entrées-sorties intégrées sont adaptées à cette tâche. Par exemple, ils tendent à intégrer de nombreux convertisseurs numériques-analogiques pour gérer des senseurs. Ils intègrent aussi des circuits de génération de signaux PWM spécialisés pour commander des moteurs, le processeur peut gérer des calculs trigonométriques (utiles pour commander la rotation d'un moteur), etc.
[[File:C8051F340-9 A B C D.png|centre|vignette|upright=2|Exemple d'entrées-sorties intégrées à un microcontroleur.]]
En plus des entrées-sorties intégrées, les microcontrôleurs ont souvent des '''ports d'entrées-sorties''' banalisés, à savoir qu'on peut brancher n'importe quoi dessus. Il était possible de brancher un capteur de température, un moteur à commander, un port série, un port parallèle, un écran, un clavier, une souris, peu importe. Les ports font souvent un octet et ils sont généralement reliées directement ou indirectement au processeur. Le logiciel qui s'exécute sur le processeur décide quoi envoyer sur des broches et comment interprète ce qui est reçu dessus.
Les ports banalisés de ce type sont parfois appelés des '''GPIO''', abréviation de ''General Purpose Input/Output'', mais nous utiliserons le terme de ''port I/O''. Un port regroupe plusieurs broches qui peuvent être utilisés à volonté. C'est le logiciel qui s'exécute sur le processeur qui décide de la fonction de broches. Un port IO peut fonctionner soit en tant qu'entrée, soit en tant que sortie. Il est possible de changer de sens en cours de fonctionnement, pour passer d'une entrée à une sortie ou inversement.
[[File:Afficheurs7seg.png|centre|vignette|upright=2|Exemple d'utilisation d'un port I/O. le port est connecté à un afficheur LCD dit 7-segments. Les 8 entrées de cet afficheur sont connectées à un port I/O d'un octet.]]
===Les SoC haute performance===
Les SoC les plus performants sont actuellement utilisés dans les téléphones mobiles, tablettes, ''Netbook'', ''smartphones'', ou tout appareil informatique grand public qui ne doit pas prendre beaucoup de place. La petite taille de ces appareils fait qu'ils gagnent à regrouper toute leur électronique dans un circuit imprimé unique. Mais les contraintes font qu'ils doivent être assez puissants. Ils incorporent des processeurs assez puissants, surtout ceux des ''smartphones''. C'est absolument nécessaire pour faire tourner le système d'exploitation du téléphone et les applications installées dessus.
Niveau entrées-sorties, ils incorporent souvent des interfaces WIFI et cellulaires (4G/5G), des ports USB, des ports audio, et même des cartes graphiques pour les plus puissants d'entre eux. Les SoC incorporent des cartes graphiques pour gérer tout ce qui a trait à l'écran LCD/OLED, mais aussi pour gérer la caméra, voire le visionnage de vidéo (avec des décodeurs/encodeurs matériel). Par exemple, les SoC Tegra de NVIDIA incorporent une carte graphique, avec des interfaces HDMI et VGA, avec des décodeurs vidéo matériel H.264 & VC-1 gérant le 720p. Pour résumer, les périphériques sont adaptés à leur utilisation et sont donc foncièrement différents de ceux des microcontrôleurs.
[[File:SOMblk.png|centre|vignette|upright=3|Exemple de SoC.]]
Un point important est que les processeurs d'un SoC haute performance sont... performants. Ils sont le plus souvent des processeurs de marque ARM, qui sont différents de ceux utilisés dans les PC fixe/portables grand public qui sont eux de type x86. Nous verrons dans quelques chapitres en quoi consistent ces différences, quand nous parlerons des jeux d'instruction du processeur. Autrefois réservé au monde des PCs, les processeurs multicœurs deviennent de plus en plus fréquents pour les SoC de haute performance. Il n'est pas rare qu'un SoC incorpore plusieurs cœurs. Il arrive même qu'ils soient foncièrement différents, avec plusieurs cœurs d'architecture différente.
La frontière entre SoC haute performance et microcontrôleur est de plus en plus floue. De nombreux appareils du quotidien intègrent des SoC haute performance, d'autres des microcontrôleurs. Par exemple, les lecteurs CD/DVD/BR et certains trackers GPS intègrent un SoC ou des processeurs dont la performance est assez pêchue. À l'opposé, les systèmes domotiques intègrent souvent des microcontrôleurs simples. Malgré tout, les deux cas d'utilisation font que le SoC/microcontrôleur est connecté à un grand nombre d'entrées-sorties très divers, comme des capteurs, des écrans, des LEDs, etc.
[[File:GPS tracker Hardware Architecture.png|centre|vignette|upright=2|Hardware d'un tracker GPS.]]
==Étude de l'architecture de quelques consoles de jeu==
Après avoir vu la théorie, nous allons voir des exemples réels d'ordinateurs. Dans ce qui suit, nous allons voir des ordinateurs qui collent assez bien à l''''architecture de base''' vue plus haut, avec un CPU, une RAM et une ROM, quelques entrées-sorties. Tous les ordinateurs modernes, mais aussi dans les smartphones, les consoles de jeu et autres, utilisent une architecture grandement modifiée et améliorée, avec un grand nombre de périphériques, des disques durs/SSD, un grand nombre de mémoires différentes, etc.
Il pourrait sembler pertinent d’étudier des microcontrôleurs ou des ''System On Chip'', en premier lieu. Mais nous éviterons soigneusement de tels systèmes pour le moment. La raison est qu'ils ont un grand nombre d'entrées-sorties, qui sont peu familières. Attendez-vous à avoir près d'une vingtaine ou centaine d'entrée-sorties différentes pour de tels systèmes. Le tout est très complexe, bien trop pour un premier exemple.
À la place, nous allons voir précisément des exemples plus simples : les premiers PC, et des consoles de jeu 8 et 16 bits. Bien que ce soit des systèmes très simples, ils sont cependant plus complexes que l'architecture de base. Et leur avantages/désavantages sont un peu inverse l'un de l'autre. Si on devait résumer les différences, on aurait ceci :
* Les PC ont plus d'entrées-sorties que les consoles, bien que nettement moins que pour les microcontrôleurs/SoC.
* Les PC utilisent des disques durs, les consoles font avec soit des cartouches de jeu, soit des CD/DVD.
* Les PC utilisent des cartes électroniques séparées pour le son et l'écran, les consoles utilisent des circuits soudés sur la carte mère, qui sont souvent des co-processeurs.
* Les PC ont une mémoire ROM soudées sur la carte mère, les consoles 8 bits font sans.
Les PC et micro-ordinateurs ont plus d'entrées-sorties que les consoles. Même si on mets de côté les périphériques, ils ont aussi beaucoup de composants soudées sur la carte mère. En comparaison, les consoles de jeu 8/16 bits se débrouillent avec : une cartouche de jeu et une manette en entrée, une sortie vidéo et une sortie son.
Un autre point important est l'absence de disque dur ou de lecteur CD. La présence d'un disque dur ou d'un lecteur CD/DVD complexifie tout de suite l'architecture des PC. Il faut leur réserver un bus dédié ou les connecter à un bus système, cela demande d'ajouter des circuits sur la carte mère, etc. Et surtout, il faut expliquer comment l'ordinateur exécute des programmes, ce qui demande de parler de l'interaction avec le disque dur et la ROM du BIOS. Rien de tout cela sur les consoles de jeu 8 et 16 bits. Elles utilisent à la place des cartouches de jeu, qui intègrent une mémoire ROM, pour mémoriser les données du jeu, voire son code. Pas besoin de parler des mémoires de stockage, on est beaucoup plus proche de l'architecture de base avec une ROM unique.
Par contre, n'allez pas croire que tout est rose avec les consoles 8/16 bits. Il y a quelques différences qui font qu'elles sont plus complexes qu'un PC sur certains points.
Les PC utilisent des cartes électroniques à brancher sur la carte mère pour alimenter l'écran et les hauts-parleurs/casques, alors que les consoles de jeu utilisent des souvent co-processeurs dédiés pour le son et les graphismes. La différence parait mineure, mais elle avantage les consoles. Nous avons déjà expliqué ce que sont les co-processeurs plus haut, aussi les co-processeurs des consoles nous paraitrons familiers. On n'a pas à s’embêter à expliquer ce que sont les cartes d'extension, les bus associés et tout ce qui va avec, cela peut être retardé pour la section sur l'architecture des PC.
La gestion de la cartouche de jeu est aussi un peu subtile à comprendre, bien que ce soit bien plus simple à comprendre qu'un système avec un disque dur. Les cartouches de jeu intègrent une mémoire ROM, pour mémoriser les données du jeu, voire son code. Et le processeur doit exécuter le code depuis cette mémoire ROM. La conséquence est que les consoles 8/16 bits utilisent une architecture Harvard, avec un bus relié à la cartouche pour lire les instructions. Mais si ce n'était que ça... Les cartouches mémorisent aussi les données pour les graphismes, ce qui fait que le co-processeur vidéo doit lui aussi lire la cartouche pour récupérer ces données...
===L'architecture de la TurboGraphX-16===
La console PC Engine, aussi appelée TurboGraphX, est une ancienne console 8 bits. Elle contient un processeur 65C02, 8 kibioctets de RAM, un port manettes, une carte son et une carte vidéo. La '''carte son''' est le composant qui s'occupe de commander les haut-parleurs et de gérer tout ce qui a rapport au son. La '''carte graphique''' est le composant qui est en charge de calculer les graphismes, tout ce qui s'affiche à l'écran. Sur cette console, les cartes son et graphique ne sont PAS des co-processeurs, ce sont des circuits électroniques dits fixes. C'est totalement différent de ce qu'on a sur les consoles modernes, aussi le préciser est important.
Bien que la carte graphique ne soit pas un processeur, elle a 64 kibioctets de RAM rien que pour elle. La RAM en question est séparée de la RAM normale, c'est un circuit intégré séparé. Et c'est un cas très fréquent, qui reviendra par la suite. La majeure partie des cartes graphiques dispose de leur propre '''mémoire vidéo''', totalement réservée à la carte graphique. La RAM vidéo est connectée à la carte graphique via un bus séparé. Le processeur est souvent connecté à ce bus, afin de pouvoir écrire des données dedans, mais ce n'est pas le cas ici.
[[File:Architecture de la PC Engine, aussi appelée TurboGrafx-16.png|centre|vignette|upright=2.5|Architecture de la PC Engine, aussi appelée TurboGrafx-16]]
L'architecture de la console était particulièrement simple. Le processeur était le centre de l'architecture, tout était connecté dessus. Il y a un bus pour la cartouche de jeu, un autre pour la RAM, un autre pour les manettes, un autre pour carte son, et un dernier pour la carte graphique. Le fait d'avoir un bus par composant est assez rare et ce n'est le cas ici que parce des conditions particulières sont remplies. Déjà, il y a peu d'entrée-sorties. Ensuite, les bus font tous 8 bits, vu que le processeur est un CPU 8 bits. Avec 5 connexions de 8 bits, le tout utilise 40 broches, ce qui est beaucoup, mais totalement gérable. Par contre, les choses changerons pour les autres consoles.
Au final, l'organisation des bus peut s'expliquer avec ce qu'on a vu dans la section sur les bus de communication. La console utilise une architecture Harvard, car la ROM et la RAM utilisent des bus différents. De plus, il y a des bus dédiés aux entrées-sorties, séparés des bus mémoire. Enfin, la carte graphique a droit à ses propres bus pour lire dans la cartouche et dans sa RAM vidéo dédiée.
===L'architecture de la console de jeu NES===
Maintenant, nous allons voir la console de Jeu Famicom, aussi appelée la NES en occident. Elle a une architecture centrée sur un processeur Ricoh 2A03, similaire au processeur 6502, un ancien processeur autrefois très utilisé et très populaire. Le processeur est associé à 2 KB de mémoire RAM.
Sur certaines cartouches, on trouve une RAM utilisée pour les sauvegardes, qui est adressée par le processeur directement. Première variation par rapport à l'architecture de la console précédente : l'ajout de la RAM pour les sauvegardes dans les cartouches.
Niveau carte graphique, une différence importante est que la carte graphique est connectée à la cartouche de jeu via un autre bus, afin de pouvoir lire les sprites et textures du jeu dans la cartouche.
[[File:Architecture de la NES.png|centre|vignette|upright=2.5|Architecture de la NES]]
La différence avec l'architecture précédente est que des bus ont été fusionnés. Comme dit plus haut, le système utilise une architecture Harvard, vu que la ROM est dans la cartouche, alors que la RAM est soudée à la carte mère. Par contre, la Famicon utilise un bus dédié aux entrées-sorties. Il est utilisé pour la carte son et la carte graphique, seules les manettes sont sur un bus à part. Ce qui fait qu'on devrait plutôt parler de bus de sorties, mais passons... L'essentiel est qu'on n'est plus tout à fait dans le cas de la console précédente, avec un bus par composant.
===L'architecture de la SNES===
L'architecture de la SNES est illustrée ci-dessous. Les changements pour le processeur et la RAM sont mineurs.La RAM a augmenté en taille et passe à 128 KB. Pareil pour la RAM de la carte vidéo, qui passe à 64 KB. Par contre, on remarque un changement complet au niveau des bus, de la carte graphique et de la carte son.
[[File:Architecture de la SNES.png|centre|vignette|upright=2|Architecture de la SNES]]
La console utilise un '''bus système unique''', sur lequel tout est connecté : ROM, RAM, entrées-sorties, etc. La seule exception est pour les manettes, qui sont encore connectées directement sur le processeur, via un bus séparé. La transition vers un bus système s'explique par le fait que la console est maintenant de 16 bits, ce qui fait que les bus doivent être plus larges. Le processeur adresse des mémoires RAM et ROM plus grandes, ce qui double la taille de leurs bus. De plus, les entrées-sorties aussi ont besoin d'un bus plus large. Le processeur n'ayant pas un nombre illimité de broches, la seule solution est de fusionner les bus en un seul bus système.
Un autre changement est que la carte graphique est maintenant composée de deux circuits séparés. Encore une fois, il ne s'agit pas de coprocesseurs, mais de circuits non-programmables. Par contre, la carte son est remplacée par deux coprocesseurs audio ! De plus, les deux processeurs sont connectés à une mémoire RAM dédiée de 64 KB, comme pour la carte graphique. L'un est un processeur 8 bits (le DSP), l'autre est un processeur 16 bits.
Un point très intéressant : certains jeux intégraient des coprocesseurs dans leurs cartouches de jeu ! Par exemple, les cartouches de Starfox et de Super Mario 2 contenait un coprocesseur Super FX, qui gérait des calculs de rendu 2D/3D. Le Cx4 faisait plus ou moins la même chose, il était spécialisé dans les calculs trigonométriques, et diverses opérations de rendu 2D/3D. En tout, il y a environ 16 coprocesseurs d'utiliser et on en trouve facilement la liste sur le net. La console était conçue pour, des pins sur les ports cartouches étaient prévues pour des fonctionnalités de cartouche annexes, dont ces coprocesseurs. Ces pins connectaient le coprocesseur au bus des entrées-sorties. Les coprocesseurs des cartouches de NES avaient souvent de la mémoire rien que pour eux, qui était intégrée dans la cartouche.
===L'architecture de la Megadrive et de la néo-géo===
Passons maintenant à la console de jeu Megadrive, une console 16 bits. Elle a une architecture similaire à celle de la néo-géo, une autre console bien plus puissante, sorti à peu près en même temps. Elles intègrent deux processeurs : un Motorola 68000 qui sert de processeur principal, un Z80 qui sert de processeur dédié à l'audio. Le Z80 et le Motorola 68000 étaient deux processeurs très populaires à l'époque. Le Z80 est une sorte de version améliorée de l'Intel 8088 utilisé sur les anciens PC et de nombreuses consoles utilisaient des Z80 comme processeur principal. Il était familier pour les programmeurs de l'époque, pour son cout réduit, sa bonne disponibilité, et bien d'autres avantages liés à sa production de masse.
Le Z80 est utilisé comme co-processeur audio. Il commande un synthétiseur sonore, et est relié à sa propre mémoire, distincte de la mémoire principale. Le MC68000 est le processeur principal et a une relation maitre-esclave avec le Z80 : le MC68000 envoie des commandes au Z80, mais la communication ne va pas dans l'autre sens.
Le Motorola 68000 était un processeur 16 bits, alors que le Z80 est un processeur 8 bits. Et cette différence fait que l'on ne peut pas connecter directement les deux sur le même bus, ou du moins pas facilement. La solution retenue est d'utiliser deux bus séparés : un bus de 16 bits connecté au 68000, un bus de 8 bits connecté au Z80. Le premier bus est un bus système sur lequel est connecté le 68000, 64 kibioctets de RAM, la cartouche de jeu, et la carte graphique. Le second bus est un bus de 8 bits, plus court, relié au Z80, à un synthétiseur sonore, et 8 kibioctets de RAM
Les deux bus sont connectés à un '''''chipset''''', un circuit répartiteur, qui fait le pont entre les deux bus. Les manettes sont connectées sur le ''chipset''. Il contient un registre de 8 bits, dans lequel le MC68000 peut écrire dedans à sa guise, le registre étant adressable par le processeur. Lorsque le MC68000 écrit une valeur dedans, cela déclenche l’exécution automatique d'un programme pré-déterminé sur le Z80.
: Pour ceux qui savent ce qu'est une interruption, les valeurs écrites dans ce registre sont des numéros d'interruption, qui indiquent quelle routine d'interruption exécuter.
[[File:Architecture de la Megadrive et de la Néogeo.png|centre|vignette|upright=2.5|Architecture de la Megadrive et de la Néogeo]]
Cet exemple nous montre que les bus systèmes sont certes très simples, mais aussi inflexibles. Ils fonctionnent bien quand les composants branchés dessus sont tous des composants 8 bits, ou sont tous de 16 bits, ou tous 32 bits. Mais dès qu'on mélange composants 8, 16, 32 ou 64 bits, les choses deviennent plus compliquées. Il est alors préférable d'utiliser des bus séparés, avec des répartiteurs pour faire le pont entre les différents bus. Et nous verrons que le problème s'est posé lui aussi sur les PC.
===L'architecture des anciennes consoles Playstation : beaucoup de co-processeurs===
Les consoles que nous venons d'aborder étaient des consoles 8 ou 16 bits. A partir des consoles 32 bits, leur architecture s'est rapprochée de celle des PC, avec un usage plus complexes de répartiteurs. La XBOX était très semblable à un PC : le processeur était un Pentium 3 modifié, la carte graphique était une Geforce 3 modifiée, les 64 mébioctets de RAM était la même mémoire DDR que celle des PC, le répartiteur secondaire était un ''chipset'' nForce de NVIDIA, etc. Mais les Playstation 1, 2 et 3 se distinguent de leur contemporains. Elles disposent de très nombreux co-processeurs, qui sont en plus très variés.
La Playstation 1 a été une des premières console à utiliser les CD-ROM comme support de stockage, en remplacement des cartouches. La conséquence est que la console contient une mémoire ROM, soudée à la carte mère, de 512 kibioctets. Elle contient aussi 2 mébioctets de RAM, une carte graphique avec 1 mébioctet de mémoire vidéo, un processeur, et de quoi gérer les périphériques. Il y a un co-processeur audio spécialisé, avec 512 kibioctets de RAM, ce qui nous est familier. Par contre, les autres co-processeurs ne le sont pas.
Déjà, le lecteur de CD-ROM est associé à des circuits sur la carte mère, il y a tout un sous-système dédié au lecteur de CD. Il y a un contrôleur qui sert d'interface avec le lecteur proprement dit, mais aussi deux co-processeurs audio et 32 kibioctets de RAM. Les co-processeurs audio servent à lire des CD sans trop utiliser le second co-processeur audio, ils lui servent de complément.
Ensuite, le processeur incorpore plusieurs cœurs, avec un cœur principal et plusieurs co-processeurs. Le premier est un co-processeur système, qui est utilisé pour gérer la mémoire cache intégrée au processeur, pour des fonctionnalités appelées interruptions et exceptions, ainsi que pour configurer le processeur. Le second est un co-processeur arithmétique spécialisé dans les calculs en virgule flottante, très importants pour le rendu 3D. Enfin, il y a un décodeur vidéo, qui n'est pas un co-processeur, mais un circuit non-programmable, spécialisé dans le décodage vidéo. De nos jours, ce circuit aurait été intégré dans la carte graphique, mais il était intégré dans le processeur sur la Playstation 2.
Pour le reste, le processeur est la figure centrale de la console. Il est connecté à 4 bus : un pour la RAM, un pour la carte graphique, un pour les manettes, un autre pour le reste. Le dernier bus est connecté au système audio et au système pour le lecteur CD. Ce serait un bus d'entrée-sortie, s'il n'était pas connecté à la mémoire ROM. Vous avez bien lu : la mémoire ROM est reliée au bus d'entrée-sortie.
[[File:Architecture de la Playstation.png|centre|vignette|upright=2.5|Architecture de la Playstation]]
La Playstation 2 est composé d'un processeur, couplé à 32 Mébioctets de RAM, et d'un paquet de co-processeurs. Plus de co-processeurs que la PS1. Le processeur principal n'est pas la même que celui de la PS1, mais il a une architecture similaire. Il intègre un décodeur vidéo sur le même circuit intégré, ainsi que deux co-processeur. Les co-processeurs ne sont cependant pas les mêmes.
Le co-processeur système disparait et est remplacé par un second co-processeur arithmétique. Les deux co-processeurs arithmétiques sont spécialisés dans les nombres flottants, avec quelques différences entre les deux. Par exemple, le second co-processeur gérait des calculs trigonométriques, des exponentielles, des logarithmes, et d'autres fonctions complexes du genre ; mais pas le premier co-processeur. Ils sont reliés à 4 kibioctets de RAM pour le premier, 16 kibioctets de RAM pour le second ; qui sont intégrées dans le processeur et non-représentés dans le diagramme ci-dessous.
La PS2 intègre aussi un co-processeur d'entrées-sorties. Pour information, il s'agit du processeur principal de la Playstation 1, qui est ici utilisé différemment, suivant que l'on place un jeu PS1 ou PS1 dans la console. Si on met un jeu PS1, il est utilisé pour émuler la Playstation 1, afin de faire tourner le jeu PS1 sur la PS2. Si on met un jeu PS2, il est utilisé comme co-processeur d'entrée-sortie et fait l'interface entre CPU et entrées-sorties. Il est relié à 2 mébioctets de RAM, soit exactement la même quantité de mémoire que la Playstation 1.
Tous les périphériques sont connectés au co-processeur d'entrées-sortie. Pour cela, le co-processeur d'entrées-sortie est relié à deux bus dédiés aux périphériques. Le premier bus est relié aux manettes, aux ports USB et aux ports pour cartes mémoires. Le second bus est relié à la carte son, la carte réseau, le lecteur DVD, et un port PCMIA. Notons que la carte son intègre un co-processeur audio, qui n'est pas représenté dans le diagramme ci-dessous.
[[File:Playstation 2 architecture.png|centre|vignette|upright=2.5|Playstation 2 architecture]]
==L'architecture des PC et son évolution==
Après avoir vu les consoles, nous allons maintenant voir les anciens PC, des années 80 ou 90. Le tout premier PC était techniquement l''''IBM PC'''. Par la suite, de nombreux ordinateurs ont tenté de reproduire l'IBM PC originel, avec parfois quelques modifications mineures. De tels ordinateurs ''IBM PC compatibles'', ont été très nombreux, pour des raisons diverses. Le fait d'utiliser des composants banalisés, facilement disponibles, ainsi qu'une bonne documentation de l'IBM PC originel, a grandement aidé. Les IBM PC compatibles ont progressivement évolué pour donner les PC actuels. L'IBM PC compatible a donné naissance à de nombreux standards divers.
===L'IBM PC originel et l'IBM PC XT===
[[File:IBM PC XT 02.jpg|vignette|IBM PC XT.]]
Nous allons commencer par voir l'IBM PC originel, et son successeur : l'IBM Personal Computer XT. Nous les appelerons tous deux l'IBM PC. L'IBM PC utilisait un processeur Intel 8088, qui était un processeur 8 bits. Ils utilisaient un bus système unique, appelé le '''bus XT'''. Le bus système allait à 4.77 MHz, soit la même fréquence que le processeur. C'était un bus de 8 bits, ce qui collait parfaitement avec les processeurs 8 bits commercialisés par Intel à l'époque.
L'IBM PC comprenait une mémoire ROM avec de quoi faire fonctionner le PC. La ROM en question contenait un programme minimal, appelé le '''BIOS''', sans lequel le PC ne fonctionnait pas du tout. Il servait de base pour le système d'exploitation et MS-DOS ne fonctionnait pas sans elle. De nos jours, son rôle est plus limité : sans elle, le PC ne démarre pas. Mais nous détaillerons cela dans le prochain chapitre.
En plus de la ROM pour le BIOS, l'IBM PC avait quatre mémoires ROM dédiée au langage de programmation BASIC. Lorsque le PC démarrait, il ne bootait pas un système d'exploitation, mais lançait l'interpréteur pour le langage BASIC. De nos jours, ce serait l'équivalent d'un ordinateur qui boote directement sur du Python, à savoir la console Python que vous avez peut-être déjà utilisé si vous avez testé Python. Ceux qui ont déjà touché à un ordinateur de l'époque savent ce que ca veut dire, mais c'est malheureusement très difficile à expliquer sans ce genre d'expérience. Toujours est-il que c'était une sorte de norme à l'époque
: les ordinateurs bootaient généralement sur un interpréteur BASIC.
[[File:XT Bus pins.svg|vignette|Connecteur du bus XT.]]
Les PC étaient conçus pour qu'on branche des '''cartes d'extension''', à savoir des cartes électroniques qu'on branchait sur la carte mère, à l'intérieur du PC. Les cartes d'extension de l'époque étaient surtout des cartes son ou des cartes graphiques, mais aussi des cartes pour brancher des péripéhriques. par exemple, on pouvait ajouter deux cartes graphiques dans l'IBM PC originel : l'''IBM Monochrome Display Adapter'' et/ou la ''IBM Color Graphics Adapter''. De nos jours, les cartes son sont intégrées à la carte mère, mais les cartes graphiques sont restées des cartes d'extension.
Les cartes d'extension étaient branchées sur un '''connecteur XT''', qui était directement relié au bus XT. Le connecteur XT est illustré ci-contre, mais ne vous en souciez pas trop pour le moment. La carte mère de l'IBM PC avait 5 connecteurs de ce type, qu'on pouvait peupler avec autant de cartes d'extension. L'IBM Personal Computer XT est passé à 8 connecteurs XT, soit trois de plus.
Pour ce qui est des périphériques, l'IBM PC avait plusieurs connecteurs : un port série, un port parallèle, un port pour le clavier, et un port pour un lecteur cassette. Le clavier et le lecteur cassette étaient connectés directement sur la carte mère, qui contenait quelques circuits pour gérer le clavier. Par contre, les deux premiers n'étaient pas connectés à la carte mère. Le port série était en réalité une carte d'extension, branchée sur un connecteur XT. Et il en est de même pour le port parallèle.
Pour ce qui est des supports de stockage, l'IBM PC originel n'avait pas de disque dur et n'avait que des lecteurs de disquette. De plus, le lecteur de disquette n'était pas connecté directement sur la carte mère, mais était connecté à une carte d'extension, branchée sur un connecteur XT. La carte d'extension avait deux connecteurs, un par lecteur de disquette, ce qui fait que les deux lecteurs de disquettes pouvaient être branchés sur une seule carte d'extension. L'IBM Personal Computer XT a ajouté un disque dur, sauf sur quelques sous-modèles spécifiques.
Le PC avait aussi un petit haut-parleur capable de faire des bips.
Pour résumer, l'IBM PC originel se reposait beaucoup sur les cartes d'extension, sa carte mère contenait peu de choses. Enfin, peu de choses... Il y avait un processeur Intel 8088, éventuellement un coprocesseur flottant 8087, de la RAM, de la ROM, et des circuits intégrés assez divers. En voici la liste, certains vous seront familiers, d'autres vous seront inconnus à ce stade du cours :
* les circuits de décodage d'adresse ;
* un contrôleur DMA intel 8273 ;
* un contrôleur d'interruption 8259 ;
* un contrôleur de bus Intel 8288 pour gérer le bus XT ;
* un générateur d'horloge Intel 8284 et un diviseur de fréquence ;
* un ''timer'' Intel 8253, le même que celui étudié dans le chapitre sur les ''timers'' ;
* un contrôleur parallèle 8255.
Les multiplexeurs, registres et portes logiques, sont des circuits de décodage d'adresse, qui permettent de combiner plusieurs RAM en une seule, idem avec la mémoire ROM. Si vous verrez qu'il y a 5 mémoires ROM : une ROM pour le BIOS, et quatre autres ROM pour le BASIC. Les 4 ROM du BASIC sont combinées en une seule mémoire ROM. Pour les RAM, il y en a 8 à 32, qui sont combinées en une seule RAM de 16 à 64 kibioctets.
[[File:IBM 5150 Motherboard.svg|centre|vignette|upright=3|Carte mère de l'IBM 5150, un modèle de l'IBM PC.]]
===L'architecture d'un IBM PC compatible 16 bits===
Les PC suivants sont passés à des processeurs 16 bits, mais c'était toujours des processeurs x86 d'Intel, à savoir des Intel 286 et 386. La RAM a grossi, quelques entrées-sorties ont été ajoutées, mais l'architecture globale est plus moins resté le même. C'est surtout au niveau du bus et des périphériques que les changements majeurs ont eu lieu.
[[File:ISA Bus pins.svg|vignette|Connecteur ISA.]]
Les PC 16 bits utilisaient un bus système unique, sur lequel tout était connecté : le processeur, la RAM, la ROM, les cartes d'extension et tout le reste. Le bus en question s'appelait le '''bus AT''', mais il a rapidement été renommé en '''bus ISA''' (''Industry Standard Architecture''). Le bus ISA était prévu pour avoir une compatibilité avec le bus 8 bits de l'IBM PC originel. D'ailleurs, cela se ressent jusque dans le connecteur utilisé : le connecteur ISA est un connecteur XT qu'on a fusionné avec un second connecteur pour l'étendre de 8 à 16 bits.
Les PC 16 bits avaient toujours un port série, un port parallèle, un clavier, un lecteur de disquette et des cartes d'extension. Des disques durs pouvaient être ajoutés, aussi. Mais pour ces périphériques, un changement majeur a eu lieu comparé à l'IBM PC originel. L'IBM PC originel utilisait des cartes d'extension pour tout, sauf le clavier. Mais maintenant, les périphériques ne sont plus connectés à une carte d'extension. À la place, les circuits de la carte d'extension sont déplacés sur la carte mère. Mais n'allez pas croire qu'ils étaient connectés directement au bus ISA, il y avait des intermédiaires.
Le clavier était relié à un '''contrôleur de clavier''', qui faisait l'interface entre le connecteur du clavier et le bus ISA. Le contrôleur de clavier était appelé le ''Keyboard Controler'', abrévié en KB. Il recevait ce qui est tapé au clavier et traduisait cela en quelque chose de compréhensible par l'ordinateur.
Les autres périphériques étaient connectés à un circuit intégré dédié : l''''Intel 82091AA'''. Il était connecté au lecteur de disquette, au port série et au port parallèle. Il servait d'intermédiaire entre ces périphériques et le bus ISA. Vous pouvez le voir comme une sorte de répartiteur, mais qui ne serait pas connecté sur le processeur et la RAM
Enfin, il ne faut pas oublier les autres composants présents sur l'IBM PC originel. Le BIOS est toujours là, de même que les ''timers'' Intel 8253 PIT, le contrôleur d'interruption Intel 8259 et le contrôleur DMA Intel 8237. Les PC 16 bits ont aussi intégré une ''Real Time Clock'' (RTC). Pour rappel, c'est un composant qui permet au PC de mémoriser la date et l'heure courante, à la seconde près. Le tout est résumé dans le schéma ci-dessous.
[[File:Architecture de l'IBM PC compatible.png|centre|vignette|upright=2.5|Architecture de l'IBM PC compatible]]
Un point important est que le bus ISA allait à la même fréquence que le processeur, vu que c'était un bus système. Les processeurs de l'époque étaient des CPU 286 d'Intel, ou le 386 d'Intel. Les Intel 286 allaient de 4 MHz minimum, à 25 MHz maximum. Le 386, quant à lui, allait de 12 à 40 MHz. Le bus ISA devait aller à cette fréquence, il était synchrone avec le processeur.
Par la suite, les processeurs ont gagné en performance, ce qui fait que le bus ISA est devenu trop lent pour le processeur. Une idée a alors été de conserver le bus ISA, pour des raisons de compatibilité, mais de le reléguer comme bus secondaire. L'ordinateur contient alors deux bus : un bus système, et un bus ISA secondaire. Le lien entre les deux est réalisé par un '''pont ISA''', ''ISA Bridge'' en anglais. Le bus ISA fonctionnait alors sa fréquence usuelle, alors que le bus système était beaucoup plus rapide. Le bus système fonctionnait à une fréquence bien plus élevée, ce qui fait que le processeur pouvait communiquer à pleine vitesse, notamment avec la RAM. Le processeur n'était alors plus forcé à aller à la même fréquence que le bus ISA
[[File:Architecture de l'IBM PC compatible avec bridge ISA.png|centre|vignette|upright=2.5|Architecture de l'IBM PC compatible avec bridge ISA]]
Les PC de l'époque intégraient donc plusieurs bus séparés. Vous avez bien lu : plusieurs bus ! Ici, il s'agit de ce que j'appelle des '''bus en cascade''', à savoir qu'un bus est connecté à un autre bus par un intermédiaire. Au passage, si j'aborde ces exemples, car c'est pareil sur les ordinateurs modernes. Le pont ISA a été remplacé par des circuits différents, mais qui ont un rôle assez similaire. Le ''chipset'' de votre carte mère n'est qu'un lointain descendant du pont ISA, qui s'interface avec des bus différents.
===L'arrivée des standards AT et IDE pour les disques durs===
Initialement, les disques durs étaient placés dans l'ordinateur et étaient connectés sur le bus ISA, via une carte d'extension ISA. En clair, il fallait connecter le disque dur sur une carte d'extension, et non sur la carte mère. Les cartes d'extension en question permettaient de connecter un ou plusieurs disques durs, parfois des lecteurs de disquette supplémentaires. Les cartes ISA de ce type faisaient juste l'interface entre le bus ISA et les disques durs, rien de plus. L'interface en question a été standardisée, ce qui a donné le standard ''AT Bus Attachment'', qui a été abrévié en ATA.
Et ce n'était pas que pour les disques durs, de nombreux composants étaient dans ce cas. Une carte d'extension servait d'intermédiaire entre eux et la carte mère. Les cartes d'extension en question étaient appelées des ''Host bus adapter''.
[[File:Acculogic sIDE-4 Controller ISA.jpg|centre|vignette|upright=2|Carte ISA d'interface disque dur, de marque Acculogic.]]
Mais les choses ont rapidement évoluées, que ce soit du côté des cartes mères que du côté des disques durs. Le '''standard IDE''' a permis de brancher un disque dur directement sur la carte mère, sans passer par une carte d'interface ISA. Pour cela, la carte mère réservait un connecteur ISA pour le disque dur, renommé '''connecteur ATA'''. Pour que cela soit possible, il a fallu rajouter des circuits sur la carte mère. Tout ce qui était sur les cartes d'interface ISA s'est retrouvé sur la carte mère.
[[File:Ajout des ports IDE sur la carte mère.png|centre|vignette|upright=2|Ajout des ports IDE sur la carte mère]]
En réalité, les connecteurs ATA étaient des connecteurs ISA simplifiés. Un connecteur ISA avait en tout 98 broches, alors qu'un connecteur ATA n'en contient que 40. Les broches qui étaient inutiles pour les disques durs ont simplement été enlevées. Et qui dit connecteur spécialisé, dit câble spécialisé. Les disques durs étaient branchés sur le connecteur AT grâce à un câble ATA, sur lequel on pouvait connecter deux disques durs.
[[File:ATA Plug.svg|centre|vignette|upright=2|Connecteur ATA.]]
[[File:ATA cables.jpg|centre|vignette|upright=2|Cable ATA.]]
Il était donc possible de connecter deux disques durs sur un seul connecteur ATA. Et cette possibilité est devenue d'autant plus utile par la suite. A partir de la version 2, ATA supportait aussi les lecteurs de disquettes, les lecteurs de CD/DVD, et bien d'autres supports de stockage. Il était alors possible de connecter un lecteur CD et un disque dur sur un seul connecteur. Les cartes mères avaient généralement deux connecteurs ATA, et n'avaient pas besoin de plus. C'était suffisant pour connecter un disque dur, un lecteur de disquette et un lecteur CD, configuration courante entre les années 90 et 2000.
Un câble est donc connecté à deux supports de stockage. Pour distinguer les deux, le standard ATA ajoute une possibilité de configuration. Sur un câble, il doit y avoir un support de stockage "maitre" et un support "esclave". C'était la terminologie de l'époque, que je reproduis ici, même si elle est fortement trompeuse. N'allez pas croire que cela implique que l'un ait des avantages sur l'autre. Le support 'maitre" n'a pas droit à plus de bande passante, il n'a pas la priorité sur l'autre, rien du tout. Il s'agit juste d'un nombre qui permet de savoir avec qui le processeur communique, qui vaut 0 pour le premier support, 1 pour l'autre. Une sorte d'adresse de 1 bit, si l'on veut.
[[File:ATA-Konfiguration02.png|centre|vignette|upright=2|Configuration ATA.]]
Pour configurer un support de stockage en mode "maitre" ou "esclave", le support de stockage avait quelques pins dédiés. Il suffisait de placer un détrompeur en plastique sur les pins adéquats. Les pins se trouvaient à l'arrière du disque dur ou du lecteur de CD/DVD/Disquette/autre.
[[File:HDD Master and Slave Description.jpg|centre|vignette|upright=2|Configuration ''Master/Slave''.]]
===L'architecture d'un PC avec un processeur Intel 486===
Maintenant, passons aux ordinateurs 32 bits, avec l'exemple d'un PC avec un processeur 486 d'Intel. A cette époque, le bus ISA était devenu trop limité et était en place d'être remplacé par le bus PCI, qui avait la même fonction. De nombreuses cartes d'extension utilisaient déjà ce standard et étaient branchées sur des connecteurs PCI dédiés, différents des connecteurs ISA. Intuitivement, on se dit que le bus PCI remplaçait le bus ISA, mais les choses étaient plus compliquées. Les disques durs gardaient leur connecteur ATA, et ne passaient pas par le bus PCI. Ils avaient un bus IDE séparé, qui était un bus ISA modifié.
Là encore, les processeurs étaient devenus beaucoup plus rapides que le bus PCI. Les deux allaient à des fréquences assez différentes, ce qui fait que le bus PCI était séparé du bus système. Il y avait alors deux implémentations possibles.
* La première utilise un répartiteur unique, relié au processeur, à la RAM, au bus PCI, et au bus IDE.
* La seconde utilise un bus système séparé du bus PCI, avec un '''pont PCI''' pour faire l'interface entre les deux.
Le '''''System Controler''''' était un circuit intégré, placé sur la carte mère, qui peut servir soit de pont PCI, soit de répartiteur. Le répartiteur PCI sert d'intermédiaire avec le bus PCI, mais aussi avec le bus IDE, utilisé pour les disques durs, aussi appelé le bus ''Parallel ATA''. Il peut aussi être connecté au processeur, à la mémoire RAM, ainsi qu'à la mémoire cache, mais cela ne sert que quand il est utilisé comme répartiteur.
[[File:Architecture d'un PC utilisant un bus PCI, implémentation avec un répartiteur.png|centre|vignette|upright=2|Architecture d'un PC utilisant un bus PCI, implémentation avec un répartiteur]]
Pour des raisons de compatibilité, le bus ISA avait été conservé, aux côtés du bus PCI. Il y avait un pont ISA en plus du pont/répartiteur PCI. Une implémentation possible aurait été de connecter les deux ponts ISA et PCI à un bus système unique. Mais cette solution n'a pas été retenue. La raison est que le bus PCI et le bus ISA ont des performances très différentes. Le bus PCI est très rapide, le bus ISA beaucoup plus lent. La différence est d'un ordre de grandeur, environ. Dans ces conditions, il est possible de faire passer les communications ISA à travers le bus PCI. Pour cela, le pont ISA est directement connecté sur le pont PCI, comme illustré ci-dessous.
Et il en est de même pour le bus dédié aux disques durs. En effet, les disques durs étaient autrefois reliés au bus ISA, mais cela a changé depuis. Ils disposent maintenant de leur propre bus dédié, le '''bus IDE''', qui est un bus ISA simplifié. Et ce bus ISA simplifié était connecté directement sur le pont PCI.
[[File:Architecture de l'IBM PC compatible avec pont PCI.png|centre|vignette|upright=2|Architecture de l'IBM PC compatible avec pont PCI]]
Dans ce qui va suivre, nous allons étudier un exemple qui utilise un bus système séparé, avec un pont PCI, sans répartiteur. Voilà pour les grandes lignes, mais le schéma ci-dessous montre que tout est plus complexe. Vous remarquerez des connexions optionnelles entre le pont PCI et la mémoire RAM et la mémoire cache. La raison est que le pont PCI peut aussi servir de répartiteur en remplacement du bus système. Concrètement, on peut alors retirer le bus système. La mémoire, le bus PCI, le bus ISA, le bus IDE, le processeur et la RAM sont alors connectés au répartiteur PCI, qui sert d'intermédiaire central entre tous ces composants. Mais ce n'est pas la solution qui a été retenue dans notre exemple.
[[File:Intel486-Typ PCI System.png|centre|vignette|upright=2|PC IBM compatible avec un 486, un bus PCI et un bus ISA. Le ''host bus'' est le bus système.]]
Le pont ISA sert ici d'intermédiaire entre le bus système et le bus ISA. De plus, il a été amélioré sur de nombreux points. Il inclut notamment des circuits qui étaient autrefois sur la carte mère, à savoir le contrôleur DMA 82C87 et le contrôleur d'interruption 82C59, ainsi que les ''timers'' Intel 82C54. Les composants restants sont eux reliés sur un quatrième bus : le bus X, l'ancêtre du bus ''Low Pin Count''. Le bus X était celui du BIOS, du contrôleur de clavier, de la ''Real Time Clock'', et du contrôleur de périphérique 82091AA d'Intel.
[[File:ISA Bridge schematic.png|centre|vignette|upright=2|ISA Bridge.]]
===L'architecture des PC des années 90-2000===
Par la suite, les ponts PCI et ISA ont évolué avec l'évolution des bus de l'ordinateur. Le bus ISA a progressivement été remplacé par d'autres bus, comme le bus ''Low Pin Count'', le bus PCI a été remplacé par le PCI Express, d'autres bus ont été ajoutés, etc. Mais la séparation du ''chipset'' en deux a été conservée.
[[File:Chipset schematic.svg|vignette|upright=1.0|Chipset séparé en northbridge et southbridge.]]
Le pont PCI et le pont ISA ont été remplacés respectivement par le '''pont nord''' et le '''pont sud''', plus connus par leurs noms anglais de ''northbridge'' et de ''southbridge''. Le pont nord servait d'interface entre le processeur, la mémoire et la carte graphique et est connecté à chacun par un bus dédié. Il intégrait aussi le contrôleur mémoire. Le pont sud est le répartiteur pour les composants lents, à savoir l'USB, l'Ethernet, etc. Le bus qui relie le processeur au pont nord était appelé le '''''Front Side Bus''''', abrévié en FSB.
[[File:IMac Chipset.png|centre|vignette|upright=2|Chipset séparé en northbridge et southbridge.]]
Un point important est que le bus PCI est devenu un bus assez lent, ce qui fait qu'il a finit par être connecté au pont sud. Le pont PCI est donc devenu le pont sud, dans le courant des années 2000. Durant un moment, un équivalent du pont ISA a subsisté dans un circuit de '''''Super IO'''''. Concrètement, il s'occupait du lecteur de disquette, du port parallèle, du port série, et des ports PS/2 pour le clavier et la souris. Mais il ne gérait pas le bus ISA, mais son remplaçant, le bus ''Low Pin Count''.
[[File:Motherboard diagram fr.svg|centre|vignette|upright=1.5|Carte mère avec circuit Super IO.]]
===L'architecture des PC depuis les années 2000===
Depuis la sortie du processeur AMD Athlon 64, le pont nord a été fusionné dans le processeur. La fusion ne s'est pas faite en une fois, des fonctionnalités ont progressivement été progressivement intégrées dans le processeur. Le pont sud est resté, mais il a alors été progressivement connecté directement au processeur. La raison derrière cette intégration est que les processeurs avaient de plus en plus de transistors à leur disposition. Ils en ont profité pour intégrer le pont nord. Et cela permettait de simplifier le câblage des cartes mères, sans pour autant rendre vraiment plus complexe la fabrication du processeur. Les industriels y trouvent leur compte.
La première étape a été l'intégration du contrôleur mémoire a été intégré au processeur. Concrètement, le résultat était que la mémoire RAM n'était plus connectée au pont nord, mais était connectée directement au processeur ! Il y a donc eu un retour d'un bus mémoire, mais spécialisé pour la mémoire RAM. En théorie, une telle intégration permet diverses optimisations quant aux transferts avec la mémoire RAM. Les transferts ne passent pas par un répartiteur, ce qui réduit le temps d'accès à la mémoire RAM. Ajoutons de sombres histoires de prefetching, d'optimisation des commandes, et j'en passe. Toujours est-il que le pont nord ne servait alors d'intermédiaire que pour les ports PCI Express, et le pont sud.
[[File:X58 Block Diagram.png|centre|vignette|upright=2|Chipset X58 d'Intel.]]
Par la suite, la carte graphique fût aussi connectée directement sur le processeur. Le processeur incorpore pour cela des contrôleurs PCI-Express. Le pont nord a alors disparu complétement, son intégration dans le processeur était complète. Sur les cartes mères Intel récentes, le pont sdud subsiste, il est appelé le ''Platform Controler Hub'', ou PCH. L'organisation des bus sur la carte mère qui résulte de cette connexion du processeur à la carte graphique, est illustrée ci-dessous, avec l'exemple du PCH.
[[File:Intel 5 Series architecture.png|centre|vignette|upright=2|Intel 5 Series architecture]]
<noinclude>
{{NavChapitre | book=Fonctionnement d'un ordinateur
| prev=L'interface électrique entre circuits intégrés et bus
| prevText=L'interface électrique entre circuits intégrés et bus
| next=La hiérarchie mémoire
| nextText=La hiérarchie mémoire
}}
</noinclude>
4lt3q6nkxdvm99j2moueyv1rnqpeoyy
765747
765746
2026-05-01T22:11:21Z
Mewtow
31375
/* Étude de l'architecture de quelques consoles de jeu */
765747
wikitext
text/x-wiki
Dans les chapitres précédents, nous avons vu comment représenter de l'information, la traiter et la mémoriser avec des circuits. Mais un ordinateur n'est pas qu'un amoncellement de circuits et est organisé d'une manière bien précise. Il est structuré autour de trois circuits principaux :
* un '''processeur''', qui manipule l'information et donne un résultat ;
* une '''mémoire''' qui mémorise les données à manipuler ;
* les '''entrées/sorties''', qui permettent à l'ordinateur de communiquer avec l'extérieur.
[[File:Architecture Von Neumann.png|centre|vignette|upright=2|Architecture d'un système à mémoire.]]
Pour faire simple, le processeur est un circuit qui s'occupe de faire des calculs. Rien d'étonnant à cela. Je rappelle que tout est codé par des nombres dans un ordinateur, ce qui fait que manipuler des nombres revient simplement à faire des calculs. Un ordinateur n'est donc qu'une grosse calculatrice améliorée, et le processeur est le composant qui fait les calculs.
La mémoire s'occupe purement de la mémorisation des données, des nombres sur lesquelles faire des calculs. Pour être plus précis, il y a deux mémoires : une pour les données proprement dites, une autre pour le programme à exécuter. La première est la '''mémoire RAM''', la seconde est la '''mémoire ROM'''. Nous détaillerons ce que sont ces deux mémoires dans la suite du chapitre, mais sachez que nous avions déjà rencontré ces deux types de mémoires dans les chapitres sur les registres et les mémoires adressables.
Les entrées-sorties permettent au processeur et à la mémoire de communiquer avec l'extérieur et d'échanger des informations avec des périphériques. Les '''périphériques''' regroupent, pour rappel, tout ce est branché sur un ordinateur, mais n'est pas à l'intérieur de celui-ci.
Le processeur, les mémoires et les entrées-sorties communiquent ensemble via un '''réseau d'interconnexions'''. Le terme est assez barbare, mais rien de compliqué sur le principe. C'est juste un ensemble de fils électriques qui relie les différents éléments d'un ordinateur. Les interconnexions sont souvent appelées le bus de communication, mais le terme est un abus de langage, comme on le verra plus bas.
Afin de simplifier les explications, on va supposer que le réseau d'interconnexion est le suivant. Tout est connecté au processeur. Il y a des interconnexions entre le processeur et la mémoire RAM, d'autres interconnexions entre processeur et mémoire ROM, et d'autres entre le processeur et les entrées-sorties. Nous verrons que d'autres réseaux d'interconnexions fusionnent certaines interconnexions, pour les partager entre la ROM et la RAM, par exemple. Mais pour le moment, gardez le schéma ci-dessous en tête.
[[File:Réseau d'interconnexion avec un processeur au centre.png|centre|vignette|upright=2|Réseau d'interconnexion avec un processeur au centre]]
==Les mémoires RAM et ROM==
La mémoire est le composant qui mémorise des informations, des données. Dans la majorité des cas, la mémoire est composée de plusieurs '''cases mémoire''', chacune mémorisant plusieurs bits, le nombre de bits étant identique pour toutes les cases mémoire. Dans le cas le plus simple, une case mémoire mémorise un '''octet''', un groupe de 8 bits. Mais les mémoires modernes mémorisent plusieurs octets par case mémoire : elles ont des cases mémoires de 16, 32 ou 64 bits, soit respectivement 2/4/8 octets. De rares mémoires assez anciennes utilisaient des cases mémoires contenant 1, 2, 3, 4, 5, 6 7, 13, 17, 23, 36 ou 48 bits. Mais ce n'était pas des mémoires électroniques, aussi nous allons les passer sous silence.
Tout ce qu'il faut savoir est que la quasi-totalité des mémoires électronique a un ou plusieurs octets par case mémoire. Pour simplifier, vous pouvez imaginer qu'une mémoire RAM est un regroupement de registre, chacun étant une case mémoire. C'est une description pas trop mauvaise pour décrire les mémoires RAM, qu'on abordera dans ce qui suit.
{|class="wikitable"
|+ Contenu d'une mémoire, case mémoire de 16 bits (deux octets)
|-
! Case mémoire N°1
| 0001 0110 1111 1110
|-
! Case mémoire N°2
| 1111 1110 0110 1111
|-
! Case mémoire N°3
| 0001 0000 0110 0001
|-
! Case mémoire N°4
| 1000 0110 0001 0000
|-
! Case mémoire N°5
| 1100 1010 0110 0001
|-
! ...
| ...
|-
! Case mémoire N°1023
| 0001 0110 0001 0110
|-
! Case mémoire N°1024
| 0001 0110 0001 0110
|}
Dans ce cours, il nous arrivera de partir du principe qu'il y a un octet par case mémoire, par souci de simplification. Mais ce ne sera pas systématique. De plus, il nous arrivera d'utiliser le terme adresse pour parler en réalité de la case mémoire associée, par métonymie.
===La capacité mémoire===
Bien évidemment, une mémoire ne peut stocker qu'une quantité finie de données. Et à ce petit jeu, certaines mémoires s'en sortent mieux que d'autres et peuvent stocker beaucoup plus de données que les autres. La '''capacité''' d'une mémoire correspond à la quantité d'informations que celle-ci peut mémoriser. Plus précisément, il s'agit du nombre maximal de bits qu'une mémoire peut contenir. Elle est le produit entre le nombre de cases mémoire, et la taille en bit d'une case mémoire.
Toutes les mémoires actuelles utilisant des cases mémoire d'un ou plusieurs octets, ce qui nous arrange pour compter la capacité d'une mémoire. Au lieu de compter cette capacité en bits, on préfère mesurer la capacité d'une mémoire avec le nombre d'octets qu'elle contient. Mais les mémoires des PC font plusieurs millions ou milliards d'octets. Pour se faciliter la tâche, on utilise des préfixes pour désigner les différentes capacités mémoires. Vous connaissez sûrement ces préfixes : kibioctets, mébioctets et gibioctets, notés respectivement Kio, Mio et Gio.
{|class="wikitable"
|-
!Préfixe!!Capacité mémoire en octets!!Puissance de deux
|-
||Kio||1024||2<sup>10</sup> octets
|-
||Mio||1 048 576||2<sup>20</sup> octets
|-
||Gio||1 073 741 824||2<sup>30</sup> octets
|}
On peut se demander pourquoi utiliser des puissances de 1024, et ne pas utiliser des puissances un peu plus communes ? Dans la majorité des situations, les électroniciens préfèrent manipuler des puissances de deux pour se faciliter la vie. Par convention, on utilise souvent des puissances de 1024, qui est la puissance de deux la plus proche de 1000. Or, dans le langage courant, kilo, méga et giga sont des multiples de 1000. Quand vous vous pesez sur votre balance et que celle-ci vous indique 58 kilogrammes, cela veut dire que vous pesez 58 000 grammes. De même, un kilomètre est égal à 1000 mètres, et non 1024 mètres.
Autrefois, on utilisait les termes kilo, méga et giga à la place de nos kibi, mebi et gibi, par abus de langage. Mais peu de personnes sont au courant de l'existence de ces nouvelles unités, et celles-ci sont rarement utilisées. Et cette confusion permet aux fabricants de disques durs de nous « arnaquer » : Ceux-ci donnent la capacité des disques durs qu'ils vendent en kilo, méga ou giga octets : l’acheteur croit implicitement avoir une capacité exprimée en kibi, mébi ou gibi octets, et se retrouve avec un disque dur qui contient moins de mémoire que prévu.
===Lecture et écriture : mémoires ROM et RWM===
Pour simplifier grandement, on peut grossièrement classer les mémoires en deux types : les ''Read Only Memory'' et les ''Read Write Memory'', aussi appelées mémoires ROM et mémoires RWM. Pour les '''mémoires ROM''', on ne peut pas modifier leur contenu. On peut y récupérer une donnée ou une instruction : on dit qu'on y accède en lecture. Mais on ne peut pas modifier les données qu'elles contiennent. Quant aux '''mémoires RWM''', on peut y accéder en lecture (récupérer une donnée stockée en mémoire), mais aussi en écriture : on peut stocker une donnée dans la mémoire, ou modifier une donnée existante.
Tout ordinateur contient au minimum une ROM et une RWM (souvent une mémoire RAM), les deux n'ont pas exactement le même rôle. Pour simplifier, la mémoire ROM mémorise le programme à exécuter, la mémoire RWM stocke des données. Il a existé des ordinateurs où la mémoire RWM était une mémoire magnétique, voire acoustique, mais ce n'est plus le cas de nos jours. Pour les ordinateurs modernes, la mémoire RWM est une mémoire électronique. Pour faire la différence avec ces anciennes mémoires RWM, elle est appelée la '''mémoire RAM'''. Il s'agit d'une mémoire qui stocke temporairement des données que le processeur doit manipuler (on dit qu'elle est volatile). Elle s'efface complètement quand on coupe l'alimentation de l'ordinateur.
Il existe d'autres différences entre mémoire RWM et RAM :
* la mémoire RWM peut ne pas être volatile et donc conserver les données écrites ;
* la mémoire RAM possède un temps d'accès constant aux données (quelle que soit l'adresse), ce qui n'est pas garanti pour les mémoires RWM.
Outre le programme à exécuter, la mémoire ROM peut mémoriser des constantes, des données qui ne changent pas. Elles ne sont jamais modifiées et gardent la même valeur quoi qu'il se passe lors de l'exécution du programme. En conséquence, elles ne sont jamais accédées en écriture durant l'exécution du programme, ce qui fait que leur place est dans une mémoire ROM. La mémoire RWM est alors destinée aux données temporaires, qui changent ou sont modifiées lors de l'exécution du programme, et qui sont donc manipulées aussi bien en lecture et en écriture. La mémoire RWM mémorise alors les variables du programme à exécuter, qui sont des données que le programme va manipuler. Pour les systèmes les plus simples, la mémoire RWM ne sert à rien de plus.
[[File:Espaces d'adressage sur une archi harvard modifiée.png|centre|vignette|upright=2.5|Espaces d'adressage sur une archi harvard modifiée]]
Pour donner un exemple de données stockées en ROM, on peut prendre l'exemple des anciennes consoles de jeu 8 et 16 bits. Les jeux vidéos sur ces consoles étaient placés dans des cartouches de jeu, précisément dans une mémoire ROM à l'intérieur de la cartouche de jeu. La ROM mémorisait non seulement le code du jeu, le programme du jeu vidéo, mais aussi les niveaux et les ''sprites'' et autres données graphiques.
Une conséquence est que les consoles 8/16 bits n'avaient pas besoin de beaucoup de RAM, comparé aux ordinateurs de l'époque, vu qu'une grande partie des données utiles étaient dans une ROM directement accessible par le processeur. À l'opposé, les micro-ordinateurs devaient copier les données d'un jeu depuis une disquette dans la mémoire RAM, ce qui demandait d'avoir plus de RAM. Le passage au support CD sur les consoles 32 bits a eu la même conséquence. Le processeur ne pouvant pas lire directement le CD à sa guise, il fallait copier les données du CD en RAM. D'où l'apparition de temps de chargement assez longs, inexistants sur support cartouche.
===L'adressage mémoire===
Sur une mémoire RAM ou ROM, on ne peut lire ou écrire qu'une case mémoire, qu'un registre à la fois : une lecture ou écriture ne peut lire ou modifier qu'une seule case mémoire. Techniquement, le processeur doit préciser à quel case mémoire il veut accéder à chaque lecture/écriture. Pour cela, chaque case mémoire se voit attribuer un nombre binaire unique, l''''adresse''', qui va permettre de le sélectionner et de l'identifier celle-ci parmi toutes les autres. En fait, on peut comparer une adresse à un numéro de téléphone (ou à une adresse d'appartement) : chacun de vos correspondants a un numéro de téléphone et vous savez que pour appeler telle personne, vous devez composer tel numéro. Les adresses mémoires en sont l'équivalent pour les cases mémoire.
[[File:Adressage mémoire.png|centre|vignette|upright=2|Exemple : on demande à la mémoire de sélectionner la case mémoire d'adresse 1002 et on récupère son contenu (ici, 17).]]
L'adresse mémoire est générée par le processeur. Le processeur peut parfaitement calculer des adresses, en extraire du programme qu'il exécute, et bien d'autres choses. Nous détaillerons d'ailleurs les mécanismes pour dans les chapitres portant sur les modes d'adressage du processeur. Mais pour le moment, nous avons juste besoin de savoir que c'est le processeur qui envoie des adresses aux mémoires RAM et ROM.
Les adresses générées par le processeur sont alors envoyées à la RAM ou la ROM via une connexion dédiée, un ensemble de fils qui connecte le processeur à la mémoire : le '''bus d'adresse mémoire'''. L'adresse sélectionne une case mémoire, le processeur peut alors récupérer la donnée dedans pour une lecture, écrire une donnée pour l'écriture. Pour cela, un second ensemble de fil connecte le processeur à la RAM/ROM, mais cette fois-ci pour échanger des données. Il s'agit du '''bus de données mémoire'''. Les deux sont souvent regroupés sous le terme de '''bus mémoire'''.
Un ordinateur contient toujours une RAM et une ROM, ce qui demande aux bus mémoire de s'adapter à la présence de deux mémoires. Il y a alors deux solutions, illustrées dans les deux schémas ci-dessous. Avec la première, il y a un seul bus mémoire partagé entre la RAM et la ROM, comme illustré ci-dessous. Une autre solution utilise deux bus séparés : un pour la RAM et un autre pour la ROM. Nous verrons les différences pratiques entre les deux à la fin du chapitre. Pour le moment, nous allons partir du principe qu'il y a un bus pour la mémoire ROM, et un autre bus pour la RAM.
[[File:CPT-System-Architecture-gapfill1-ANS.svg|centre|vignette|upright=2|Architecture avec une ROM et une RAM.]]
[[File:Réseau d'interconnexion avec un processeur au centre.png|centre|vignette|upright=2|Réseau d'interconnexion avec un processeur au centre]]
===L'alignement mémoire : introduction===
Plus haut, nous avions dit qu'il y a une adresse par case mémoire, chaque case mémoire contenant un ou plusieurs octets. Mais les processeurs modernes partent du principe que la mémoire a un octet par adresse, pas plus. Et ce même si la mémoire reliée au processeur utilise des cases mémoires de 2, 3, 4 octets ou plus. D'ailleurs, la majorité des mémoires RAM actuelle a des cases mémoires de 64 bits, soit 8 octets par case mémoire. Les raisons à cela sont multiple, mais nous les verrons en détail dans le chapitre sur l'alignement mémoire. Toujours est-il qu'il faut distinguer les '''adresses mémoire''' et les '''adresses d'octet''' gérées par le processeur.
Le processeur génère des adresses d'octet, qui permettent de sélectionner un octet bien précis. L'adresse d'octet permet de sélectionner un octet parmi tous les autres. Mais la mémoire ne comprend pas directement cette adresse d'octet. Heureusement, l'octet en question est dans une case mémoire bien précise, qui a elle-même une adresse mémoire bien précise. L'adresse d'octet est alors convertie en une adresse mémoire, qui sélectionne la case mémoire adéquate, celle qui contient l'octet voulu. La case mémoire entière est lue, puis le processeur ne récupère que les données adéquates. Pour cela, des circuits d'alignement mémoire se chargent de faire la conversion entre adresses du processeur et adresse mémoire. Nous verrons cela dans le détail dans le chapitre sur l'alignement mémoire.
Il existe des mémoires qui n'utilisent pas d'adresses mémoire, mais passons : ce sera pour la suite du cours.
==Le processeur==
Dans les ordinateurs, l'unité de traitement porte le nom de '''processeur''', ou encore de '''''Central Processing Unit''''', abrévié en CPU. Le rôle principal du processeur est de faire des calculs. La plupart des processeurs actuels supportent au minimum l'addition, la soustraction et la multiplication. Quelques processeurs ne gèrent pas la division, qui est une opération très gourmande en circuit, peu utilisée, très lente. Il arrive que des processeurs très peu performants ne gèrent pas la multiplication, mais c'est assez rare.
Un processeur ne fait pas que des calculs. Tout processeur est conçu pour effectuer un nombre limité d'opérations bien précises, comme des calculs, des échanges de données avec la mémoire, etc. Ces opérations sont appelées des '''instructions'''. Les plus intuitives sont les '''instructions arithmétiques''', qui font des calculs, comme l'addition, la soustraction, la multiplication, la division. Mais il y a aussi des '''instructions d'accès mémoire''', qui échangent des données entre la mémoire RAM et le processeur. Les autres instructions ne sont pas très intuitives, aussi passons-les sous silence pour le moment, tout deviendra plus clair dans les chapitres sur le processeur.
===Le processeur exécute un programme, une suite d'instructions===
Tout processeur est conçu pour exécuter une suite d'instructions dans l'ordre demandé, cette suite s'appelant un '''programme'''. Ce que fait le processeur est défini par la suite d'instructions qu'il exécute, par le programme qu'on lui demande de faire. Les instructions sont exécutées dans un ordre bien précis, les unes après les autres. L'ordre en question est décidé par le programmeur. La totalité des logiciels présents sur un ordinateur sont des programmes comme les autres.
Le programme à exécuter est stockée dans la mémoire de l'ordinateur. C'est ainsi que l'ordinateur est rendu programmable : modifier le contenu de la mémoire permet de changer le programme exécuté. Mine de rien, cette idée de stocker le programme en mémoire est ce qui a fait que l’informatique est ce qu'elle est aujourd’hui. C'est la définition même d'ordinateur : appareil programmable qui stocke son programme dans une mémoire modifiable.
Une instruction est codée comme les données : sous la forme de suites de bits. Telle suite de bit indique qu'il faut faire une addition, telle autre demande de faire une soustraction, etc. Pour simplifier, nous allons supposer qu'il y a une instruction par adresse mémoire. Sur la grosse majorité des ordinateurs, les instructions sont placées les unes à la suite des autres dans l'ordre où elles doivent être exécutées. Un programme informatique n'est donc qu'une vulgaire suite d'instructions stockée quelque part dans la mémoire de l'ordinateur.
{|class="wikitable"
|+ Exemple de programme informatique
|-
! Adresse
! Instruction
|-
! 0
| Copier le contenu de l'adresse 0F05 dans le registre numéro 5
|-
! 1
| Charger le contenu de l'adresse 0555 dans le registre numéro 4
|-
! 2
| Additionner ces deux nombres
|-
! 3
| Charger le contenu de l'adresse 0555
|-
! 4
| Faire en XOR avec le résultat antérieur
|-
! ...
| ...
|-
! 5464
| Instruction d'arrêt
|}
Pour exécuter une suite d'instructions dans le bon ordre, le processeur détermine à chaque cycle quelle est la prochaine instruction à exécuter. Pour cela, le processeur mémorise l'adresse de l'instruction en cours dans un registre : le '''Program Counter'''. Je rappelle que des instructions consécutives sont dans des adresses consécutives. Pour passer à la prochaine instruction, il suffit donc d'incrémenter le ''program counter''.
: Si une instruction prend plusieurs octets, plusieurs adresses, il suffit de l'incrémenter du nombre d'octets/adresses.
D'autres processeurs font autrement : chaque instruction précise l'adresse de la suivante, directement dans la suite de bit représentant l'instruction en mémoire. Ces processeurs n'ont pas besoin de calculer une adresse qui leur est fournie sur un plateau d'argent. Sur des processeurs aussi bizarres, pas besoin de stocker les instructions en mémoire dans l'ordre dans lesquelles elles sont censées être exécutées. Mais ces processeurs sont très très rares et peuvent être considérés comme des exceptions à la règle.
Nous venons de voir qu'un processeur contient un registre appelé le ''program counter''. Mais il n'est pas le seul. Pour pouvoir fonctionner, tout processeur doit mémoriser un certain nombre d’informations nécessaires à son fonctionnement, qui sont mémorisées dans des '''registres de contrôle'''. La plupart ont des noms assez barbares (registre d'état, ''program counter'') et nous ne pouvons pas en parler à ce moment du cours. Nous les verrons en temps voulu, mais il est important de préciser qu'ils existent.
===L'intérieur d'un processeur===
Fort de ce que nous savons, nous pouvons expliquer ce qu'il y a à l'intérieur d'un processeur. Le premier point est qu'un processeur fait des calculs, ce qui implique qu'il contient des circuits de calcul. Ils sont regroupés dans une ou plusieurs '''unités de calcul'''. Nous avons déjà vu comment fabriquer une unité de calcul simple, dans un chapitre dédié, et c'est la même qui est présente dans un processeur. Du moins dans les grandes lignes, les circuits des processeurs modernes étant particulièrement optimisés. Il en est de même pour les autres circuits de calcul comme ceux pour les multiplications/division/autres.
Si le processeur fait des calculs, qu'en est-il des opérandes ? Et où sont mémorisés les résultats des opérations ? Pour cela, le processeur incorpore des '''registres généraux'''. Les registres généraux servent à mémoriser les opérandes et résultats des instructions. Ils mémorisent des données, contrairement aux registres de contrôle mentionnés plus haut. Le nombre de registres généraux dépend grandement du processeur. Les tout premiers processeurs se débrouillaient avec un seul registre, mais les processeurs actuels utilisent plusieurs registres, pour mémoriser plusieurs opérandes/résultats. Mais la présence de registres est source de pas mal de petites complications. Par exemple, il faut échanger les données entre la RAM et les registres, il faut gérer l'adressage des registres, etc. Il s'agit là de détails que nous expliquerons dans les chapitres sur le processeur.
Le processeur contient enfin un circuit pour interpréter les instructions, appelé l''''unité de contrôle'''. Elle lit les instructions depuis la mémoire, interprète la suite de bit associée, et commande le reste du processeur pour qu'il exécute l'instruction. Ses fonctions sont assez variées, mais nous allons simplifier en disant qu'elle configure l'unité de calcul et les registres pour faire le bon calcul. Son rôle est d'analyser la suite de bit qui constitue l'instruction, et d'en déduire quelle opération effectuer. Elle gère aussi l'accès à la mémoire RAM, et notamment ce qui est envoyé sur son bus d'adresse.
: Dans ce qui suit, on suppose que le ''program counter'' fait partie de l'unité de contrôle.
Pour résumer, un processeur contient une unité de calcul, des registres et une interface avec la mémoire RAM. Le tout est interconnecté, afin de pouvoir échanger des données. L’ensemble forme le '''chemin de données''', nom qui trahit le fait que c'est là que les données se déplacent et sont traitées. Il faut aussi ajouter l'unité de contrôle pour commander le tout. Elle lit les instructions en mémoire, puis commande le chemin de données pour que l'instruction soit exécutée correctement.
[[File:Microarchitecture d'un processeur.png|centre|vignette|upright=2|Microarchitecture d'un processeur]]
Un processeur parait donc assez simple expliqué comme ça, mais il y a de nombreuses subtilités. L'une d'entre elle est liée aux registres, et notamment à la manière dont on les utilise. Pour expliquer ces subtilités, nous allons voir comment les premiers processeurs fonctionnaient, avant de passer aux processeurs un peu plus modernes. Les tout premiers processeurs n'utilisaient qu'un seul registre, ce qui fait que l'utilisation des registres était très simple. Le passage à plusieurs registres a complexifié le tout.
===D'où viennent les adresses ?===
Il est maintenant temps de répondre à une question qui s'était posée dans la section sur l'adressage : d'où viennent les adresses envoyées à la mémoire ? Pour ce qui est des adresses des instructions, on connait déjà la réponse : c'est le ''program counter'' qui gère tout. Mais pour les données, il y a deux possibilités, qui correspondent à deux types de données : les données statiques et les données dynamiques.
Les '''données statiques''' sont les plus simples : elles existent durant toute la durée de vie du programme. Tant que celui-ci s'exécute, il aura besoin de ces données. En conséquence, il leur réserve une place en mémoire, qui est toujours la même. La donnée se situe donc à une adresse bien précise, qui ne change jamais. Attention cependant : les données peuvent être modifiées, changer de valeur. Le programme écrit dans les donnée statiques, c'est même assez fréquent. Ce sont ne sont pas forcément des données constantes !
Pour les données statiques, elles sont toujours placées à la même adresse mémoire. Pour le dire autrement, l'adresse mémoire est une constante, qui ne change pas. L'adresse est connue avant d’exécuter le programme, le programme a été codé pour utiliser cette adresse pour telle donnée, on a réservé une adresse pour la donnée voulue. Et même si vous quittez le programme et vous le relancez plusieurs jours après, l'adresse mémoire sera la même avant et après.
Et cela permet d'utiliser l''''adressage direct'''. L'idée est que les instructions précisent donc l'adresse à lire ou écrire. Pour cela, l'adresse est intégrée dans l’instruction elle-même. Pour rappel, l'instruction est codée par une suite de bit en mémoire RAM/ROM, dont certains précisent l'opération à faire, les autres servant à autre chose. L'idée est que certains bits précisent l'adresse mémoire de la donnée à lire. Les instructions sont donc du genre :
* ''LOAD 56'' - lit l'adresse numéro 56 et copie son contenu dans un registre;
* ''STORE R5 , adress 99'', copie le registre R5 dans l'adresse 99 ;
* ''ADD R5 , adress 209'' : additionne le registre R5 avec le contenu de l'adresse 209.
S'il existe des données statiques, c'est signe qu'il existe des '''données dynamiques'''. Ces dernières sont des données qui sont créées ou détruites selon les besoins. Pour comprendre d'où viennent ces données dynamiques, prenons le cas d'une personne qui écrit du texte sur un ordinateur. Le texte qu'il écrit est mémorisé dans la RAM de l’ordinateur, puis est sauvegardé sur le disque dur quand il sauvegarde son document. Au fur et à mesure qu'il écrit du texte, la RAM utilisée par ce texte augmente. Donc, ce texte est une donnée dynamique, dont la taille varie dans le temps.
Pour gérer des données dynamiques, la plupart des systèmes d'exploitation incorporent des fonctionnalités d''''allocation mémoire'''. Derrière ce nom barbare, se cache quelque chose de simple : les programmes peuvent réclamer de la mémoire au système d'exploitation, pour y placer les données qu'ils souhaitent. Les langages de programmation bas niveau supportent des fonctions comme malloc(), qui permettent de demander un bloc de mémoire de N octets à l'OS, qui doit alors accommoder la demande. De même, un programme peut libérer de la mémoire qu'il n'utilise plus avec des fonctions comme free().
Avec l'allocation mémoire, les données n'ont pas de place fixe en mémoire. Leur adresse mémoire peut varier d'une exécution du programme à l'autre. Pire que ça : les données peuvent être déplacées dans la mémoire RAM, si besoin. En clair : l'adresse est déterminée lors de l'exécution du programme. L'adresse est alors soit calculée, soit lue depuis la mémoire RAM, soit déterminée autrement. Toujours est-il qu'elle se retrouve dans un registre général. Pour gérer ces adresse variables, les processeurs utilisent l''''adressage indirect'''. L'adressage indirect permet d'utiliser une adresse qui est dans un registre de données. L'adresse en question peut être envoyée à la mémoire RAM sans problème, le processeur peut automatiquement connecter le registre adéquat sur le bus d'adresse.
Au tout début de l'informatique, les processeurs ne supportaient que l'adressage direct, pas plus. L'adressage indirect n'était tout simplement pas possible. Avec l'adressage direct, l'adresse à lire est extraite directement des instructions, par l'unité de contrôle. Le bus d'adresse de la RAM est alors relié directement à l'unité de contrôle, le bus de données est relié aux registres.
[[File:Architecture Harvard avec adressage direct uniquement.png|centre|vignette|upright=2|Architecture Harvard avec adressage direct uniquement]]
Mais dès les années 70, l'adressage indirect est apparu, rendant la programmation bien plus simple. Mais cela a demandé quelques adaptation au niveau du processeur. Avec l'adressage indirect, le bus d'adresse est connecté aux registres. Il a donc fallu rajouter un multiplexeur pour que le processeur décide de relier le bus d'adresse soit aux registres, soit à l'unité de contrôle.
===Un ordinateur peut avoir plusieurs processeurs===
La plupart des ordinateurs n'ont qu'un seul processeur, ce qui fait qu'on désigne avec le terme d''''ordinateurs mono-processeur'''. Mais il a existé (et existe encore) des '''ordinateurs multi-processeurs''', avec plusieurs processeurs sur la même carte mère. L'idée était de gagner en performance : deux processeurs permettent de faire deux fois plus de calcul qu'un seul, quatre permettent d'en faire quatre fois plus, etc. C'est très courant sur les supercalculateurs, des ordinateurs très puissants conçus pour du calcul industriel ou scientifique, mais aussi sur les serveurs ! Dans le cas le plus courant, ils utilisent plusieurs processeurs identiques : on utilise deux processeurs Core i3 de même modèle, ou quatre Pentium 3, etc.
Pour utiliser plusieurs processeurs, les programmes doivent être adaptés. Pour cela, il y a plusieurs possibilités :
* Une première possibilité, assez intuitive, est d’exécuter des programmes différents sur des processeurs différents. Par exemple, on exécute le navigateur web sur un processeur, le lecteur vidéo sur un autre, etc.
* La seconde option est de créer des programmes spéciaux, qui utilisent plusieurs processeurs. Ils répartissent les calculs à faire sur les différents processeurs. Un exemple est la lecture d'une vidéo sur le web : un processeur peut télécharger la vidéo pendant le visionnage et bufferiser celle-ci, un autre processeur peut décoder la vidéo, un autre décoder l'audio. De tels programmes restent des suites d'instructions, mais ils sont plus complexes que les programmes normaux, aussi nous les passons sous silence.
* La troisième option est d’exécuter le même programme sur les différents processeurs, mais chaque processeur traite son propre ensemble de données. Par exemple, pour un programme de rendu 3D, quatre processeurs peuvent s'occuper chacun d'une portion de l'image.
[[File:Architecture de Von Neumann Princeton multi processeurs.svg|centre|vignette|upright=2|Architecture de Von Neumann Princeton multi processeurs]]
De nos jours, les ordinateurs grand public les plus utilisés sont dans un cas intermédiaire, ils ne sont ni mono-, ni multi-processeur. Ils n'ont qu'un seul processeur, dans le sens où si on ouvre l'ordinateur et qu'on regarde la carte mère, il n'y a qu'un seul processeur. Mais ce processeur est en réalité assez similaire à un regroupement de plusieurs processeurs dans le même boitier. Il s'agit de '''processeurs multicœurs''', qui contiennent plusieurs cœurs, chaque cœur pouvant exécuter un programme tout seul.
La différence entre cœur et processeur est assez difficile à saisir, mais pour simplifier : un cœur est l'ensemble des circuits nécessaires pour exécuter un programme. Chaque cœur dispose de toute la machinerie électronique pour exécuter un programme, à savoir des circuits aux noms barbares comme : un séquenceur d'instruction, des registres, une unité de calcul. Par contre, certains circuits d'un processeur ne sont présents qu'en un seul exemplaire dans un processeur multicœur, comme les circuits de communication avec la mémoire ou les circuits d’interfaçage avec la carte mère.
Suivant le nombre de cœurs présents dans notre processeur, celui-ci sera appelé un processeur double-cœur (deux cœurs), quadruple-cœur (4 cœurs), octuple-cœur (8 cœurs), etc. Un processeur double-cœur est équivalent à avoir deux processeurs dans l'ordinateur, un processeur quadruple-cœur est équivalent à avoir quatre processeurs dans l'ordinateur, etc. Ces processeurs sont devenus la norme dans les ordinateurs grand public et les logiciels et systèmes d'exploitation se sont adaptés.
===Les coprocesseurs===
Quelques ordinateurs assez anciens disposaient de '''coprocesseurs''', des processeurs qui complémentaient un processeur principal. Les ordinateurs de ce type avaient un processeur principal, le '''CPU''', qui était secondé par un ou plusieurs coprocesseurs. Sauf exception, le CPU et le coprocesseur exécutent des programmes différents, ils travaillent en parallèle.
Les coprocesseurs les plus connus sont les '''coprocesseurs pour le rendu 2D/3D'''. Ils ont eu leur heure de gloire sur les anciennes consoles de jeux vidéo, comme Super Nintendo, la Playstation et autres consoles de cette génération ou antérieure. Ils s'occupaient respectivement de calculer les graphismes des jeux vidéos. De nos jours, ils ont été remplacés par des cartes graphiques, ou des ''Graphic Processing Units'', qui ne sont pas considérées comme des coprocesseurs.
Les '''coprocesseurs sonores''' sont une sorte d'ancêtre des cartes son, utilisés sur les anciennes consoles de jeux vidéo, comme La Nintendo 64, la Playstation et autres consoles antérieures. Ils s'occupaient respectivement de calculer tout ce qui a trait au son. Pour donner un exemple, on peut citer la console Neo-géo, qui disposait de deux processeurs travaillant en parallèle : un processeur principal, et un coprocesseur sonore. Le processeur principal était un Motorola 68000, alors que le coprocesseur sonore était un processeur Z80.
L'accès aux périphériques est quelque chose sur lequel nous passerons plusieurs chapitres dans ce cours. Mais sachez que l'accès aux périphériques peut demander pas mal de puissance de calculs. Le CPU principal peut faire ce genre de calculs par lui-même, mais il n'est pas rare qu'un '''coprocesseur d'IO''' soit dédié à l'accès aux périphériques. Un exemple assez récent est celui de la console de jeu Nintendo 3DS. Elle disposait d'un processeur principal de type ARM9, d'un coprocesseur pour les divisions qu'on abordera plus bas, et d'un second processeur ARM7. L'ARM 7 était utilisé comme coprocesseur d'I/O, ainsi que pour l'émulation de la console GBA.
[[File:Asmp 2.gif|centre|vignette|upright=2|Co-processeur pour l'accès aux entrées-sorties.]]
Les '''coprocesseurs arithmétiques''' sont un peu à part des autres. Ils sont spécialisés dans les calculs en virgule flottante. Ils étaient utilisés à une époque où les CPU ne géraient que des calculs entiers (en binaire ou en BCD). Un exemple est le coprocesseur flottant x87, complémentaire des premiers processeurs Intel x86. Il y a eu la même chose sur les processeurs Motorola 68000, avec deux coprocesseurs flottants appelés les Motorola 68881 et les Motorola 68882.
Un exemple récent de coprocesseur est celui utilisé sur la console de jeu Nintendo DS. La console utilisait deux processeurs, un ARM9 et un ARM7, qui ne pouvaient pas faire de division entière. Il s'agit pourtant d'opérations importantes dans le cas du rendu 3D, ce qui fait que les concepteurs de la console ont rajouté un coprocesseur spécialisé dans les divisions entières et les racines carrées. Le coprocesseur était adressable directement par le processeur, comme peuvent l'être la RAM ou les périphériques.
==Les entrées-sorties==
Tous les circuits vus précédemment traitent des données codées en binaire. Ceci dit, les données ne sortent pas de n'importe où : l'ordinateur contient des composants électroniques qui traduisent des informations venant de l’extérieur en nombres. Ces composants sont ce qu'on appelle des '''entrées'''. Par exemple, le clavier est une entrée : l'électronique du clavier attribue un nombre entier (''scancode'') à une touche, nombre qui sera communiqué à l’ordinateur lors de l'appui d'une touche. Pareil pour la souris : quand vous bougez la souris, celle-ci envoie des informations sur la position ou le mouvement du curseur, informations qui sont codées sous la forme de nombres. La carte son évoquée il y a quelques chapitres est bien sûr une entrée : elle est capable d'enregistrer un son, et de le restituer sous la forme de nombres.
S’il y a des entrées, on trouve aussi des '''sorties''', des composants électroniques qui transforment des nombres présents dans l'ordinateur en quelque chose d'utile. Ces sorties effectuent la traduction inverse de celle faite par les entrées : si les entrées convertissent une information en nombre, les sorties font l'inverse : là où les entrées encodent, les sorties décodent. Par exemple, un écran LCD est un circuit de sortie : il reçoit des informations, et les transforme en image affichée à l'écran. Même chose pour une imprimante : elle reçoit des documents texte encodés sous forme de nombres, et permet de les imprimer sur du papier. Et la carte son est aussi une sortie, vu qu'elle transforme les sons d'un fichier audio en tensions destinées à un haut-parleur : c'est à la fois une entrée, et une sortie.
Les '''entrées-sorties''' incluent toutes les entrées et sorties, et même certains composants qui sont les deux à la fois. Il s'agit d'un terme générique, qui regroupe des composants forts différents. Dans ce qui va suivre, nous allons parfois parler de périphériques au lieu d'entrées-sorties, mais les deux termes ne sont pas équivalents. Dans le détail, les entrées-sorties regroupent :
* Les '''périphériques''' sont les composants connectés sur l'unité centrale. Exemple : les claviers, souris, webcam, imprimantes, écrans, clés USB, disques durs externes, la Box internet, etc.
* Les '''cartes d'extension''', qui se connectent sur la carte mère via un connecteur, comme les cartes son ou les cartes graphiques.
* D'autres composants sont soudés à la carte mère mais sont techniquement des entrées-sorties : les cartes sons soudées sur les cartes mères actuelles, par exemple.
===L'interface avec le reste de l'ordinateur===
Les entrées-sorties sont très diverses, fonctionnent très différemment les unes des autres. Mais du point de vue du reste de l'ordinateur, les choses sont relativement standardisées. Du point de vue du processeur, les entrées-sorties sont juste des paquets de registres ! Tous les périphériques, toutes les entrées-sorties contiennent des '''registres d’interfaçage''', qui permettent de faire l'intermédiaire entre l'entrée/sortie et le reste de l'ordinateur. L'entrée/sortie est conçu pour réagir automatiquement quand on écrit dans ces registres.
[[File:Registres d'interfaçage.png|centre|vignette|upright=2|Registres d'interfaçage.]]
Les registres d’interfaçage sont assez variés. Les plus évidents sont les '''registres de données''', qui permettent l'échange de données entre le processeur et les périphériques. Pour échanger des données avec l'entrée/sortie, le processeur a juste à lire ou écrire dans ces registres de données. On trouve généralement un registre de lecture et un registre d'écriture, mais il se peut que les deux soient fusionnés en un seul registre d’interfaçage de données. Si le processeur veut envoyer une donnée à une entrée/sortie, il a juste à écrire dans ces registres. Inversement, s'il veut lire une donnée, il a juste à lire le registre adéquat.
Mais le processeur ne fait pas que transmettre des données à l'entrée/sortie. Le processeur lui envoie aussi des « commandes », des valeurs numériques auxquelles l'entrée/sortie répond en effectuant un ensemble d'actions préprogrammées. En clair, ce sont l'équivalent des instructions du processeur, mais pour l'entrée/sortie. Par exemple, les commandes envoyées à une carte graphique peuvent être : affiche l'image présente à cette adresse mémoire, calcule le rendu 3D à partir des données présentes dans ta mémoire, etc. Pour recevoir les commandes, l'entrée/sortie contient des ''registres de commande'' qui mémorisent les commandes envoyées par le processeur. Quand le processeur veut envoyer une commande à l'entrée/sortie, il écrit la commande en question dans ce ou ces registres.
Enfin, beaucoup d'entrée/sortie ont un ''registre d'état'', lisible par le processeur, qui contient des informations sur l'état de l'entrée/sortie. Ils servent notamment à indiquer au processeur que l'entrée/sortie est disponible, qu'il est en train d’exécuter une commande, qu'il est occupé, qu'il y a un problème, qu'il y a une erreur de configuration, etc.
===Les adresses des registres d’interfaçage===
Les registres des périphériques sont identifiés par des adresses mémoires. Et les adresses sont conçues de façon à ce que les adresses des différentes entrées/sorties ne se marchent pas sur les pieds. Chaque entrée/sortie, chaque registre, chaque contrôleur a sa propre adresse. D'ordinaire, certains bits de l'adresse indiquent quel est le destinataire. Certains indiquent quel est l'entrée/sortie voulue, les restants indiquant le registre de destination.
Il existe deux organisations possibles pour les adresses des registres d’interfaçages. La première possibilité est de séparer les adresses pour les registres d’interfaçage et les adresses pour la mémoire. Le processeur doit avoir des instructions séparées pour gérer les périphériques et adresser la mémoire. Il a des instructions de lecture/écriture pour lire/écrire en mémoire, et d'autres pour lire/écrire les registres d’interfaçage. Sans cela, le processeur ne saurait pas si une adresse est destinée à un périphérique ou à la mémoire.
[[File:Espaces d'adressages séparés entre mémoire et périphérique.png|centre|vignette|upright=2.5|Espaces d'adressages séparés entre mémoire et périphérique]]
L'autre méthode mélange les adresses mémoire et des entrées-sorties. Si on prend par exemple un processeur de 16 bits, où les adresses font 16 bits, alors les 65536 adresses possibles seront découpées en deux portions : une partie ira adresser la RAM/ROM, l'autre les périphériques. On parle alors d''''entrées-sorties mappées en mémoire'''. L'avantage est que le processeur n'a pas besoin d'avoir des instructions séparées pour les deux.
[[File:IO mappées en mémoire.png|centre|vignette|upright=2.0|IO mappées en mémoire]]
Pour résumer, communiquer avec une entrée/sortie est similaire à ce qu'on a avec les mémoires. Il suffit de lire ou écrire dans des registres d’interfaçage, qui ont chacun une adresse mémoire. Le problème est que le système d'exploitation ne connaît pas toujours le fonctionnement d'une entrée/sortie : il faut installer un programme qui va s'exécuter quand on souhaite communiquer avec l'entrée/sortie, et qui s'occupera de tout ce qui est nécessaire pour le transfert des données, l'adressage du périphérique, etc. Ce petit programme est appelé un driver ou '''pilote de périphérique'''. La « programmation » périphérique est très simple : il suffit de savoir quoi mettre dans les registres, et c'est le pilote qui s'en charge.
==Les architectures Harvard et Von Neumann==
Après avoir vu le processeur, les mémoires et les entrées-sorties, voyons voir comment le tout est interconnecté. Tous les ordinateurs ne sont pas organisés de la même manière, pour ce qui est de leurs bus. Mais pour comprendre pourquoi, nous devons regarder qui communique avec qui, dans un ordinateur. Pour rappel, les données sont placées en mémoire RAM, alors que les instructions sont placées en mémoire ROM. Le processeur lit des instructions dans la mémoire ROM, il lit et écrit dans la mémoire RAM, et accède aux registres d’interfaçage des entrées-sorties. Il y a donc besoins de trois interconnexions : CPU-ROM, CPU-RAM et CPU-IO.
[[File:Réseau d'interconnexion avec un processeur au centre.png|centre|vignette|upright=2|Réseau d'interconnexion avec un processeur au centre]]
Il parait intéressant d'utiliser trois interconnexions, au minimum CPU-ROM, CPU-RAM et CPU-IO. Néanmoins, faire ainsi a de nombreux désavantages. Déjà, il faut pouvoir brancher tout ça sur le processeur. Et celui-ci n'a pas forcément assez de broches pour. Aussi, il est parfois préférable de mutualiser des bus, à savoir de connecter plusieurs composants sur un même bus. Par exemple, on peut mutualiser le bus pour la mémoire RAM et pour la mémoire ROM. Il faut dire que les deux bus sont des bus mémoire, avec un bus d'adresse, un bus de données, et surtout : des bus de commande similaires. Les mutualiser est alors très simple, et permet d'économiser pas mal de broches.
[[File:Réseau d'interconnexion avec un processeur au centre et une architecture Harvard.png|centre|vignette|upright=2|Réseau d'interconnexion avec un processeur au centre et une architecture Harvard]]
Cette mutualisation nous amène naturellement à parler de la distinction entre les architectures Harvard d'un côté et les architectures Von Neumann de l'autre. Elle est très liée au fait d'utiliser soit un bus mémoire unique, soit des bus séparés pour la ROM et la RAM. Voyons cela en détail.
===Les architectures Harvard et Von Neumann : des bus séparés ou unifiés===
Avec l''''architecture Harvard''', la mémoire ROM et la mémoire RAM sont reliées au processeur par deux bus séparés. Il y a un bus RAM pour la mémoire RAM, un bus ROM pour la mémoire ROM. L'avantage de cette architecture est qu'elle permet de charger une instruction et une donnée simultanément : une instruction chargée sur le bus relié à la mémoire programme, et une donnée chargée sur le bus relié à la mémoire de données. Et cela simplifie fortement la conception du processeur.
[[File:Harvard Architecture.png|centre|vignette|upright=2|Architecture Harvard, avec une ROM et une RAM séparées.]]
Avec l''''architecture Von Neumann''', mémoire ROM et mémoire RAM sont reliées au processeur par un bus unique. Le bus unique qui relie processeur, RAM et ROM, s'appelle le '''bus mémoire'''. Un défaut de ces architecture est qu'elles ne peuvent pas charger une instruction et une donnée en même temps. Et cela pose quelques problèmes pour la conception du processeur. Par contre, nous verrons dans ce qui suit qu'utiliser un bus mémoire partagé est bien plus flexible et permet des choses que les architectures Harvard ne peuvent pas faire.
[[File:Architecture Von Neumann, avec deux bus séparés.png|centre|vignette|upright=2|Architecture Von Neumann, avec deux bus séparés.]]
===Les architectures Harvard et Von Neumann : des espaces d'adressage séparés ou unifiés===
La distinction précédente se base sur les connexions entre RAM, ROM et processeur. Mais il existe une autre distinction, très liée, qui est souvent utilisée comme seconde définition des architectures Harvard/Von Neumann. Elle est liée aux adresses mémoire que le processeur peut gérer. Prenons un processeur 16 bits, par exemple, qui gère naturellement des adresses de 16 bits. Il peut gérer 2^16 adresses, soit 64 kibioctets de mémoire. L'ensemble de ces adresses est appelé un '''espace d'adressage'''. Mais comment cet espace d'adressage est utilisé pour adresser une RAM et une ROM ?
Sur les architectures Harvard, le processeur voit deux mémoires séparées avec leur lot d'adresses distinctes. Une même adresse peut donc correspondre soit à la mémoire ROM, soit à la mémoire RAM, suivant le bus utilisé. L'espace d'adressage est donc doublé, dupliqué, avec un pour la ROM, un autre pour la RAM. Rien d'étonnant à cela : il y a deux bus d'adresses, chacun correspondant à un espace d'adressage.
[[File:Vision de la mémoire par un processeur sur une architecture Harvard.png|centre|vignette|upright=2|Vision de la mémoire par un processeur sur une architecture Harvard.]]
Avec l'architecture Von Neumann, la RAM et la ROM doivent se partager les adresses mémoires disponibles. Il n'y a qu'un seul espace d'adressage qui est coupé en deux, avec une partie pour la ROM et une autre pour la RAM. Une adresse correspond soit à la mémoire RAM, soit à la mémoire ROM, mais pas aux deux. Typiquement, la mémoire ROM occupe une partie des adresses, la mémoire RAM utilise le reste. La répartition des adresses est réalisée par les circuits de décodage d'adresse mentionnés plus haut.
[[File:Vision de la mémoire par un processeur sur une architecture Von Neumann.png|centre|vignette|upright=2|Vision de la mémoire par un processeur sur une architecture Von Neumann.]]
Les '''architectures Harvard modifiées''' sont des intermédiaires entre architectures Harvard et architectures Von Neumann, bien qu'elles penchent bien plus du côté des architectures Harvard. Précisons que la terminologie n'est pas claire, beaucoup d'auteurs mettent des définitions différentes derrière ces deux termes. Mais dans ce cours, nous utiliserons une définition très stricte de ce qu'est une architecture Harvard modifiée.
Une architecture Harvard modifiée est une architecture Harvard, où le processeur peut lire des données constantes depuis la mémoire ROM. Nous avions vu plus haut que les mémoires ROM peuvent mémoriser, en plus d'un programme exécutable, des données constantes, qui ne varient pas. Les architectures Harvard pures ne permettent pas de lire des données de ce genre depuis la mémoire ROM, alors que les architectures Harvard modifiées le permettent.
Une architecture Harvard modifiée dispose d'une instruction pour lire les données en mémoire RWM, et d'une instruction pour lire des données en mémoire ROM. Il y a donc deux versions de l'instruction LOAD, qui copient la donnée dans un registre général, mais dont la source de la donnée est différente. Une autre possibilité, plus rare, est que une instruction de copie, qui copie une constante depuis la mémoire ROM vers la mémoire RAM. Le cas le plus commun est l'utilisation de deux instructions LOAD séparées.
[[File:Espaces d'adressage sur une archi harvard modifiée.png|centre|vignette|upright=2.5|Espaces d'adressage sur une archi harvard modifiée]]
Ceci étant dit, revenons à la distinction entre architecture Harvard et Von Neumann. Il faut noter que la RAM et la ROM n'ont pas forcément la même taille. Et ce que ce soit sur une architecture Harvard que sur une architecture Von Neumann, mais c'est plus facile à expliquer sur une architecture Harvard.
On peut par exemple imaginer une architecture Harvard qui utilise des adresses de 16 bits pour la ROM, et seulement 8 bits pour la RAM. Le résultat est qu'il peut adresser 64 kibioctets de ROM, mais seulement 256 octets de RAM. Les deux bus d'adresse sont alors de taille différente, l'un faisant 8 bits, l'autre 16. Quelques processeurs 8 bits étaient dans ce cas, comme on le verra dans le chapitre sur les CPU 8bits. Mais d'autres processeurs utilisent des valeurs différentes, avec par exemple des adresses de 16 bits pour la RAM, mais de 20 bits pour la ROM, ou inversement.
Sur une architecture Von Neumann, tout dépend de comment les adresses sont réparties. La solution la plus simple découpe l'espace d'adressage en deux parties égales, avec la RAM qui est dans la moitié basse (qui part de l'adresse 0 jusqu'à l'adresse au milieu), alors que la ROM est dans la moitié haute (entre l'adresse du milieu et l'adresse maximale). Mais ce n'est pas la seule possibilité, la limite entre RAM et ROM peut être mise n'importe où. Prenons par exemple un processeur 32 bits, capable de gérer 4 milliards d'adresse. Il est parfaitement possible de réserver 128 mébioctets de poids fort à la mémoire ROM, et de laisser le reste à la mémoire RAM.
===Le décodage d'adresse sur les architectures Von Neumann===
Pour résumer, les architectures Harvard et Von Neumann se distinguent sur deux points :
* L'accès à la RAM et à la ROM se font par des bus séparés sur l'architecture Harvard, sur le même bus avec l'architecture Von Neumann.
* Les adresses pour la mémoire ROM et la mémoire RAM sont séparées sur les architectures Harvard, partagées sur l’architecture Von Neumann.
Les architectures Von Neumann utilisent donc un seul bus pour connecter la RAM et la ROM au processeur. Mais cela ne parait pas intuitif : comment deux composants peuvent se connecter aux mêmes fils ? Parce que c'est ce qu'implique le fait de partager un bus. Si je prends une mémoire RAM et une mémoire ROM, toutes deux de 8 bits, elles seront connectées à un bus mémoire de 8 bits. Intuitivement, on se dit qu'il y aura des conflits, du genre : la RAM et la ROM vont accéder au bus en même temps, comment savoir si une adresse est destinée à la RAM ou la ROM, etc ?
Tous ces problèmes sont résolus avec une solution très simple : à chaque instant, seule une mémoire est connectée au bus. L'idée est que les mémoires sont connectées ou déconnectées du bus selon les besoins. Si le processeur veut envoyer lire une donnée en mémoire RAM, il déconnecte la mémoire ROM du bus. Et inversement, s'il veut lire une instruction, il déconnecte la RAM et connecte la ROM.
Pour cela, les mémoires RAM et ROM possèdent une entrée ''Chip Select'' ou ''Output Enable'', qui agit comme une sorte de bouton ON/OFF. Lorsqu'on met un 1 sur cette entrée, la mémoire se connectera au bus. Ses entrées et sorties fonctionneront normalement, elle pourra recevoir des adresses, envoyer ou recevoir des données, tout sera normal. Par contre, si on met un 0 sur cette entrée, la mémoire se "désactive", ses entrée-sorties ne répondent plus aux sollicitations extérieures. Pire que ça : elles sont électriquement déconnectées.
Au total, tout cela demande de gérer deux bit ''Chip Select''/''Output Enable'' : un pour la RAM, un pour la ROM. Et ces deux bits sont configurés pour chaque accès mémoire, pour chaque lecture ou écriture. Pour cela, un circuit de '''décodage d'adresse''' prend en entrée l'adresse mémoire à lire/écrire, et active/désactive les mémoires RAM/ROM selon les besoins. Il prend l'adresse et configure les bits ''Chip Select''/''Output Enable''.
[[File:Décodage d'adresse sur une architecture Von Neumann.png|centre|vignette|upright=2|Décodage d'adresse sur une architecture Von Neumann.]]
L'implémentation la plus simple réserve la moitié des adresses pour la RAM, l'autre moitié pour la ROM. Typiquement, la ROM prend la moitié basse, la RAM la moitié haute. Dans ce cas, activer/désactiver la RAM et la ROM se fait avec seulement le bit de poids fort de l'adresse. Si le bit de poids fort est à 1, alors on accède à la RAM et la ROM doit être désactivée. Mais si ce bit est à 0, alors on accède à la moitié basse et il faut désactiver la RAM.
Une remarque intéressante : le fait de séparer la mémoire en deux parts égales permet de simuler une architecture Harvard à partir d'une architecture Von Neumann. Par exemple, le tout premier processeur d'Intel, le 4004, était l'un de ceux là. La RAM et la ROM sont reliés au même bus, et il y a donc un unique espace d'adressage, qui est séparé en deux parties égales. Le truc est que le processeur traite les deux parties égales comme deux espaces d'adressage séparés. Le processeur se débrouille pour cacher le fait qu'il y a un espace d'adressage unique coupé en deux, ce qui fait que les programmeurs voient bien deux espaces d'adressages distincts.
[[File:Décodage d'adresse sur une architecture Von Neumann basique.png|centre|vignette|upright=2|Décodage d'adresse sur une architecture Von Neumann basique.]]
Pour résumer, quand une adresse est envoyée sur le bus, les deux mémoires vont la recevoir mais une seule va répondre et se connecter au bus. Le décodage d'adresse garantit que seule la mémoire adéquate réponde à un accès mémoire. Le décodage d'adresse est réalisé par la carte mère, par un composant dédié.
Le mécanisme peut être utilisé pour combiner plusieurs RAM en une seule, idem avec les ROM. Pour comprendre l'idée, je vais prendre l'exemple de l'IBM PC, un des tout premier PC existant. Nous étudierons ce PC dans une section dédiée, à la fin du chapitre, aussi je vais passer rapidement dessus. Tout ce que je vais faire est vous présenter la carte mère du PC, et vous demander de faire est de compter les mémoires ROM et mémoires RAM sur la carte mère :
[[File:IBM 5150 Motherboard.svg|centre|vignette|upright=3|Carte mère de l'IBM 5150, un modèle de l'IBM PC.]]
Si vous remarquerez qu'il y a 5 mémoires ROM et 8 à 32 mémoires RAM. Le fait est que le processeur voit les différentes mémoires ROM comme une seule mémoire ROM. Idem avec les mémoires RAM : elle font chacune 2 kibioctets, et l'ensemble est vu par le processeur comme une seule RAM de 16 à 64 kibioctets. Et cela grâce aux circuits de décodage d'adresse, qui sont situés en haut à droite de la carte mère.
Pour comprendre l'idée, prenons l'exemple d'un processeur 16 bits, capable de gérer 64 kibioctets de mémoire. L'espace d'adressage est découpé en quatre portions, de 16 kibioctets chacune. Une portion est réservée à une ROM de 16 kibioctet, les autres sont chacune réservée à une RAM de 16 kibioctet. Le décodage d'adresse sélectionne alors la mémoire adéquate en utilisant les deux bits de poids fort de l'adresse.
* S'ils valent 00, alors c'est la mémoire ROM qui est activée, connectée au bus.
* S'ils valent 01, alors c'est la première mémoire RAM qui est connectée au bus.
* S'ils valent 10, alors c'est la seconde mémoire RAM qui est connectée au bus.
* S'ils valent 11, alors c'est la troisième mémoire RAM qui est connectée au bus.
[[File:Décodage d'adresse sur une architecture Von Neumann, utilisant plusieurs RAM et une ROM.png|centre|vignette|upright=3|Décodage d'adresse sur une architecture Von Neumann, utilisant plusieurs RAM et une ROM]]
===L'impact sur la conception du processeur===
Plus haut, j'ai parlé d'un des avantages des architectures Harvard : elles peuvent lire une instruction en même temps qu'elles accèdent à une donnée. La donnée est lue/écrite en RAM, alors que l'instruction est lue en ROM. Et cela permet de simplifier l'intérieur du processeur. Pas de beaucoup, mais c'est déjà ça de pris. Voyons maintenant comment cela impacte l'intérieur du processeur. Tout ce dont vous avez à vous rappeler est la séparation entre chemin de données et unité de contrôle, et que les registres généraux sont dans le premier, le ''program counter'' dans la seconde.
Avec une architecture Harvard, les instructions et les données passent par des bus différent : bus ROM pour les instructions, bus RAM pour les données. L'intuition nous dit que le bus pour la mémoire ROM est connecté à l'unité de contrôle, alors que le bus pour la RAM est connecté au chemin de données. Et dans les grandes lignes, c'est vrai. La logique est imparable pour ce qui est des bus de données. Mais il y a une petite subtilité pour les bus d'adresse.
Pour comprendre comment le processeur exploite ces deux bus, voyons ce qui transite dessus. Pour la mémoire ROM, elle reçoit l'adresse de l'instruction à lire, elle renvoie l'instruction adéquate. Pour cela, le ''program counter'' est envoyé sur le bus d'adresse, l'instruction sur le bus de données. Pour la mémoire RAM, elle échange des données avec les registres généraux, les registres pour les données. Les adresses utilisées pour la RAM viennent elles soit du chemin de données, soit de l'unité de contrôle, tout dépend du mode d'adressage. Mais le ''program counter'' n'est pas impliqué.
[[File:Architecture Harvard - échanges de données.png|centre|vignette|upright=2|Architecture Harvard - échanges de données]]
Les architectures Harvard modifiées doivent cependant rajouter une connexion entre le bus ROM et les registres généraux. C'est nécessaire pour charger une donnée constante depuis la mémoire ROM. Rappelons que la donnée constante est copiée dans un registre général, donc dans le chemin de données.
[[File:Architecture Harvard modifiée - implémentation du processeur.png|centre|vignette|upright=2|Architecture Harvard modifiée - implémentation du processeur]]
Avec les architectures Von Neumann, il y a un seul bus qui est relié à la fois au chemin de données et à l'unité de contrôle. Si le processeur lit une instruction, le bus doit être relié à l'unité de contrôle. Par contre, s'il accède à une donnée, il doit être relié au chemin de données (le bus d'adresse peut éventuellement être connecté au séquenceur, si celui-ci fournit l'adresse à lire). Il faut donc utiliser un paquet de multiplexeurs et de démultiplexeurs pour faire la connexion au bon endroit.
[[File:Architecture Von Neumann - implémentation du processeur.png|centre|vignette|upright=2|Architecture Von Neumann - implémentation du processeur]]
Une instruction se fait en deux temps : on charge l'instruction depuis la mémoire ROM, puis on l'exécute. Avec une architecture Harvard, tout cela se fait en un seul cycle d'horloge, vu que charger la ROM et accéder aux données peut se faire en même temps. Pas avec les architectures Von Neumann, qui doivent libérer le bus mémoire après avoir chargé une instruction. Elles n'ont pas le choix : elles chargent l'instruction lors d'un premier cycle d'horloge, puis l'exécutent lors du second.
Pour cela, ils incorporent un registre appelé le '''registre d'instruction''', qui mémorise l'instruction chargée. L'instruction est copiée dans ce registre lors du premier cycle, puis est utilisée lors du second cycle. Le registre permet de ne pas oublier l’instruction entre les deux cycles. Le registre d'instruction est obligatoire sur les architectures Von Neumann. En comparaison, il est facultatif sur les architectures Harvard. Elles peuvent en avoir un, pour des raisons techniques, mais ce n'est pas obligatoire.
[[File:Registre d'instruction.png|centre|vignette|upright=2|Registre d'instruction.]]
===Les architectures Von Neumann sont plus flexibles===
Sur les architectures Harvard, le processeur sait faire la distinction entre programme et données. Les données sont stockées dans la mémoire RAM, le programme est stocké dans la mémoire ROM. Les deux sont séparés, accédés par le processeur sur des bus séparés, et c'est ce qui permet de faire la différence entre les deux. Il est impossible que le processeur exécute des données ou modifie le programme. Du moins, tant que la mémoire qui stocke le programme est bien une ROM.
Par contre, sur les architectures Von Neumann, il est impossible de distinguer programme et données, sauf en ajoutant des techniques de protection mémoire avancées. La raison est qu'il est impossible de faire la différence entre donnée et instruction, vu que rien ne ressemble plus à une suite de bits qu'une autre suite de bits. Et c'est à l'origine d'un des avantages majeur de l'architecture Von Neumann : il est possible que des programmes soient copiés dans la mémoire RWM et exécutés dans celle-ci.
Un cas d'utilisation familier est celui de votre ordinateur personnel. Le système d'exploitation et les autres logiciels sont copiés en mémoire RAM à chaque fois que vous les lancez. Mais cet exemple implique un disque dur, ce qui rend les choses plus compliquées que prévu. Un autre exemple serait la compilation de code à la volée, mais il ne sera pas très parlant.
Un exemple plus adapté serait celui où la ROM mémorise un programme compressée dans la mémoire ROM, qui est décompressé pour être exécuté en mémoire RAM. Le programme de décompression est stocké en mémoire ROM et est exécuté au lancement de l’ordinateur. Cette méthode permet d'utiliser une mémoire ROM très petite et très lente, tout en ayant un programme rapide (si la mémoire RWM est rapide).
Il est aussi possible de créer des programmes qui modifient leurs propres instructions : cela s'appelle du '''code auto-modifiant'''. Ce genre de choses servait autrefois sur des ordinateurs rudimentaires, au tout début de l'informatique. À l'époque, les adresses à lire/écrire devaient être écrites en dur dans le programme, dans les instructions exécutées. Pour gérer certaines fonctionnalités des langages de programmation qui ont besoin d'adresses modifiables, comme les tableaux, on devait corriger les adresses au besoin avec du code auto-modifiant. De nos jours, le code automodifiant est utilisée occasionnellement pour rendre un programme indétectable dans la mémoire (les virus informatiques utilisent beaucoup ce genre de procédés).
L'impossibilité de séparer données et instructions est à l'origine de problèmes assez fâcheux. Il est parfaitement possible que le processeur charge et exécute des données, qu'il prend par erreur pour des instructions. C'est le cas quand des pirates informatiques arrivent à exploiter des bugs. Il arrive que des pirates informatiques vous fournissent des données corrompues, qui contiennent un virus ou un programme malveillant est caché dans les données. Les bugs en question permettent d'exécuter ces données, donc virus. Pour éviter cela, le système d'exploitation peut marquer certaines zones de la mémoire comme non-exécutable, c’est-à-dire que le système d'exploitation interdit d’exécution de quoi que ce soit qui est dans cette zone. Mais ce n'est pas parfait.
Toujours est-il que tout cela est impossible sur les architectures Harvard. Et ce serait très limitant. Imaginez : pas possible de lancer un programme depuis le disque dur ou une clé USB, le programme doit impérativement être dans une mémoire ROM, pas de compilation à la volée, etc. Que des techniques très utilisées dans l'informatique moderne. Malgré ses défauts, les architectures Von Neumann ne sont pas les plus utilisées pour rien. Les architectures Harvard sont concrètement utilisées uniquement dans l'informatique embarquée, sur des microcontrôleurs très spécifiques.
==Le bus de communication avec les entrées-sorties==
Le processeur, la mémoire et les entrées-sorties sont connectées par un ou plusieurs '''bus de communication'''. Ce bus n'est rien d'autre qu'un ensemble de fils électriques sur lesquels on envoie des zéros ou des uns. Pour communiquer avec la mémoire, il y a trois prérequis qu'un bus doit respecter : pouvoir sélectionner la case mémoire (ou l'entrée-sortie) dont on a besoin, préciser à la mémoire s'il s'agit d'une lecture ou d'une écriture, et enfin pouvoir transférer la donnée. Pour cela, on doit donc avoir trois bus spécialisés, bien distincts, qu'on nommera le bus de commande, le bus d'adresse, et le bus de donnée.
* Le '''bus de données''', sur lequel s'échangent les données entre les composants.
* Le '''bus de commande''' pour configurer la mémoire et les entrées-sorties.
* Le '''bus d'adresse''', facultatif, permet de préciser quelle adresse mémoire il faut lire/écrire.
Chaque composant possède des entrées séparées pour le bus d'adresse, le bus de commande et le bus de données. Par exemple, une mémoire RAM possédera des entrées sur lesquelles brancher le bus d'adresse, d'autres sur lesquelles brancher le bus de commande, et des broches d'entrée-sortie pour le bus de données. Précisons cependant que le bus de commande n'est pas exactement le même entre des mémoires RAM/ROM et des entrées-sorties.
[[File:Bus general schematic.svg|centre|vignette|upright=2|Contenu d'un bus, généralités.]]
===Le réseau d'interconnexion : généralités===
Reprenons où nous nous étions arrêté. Avant de voir les architectures Harvard et Von Neumann, nous avions dit que le processeur, les mémoires et les entrées-sorties sont reliées entre eux par un réseau d'interconnexion. Nous venons de voir qu'il est possible de mutualiser certains bus, notamment celui de la mémoire RAM et celui de la mémoire ROM. Mais il est possible de faire la même chose pour les entrées-sorties. Là encore, il est possible de regrouper le bus mémoire avec les bus pour les entrées-sorties. Voyons ce que cela implique.
{|
|[[File:Réseau d'interconnexion avec un processeur au centre.png|centre|vignette|upright=2|Réseau d'interconnexion avec une architecture Harvard.]]
|[[File:Réseau d'interconnexion avec un processeur au centre et une architecture Harvard.png|centre|vignette|upright=2|Interconnexions d'une architecture Von Neumann.]]
|}
Avant de poursuivre, nous devons préciser quelque chose d'important. Sur les ordinateurs modernes, les entrées-sorties peuvent accéder à la mémoire RAM. Les ordinateurs modernes intègrent des techniques de '''''Direct Memory Access''''' (DMA) qui permettent aux entrées-sorties de lire ou d'écrire en mémoire RAM. Les transferts DMA se font sans intervention du processeur. Ils permettent de copier un bloc de plusieurs octets, dans deux sens : de la mémoire RAM vers une entrée-sortie, ou inversement. Le DMA demande d'ajouter un circuit dédié sur la carte mère : le contrôleur DMA. Il effectue la copie d'un paquet d'octets de la RAM vers l'entrée-sortie ou dans l'autre sens.
[[File:Réseau d'interconnexion avec un processeur au centre, et direct memory access.png|centre|vignette|upright=2|Réseau d'interconnexion avec un processeur au centre, et direct memory access]]
===Les bus systèmes===
La première solution utilise un bus unique, celui-ci est appelé le '''bus système''', aussi appelé ''backplane bus''. Le bus système est connecté à la mémoire RAM, la mémoire ROM, au processeur, et aux entrées-sorties. Tous les composants présents dans l'ordinateur sont connectés à ce bus, sans exception. De tels bus avaient pour avantage la simplicité. Le processeur n'est connecté qu'à un seul bus, ce qui utilise peu de broches et économise des fils. La mutualisation des bus est totale, le câblage est plus simple, la fabrication aussi.
[[File:Architecture minimale d'un ordinateur.png|centre|vignette|upright=2|Architecture minimale d'un ordinateur.]]
Un bus système contient un bus d'adresse, de données et de commande. Un bus système se marie bien avec des entrées-sorties mappées en mémoire. La conséquence est que le bus d'adresse ne sert pas que pour l'accès à la mémoire RAM/ROM, mais aussi pour l'accès aux entrées-sorties. Il y a moyen d'implémenter un système d'adresse séparés avec, mais c'est pas l'idéal.
[[File:Architecture Von Neumann avec les bus.png|centre|vignette|upright=2|Architecture Von Neumann avec les bus.]]
Un bus système n'a pas de limitations quant aux échanges de données. Le processeur peut communiquer directement avec les mémoires et les entrées-sorties, les entrées-sorties peuvent communiquer avec la mémoire RAM, etc. Notamment, un bus système peut implémenter le ''Direct Memory Access''. Il suffit juste de connecter un contrôleur DMA sur le bus système. Le contrôleur DMA est considéré comme une entrée-sortie, ses registres sont mappés en mémoire et sont donc accessibles directement par le processeur.
[[File:Bus système avec controleur DMA.png|centre|vignette|upright=2|Bus système avec contrôleur DMA.]]
Si on suit la définition à la lettre, un bus système est systématiquement une architecture Von Neumann, vu que la mémoire ROM et la mémoire RAM sont reliées sur le bus système. La conséquence est que les circuits de décodage d'adresse sont présents. Ils sont toujours sur la carte mère, et sont plus ou moins à côté du bus système. Cependant, le décodage d'adresse est parfois étendu pour tenir compte des entrées-sorties.
Les entrées-sorties soudées sur la carte mère ont elles aussi des entrées ''Chip Select'' ou quelque chose de similaire. Le décodage d'adresse peut alors les activer ou les désactiver suivant l'adresse envoyée sur le bus d'adresse. C'est ce qui arrive quand le processeur écrit dans un registre d’interfaçage : il envoie l'adresse de ce registre sur le bus d'adresse, le circuit de décodage d'adresse active seulement l'entrée-sortie associée. Il faut noter que ce n'est pas systématique, il existe des techniques pour se passer de décodage d'adresse. Mais nous en reparlerons dans le chapitre sur les bus de communication.
[[File:Chipselectfr.png|centre|vignette|upright=1.5|Exemple détaillé.]]
Les bus systèmes sont certes très simples, mais ils ont aussi des désavantages. Par exemple, il faut éviter que le processeur et les entrées-sorties se marchent sur les pieds, ils ne peuvent pas utiliser le bus en même temps. De tels conflits d'accès au bus système sont fréquents et ils réduisent la performance, comme on le verra dans le chapitre sur les bus. De plus, un bus système a le fâcheux désavantage de relier des composants allant à des vitesses très différentes : il arrivait fréquemment qu'un composant rapide doive attendre qu'un composant lent libère le bus. Le processeur était le composant le plus touché par ces temps d'attente.
Elle était utilisée sur les tout premiers ordinateurs, pour sa simplicité. Elle était parfaitement adaptée aux anciens composants, qui allaient tous à la même vitesse. De nos jours, les ordinateurs à haute performance ne l'utilisent plus trop, mais elle est encore utilisée sur certains systèmes embarqués, en informatique industrielle dans des systèmes très peu puissants.
===Les bus d'entrées-sorties===
Les bus systèmes ont de nombreux problèmes, ce qui fait que d'anciens ordinateurs faisaient autrement. À la place d'un bus système unique, ils utilisent un bus séparé pour les mémoires, et un autre séparé pour les entrées-sorties. Le bus spécialisé pour la mémoire est appelé le '''bus mémoire''', l'autre bus est appelé le '''bus d'entrées-sorties'''. Le bus mémoire est généralement relié à la fois à la mémoire RAM et à la mémoire ROM, les exceptions ne sont pas rares, cependant.
[[File:Bus mémoire séparé du bus pour les IO.png|centre|vignette|upright=2|Bus mémoire séparé du bus pour les IO]]
Les bus d'entrée-sorties peuvent être spécialisés et simplifiés. Par exemple, ils peuvent avoir un bus de commande différent de celui de la mémoire, qui utilise nettement moins de fils. Le bus d'adresse peut aussi être réduit, et utiliser des adresses plus courtes que celles du bus mémoire. Les bus de données peuvent aussi être de taille différentes. Il est ainsi possible d'avoir un bus mémoire capable de lire/écrire 64 bits à la fois, alors que la communication avec les entrées-sorties se fait octet par octet ! En général, les bus d'entrée-sortie sont assez petits, ils ont une taille de 8 ou 16 bits, même si le bus mémoire est plus grand. Cela permet de ne pas gaspiller trop de broches. Ajouter un bus d'entrée-sortie n'est donc pas très gourmand en broches et en fils.
: Il est en théorie possible d'avoir une fréquence différente pour les deux bus, avec un bus mémoire ultra-rapide et un bus pour les entrées-sorties est un bus moins rapide. Mais il faut que le processeur soit prévu pour, et c'est très rare.
Niveau performances, le processeur peut théoriquement accéder à la mémoire en attendant qu'une entrée/sortie réponde, mais il faut que le processeur soit prévu pour, et ce n'est pas de la tarte. Par contre, cela implique d'avoir des adresses séparées pour les registres d’interfaçage et la mémoire. En clair : pas d'entrée-sortie mappée en mémoire ! Un autre problème est que les entrées-sorties ne peuvent pas communiquer avec la mémoire directement, elles doivent passer par l'intermédiaire du processeur. En clair : pas de ''Direct Memory Access'' ! Les deux sont des défauts rédhibitoires pour les programmeurs système, notamment pour ceux qui codent les pilotes de périphériques.
Pour résumer, les défauts sont assez problématiques : pas d'entrées-sorties mappées en mémoire, pas de ''Direct Memory Access'', économie de broches limitée. Les deux premiers sont des défauts majeurs, qui font que de tels bus ne sont pas utilisés dans les ordinateurs modernes. À la place, ils utilisent une troisième solution, distincte des bus systèmes et des bus d'entrée-sorties.
===Les bus avec répartiteur===
Il existe une méthode intermédiaire, qui garde deux bus séparés pour la mémoire et les entrées-sorties, mais élimine les problèmes de brochage sur le processeur. L'idée est d'intercaler, entre le processeur et les deux bus, un '''circuit répartiteur'''. Il récupère tous les accès et distribue ceux-ci soit sur le bus mémoire, soit sur le bus des périphériques. Le ou les répartiteurs s'appellent aussi le '''''chipset''''' de la carte mère.
C'était ce qui était fait à l'époque des premiers Pentium. À l'époque, la puce de gestion du bus PCI faisait office de répartiteur. Elle mémorisait des plages mémoires entières, certaines étant attribuées à la RAM, les autres aux périphériques mappés en mémoire. Elles utilisaient ces plages pour faire la répartition.
[[File:IO mappées en mémoire avec séparation des bus.png|centre|vignette|upright=2|IO mappées en mémoire avec séparation des bus]]
Niveau adresses des registres d'interfacage, il est possible d'avoir soit des adresses unifiées avec les adresses mémoire, soit des adresses séparées.
L'usage d'un répartiteur ne pose pas de problèmes particuliers pour implémenter le DMA. La seule contrainte est que le contrôleur DMA soit intégré dans le répartiteur. Les échanges entre IO et mémoire passent par le répartiteur, qui fait le pont entre bus mémoire et bus des IO.
[[File:Implémentation du DMA avec un répartiteur.png|centre|vignette|upright=2|Implémentation du DMA avec un répartiteur]]
==Les microcontrôleurs et ''system on chip''==
Parfois, on décide de regrouper la mémoire, les bus, le CPU et les ports d'entrée-sortie dans un seul circuit intégré, un seul boitier. L'ensemble forme alors ce qu'on appelle un '''''System on Chip''''' (système sur une puce), abrévié en SoC. Le nom est assez explicite : un SoC comprend un système informatique complet sur une seule puce de silicium, microprocesseurs, mémoires et périphériques inclus. Ils incorporent aussi des ''timers'', des compteurs, et autres circuits très utiles.
[[File:ARMSoCBlockDiagram.svg|centre|vignette|upright=2|SoC basé sur un processeur ARM, avec des entrées-sorties typiques de celles d'un µ-contrôleur. Le support du bus CAN, d'Ethernet, du bus SPI, d'un circuit de PWM (génération de signaux spécifiques), de convertisseurs analogique-digital et inverse, sont typiques des µ-contrôleurs.]]
Le terme SoC regroupe des circuits imprimés assez variés, aux usages foncièrement différents et à la conception distincte. Les plus simples d’entre eux sont des microcontrôleurs, qui sont utilisés pour des applications à base performance. Les plus complexes sont utilisés pour des applications qui demandent plus de puissance, nous les appellerons SoC haute performance.
La relation entre SoC et microcontrôleurs est assez compliquée à expliquer, la terminologie n'est pas clairement établie. Il existe quelques cours/livres qui séparent les deux, d'autres qui pensent que les deux sont très liés. Dans ce cours, nous allons partir du principe que tous les systèmes qui regroupent processeur, mémoire et quelques périphériques/entrées-sorties sont des SoC. Les microcontrôleurs sont donc un cas particulier de SoC, en suivant cette définition.
===Les microcontrôleurs===
Les '''microcontrôleurs''' sont des composants utilisés dans l'embarqué ou d'informatique industrielle. Leur nom trahit leur rôle. Ils sont utilisés pour contrôler de l'électroménager, des chaines de fabrication dans une usine, des applications robotiques, les alarmes domestiques, les voitures. De manière générale, on les trouve dans tous les systèmes dits embarqués et/ou temps réel. Ils ont besoin de s'interconnecter à un grand nombre de composants et intègrent pour cela un grand nombre d'entrée-sorties. Les microcontrôleurs sont généralement peu puissants, et doivent consommer peu d'énergie/électricité.
Fait amusant, on en trouve dans certains périphériques informatiques. Par exemple, les anciens disques durs intégraient un microcontrôleur qui contrôlait plusieurs moteurs/ Les moteurs pour faire tourner les plateaux magnétiques et les moteurs pour déplacer les têtes de lecture/écriture étaient commandés par ce microcontrôleur. Comme autre exemple, les claviers d'ordinateurs intègrent un microcontrôleur connecté aux touches, qui détecte quand les touches sont appuyées et qui communique avec l'ordinateur. Nous détaillerons ces deux exemples dans les chapitres dédiés aux périphériques et aux disques durs, tout deviendra plus clair à ce moment là. La majorité des périphériques ou des composants internes à un ordinateur contiennent des microcontrôleurs.
Un microcontrôleur tend à intégrer des entrées-sorties assez spécifiques, qu'on ne retrouve pas dans les SoC destinés au grand public. Un microcontrôleur est typiquement relié à un paquet de senseurs et son rôle est de commander des moteurs ou d'autres composants. Et les entrées-sorties intégrées sont adaptées à cette tâche. Par exemple, ils tendent à intégrer de nombreux convertisseurs numériques-analogiques pour gérer des senseurs. Ils intègrent aussi des circuits de génération de signaux PWM spécialisés pour commander des moteurs, le processeur peut gérer des calculs trigonométriques (utiles pour commander la rotation d'un moteur), etc.
[[File:C8051F340-9 A B C D.png|centre|vignette|upright=2|Exemple d'entrées-sorties intégrées à un microcontroleur.]]
En plus des entrées-sorties intégrées, les microcontrôleurs ont souvent des '''ports d'entrées-sorties''' banalisés, à savoir qu'on peut brancher n'importe quoi dessus. Il était possible de brancher un capteur de température, un moteur à commander, un port série, un port parallèle, un écran, un clavier, une souris, peu importe. Les ports font souvent un octet et ils sont généralement reliées directement ou indirectement au processeur. Le logiciel qui s'exécute sur le processeur décide quoi envoyer sur des broches et comment interprète ce qui est reçu dessus.
Les ports banalisés de ce type sont parfois appelés des '''GPIO''', abréviation de ''General Purpose Input/Output'', mais nous utiliserons le terme de ''port I/O''. Un port regroupe plusieurs broches qui peuvent être utilisés à volonté. C'est le logiciel qui s'exécute sur le processeur qui décide de la fonction de broches. Un port IO peut fonctionner soit en tant qu'entrée, soit en tant que sortie. Il est possible de changer de sens en cours de fonctionnement, pour passer d'une entrée à une sortie ou inversement.
[[File:Afficheurs7seg.png|centre|vignette|upright=2|Exemple d'utilisation d'un port I/O. le port est connecté à un afficheur LCD dit 7-segments. Les 8 entrées de cet afficheur sont connectées à un port I/O d'un octet.]]
===Les SoC haute performance===
Les SoC les plus performants sont actuellement utilisés dans les téléphones mobiles, tablettes, ''Netbook'', ''smartphones'', ou tout appareil informatique grand public qui ne doit pas prendre beaucoup de place. La petite taille de ces appareils fait qu'ils gagnent à regrouper toute leur électronique dans un circuit imprimé unique. Mais les contraintes font qu'ils doivent être assez puissants. Ils incorporent des processeurs assez puissants, surtout ceux des ''smartphones''. C'est absolument nécessaire pour faire tourner le système d'exploitation du téléphone et les applications installées dessus.
Niveau entrées-sorties, ils incorporent souvent des interfaces WIFI et cellulaires (4G/5G), des ports USB, des ports audio, et même des cartes graphiques pour les plus puissants d'entre eux. Les SoC incorporent des cartes graphiques pour gérer tout ce qui a trait à l'écran LCD/OLED, mais aussi pour gérer la caméra, voire le visionnage de vidéo (avec des décodeurs/encodeurs matériel). Par exemple, les SoC Tegra de NVIDIA incorporent une carte graphique, avec des interfaces HDMI et VGA, avec des décodeurs vidéo matériel H.264 & VC-1 gérant le 720p. Pour résumer, les périphériques sont adaptés à leur utilisation et sont donc foncièrement différents de ceux des microcontrôleurs.
[[File:SOMblk.png|centre|vignette|upright=3|Exemple de SoC.]]
Un point important est que les processeurs d'un SoC haute performance sont... performants. Ils sont le plus souvent des processeurs de marque ARM, qui sont différents de ceux utilisés dans les PC fixe/portables grand public qui sont eux de type x86. Nous verrons dans quelques chapitres en quoi consistent ces différences, quand nous parlerons des jeux d'instruction du processeur. Autrefois réservé au monde des PCs, les processeurs multicœurs deviennent de plus en plus fréquents pour les SoC de haute performance. Il n'est pas rare qu'un SoC incorpore plusieurs cœurs. Il arrive même qu'ils soient foncièrement différents, avec plusieurs cœurs d'architecture différente.
La frontière entre SoC haute performance et microcontrôleur est de plus en plus floue. De nombreux appareils du quotidien intègrent des SoC haute performance, d'autres des microcontrôleurs. Par exemple, les lecteurs CD/DVD/BR et certains trackers GPS intègrent un SoC ou des processeurs dont la performance est assez pêchue. À l'opposé, les systèmes domotiques intègrent souvent des microcontrôleurs simples. Malgré tout, les deux cas d'utilisation font que le SoC/microcontrôleur est connecté à un grand nombre d'entrées-sorties très divers, comme des capteurs, des écrans, des LEDs, etc.
[[File:GPS tracker Hardware Architecture.png|centre|vignette|upright=2|Hardware d'un tracker GPS.]]
==Étude de l'architecture de quelques consoles de jeu==
Après avoir vu la théorie, nous allons voir des exemples réels d'ordinateurs. Dans ce qui suit, nous allons voir des ordinateurs qui collent assez bien à l''''architecture de base''' vue plus haut, avec un CPU, une RAM et une ROM, quelques entrées-sorties. Tous les ordinateurs modernes, mais aussi dans les smartphones, les consoles de jeu et autres, utilisent une architecture grandement modifiée et améliorée, avec un grand nombre de périphériques, des disques durs/SSD, un grand nombre de mémoires différentes, etc.
Il pourrait sembler pertinent d’étudier des microcontrôleurs ou des ''System On Chip'', en premier lieu. Mais nous éviterons soigneusement de tels systèmes pour le moment. La raison est qu'ils ont un grand nombre d'entrées-sorties, qui sont peu familières. Attendez-vous à avoir près d'une vingtaine ou centaine d'entrée-sorties différentes pour de tels systèmes. Le tout est très complexe, bien trop pour un premier exemple.
À la place, nous allons voir précisément des exemples plus simples : les premiers PC, et des consoles de jeu 8 et 16 bits. Bien que ce soit des systèmes très simples, ils sont cependant plus complexes que l'architecture de base. Et leur avantages/désavantages sont un peu inverse l'un de l'autre. Si on devait résumer les différences, on aurait ceci :
* Les PC ont plus d'entrées-sorties que les consoles, bien que nettement moins que pour les microcontrôleurs/SoC.
* Les PC utilisent des disques durs, les consoles font avec soit des cartouches de jeu, soit des CD/DVD.
* Les PC utilisent des cartes électroniques séparées pour le son et l'écran, les consoles utilisent des circuits soudés sur la carte mère, qui sont souvent des co-processeurs.
* Les PC ont une mémoire ROM soudées sur la carte mère, les consoles 8 bits font sans.
Les PC et micro-ordinateurs ont plus d'entrées-sorties que les consoles. Même si on mets de côté les périphériques, ils ont aussi beaucoup d'entrées-sorties soudées sur la carte mère. En comparaison, les consoles de jeu 8/16 bits se débrouillent avec : une cartouche de jeu et une manette en entrée, une sortie vidéo et une sortie son.
Un autre point important est l'absence de disque dur ou de lecteur CD. La présence d'un disque dur ou d'un lecteur CD/DVD complexifie tout de suite l'architecture des PC. Il faut leur réserver un bus dédié ou les connecter à un bus système, cela demande d'ajouter des circuits sur la carte mère, etc. Et surtout, il faut expliquer comment l'ordinateur exécute des programmes, ce qui demande de parler de l'interaction avec le disque dur et la ROM du BIOS. Rien de tout cela sur les consoles de jeu 8 et 16 bits. Elles utilisent à la place des cartouches de jeu, qui intègrent une mémoire ROM, pour mémoriser les données du jeu, voire son code. Pas besoin de parler des mémoires de stockage, on est beaucoup plus proche de l'architecture de base avec une ROM unique.
Par contre, n'allez pas croire que tout est rose avec les consoles 8/16 bits. Il y a quelques différences qui font qu'elles sont plus complexes qu'un PC sur certains points.
Les PC utilisent des cartes électroniques à brancher sur la carte mère pour alimenter l'écran et les hauts-parleurs/casques, alors que les consoles de jeu utilisent des souvent co-processeurs dédiés pour le son et les graphismes. La différence parait mineure, mais elle avantage les consoles. Nous avons déjà expliqué ce que sont les co-processeurs plus haut, aussi les co-processeurs des consoles nous paraitrons familiers. On n'a pas à s’embêter à expliquer ce que sont les cartes d'extension, les bus associés et tout ce qui va avec, cela peut être retardé pour la section sur l'architecture des PC.
La gestion de la cartouche de jeu est aussi un peu subtile à comprendre, bien que ce soit bien plus simple à comprendre qu'un système avec un disque dur. Les cartouches de jeu intègrent une mémoire ROM, pour mémoriser les données du jeu, voire son code. Et le processeur doit exécuter le code depuis cette mémoire ROM. La conséquence est que les consoles 8/16 bits utilisent une architecture Harvard, avec un bus relié à la cartouche pour lire les instructions. Mais si ce n'était que ça... Les cartouches mémorisent aussi les données pour les graphismes, ce qui fait que le co-processeur vidéo doit lui aussi lire la cartouche pour récupérer ces données...
===L'architecture de la TurboGraphX-16===
La console PC Engine, aussi appelée TurboGraphX, est une ancienne console 8 bits. Elle contient un processeur 65C02, 8 kibioctets de RAM, un port manettes, une carte son et une carte vidéo. La '''carte son''' est le composant qui s'occupe de commander les haut-parleurs et de gérer tout ce qui a rapport au son. La '''carte graphique''' est le composant qui est en charge de calculer les graphismes, tout ce qui s'affiche à l'écran. Sur cette console, les cartes son et graphique ne sont PAS des co-processeurs, ce sont des circuits électroniques dits fixes. C'est totalement différent de ce qu'on a sur les consoles modernes, aussi le préciser est important.
Bien que la carte graphique ne soit pas un processeur, elle a 64 kibioctets de RAM rien que pour elle. La RAM en question est séparée de la RAM normale, c'est un circuit intégré séparé. Et c'est un cas très fréquent, qui reviendra par la suite. La majeure partie des cartes graphiques dispose de leur propre '''mémoire vidéo''', totalement réservée à la carte graphique. La RAM vidéo est connectée à la carte graphique via un bus séparé. Le processeur est souvent connecté à ce bus, afin de pouvoir écrire des données dedans, mais ce n'est pas le cas ici.
[[File:Architecture de la PC Engine, aussi appelée TurboGrafx-16.png|centre|vignette|upright=2.5|Architecture de la PC Engine, aussi appelée TurboGrafx-16]]
L'architecture de la console était particulièrement simple. Le processeur était le centre de l'architecture, tout était connecté dessus. Il y a un bus pour la cartouche de jeu, un autre pour la RAM, un autre pour les manettes, un autre pour carte son, et un dernier pour la carte graphique. Le fait d'avoir un bus par composant est assez rare et ce n'est le cas ici que parce des conditions particulières sont remplies. Déjà, il y a peu d'entrée-sorties. Ensuite, les bus font tous 8 bits, vu que le processeur est un CPU 8 bits. Avec 5 connexions de 8 bits, le tout utilise 40 broches, ce qui est beaucoup, mais totalement gérable. Par contre, les choses changerons pour les autres consoles.
Au final, l'organisation des bus peut s'expliquer avec ce qu'on a vu dans la section sur les bus de communication. La console utilise une architecture Harvard, car la ROM et la RAM utilisent des bus différents. De plus, il y a des bus dédiés aux entrées-sorties, séparés des bus mémoire. Enfin, la carte graphique a droit à ses propres bus pour lire dans la cartouche et dans sa RAM vidéo dédiée.
===L'architecture de la console de jeu NES===
Maintenant, nous allons voir la console de Jeu Famicom, aussi appelée la NES en occident. Elle a une architecture centrée sur un processeur Ricoh 2A03, similaire au processeur 6502, un ancien processeur autrefois très utilisé et très populaire. Le processeur est associé à 2 KB de mémoire RAM.
Sur certaines cartouches, on trouve une RAM utilisée pour les sauvegardes, qui est adressée par le processeur directement. Première variation par rapport à l'architecture de la console précédente : l'ajout de la RAM pour les sauvegardes dans les cartouches.
Niveau carte graphique, une différence importante est que la carte graphique est connectée à la cartouche de jeu via un autre bus, afin de pouvoir lire les sprites et textures du jeu dans la cartouche.
[[File:Architecture de la NES.png|centre|vignette|upright=2.5|Architecture de la NES]]
La différence avec l'architecture précédente est que des bus ont été fusionnés. Comme dit plus haut, le système utilise une architecture Harvard, vu que la ROM est dans la cartouche, alors que la RAM est soudée à la carte mère. Par contre, la Famicon utilise un bus dédié aux entrées-sorties. Il est utilisé pour la carte son et la carte graphique, seules les manettes sont sur un bus à part. Ce qui fait qu'on devrait plutôt parler de bus de sorties, mais passons... L'essentiel est qu'on n'est plus tout à fait dans le cas de la console précédente, avec un bus par composant.
===L'architecture de la SNES===
L'architecture de la SNES est illustrée ci-dessous. Les changements pour le processeur et la RAM sont mineurs.La RAM a augmenté en taille et passe à 128 KB. Pareil pour la RAM de la carte vidéo, qui passe à 64 KB. Par contre, on remarque un changement complet au niveau des bus, de la carte graphique et de la carte son.
[[File:Architecture de la SNES.png|centre|vignette|upright=2|Architecture de la SNES]]
La console utilise un '''bus système unique''', sur lequel tout est connecté : ROM, RAM, entrées-sorties, etc. La seule exception est pour les manettes, qui sont encore connectées directement sur le processeur, via un bus séparé. La transition vers un bus système s'explique par le fait que la console est maintenant de 16 bits, ce qui fait que les bus doivent être plus larges. Le processeur adresse des mémoires RAM et ROM plus grandes, ce qui double la taille de leurs bus. De plus, les entrées-sorties aussi ont besoin d'un bus plus large. Le processeur n'ayant pas un nombre illimité de broches, la seule solution est de fusionner les bus en un seul bus système.
Un autre changement est que la carte graphique est maintenant composée de deux circuits séparés. Encore une fois, il ne s'agit pas de coprocesseurs, mais de circuits non-programmables. Par contre, la carte son est remplacée par deux coprocesseurs audio ! De plus, les deux processeurs sont connectés à une mémoire RAM dédiée de 64 KB, comme pour la carte graphique. L'un est un processeur 8 bits (le DSP), l'autre est un processeur 16 bits.
Un point très intéressant : certains jeux intégraient des coprocesseurs dans leurs cartouches de jeu ! Par exemple, les cartouches de Starfox et de Super Mario 2 contenait un coprocesseur Super FX, qui gérait des calculs de rendu 2D/3D. Le Cx4 faisait plus ou moins la même chose, il était spécialisé dans les calculs trigonométriques, et diverses opérations de rendu 2D/3D. En tout, il y a environ 16 coprocesseurs d'utiliser et on en trouve facilement la liste sur le net. La console était conçue pour, des pins sur les ports cartouches étaient prévues pour des fonctionnalités de cartouche annexes, dont ces coprocesseurs. Ces pins connectaient le coprocesseur au bus des entrées-sorties. Les coprocesseurs des cartouches de NES avaient souvent de la mémoire rien que pour eux, qui était intégrée dans la cartouche.
===L'architecture de la Megadrive et de la néo-géo===
Passons maintenant à la console de jeu Megadrive, une console 16 bits. Elle a une architecture similaire à celle de la néo-géo, une autre console bien plus puissante, sorti à peu près en même temps. Elles intègrent deux processeurs : un Motorola 68000 qui sert de processeur principal, un Z80 qui sert de processeur dédié à l'audio. Le Z80 et le Motorola 68000 étaient deux processeurs très populaires à l'époque. Le Z80 est une sorte de version améliorée de l'Intel 8088 utilisé sur les anciens PC et de nombreuses consoles utilisaient des Z80 comme processeur principal. Il était familier pour les programmeurs de l'époque, pour son cout réduit, sa bonne disponibilité, et bien d'autres avantages liés à sa production de masse.
Le Z80 est utilisé comme co-processeur audio. Il commande un synthétiseur sonore, et est relié à sa propre mémoire, distincte de la mémoire principale. Le MC68000 est le processeur principal et a une relation maitre-esclave avec le Z80 : le MC68000 envoie des commandes au Z80, mais la communication ne va pas dans l'autre sens.
Le Motorola 68000 était un processeur 16 bits, alors que le Z80 est un processeur 8 bits. Et cette différence fait que l'on ne peut pas connecter directement les deux sur le même bus, ou du moins pas facilement. La solution retenue est d'utiliser deux bus séparés : un bus de 16 bits connecté au 68000, un bus de 8 bits connecté au Z80. Le premier bus est un bus système sur lequel est connecté le 68000, 64 kibioctets de RAM, la cartouche de jeu, et la carte graphique. Le second bus est un bus de 8 bits, plus court, relié au Z80, à un synthétiseur sonore, et 8 kibioctets de RAM
Les deux bus sont connectés à un '''''chipset''''', un circuit répartiteur, qui fait le pont entre les deux bus. Les manettes sont connectées sur le ''chipset''. Il contient un registre de 8 bits, dans lequel le MC68000 peut écrire dedans à sa guise, le registre étant adressable par le processeur. Lorsque le MC68000 écrit une valeur dedans, cela déclenche l’exécution automatique d'un programme pré-déterminé sur le Z80.
: Pour ceux qui savent ce qu'est une interruption, les valeurs écrites dans ce registre sont des numéros d'interruption, qui indiquent quelle routine d'interruption exécuter.
[[File:Architecture de la Megadrive et de la Néogeo.png|centre|vignette|upright=2.5|Architecture de la Megadrive et de la Néogeo]]
Cet exemple nous montre que les bus systèmes sont certes très simples, mais aussi inflexibles. Ils fonctionnent bien quand les composants branchés dessus sont tous des composants 8 bits, ou sont tous de 16 bits, ou tous 32 bits. Mais dès qu'on mélange composants 8, 16, 32 ou 64 bits, les choses deviennent plus compliquées. Il est alors préférable d'utiliser des bus séparés, avec des répartiteurs pour faire le pont entre les différents bus. Et nous verrons que le problème s'est posé lui aussi sur les PC.
===L'architecture des anciennes consoles Playstation : beaucoup de co-processeurs===
Les consoles que nous venons d'aborder étaient des consoles 8 ou 16 bits. A partir des consoles 32 bits, leur architecture s'est rapprochée de celle des PC, avec un usage plus complexes de répartiteurs. La XBOX était très semblable à un PC : le processeur était un Pentium 3 modifié, la carte graphique était une Geforce 3 modifiée, les 64 mébioctets de RAM était la même mémoire DDR que celle des PC, le répartiteur secondaire était un ''chipset'' nForce de NVIDIA, etc. Mais les Playstation 1, 2 et 3 se distinguent de leur contemporains. Elles disposent de très nombreux co-processeurs, qui sont en plus très variés.
La Playstation 1 a été une des premières console à utiliser les CD-ROM comme support de stockage, en remplacement des cartouches. La conséquence est que la console contient une mémoire ROM, soudée à la carte mère, de 512 kibioctets. Elle contient aussi 2 mébioctets de RAM, une carte graphique avec 1 mébioctet de mémoire vidéo, un processeur, et de quoi gérer les périphériques. Il y a un co-processeur audio spécialisé, avec 512 kibioctets de RAM, ce qui nous est familier. Par contre, les autres co-processeurs ne le sont pas.
Déjà, le lecteur de CD-ROM est associé à des circuits sur la carte mère, il y a tout un sous-système dédié au lecteur de CD. Il y a un contrôleur qui sert d'interface avec le lecteur proprement dit, mais aussi deux co-processeurs audio et 32 kibioctets de RAM. Les co-processeurs audio servent à lire des CD sans trop utiliser le second co-processeur audio, ils lui servent de complément.
Ensuite, le processeur incorpore plusieurs cœurs, avec un cœur principal et plusieurs co-processeurs. Le premier est un co-processeur système, qui est utilisé pour gérer la mémoire cache intégrée au processeur, pour des fonctionnalités appelées interruptions et exceptions, ainsi que pour configurer le processeur. Le second est un co-processeur arithmétique spécialisé dans les calculs en virgule flottante, très importants pour le rendu 3D. Enfin, il y a un décodeur vidéo, qui n'est pas un co-processeur, mais un circuit non-programmable, spécialisé dans le décodage vidéo. De nos jours, ce circuit aurait été intégré dans la carte graphique, mais il était intégré dans le processeur sur la Playstation 2.
Pour le reste, le processeur est la figure centrale de la console. Il est connecté à 4 bus : un pour la RAM, un pour la carte graphique, un pour les manettes, un autre pour le reste. Le dernier bus est connecté au système audio et au système pour le lecteur CD. Ce serait un bus d'entrée-sortie, s'il n'était pas connecté à la mémoire ROM. Vous avez bien lu : la mémoire ROM est reliée au bus d'entrée-sortie.
[[File:Architecture de la Playstation.png|centre|vignette|upright=2.5|Architecture de la Playstation]]
La Playstation 2 est composé d'un processeur, couplé à 32 Mébioctets de RAM, et d'un paquet de co-processeurs. Plus de co-processeurs que la PS1. Le processeur principal n'est pas la même que celui de la PS1, mais il a une architecture similaire. Il intègre un décodeur vidéo sur le même circuit intégré, ainsi que deux co-processeur. Les co-processeurs ne sont cependant pas les mêmes.
Le co-processeur système disparait et est remplacé par un second co-processeur arithmétique. Les deux co-processeurs arithmétiques sont spécialisés dans les nombres flottants, avec quelques différences entre les deux. Par exemple, le second co-processeur gérait des calculs trigonométriques, des exponentielles, des logarithmes, et d'autres fonctions complexes du genre ; mais pas le premier co-processeur. Ils sont reliés à 4 kibioctets de RAM pour le premier, 16 kibioctets de RAM pour le second ; qui sont intégrées dans le processeur et non-représentés dans le diagramme ci-dessous.
La PS2 intègre aussi un co-processeur d'entrées-sorties. Pour information, il s'agit du processeur principal de la Playstation 1, qui est ici utilisé différemment, suivant que l'on place un jeu PS1 ou PS1 dans la console. Si on met un jeu PS1, il est utilisé pour émuler la Playstation 1, afin de faire tourner le jeu PS1 sur la PS2. Si on met un jeu PS2, il est utilisé comme co-processeur d'entrée-sortie et fait l'interface entre CPU et entrées-sorties. Il est relié à 2 mébioctets de RAM, soit exactement la même quantité de mémoire que la Playstation 1.
Tous les périphériques sont connectés au co-processeur d'entrées-sortie. Pour cela, le co-processeur d'entrées-sortie est relié à deux bus dédiés aux périphériques. Le premier bus est relié aux manettes, aux ports USB et aux ports pour cartes mémoires. Le second bus est relié à la carte son, la carte réseau, le lecteur DVD, et un port PCMIA. Notons que la carte son intègre un co-processeur audio, qui n'est pas représenté dans le diagramme ci-dessous.
[[File:Playstation 2 architecture.png|centre|vignette|upright=2.5|Playstation 2 architecture]]
==L'architecture des PC et son évolution==
Après avoir vu les consoles, nous allons maintenant voir les anciens PC, des années 80 ou 90. Le tout premier PC était techniquement l''''IBM PC'''. Par la suite, de nombreux ordinateurs ont tenté de reproduire l'IBM PC originel, avec parfois quelques modifications mineures. De tels ordinateurs ''IBM PC compatibles'', ont été très nombreux, pour des raisons diverses. Le fait d'utiliser des composants banalisés, facilement disponibles, ainsi qu'une bonne documentation de l'IBM PC originel, a grandement aidé. Les IBM PC compatibles ont progressivement évolué pour donner les PC actuels. L'IBM PC compatible a donné naissance à de nombreux standards divers.
===L'IBM PC originel et l'IBM PC XT===
[[File:IBM PC XT 02.jpg|vignette|IBM PC XT.]]
Nous allons commencer par voir l'IBM PC originel, et son successeur : l'IBM Personal Computer XT. Nous les appelerons tous deux l'IBM PC. L'IBM PC utilisait un processeur Intel 8088, qui était un processeur 8 bits. Ils utilisaient un bus système unique, appelé le '''bus XT'''. Le bus système allait à 4.77 MHz, soit la même fréquence que le processeur. C'était un bus de 8 bits, ce qui collait parfaitement avec les processeurs 8 bits commercialisés par Intel à l'époque.
L'IBM PC comprenait une mémoire ROM avec de quoi faire fonctionner le PC. La ROM en question contenait un programme minimal, appelé le '''BIOS''', sans lequel le PC ne fonctionnait pas du tout. Il servait de base pour le système d'exploitation et MS-DOS ne fonctionnait pas sans elle. De nos jours, son rôle est plus limité : sans elle, le PC ne démarre pas. Mais nous détaillerons cela dans le prochain chapitre.
En plus de la ROM pour le BIOS, l'IBM PC avait quatre mémoires ROM dédiée au langage de programmation BASIC. Lorsque le PC démarrait, il ne bootait pas un système d'exploitation, mais lançait l'interpréteur pour le langage BASIC. De nos jours, ce serait l'équivalent d'un ordinateur qui boote directement sur du Python, à savoir la console Python que vous avez peut-être déjà utilisé si vous avez testé Python. Ceux qui ont déjà touché à un ordinateur de l'époque savent ce que ca veut dire, mais c'est malheureusement très difficile à expliquer sans ce genre d'expérience. Toujours est-il que c'était une sorte de norme à l'époque
: les ordinateurs bootaient généralement sur un interpréteur BASIC.
[[File:XT Bus pins.svg|vignette|Connecteur du bus XT.]]
Les PC étaient conçus pour qu'on branche des '''cartes d'extension''', à savoir des cartes électroniques qu'on branchait sur la carte mère, à l'intérieur du PC. Les cartes d'extension de l'époque étaient surtout des cartes son ou des cartes graphiques, mais aussi des cartes pour brancher des péripéhriques. par exemple, on pouvait ajouter deux cartes graphiques dans l'IBM PC originel : l'''IBM Monochrome Display Adapter'' et/ou la ''IBM Color Graphics Adapter''. De nos jours, les cartes son sont intégrées à la carte mère, mais les cartes graphiques sont restées des cartes d'extension.
Les cartes d'extension étaient branchées sur un '''connecteur XT''', qui était directement relié au bus XT. Le connecteur XT est illustré ci-contre, mais ne vous en souciez pas trop pour le moment. La carte mère de l'IBM PC avait 5 connecteurs de ce type, qu'on pouvait peupler avec autant de cartes d'extension. L'IBM Personal Computer XT est passé à 8 connecteurs XT, soit trois de plus.
Pour ce qui est des périphériques, l'IBM PC avait plusieurs connecteurs : un port série, un port parallèle, un port pour le clavier, et un port pour un lecteur cassette. Le clavier et le lecteur cassette étaient connectés directement sur la carte mère, qui contenait quelques circuits pour gérer le clavier. Par contre, les deux premiers n'étaient pas connectés à la carte mère. Le port série était en réalité une carte d'extension, branchée sur un connecteur XT. Et il en est de même pour le port parallèle.
Pour ce qui est des supports de stockage, l'IBM PC originel n'avait pas de disque dur et n'avait que des lecteurs de disquette. De plus, le lecteur de disquette n'était pas connecté directement sur la carte mère, mais était connecté à une carte d'extension, branchée sur un connecteur XT. La carte d'extension avait deux connecteurs, un par lecteur de disquette, ce qui fait que les deux lecteurs de disquettes pouvaient être branchés sur une seule carte d'extension. L'IBM Personal Computer XT a ajouté un disque dur, sauf sur quelques sous-modèles spécifiques.
Le PC avait aussi un petit haut-parleur capable de faire des bips.
Pour résumer, l'IBM PC originel se reposait beaucoup sur les cartes d'extension, sa carte mère contenait peu de choses. Enfin, peu de choses... Il y avait un processeur Intel 8088, éventuellement un coprocesseur flottant 8087, de la RAM, de la ROM, et des circuits intégrés assez divers. En voici la liste, certains vous seront familiers, d'autres vous seront inconnus à ce stade du cours :
* les circuits de décodage d'adresse ;
* un contrôleur DMA intel 8273 ;
* un contrôleur d'interruption 8259 ;
* un contrôleur de bus Intel 8288 pour gérer le bus XT ;
* un générateur d'horloge Intel 8284 et un diviseur de fréquence ;
* un ''timer'' Intel 8253, le même que celui étudié dans le chapitre sur les ''timers'' ;
* un contrôleur parallèle 8255.
Les multiplexeurs, registres et portes logiques, sont des circuits de décodage d'adresse, qui permettent de combiner plusieurs RAM en une seule, idem avec la mémoire ROM. Si vous verrez qu'il y a 5 mémoires ROM : une ROM pour le BIOS, et quatre autres ROM pour le BASIC. Les 4 ROM du BASIC sont combinées en une seule mémoire ROM. Pour les RAM, il y en a 8 à 32, qui sont combinées en une seule RAM de 16 à 64 kibioctets.
[[File:IBM 5150 Motherboard.svg|centre|vignette|upright=3|Carte mère de l'IBM 5150, un modèle de l'IBM PC.]]
===L'architecture d'un IBM PC compatible 16 bits===
Les PC suivants sont passés à des processeurs 16 bits, mais c'était toujours des processeurs x86 d'Intel, à savoir des Intel 286 et 386. La RAM a grossi, quelques entrées-sorties ont été ajoutées, mais l'architecture globale est plus moins resté le même. C'est surtout au niveau du bus et des périphériques que les changements majeurs ont eu lieu.
[[File:ISA Bus pins.svg|vignette|Connecteur ISA.]]
Les PC 16 bits utilisaient un bus système unique, sur lequel tout était connecté : le processeur, la RAM, la ROM, les cartes d'extension et tout le reste. Le bus en question s'appelait le '''bus AT''', mais il a rapidement été renommé en '''bus ISA''' (''Industry Standard Architecture''). Le bus ISA était prévu pour avoir une compatibilité avec le bus 8 bits de l'IBM PC originel. D'ailleurs, cela se ressent jusque dans le connecteur utilisé : le connecteur ISA est un connecteur XT qu'on a fusionné avec un second connecteur pour l'étendre de 8 à 16 bits.
Les PC 16 bits avaient toujours un port série, un port parallèle, un clavier, un lecteur de disquette et des cartes d'extension. Des disques durs pouvaient être ajoutés, aussi. Mais pour ces périphériques, un changement majeur a eu lieu comparé à l'IBM PC originel. L'IBM PC originel utilisait des cartes d'extension pour tout, sauf le clavier. Mais maintenant, les périphériques ne sont plus connectés à une carte d'extension. À la place, les circuits de la carte d'extension sont déplacés sur la carte mère. Mais n'allez pas croire qu'ils étaient connectés directement au bus ISA, il y avait des intermédiaires.
Le clavier était relié à un '''contrôleur de clavier''', qui faisait l'interface entre le connecteur du clavier et le bus ISA. Le contrôleur de clavier était appelé le ''Keyboard Controler'', abrévié en KB. Il recevait ce qui est tapé au clavier et traduisait cela en quelque chose de compréhensible par l'ordinateur.
Les autres périphériques étaient connectés à un circuit intégré dédié : l''''Intel 82091AA'''. Il était connecté au lecteur de disquette, au port série et au port parallèle. Il servait d'intermédiaire entre ces périphériques et le bus ISA. Vous pouvez le voir comme une sorte de répartiteur, mais qui ne serait pas connecté sur le processeur et la RAM
Enfin, il ne faut pas oublier les autres composants présents sur l'IBM PC originel. Le BIOS est toujours là, de même que les ''timers'' Intel 8253 PIT, le contrôleur d'interruption Intel 8259 et le contrôleur DMA Intel 8237. Les PC 16 bits ont aussi intégré une ''Real Time Clock'' (RTC). Pour rappel, c'est un composant qui permet au PC de mémoriser la date et l'heure courante, à la seconde près. Le tout est résumé dans le schéma ci-dessous.
[[File:Architecture de l'IBM PC compatible.png|centre|vignette|upright=2.5|Architecture de l'IBM PC compatible]]
Un point important est que le bus ISA allait à la même fréquence que le processeur, vu que c'était un bus système. Les processeurs de l'époque étaient des CPU 286 d'Intel, ou le 386 d'Intel. Les Intel 286 allaient de 4 MHz minimum, à 25 MHz maximum. Le 386, quant à lui, allait de 12 à 40 MHz. Le bus ISA devait aller à cette fréquence, il était synchrone avec le processeur.
Par la suite, les processeurs ont gagné en performance, ce qui fait que le bus ISA est devenu trop lent pour le processeur. Une idée a alors été de conserver le bus ISA, pour des raisons de compatibilité, mais de le reléguer comme bus secondaire. L'ordinateur contient alors deux bus : un bus système, et un bus ISA secondaire. Le lien entre les deux est réalisé par un '''pont ISA''', ''ISA Bridge'' en anglais. Le bus ISA fonctionnait alors sa fréquence usuelle, alors que le bus système était beaucoup plus rapide. Le bus système fonctionnait à une fréquence bien plus élevée, ce qui fait que le processeur pouvait communiquer à pleine vitesse, notamment avec la RAM. Le processeur n'était alors plus forcé à aller à la même fréquence que le bus ISA
[[File:Architecture de l'IBM PC compatible avec bridge ISA.png|centre|vignette|upright=2.5|Architecture de l'IBM PC compatible avec bridge ISA]]
Les PC de l'époque intégraient donc plusieurs bus séparés. Vous avez bien lu : plusieurs bus ! Ici, il s'agit de ce que j'appelle des '''bus en cascade''', à savoir qu'un bus est connecté à un autre bus par un intermédiaire. Au passage, si j'aborde ces exemples, car c'est pareil sur les ordinateurs modernes. Le pont ISA a été remplacé par des circuits différents, mais qui ont un rôle assez similaire. Le ''chipset'' de votre carte mère n'est qu'un lointain descendant du pont ISA, qui s'interface avec des bus différents.
===L'arrivée des standards AT et IDE pour les disques durs===
Initialement, les disques durs étaient placés dans l'ordinateur et étaient connectés sur le bus ISA, via une carte d'extension ISA. En clair, il fallait connecter le disque dur sur une carte d'extension, et non sur la carte mère. Les cartes d'extension en question permettaient de connecter un ou plusieurs disques durs, parfois des lecteurs de disquette supplémentaires. Les cartes ISA de ce type faisaient juste l'interface entre le bus ISA et les disques durs, rien de plus. L'interface en question a été standardisée, ce qui a donné le standard ''AT Bus Attachment'', qui a été abrévié en ATA.
Et ce n'était pas que pour les disques durs, de nombreux composants étaient dans ce cas. Une carte d'extension servait d'intermédiaire entre eux et la carte mère. Les cartes d'extension en question étaient appelées des ''Host bus adapter''.
[[File:Acculogic sIDE-4 Controller ISA.jpg|centre|vignette|upright=2|Carte ISA d'interface disque dur, de marque Acculogic.]]
Mais les choses ont rapidement évoluées, que ce soit du côté des cartes mères que du côté des disques durs. Le '''standard IDE''' a permis de brancher un disque dur directement sur la carte mère, sans passer par une carte d'interface ISA. Pour cela, la carte mère réservait un connecteur ISA pour le disque dur, renommé '''connecteur ATA'''. Pour que cela soit possible, il a fallu rajouter des circuits sur la carte mère. Tout ce qui était sur les cartes d'interface ISA s'est retrouvé sur la carte mère.
[[File:Ajout des ports IDE sur la carte mère.png|centre|vignette|upright=2|Ajout des ports IDE sur la carte mère]]
En réalité, les connecteurs ATA étaient des connecteurs ISA simplifiés. Un connecteur ISA avait en tout 98 broches, alors qu'un connecteur ATA n'en contient que 40. Les broches qui étaient inutiles pour les disques durs ont simplement été enlevées. Et qui dit connecteur spécialisé, dit câble spécialisé. Les disques durs étaient branchés sur le connecteur AT grâce à un câble ATA, sur lequel on pouvait connecter deux disques durs.
[[File:ATA Plug.svg|centre|vignette|upright=2|Connecteur ATA.]]
[[File:ATA cables.jpg|centre|vignette|upright=2|Cable ATA.]]
Il était donc possible de connecter deux disques durs sur un seul connecteur ATA. Et cette possibilité est devenue d'autant plus utile par la suite. A partir de la version 2, ATA supportait aussi les lecteurs de disquettes, les lecteurs de CD/DVD, et bien d'autres supports de stockage. Il était alors possible de connecter un lecteur CD et un disque dur sur un seul connecteur. Les cartes mères avaient généralement deux connecteurs ATA, et n'avaient pas besoin de plus. C'était suffisant pour connecter un disque dur, un lecteur de disquette et un lecteur CD, configuration courante entre les années 90 et 2000.
Un câble est donc connecté à deux supports de stockage. Pour distinguer les deux, le standard ATA ajoute une possibilité de configuration. Sur un câble, il doit y avoir un support de stockage "maitre" et un support "esclave". C'était la terminologie de l'époque, que je reproduis ici, même si elle est fortement trompeuse. N'allez pas croire que cela implique que l'un ait des avantages sur l'autre. Le support 'maitre" n'a pas droit à plus de bande passante, il n'a pas la priorité sur l'autre, rien du tout. Il s'agit juste d'un nombre qui permet de savoir avec qui le processeur communique, qui vaut 0 pour le premier support, 1 pour l'autre. Une sorte d'adresse de 1 bit, si l'on veut.
[[File:ATA-Konfiguration02.png|centre|vignette|upright=2|Configuration ATA.]]
Pour configurer un support de stockage en mode "maitre" ou "esclave", le support de stockage avait quelques pins dédiés. Il suffisait de placer un détrompeur en plastique sur les pins adéquats. Les pins se trouvaient à l'arrière du disque dur ou du lecteur de CD/DVD/Disquette/autre.
[[File:HDD Master and Slave Description.jpg|centre|vignette|upright=2|Configuration ''Master/Slave''.]]
===L'architecture d'un PC avec un processeur Intel 486===
Maintenant, passons aux ordinateurs 32 bits, avec l'exemple d'un PC avec un processeur 486 d'Intel. A cette époque, le bus ISA était devenu trop limité et était en place d'être remplacé par le bus PCI, qui avait la même fonction. De nombreuses cartes d'extension utilisaient déjà ce standard et étaient branchées sur des connecteurs PCI dédiés, différents des connecteurs ISA. Intuitivement, on se dit que le bus PCI remplaçait le bus ISA, mais les choses étaient plus compliquées. Les disques durs gardaient leur connecteur ATA, et ne passaient pas par le bus PCI. Ils avaient un bus IDE séparé, qui était un bus ISA modifié.
Là encore, les processeurs étaient devenus beaucoup plus rapides que le bus PCI. Les deux allaient à des fréquences assez différentes, ce qui fait que le bus PCI était séparé du bus système. Il y avait alors deux implémentations possibles.
* La première utilise un répartiteur unique, relié au processeur, à la RAM, au bus PCI, et au bus IDE.
* La seconde utilise un bus système séparé du bus PCI, avec un '''pont PCI''' pour faire l'interface entre les deux.
Le '''''System Controler''''' était un circuit intégré, placé sur la carte mère, qui peut servir soit de pont PCI, soit de répartiteur. Le répartiteur PCI sert d'intermédiaire avec le bus PCI, mais aussi avec le bus IDE, utilisé pour les disques durs, aussi appelé le bus ''Parallel ATA''. Il peut aussi être connecté au processeur, à la mémoire RAM, ainsi qu'à la mémoire cache, mais cela ne sert que quand il est utilisé comme répartiteur.
[[File:Architecture d'un PC utilisant un bus PCI, implémentation avec un répartiteur.png|centre|vignette|upright=2|Architecture d'un PC utilisant un bus PCI, implémentation avec un répartiteur]]
Pour des raisons de compatibilité, le bus ISA avait été conservé, aux côtés du bus PCI. Il y avait un pont ISA en plus du pont/répartiteur PCI. Une implémentation possible aurait été de connecter les deux ponts ISA et PCI à un bus système unique. Mais cette solution n'a pas été retenue. La raison est que le bus PCI et le bus ISA ont des performances très différentes. Le bus PCI est très rapide, le bus ISA beaucoup plus lent. La différence est d'un ordre de grandeur, environ. Dans ces conditions, il est possible de faire passer les communications ISA à travers le bus PCI. Pour cela, le pont ISA est directement connecté sur le pont PCI, comme illustré ci-dessous.
Et il en est de même pour le bus dédié aux disques durs. En effet, les disques durs étaient autrefois reliés au bus ISA, mais cela a changé depuis. Ils disposent maintenant de leur propre bus dédié, le '''bus IDE''', qui est un bus ISA simplifié. Et ce bus ISA simplifié était connecté directement sur le pont PCI.
[[File:Architecture de l'IBM PC compatible avec pont PCI.png|centre|vignette|upright=2|Architecture de l'IBM PC compatible avec pont PCI]]
Dans ce qui va suivre, nous allons étudier un exemple qui utilise un bus système séparé, avec un pont PCI, sans répartiteur. Voilà pour les grandes lignes, mais le schéma ci-dessous montre que tout est plus complexe. Vous remarquerez des connexions optionnelles entre le pont PCI et la mémoire RAM et la mémoire cache. La raison est que le pont PCI peut aussi servir de répartiteur en remplacement du bus système. Concrètement, on peut alors retirer le bus système. La mémoire, le bus PCI, le bus ISA, le bus IDE, le processeur et la RAM sont alors connectés au répartiteur PCI, qui sert d'intermédiaire central entre tous ces composants. Mais ce n'est pas la solution qui a été retenue dans notre exemple.
[[File:Intel486-Typ PCI System.png|centre|vignette|upright=2|PC IBM compatible avec un 486, un bus PCI et un bus ISA. Le ''host bus'' est le bus système.]]
Le pont ISA sert ici d'intermédiaire entre le bus système et le bus ISA. De plus, il a été amélioré sur de nombreux points. Il inclut notamment des circuits qui étaient autrefois sur la carte mère, à savoir le contrôleur DMA 82C87 et le contrôleur d'interruption 82C59, ainsi que les ''timers'' Intel 82C54. Les composants restants sont eux reliés sur un quatrième bus : le bus X, l'ancêtre du bus ''Low Pin Count''. Le bus X était celui du BIOS, du contrôleur de clavier, de la ''Real Time Clock'', et du contrôleur de périphérique 82091AA d'Intel.
[[File:ISA Bridge schematic.png|centre|vignette|upright=2|ISA Bridge.]]
===L'architecture des PC des années 90-2000===
Par la suite, les ponts PCI et ISA ont évolué avec l'évolution des bus de l'ordinateur. Le bus ISA a progressivement été remplacé par d'autres bus, comme le bus ''Low Pin Count'', le bus PCI a été remplacé par le PCI Express, d'autres bus ont été ajoutés, etc. Mais la séparation du ''chipset'' en deux a été conservée.
[[File:Chipset schematic.svg|vignette|upright=1.0|Chipset séparé en northbridge et southbridge.]]
Le pont PCI et le pont ISA ont été remplacés respectivement par le '''pont nord''' et le '''pont sud''', plus connus par leurs noms anglais de ''northbridge'' et de ''southbridge''. Le pont nord servait d'interface entre le processeur, la mémoire et la carte graphique et est connecté à chacun par un bus dédié. Il intégrait aussi le contrôleur mémoire. Le pont sud est le répartiteur pour les composants lents, à savoir l'USB, l'Ethernet, etc. Le bus qui relie le processeur au pont nord était appelé le '''''Front Side Bus''''', abrévié en FSB.
[[File:IMac Chipset.png|centre|vignette|upright=2|Chipset séparé en northbridge et southbridge.]]
Un point important est que le bus PCI est devenu un bus assez lent, ce qui fait qu'il a finit par être connecté au pont sud. Le pont PCI est donc devenu le pont sud, dans le courant des années 2000. Durant un moment, un équivalent du pont ISA a subsisté dans un circuit de '''''Super IO'''''. Concrètement, il s'occupait du lecteur de disquette, du port parallèle, du port série, et des ports PS/2 pour le clavier et la souris. Mais il ne gérait pas le bus ISA, mais son remplaçant, le bus ''Low Pin Count''.
[[File:Motherboard diagram fr.svg|centre|vignette|upright=1.5|Carte mère avec circuit Super IO.]]
===L'architecture des PC depuis les années 2000===
Depuis la sortie du processeur AMD Athlon 64, le pont nord a été fusionné dans le processeur. La fusion ne s'est pas faite en une fois, des fonctionnalités ont progressivement été progressivement intégrées dans le processeur. Le pont sud est resté, mais il a alors été progressivement connecté directement au processeur. La raison derrière cette intégration est que les processeurs avaient de plus en plus de transistors à leur disposition. Ils en ont profité pour intégrer le pont nord. Et cela permettait de simplifier le câblage des cartes mères, sans pour autant rendre vraiment plus complexe la fabrication du processeur. Les industriels y trouvent leur compte.
La première étape a été l'intégration du contrôleur mémoire a été intégré au processeur. Concrètement, le résultat était que la mémoire RAM n'était plus connectée au pont nord, mais était connectée directement au processeur ! Il y a donc eu un retour d'un bus mémoire, mais spécialisé pour la mémoire RAM. En théorie, une telle intégration permet diverses optimisations quant aux transferts avec la mémoire RAM. Les transferts ne passent pas par un répartiteur, ce qui réduit le temps d'accès à la mémoire RAM. Ajoutons de sombres histoires de prefetching, d'optimisation des commandes, et j'en passe. Toujours est-il que le pont nord ne servait alors d'intermédiaire que pour les ports PCI Express, et le pont sud.
[[File:X58 Block Diagram.png|centre|vignette|upright=2|Chipset X58 d'Intel.]]
Par la suite, la carte graphique fût aussi connectée directement sur le processeur. Le processeur incorpore pour cela des contrôleurs PCI-Express. Le pont nord a alors disparu complétement, son intégration dans le processeur était complète. Sur les cartes mères Intel récentes, le pont sdud subsiste, il est appelé le ''Platform Controler Hub'', ou PCH. L'organisation des bus sur la carte mère qui résulte de cette connexion du processeur à la carte graphique, est illustrée ci-dessous, avec l'exemple du PCH.
[[File:Intel 5 Series architecture.png|centre|vignette|upright=2|Intel 5 Series architecture]]
<noinclude>
{{NavChapitre | book=Fonctionnement d'un ordinateur
| prev=L'interface électrique entre circuits intégrés et bus
| prevText=L'interface électrique entre circuits intégrés et bus
| next=La hiérarchie mémoire
| nextText=La hiérarchie mémoire
}}
</noinclude>
myc9gb0w5701y7qj4bbhhevdtkf827c
765748
765747
2026-05-01T22:13:58Z
Mewtow
31375
/* Étude de l'architecture de quelques consoles de jeu */
765748
wikitext
text/x-wiki
Dans les chapitres précédents, nous avons vu comment représenter de l'information, la traiter et la mémoriser avec des circuits. Mais un ordinateur n'est pas qu'un amoncellement de circuits et est organisé d'une manière bien précise. Il est structuré autour de trois circuits principaux :
* un '''processeur''', qui manipule l'information et donne un résultat ;
* une '''mémoire''' qui mémorise les données à manipuler ;
* les '''entrées/sorties''', qui permettent à l'ordinateur de communiquer avec l'extérieur.
[[File:Architecture Von Neumann.png|centre|vignette|upright=2|Architecture d'un système à mémoire.]]
Pour faire simple, le processeur est un circuit qui s'occupe de faire des calculs. Rien d'étonnant à cela. Je rappelle que tout est codé par des nombres dans un ordinateur, ce qui fait que manipuler des nombres revient simplement à faire des calculs. Un ordinateur n'est donc qu'une grosse calculatrice améliorée, et le processeur est le composant qui fait les calculs.
La mémoire s'occupe purement de la mémorisation des données, des nombres sur lesquelles faire des calculs. Pour être plus précis, il y a deux mémoires : une pour les données proprement dites, une autre pour le programme à exécuter. La première est la '''mémoire RAM''', la seconde est la '''mémoire ROM'''. Nous détaillerons ce que sont ces deux mémoires dans la suite du chapitre, mais sachez que nous avions déjà rencontré ces deux types de mémoires dans les chapitres sur les registres et les mémoires adressables.
Les entrées-sorties permettent au processeur et à la mémoire de communiquer avec l'extérieur et d'échanger des informations avec des périphériques. Les '''périphériques''' regroupent, pour rappel, tout ce est branché sur un ordinateur, mais n'est pas à l'intérieur de celui-ci.
Le processeur, les mémoires et les entrées-sorties communiquent ensemble via un '''réseau d'interconnexions'''. Le terme est assez barbare, mais rien de compliqué sur le principe. C'est juste un ensemble de fils électriques qui relie les différents éléments d'un ordinateur. Les interconnexions sont souvent appelées le bus de communication, mais le terme est un abus de langage, comme on le verra plus bas.
Afin de simplifier les explications, on va supposer que le réseau d'interconnexion est le suivant. Tout est connecté au processeur. Il y a des interconnexions entre le processeur et la mémoire RAM, d'autres interconnexions entre processeur et mémoire ROM, et d'autres entre le processeur et les entrées-sorties. Nous verrons que d'autres réseaux d'interconnexions fusionnent certaines interconnexions, pour les partager entre la ROM et la RAM, par exemple. Mais pour le moment, gardez le schéma ci-dessous en tête.
[[File:Réseau d'interconnexion avec un processeur au centre.png|centre|vignette|upright=2|Réseau d'interconnexion avec un processeur au centre]]
==Les mémoires RAM et ROM==
La mémoire est le composant qui mémorise des informations, des données. Dans la majorité des cas, la mémoire est composée de plusieurs '''cases mémoire''', chacune mémorisant plusieurs bits, le nombre de bits étant identique pour toutes les cases mémoire. Dans le cas le plus simple, une case mémoire mémorise un '''octet''', un groupe de 8 bits. Mais les mémoires modernes mémorisent plusieurs octets par case mémoire : elles ont des cases mémoires de 16, 32 ou 64 bits, soit respectivement 2/4/8 octets. De rares mémoires assez anciennes utilisaient des cases mémoires contenant 1, 2, 3, 4, 5, 6 7, 13, 17, 23, 36 ou 48 bits. Mais ce n'était pas des mémoires électroniques, aussi nous allons les passer sous silence.
Tout ce qu'il faut savoir est que la quasi-totalité des mémoires électronique a un ou plusieurs octets par case mémoire. Pour simplifier, vous pouvez imaginer qu'une mémoire RAM est un regroupement de registre, chacun étant une case mémoire. C'est une description pas trop mauvaise pour décrire les mémoires RAM, qu'on abordera dans ce qui suit.
{|class="wikitable"
|+ Contenu d'une mémoire, case mémoire de 16 bits (deux octets)
|-
! Case mémoire N°1
| 0001 0110 1111 1110
|-
! Case mémoire N°2
| 1111 1110 0110 1111
|-
! Case mémoire N°3
| 0001 0000 0110 0001
|-
! Case mémoire N°4
| 1000 0110 0001 0000
|-
! Case mémoire N°5
| 1100 1010 0110 0001
|-
! ...
| ...
|-
! Case mémoire N°1023
| 0001 0110 0001 0110
|-
! Case mémoire N°1024
| 0001 0110 0001 0110
|}
Dans ce cours, il nous arrivera de partir du principe qu'il y a un octet par case mémoire, par souci de simplification. Mais ce ne sera pas systématique. De plus, il nous arrivera d'utiliser le terme adresse pour parler en réalité de la case mémoire associée, par métonymie.
===La capacité mémoire===
Bien évidemment, une mémoire ne peut stocker qu'une quantité finie de données. Et à ce petit jeu, certaines mémoires s'en sortent mieux que d'autres et peuvent stocker beaucoup plus de données que les autres. La '''capacité''' d'une mémoire correspond à la quantité d'informations que celle-ci peut mémoriser. Plus précisément, il s'agit du nombre maximal de bits qu'une mémoire peut contenir. Elle est le produit entre le nombre de cases mémoire, et la taille en bit d'une case mémoire.
Toutes les mémoires actuelles utilisant des cases mémoire d'un ou plusieurs octets, ce qui nous arrange pour compter la capacité d'une mémoire. Au lieu de compter cette capacité en bits, on préfère mesurer la capacité d'une mémoire avec le nombre d'octets qu'elle contient. Mais les mémoires des PC font plusieurs millions ou milliards d'octets. Pour se faciliter la tâche, on utilise des préfixes pour désigner les différentes capacités mémoires. Vous connaissez sûrement ces préfixes : kibioctets, mébioctets et gibioctets, notés respectivement Kio, Mio et Gio.
{|class="wikitable"
|-
!Préfixe!!Capacité mémoire en octets!!Puissance de deux
|-
||Kio||1024||2<sup>10</sup> octets
|-
||Mio||1 048 576||2<sup>20</sup> octets
|-
||Gio||1 073 741 824||2<sup>30</sup> octets
|}
On peut se demander pourquoi utiliser des puissances de 1024, et ne pas utiliser des puissances un peu plus communes ? Dans la majorité des situations, les électroniciens préfèrent manipuler des puissances de deux pour se faciliter la vie. Par convention, on utilise souvent des puissances de 1024, qui est la puissance de deux la plus proche de 1000. Or, dans le langage courant, kilo, méga et giga sont des multiples de 1000. Quand vous vous pesez sur votre balance et que celle-ci vous indique 58 kilogrammes, cela veut dire que vous pesez 58 000 grammes. De même, un kilomètre est égal à 1000 mètres, et non 1024 mètres.
Autrefois, on utilisait les termes kilo, méga et giga à la place de nos kibi, mebi et gibi, par abus de langage. Mais peu de personnes sont au courant de l'existence de ces nouvelles unités, et celles-ci sont rarement utilisées. Et cette confusion permet aux fabricants de disques durs de nous « arnaquer » : Ceux-ci donnent la capacité des disques durs qu'ils vendent en kilo, méga ou giga octets : l’acheteur croit implicitement avoir une capacité exprimée en kibi, mébi ou gibi octets, et se retrouve avec un disque dur qui contient moins de mémoire que prévu.
===Lecture et écriture : mémoires ROM et RWM===
Pour simplifier grandement, on peut grossièrement classer les mémoires en deux types : les ''Read Only Memory'' et les ''Read Write Memory'', aussi appelées mémoires ROM et mémoires RWM. Pour les '''mémoires ROM''', on ne peut pas modifier leur contenu. On peut y récupérer une donnée ou une instruction : on dit qu'on y accède en lecture. Mais on ne peut pas modifier les données qu'elles contiennent. Quant aux '''mémoires RWM''', on peut y accéder en lecture (récupérer une donnée stockée en mémoire), mais aussi en écriture : on peut stocker une donnée dans la mémoire, ou modifier une donnée existante.
Tout ordinateur contient au minimum une ROM et une RWM (souvent une mémoire RAM), les deux n'ont pas exactement le même rôle. Pour simplifier, la mémoire ROM mémorise le programme à exécuter, la mémoire RWM stocke des données. Il a existé des ordinateurs où la mémoire RWM était une mémoire magnétique, voire acoustique, mais ce n'est plus le cas de nos jours. Pour les ordinateurs modernes, la mémoire RWM est une mémoire électronique. Pour faire la différence avec ces anciennes mémoires RWM, elle est appelée la '''mémoire RAM'''. Il s'agit d'une mémoire qui stocke temporairement des données que le processeur doit manipuler (on dit qu'elle est volatile). Elle s'efface complètement quand on coupe l'alimentation de l'ordinateur.
Il existe d'autres différences entre mémoire RWM et RAM :
* la mémoire RWM peut ne pas être volatile et donc conserver les données écrites ;
* la mémoire RAM possède un temps d'accès constant aux données (quelle que soit l'adresse), ce qui n'est pas garanti pour les mémoires RWM.
Outre le programme à exécuter, la mémoire ROM peut mémoriser des constantes, des données qui ne changent pas. Elles ne sont jamais modifiées et gardent la même valeur quoi qu'il se passe lors de l'exécution du programme. En conséquence, elles ne sont jamais accédées en écriture durant l'exécution du programme, ce qui fait que leur place est dans une mémoire ROM. La mémoire RWM est alors destinée aux données temporaires, qui changent ou sont modifiées lors de l'exécution du programme, et qui sont donc manipulées aussi bien en lecture et en écriture. La mémoire RWM mémorise alors les variables du programme à exécuter, qui sont des données que le programme va manipuler. Pour les systèmes les plus simples, la mémoire RWM ne sert à rien de plus.
[[File:Espaces d'adressage sur une archi harvard modifiée.png|centre|vignette|upright=2.5|Espaces d'adressage sur une archi harvard modifiée]]
Pour donner un exemple de données stockées en ROM, on peut prendre l'exemple des anciennes consoles de jeu 8 et 16 bits. Les jeux vidéos sur ces consoles étaient placés dans des cartouches de jeu, précisément dans une mémoire ROM à l'intérieur de la cartouche de jeu. La ROM mémorisait non seulement le code du jeu, le programme du jeu vidéo, mais aussi les niveaux et les ''sprites'' et autres données graphiques.
Une conséquence est que les consoles 8/16 bits n'avaient pas besoin de beaucoup de RAM, comparé aux ordinateurs de l'époque, vu qu'une grande partie des données utiles étaient dans une ROM directement accessible par le processeur. À l'opposé, les micro-ordinateurs devaient copier les données d'un jeu depuis une disquette dans la mémoire RAM, ce qui demandait d'avoir plus de RAM. Le passage au support CD sur les consoles 32 bits a eu la même conséquence. Le processeur ne pouvant pas lire directement le CD à sa guise, il fallait copier les données du CD en RAM. D'où l'apparition de temps de chargement assez longs, inexistants sur support cartouche.
===L'adressage mémoire===
Sur une mémoire RAM ou ROM, on ne peut lire ou écrire qu'une case mémoire, qu'un registre à la fois : une lecture ou écriture ne peut lire ou modifier qu'une seule case mémoire. Techniquement, le processeur doit préciser à quel case mémoire il veut accéder à chaque lecture/écriture. Pour cela, chaque case mémoire se voit attribuer un nombre binaire unique, l''''adresse''', qui va permettre de le sélectionner et de l'identifier celle-ci parmi toutes les autres. En fait, on peut comparer une adresse à un numéro de téléphone (ou à une adresse d'appartement) : chacun de vos correspondants a un numéro de téléphone et vous savez que pour appeler telle personne, vous devez composer tel numéro. Les adresses mémoires en sont l'équivalent pour les cases mémoire.
[[File:Adressage mémoire.png|centre|vignette|upright=2|Exemple : on demande à la mémoire de sélectionner la case mémoire d'adresse 1002 et on récupère son contenu (ici, 17).]]
L'adresse mémoire est générée par le processeur. Le processeur peut parfaitement calculer des adresses, en extraire du programme qu'il exécute, et bien d'autres choses. Nous détaillerons d'ailleurs les mécanismes pour dans les chapitres portant sur les modes d'adressage du processeur. Mais pour le moment, nous avons juste besoin de savoir que c'est le processeur qui envoie des adresses aux mémoires RAM et ROM.
Les adresses générées par le processeur sont alors envoyées à la RAM ou la ROM via une connexion dédiée, un ensemble de fils qui connecte le processeur à la mémoire : le '''bus d'adresse mémoire'''. L'adresse sélectionne une case mémoire, le processeur peut alors récupérer la donnée dedans pour une lecture, écrire une donnée pour l'écriture. Pour cela, un second ensemble de fil connecte le processeur à la RAM/ROM, mais cette fois-ci pour échanger des données. Il s'agit du '''bus de données mémoire'''. Les deux sont souvent regroupés sous le terme de '''bus mémoire'''.
Un ordinateur contient toujours une RAM et une ROM, ce qui demande aux bus mémoire de s'adapter à la présence de deux mémoires. Il y a alors deux solutions, illustrées dans les deux schémas ci-dessous. Avec la première, il y a un seul bus mémoire partagé entre la RAM et la ROM, comme illustré ci-dessous. Une autre solution utilise deux bus séparés : un pour la RAM et un autre pour la ROM. Nous verrons les différences pratiques entre les deux à la fin du chapitre. Pour le moment, nous allons partir du principe qu'il y a un bus pour la mémoire ROM, et un autre bus pour la RAM.
[[File:CPT-System-Architecture-gapfill1-ANS.svg|centre|vignette|upright=2|Architecture avec une ROM et une RAM.]]
[[File:Réseau d'interconnexion avec un processeur au centre.png|centre|vignette|upright=2|Réseau d'interconnexion avec un processeur au centre]]
===L'alignement mémoire : introduction===
Plus haut, nous avions dit qu'il y a une adresse par case mémoire, chaque case mémoire contenant un ou plusieurs octets. Mais les processeurs modernes partent du principe que la mémoire a un octet par adresse, pas plus. Et ce même si la mémoire reliée au processeur utilise des cases mémoires de 2, 3, 4 octets ou plus. D'ailleurs, la majorité des mémoires RAM actuelle a des cases mémoires de 64 bits, soit 8 octets par case mémoire. Les raisons à cela sont multiple, mais nous les verrons en détail dans le chapitre sur l'alignement mémoire. Toujours est-il qu'il faut distinguer les '''adresses mémoire''' et les '''adresses d'octet''' gérées par le processeur.
Le processeur génère des adresses d'octet, qui permettent de sélectionner un octet bien précis. L'adresse d'octet permet de sélectionner un octet parmi tous les autres. Mais la mémoire ne comprend pas directement cette adresse d'octet. Heureusement, l'octet en question est dans une case mémoire bien précise, qui a elle-même une adresse mémoire bien précise. L'adresse d'octet est alors convertie en une adresse mémoire, qui sélectionne la case mémoire adéquate, celle qui contient l'octet voulu. La case mémoire entière est lue, puis le processeur ne récupère que les données adéquates. Pour cela, des circuits d'alignement mémoire se chargent de faire la conversion entre adresses du processeur et adresse mémoire. Nous verrons cela dans le détail dans le chapitre sur l'alignement mémoire.
Il existe des mémoires qui n'utilisent pas d'adresses mémoire, mais passons : ce sera pour la suite du cours.
==Le processeur==
Dans les ordinateurs, l'unité de traitement porte le nom de '''processeur''', ou encore de '''''Central Processing Unit''''', abrévié en CPU. Le rôle principal du processeur est de faire des calculs. La plupart des processeurs actuels supportent au minimum l'addition, la soustraction et la multiplication. Quelques processeurs ne gèrent pas la division, qui est une opération très gourmande en circuit, peu utilisée, très lente. Il arrive que des processeurs très peu performants ne gèrent pas la multiplication, mais c'est assez rare.
Un processeur ne fait pas que des calculs. Tout processeur est conçu pour effectuer un nombre limité d'opérations bien précises, comme des calculs, des échanges de données avec la mémoire, etc. Ces opérations sont appelées des '''instructions'''. Les plus intuitives sont les '''instructions arithmétiques''', qui font des calculs, comme l'addition, la soustraction, la multiplication, la division. Mais il y a aussi des '''instructions d'accès mémoire''', qui échangent des données entre la mémoire RAM et le processeur. Les autres instructions ne sont pas très intuitives, aussi passons-les sous silence pour le moment, tout deviendra plus clair dans les chapitres sur le processeur.
===Le processeur exécute un programme, une suite d'instructions===
Tout processeur est conçu pour exécuter une suite d'instructions dans l'ordre demandé, cette suite s'appelant un '''programme'''. Ce que fait le processeur est défini par la suite d'instructions qu'il exécute, par le programme qu'on lui demande de faire. Les instructions sont exécutées dans un ordre bien précis, les unes après les autres. L'ordre en question est décidé par le programmeur. La totalité des logiciels présents sur un ordinateur sont des programmes comme les autres.
Le programme à exécuter est stockée dans la mémoire de l'ordinateur. C'est ainsi que l'ordinateur est rendu programmable : modifier le contenu de la mémoire permet de changer le programme exécuté. Mine de rien, cette idée de stocker le programme en mémoire est ce qui a fait que l’informatique est ce qu'elle est aujourd’hui. C'est la définition même d'ordinateur : appareil programmable qui stocke son programme dans une mémoire modifiable.
Une instruction est codée comme les données : sous la forme de suites de bits. Telle suite de bit indique qu'il faut faire une addition, telle autre demande de faire une soustraction, etc. Pour simplifier, nous allons supposer qu'il y a une instruction par adresse mémoire. Sur la grosse majorité des ordinateurs, les instructions sont placées les unes à la suite des autres dans l'ordre où elles doivent être exécutées. Un programme informatique n'est donc qu'une vulgaire suite d'instructions stockée quelque part dans la mémoire de l'ordinateur.
{|class="wikitable"
|+ Exemple de programme informatique
|-
! Adresse
! Instruction
|-
! 0
| Copier le contenu de l'adresse 0F05 dans le registre numéro 5
|-
! 1
| Charger le contenu de l'adresse 0555 dans le registre numéro 4
|-
! 2
| Additionner ces deux nombres
|-
! 3
| Charger le contenu de l'adresse 0555
|-
! 4
| Faire en XOR avec le résultat antérieur
|-
! ...
| ...
|-
! 5464
| Instruction d'arrêt
|}
Pour exécuter une suite d'instructions dans le bon ordre, le processeur détermine à chaque cycle quelle est la prochaine instruction à exécuter. Pour cela, le processeur mémorise l'adresse de l'instruction en cours dans un registre : le '''Program Counter'''. Je rappelle que des instructions consécutives sont dans des adresses consécutives. Pour passer à la prochaine instruction, il suffit donc d'incrémenter le ''program counter''.
: Si une instruction prend plusieurs octets, plusieurs adresses, il suffit de l'incrémenter du nombre d'octets/adresses.
D'autres processeurs font autrement : chaque instruction précise l'adresse de la suivante, directement dans la suite de bit représentant l'instruction en mémoire. Ces processeurs n'ont pas besoin de calculer une adresse qui leur est fournie sur un plateau d'argent. Sur des processeurs aussi bizarres, pas besoin de stocker les instructions en mémoire dans l'ordre dans lesquelles elles sont censées être exécutées. Mais ces processeurs sont très très rares et peuvent être considérés comme des exceptions à la règle.
Nous venons de voir qu'un processeur contient un registre appelé le ''program counter''. Mais il n'est pas le seul. Pour pouvoir fonctionner, tout processeur doit mémoriser un certain nombre d’informations nécessaires à son fonctionnement, qui sont mémorisées dans des '''registres de contrôle'''. La plupart ont des noms assez barbares (registre d'état, ''program counter'') et nous ne pouvons pas en parler à ce moment du cours. Nous les verrons en temps voulu, mais il est important de préciser qu'ils existent.
===L'intérieur d'un processeur===
Fort de ce que nous savons, nous pouvons expliquer ce qu'il y a à l'intérieur d'un processeur. Le premier point est qu'un processeur fait des calculs, ce qui implique qu'il contient des circuits de calcul. Ils sont regroupés dans une ou plusieurs '''unités de calcul'''. Nous avons déjà vu comment fabriquer une unité de calcul simple, dans un chapitre dédié, et c'est la même qui est présente dans un processeur. Du moins dans les grandes lignes, les circuits des processeurs modernes étant particulièrement optimisés. Il en est de même pour les autres circuits de calcul comme ceux pour les multiplications/division/autres.
Si le processeur fait des calculs, qu'en est-il des opérandes ? Et où sont mémorisés les résultats des opérations ? Pour cela, le processeur incorpore des '''registres généraux'''. Les registres généraux servent à mémoriser les opérandes et résultats des instructions. Ils mémorisent des données, contrairement aux registres de contrôle mentionnés plus haut. Le nombre de registres généraux dépend grandement du processeur. Les tout premiers processeurs se débrouillaient avec un seul registre, mais les processeurs actuels utilisent plusieurs registres, pour mémoriser plusieurs opérandes/résultats. Mais la présence de registres est source de pas mal de petites complications. Par exemple, il faut échanger les données entre la RAM et les registres, il faut gérer l'adressage des registres, etc. Il s'agit là de détails que nous expliquerons dans les chapitres sur le processeur.
Le processeur contient enfin un circuit pour interpréter les instructions, appelé l''''unité de contrôle'''. Elle lit les instructions depuis la mémoire, interprète la suite de bit associée, et commande le reste du processeur pour qu'il exécute l'instruction. Ses fonctions sont assez variées, mais nous allons simplifier en disant qu'elle configure l'unité de calcul et les registres pour faire le bon calcul. Son rôle est d'analyser la suite de bit qui constitue l'instruction, et d'en déduire quelle opération effectuer. Elle gère aussi l'accès à la mémoire RAM, et notamment ce qui est envoyé sur son bus d'adresse.
: Dans ce qui suit, on suppose que le ''program counter'' fait partie de l'unité de contrôle.
Pour résumer, un processeur contient une unité de calcul, des registres et une interface avec la mémoire RAM. Le tout est interconnecté, afin de pouvoir échanger des données. L’ensemble forme le '''chemin de données''', nom qui trahit le fait que c'est là que les données se déplacent et sont traitées. Il faut aussi ajouter l'unité de contrôle pour commander le tout. Elle lit les instructions en mémoire, puis commande le chemin de données pour que l'instruction soit exécutée correctement.
[[File:Microarchitecture d'un processeur.png|centre|vignette|upright=2|Microarchitecture d'un processeur]]
Un processeur parait donc assez simple expliqué comme ça, mais il y a de nombreuses subtilités. L'une d'entre elle est liée aux registres, et notamment à la manière dont on les utilise. Pour expliquer ces subtilités, nous allons voir comment les premiers processeurs fonctionnaient, avant de passer aux processeurs un peu plus modernes. Les tout premiers processeurs n'utilisaient qu'un seul registre, ce qui fait que l'utilisation des registres était très simple. Le passage à plusieurs registres a complexifié le tout.
===D'où viennent les adresses ?===
Il est maintenant temps de répondre à une question qui s'était posée dans la section sur l'adressage : d'où viennent les adresses envoyées à la mémoire ? Pour ce qui est des adresses des instructions, on connait déjà la réponse : c'est le ''program counter'' qui gère tout. Mais pour les données, il y a deux possibilités, qui correspondent à deux types de données : les données statiques et les données dynamiques.
Les '''données statiques''' sont les plus simples : elles existent durant toute la durée de vie du programme. Tant que celui-ci s'exécute, il aura besoin de ces données. En conséquence, il leur réserve une place en mémoire, qui est toujours la même. La donnée se situe donc à une adresse bien précise, qui ne change jamais. Attention cependant : les données peuvent être modifiées, changer de valeur. Le programme écrit dans les donnée statiques, c'est même assez fréquent. Ce sont ne sont pas forcément des données constantes !
Pour les données statiques, elles sont toujours placées à la même adresse mémoire. Pour le dire autrement, l'adresse mémoire est une constante, qui ne change pas. L'adresse est connue avant d’exécuter le programme, le programme a été codé pour utiliser cette adresse pour telle donnée, on a réservé une adresse pour la donnée voulue. Et même si vous quittez le programme et vous le relancez plusieurs jours après, l'adresse mémoire sera la même avant et après.
Et cela permet d'utiliser l''''adressage direct'''. L'idée est que les instructions précisent donc l'adresse à lire ou écrire. Pour cela, l'adresse est intégrée dans l’instruction elle-même. Pour rappel, l'instruction est codée par une suite de bit en mémoire RAM/ROM, dont certains précisent l'opération à faire, les autres servant à autre chose. L'idée est que certains bits précisent l'adresse mémoire de la donnée à lire. Les instructions sont donc du genre :
* ''LOAD 56'' - lit l'adresse numéro 56 et copie son contenu dans un registre;
* ''STORE R5 , adress 99'', copie le registre R5 dans l'adresse 99 ;
* ''ADD R5 , adress 209'' : additionne le registre R5 avec le contenu de l'adresse 209.
S'il existe des données statiques, c'est signe qu'il existe des '''données dynamiques'''. Ces dernières sont des données qui sont créées ou détruites selon les besoins. Pour comprendre d'où viennent ces données dynamiques, prenons le cas d'une personne qui écrit du texte sur un ordinateur. Le texte qu'il écrit est mémorisé dans la RAM de l’ordinateur, puis est sauvegardé sur le disque dur quand il sauvegarde son document. Au fur et à mesure qu'il écrit du texte, la RAM utilisée par ce texte augmente. Donc, ce texte est une donnée dynamique, dont la taille varie dans le temps.
Pour gérer des données dynamiques, la plupart des systèmes d'exploitation incorporent des fonctionnalités d''''allocation mémoire'''. Derrière ce nom barbare, se cache quelque chose de simple : les programmes peuvent réclamer de la mémoire au système d'exploitation, pour y placer les données qu'ils souhaitent. Les langages de programmation bas niveau supportent des fonctions comme malloc(), qui permettent de demander un bloc de mémoire de N octets à l'OS, qui doit alors accommoder la demande. De même, un programme peut libérer de la mémoire qu'il n'utilise plus avec des fonctions comme free().
Avec l'allocation mémoire, les données n'ont pas de place fixe en mémoire. Leur adresse mémoire peut varier d'une exécution du programme à l'autre. Pire que ça : les données peuvent être déplacées dans la mémoire RAM, si besoin. En clair : l'adresse est déterminée lors de l'exécution du programme. L'adresse est alors soit calculée, soit lue depuis la mémoire RAM, soit déterminée autrement. Toujours est-il qu'elle se retrouve dans un registre général. Pour gérer ces adresse variables, les processeurs utilisent l''''adressage indirect'''. L'adressage indirect permet d'utiliser une adresse qui est dans un registre de données. L'adresse en question peut être envoyée à la mémoire RAM sans problème, le processeur peut automatiquement connecter le registre adéquat sur le bus d'adresse.
Au tout début de l'informatique, les processeurs ne supportaient que l'adressage direct, pas plus. L'adressage indirect n'était tout simplement pas possible. Avec l'adressage direct, l'adresse à lire est extraite directement des instructions, par l'unité de contrôle. Le bus d'adresse de la RAM est alors relié directement à l'unité de contrôle, le bus de données est relié aux registres.
[[File:Architecture Harvard avec adressage direct uniquement.png|centre|vignette|upright=2|Architecture Harvard avec adressage direct uniquement]]
Mais dès les années 70, l'adressage indirect est apparu, rendant la programmation bien plus simple. Mais cela a demandé quelques adaptation au niveau du processeur. Avec l'adressage indirect, le bus d'adresse est connecté aux registres. Il a donc fallu rajouter un multiplexeur pour que le processeur décide de relier le bus d'adresse soit aux registres, soit à l'unité de contrôle.
===Un ordinateur peut avoir plusieurs processeurs===
La plupart des ordinateurs n'ont qu'un seul processeur, ce qui fait qu'on désigne avec le terme d''''ordinateurs mono-processeur'''. Mais il a existé (et existe encore) des '''ordinateurs multi-processeurs''', avec plusieurs processeurs sur la même carte mère. L'idée était de gagner en performance : deux processeurs permettent de faire deux fois plus de calcul qu'un seul, quatre permettent d'en faire quatre fois plus, etc. C'est très courant sur les supercalculateurs, des ordinateurs très puissants conçus pour du calcul industriel ou scientifique, mais aussi sur les serveurs ! Dans le cas le plus courant, ils utilisent plusieurs processeurs identiques : on utilise deux processeurs Core i3 de même modèle, ou quatre Pentium 3, etc.
Pour utiliser plusieurs processeurs, les programmes doivent être adaptés. Pour cela, il y a plusieurs possibilités :
* Une première possibilité, assez intuitive, est d’exécuter des programmes différents sur des processeurs différents. Par exemple, on exécute le navigateur web sur un processeur, le lecteur vidéo sur un autre, etc.
* La seconde option est de créer des programmes spéciaux, qui utilisent plusieurs processeurs. Ils répartissent les calculs à faire sur les différents processeurs. Un exemple est la lecture d'une vidéo sur le web : un processeur peut télécharger la vidéo pendant le visionnage et bufferiser celle-ci, un autre processeur peut décoder la vidéo, un autre décoder l'audio. De tels programmes restent des suites d'instructions, mais ils sont plus complexes que les programmes normaux, aussi nous les passons sous silence.
* La troisième option est d’exécuter le même programme sur les différents processeurs, mais chaque processeur traite son propre ensemble de données. Par exemple, pour un programme de rendu 3D, quatre processeurs peuvent s'occuper chacun d'une portion de l'image.
[[File:Architecture de Von Neumann Princeton multi processeurs.svg|centre|vignette|upright=2|Architecture de Von Neumann Princeton multi processeurs]]
De nos jours, les ordinateurs grand public les plus utilisés sont dans un cas intermédiaire, ils ne sont ni mono-, ni multi-processeur. Ils n'ont qu'un seul processeur, dans le sens où si on ouvre l'ordinateur et qu'on regarde la carte mère, il n'y a qu'un seul processeur. Mais ce processeur est en réalité assez similaire à un regroupement de plusieurs processeurs dans le même boitier. Il s'agit de '''processeurs multicœurs''', qui contiennent plusieurs cœurs, chaque cœur pouvant exécuter un programme tout seul.
La différence entre cœur et processeur est assez difficile à saisir, mais pour simplifier : un cœur est l'ensemble des circuits nécessaires pour exécuter un programme. Chaque cœur dispose de toute la machinerie électronique pour exécuter un programme, à savoir des circuits aux noms barbares comme : un séquenceur d'instruction, des registres, une unité de calcul. Par contre, certains circuits d'un processeur ne sont présents qu'en un seul exemplaire dans un processeur multicœur, comme les circuits de communication avec la mémoire ou les circuits d’interfaçage avec la carte mère.
Suivant le nombre de cœurs présents dans notre processeur, celui-ci sera appelé un processeur double-cœur (deux cœurs), quadruple-cœur (4 cœurs), octuple-cœur (8 cœurs), etc. Un processeur double-cœur est équivalent à avoir deux processeurs dans l'ordinateur, un processeur quadruple-cœur est équivalent à avoir quatre processeurs dans l'ordinateur, etc. Ces processeurs sont devenus la norme dans les ordinateurs grand public et les logiciels et systèmes d'exploitation se sont adaptés.
===Les coprocesseurs===
Quelques ordinateurs assez anciens disposaient de '''coprocesseurs''', des processeurs qui complémentaient un processeur principal. Les ordinateurs de ce type avaient un processeur principal, le '''CPU''', qui était secondé par un ou plusieurs coprocesseurs. Sauf exception, le CPU et le coprocesseur exécutent des programmes différents, ils travaillent en parallèle.
Les coprocesseurs les plus connus sont les '''coprocesseurs pour le rendu 2D/3D'''. Ils ont eu leur heure de gloire sur les anciennes consoles de jeux vidéo, comme Super Nintendo, la Playstation et autres consoles de cette génération ou antérieure. Ils s'occupaient respectivement de calculer les graphismes des jeux vidéos. De nos jours, ils ont été remplacés par des cartes graphiques, ou des ''Graphic Processing Units'', qui ne sont pas considérées comme des coprocesseurs.
Les '''coprocesseurs sonores''' sont une sorte d'ancêtre des cartes son, utilisés sur les anciennes consoles de jeux vidéo, comme La Nintendo 64, la Playstation et autres consoles antérieures. Ils s'occupaient respectivement de calculer tout ce qui a trait au son. Pour donner un exemple, on peut citer la console Neo-géo, qui disposait de deux processeurs travaillant en parallèle : un processeur principal, et un coprocesseur sonore. Le processeur principal était un Motorola 68000, alors que le coprocesseur sonore était un processeur Z80.
L'accès aux périphériques est quelque chose sur lequel nous passerons plusieurs chapitres dans ce cours. Mais sachez que l'accès aux périphériques peut demander pas mal de puissance de calculs. Le CPU principal peut faire ce genre de calculs par lui-même, mais il n'est pas rare qu'un '''coprocesseur d'IO''' soit dédié à l'accès aux périphériques. Un exemple assez récent est celui de la console de jeu Nintendo 3DS. Elle disposait d'un processeur principal de type ARM9, d'un coprocesseur pour les divisions qu'on abordera plus bas, et d'un second processeur ARM7. L'ARM 7 était utilisé comme coprocesseur d'I/O, ainsi que pour l'émulation de la console GBA.
[[File:Asmp 2.gif|centre|vignette|upright=2|Co-processeur pour l'accès aux entrées-sorties.]]
Les '''coprocesseurs arithmétiques''' sont un peu à part des autres. Ils sont spécialisés dans les calculs en virgule flottante. Ils étaient utilisés à une époque où les CPU ne géraient que des calculs entiers (en binaire ou en BCD). Un exemple est le coprocesseur flottant x87, complémentaire des premiers processeurs Intel x86. Il y a eu la même chose sur les processeurs Motorola 68000, avec deux coprocesseurs flottants appelés les Motorola 68881 et les Motorola 68882.
Un exemple récent de coprocesseur est celui utilisé sur la console de jeu Nintendo DS. La console utilisait deux processeurs, un ARM9 et un ARM7, qui ne pouvaient pas faire de division entière. Il s'agit pourtant d'opérations importantes dans le cas du rendu 3D, ce qui fait que les concepteurs de la console ont rajouté un coprocesseur spécialisé dans les divisions entières et les racines carrées. Le coprocesseur était adressable directement par le processeur, comme peuvent l'être la RAM ou les périphériques.
==Les entrées-sorties==
Tous les circuits vus précédemment traitent des données codées en binaire. Ceci dit, les données ne sortent pas de n'importe où : l'ordinateur contient des composants électroniques qui traduisent des informations venant de l’extérieur en nombres. Ces composants sont ce qu'on appelle des '''entrées'''. Par exemple, le clavier est une entrée : l'électronique du clavier attribue un nombre entier (''scancode'') à une touche, nombre qui sera communiqué à l’ordinateur lors de l'appui d'une touche. Pareil pour la souris : quand vous bougez la souris, celle-ci envoie des informations sur la position ou le mouvement du curseur, informations qui sont codées sous la forme de nombres. La carte son évoquée il y a quelques chapitres est bien sûr une entrée : elle est capable d'enregistrer un son, et de le restituer sous la forme de nombres.
S’il y a des entrées, on trouve aussi des '''sorties''', des composants électroniques qui transforment des nombres présents dans l'ordinateur en quelque chose d'utile. Ces sorties effectuent la traduction inverse de celle faite par les entrées : si les entrées convertissent une information en nombre, les sorties font l'inverse : là où les entrées encodent, les sorties décodent. Par exemple, un écran LCD est un circuit de sortie : il reçoit des informations, et les transforme en image affichée à l'écran. Même chose pour une imprimante : elle reçoit des documents texte encodés sous forme de nombres, et permet de les imprimer sur du papier. Et la carte son est aussi une sortie, vu qu'elle transforme les sons d'un fichier audio en tensions destinées à un haut-parleur : c'est à la fois une entrée, et une sortie.
Les '''entrées-sorties''' incluent toutes les entrées et sorties, et même certains composants qui sont les deux à la fois. Il s'agit d'un terme générique, qui regroupe des composants forts différents. Dans ce qui va suivre, nous allons parfois parler de périphériques au lieu d'entrées-sorties, mais les deux termes ne sont pas équivalents. Dans le détail, les entrées-sorties regroupent :
* Les '''périphériques''' sont les composants connectés sur l'unité centrale. Exemple : les claviers, souris, webcam, imprimantes, écrans, clés USB, disques durs externes, la Box internet, etc.
* Les '''cartes d'extension''', qui se connectent sur la carte mère via un connecteur, comme les cartes son ou les cartes graphiques.
* D'autres composants sont soudés à la carte mère mais sont techniquement des entrées-sorties : les cartes sons soudées sur les cartes mères actuelles, par exemple.
===L'interface avec le reste de l'ordinateur===
Les entrées-sorties sont très diverses, fonctionnent très différemment les unes des autres. Mais du point de vue du reste de l'ordinateur, les choses sont relativement standardisées. Du point de vue du processeur, les entrées-sorties sont juste des paquets de registres ! Tous les périphériques, toutes les entrées-sorties contiennent des '''registres d’interfaçage''', qui permettent de faire l'intermédiaire entre l'entrée/sortie et le reste de l'ordinateur. L'entrée/sortie est conçu pour réagir automatiquement quand on écrit dans ces registres.
[[File:Registres d'interfaçage.png|centre|vignette|upright=2|Registres d'interfaçage.]]
Les registres d’interfaçage sont assez variés. Les plus évidents sont les '''registres de données''', qui permettent l'échange de données entre le processeur et les périphériques. Pour échanger des données avec l'entrée/sortie, le processeur a juste à lire ou écrire dans ces registres de données. On trouve généralement un registre de lecture et un registre d'écriture, mais il se peut que les deux soient fusionnés en un seul registre d’interfaçage de données. Si le processeur veut envoyer une donnée à une entrée/sortie, il a juste à écrire dans ces registres. Inversement, s'il veut lire une donnée, il a juste à lire le registre adéquat.
Mais le processeur ne fait pas que transmettre des données à l'entrée/sortie. Le processeur lui envoie aussi des « commandes », des valeurs numériques auxquelles l'entrée/sortie répond en effectuant un ensemble d'actions préprogrammées. En clair, ce sont l'équivalent des instructions du processeur, mais pour l'entrée/sortie. Par exemple, les commandes envoyées à une carte graphique peuvent être : affiche l'image présente à cette adresse mémoire, calcule le rendu 3D à partir des données présentes dans ta mémoire, etc. Pour recevoir les commandes, l'entrée/sortie contient des ''registres de commande'' qui mémorisent les commandes envoyées par le processeur. Quand le processeur veut envoyer une commande à l'entrée/sortie, il écrit la commande en question dans ce ou ces registres.
Enfin, beaucoup d'entrée/sortie ont un ''registre d'état'', lisible par le processeur, qui contient des informations sur l'état de l'entrée/sortie. Ils servent notamment à indiquer au processeur que l'entrée/sortie est disponible, qu'il est en train d’exécuter une commande, qu'il est occupé, qu'il y a un problème, qu'il y a une erreur de configuration, etc.
===Les adresses des registres d’interfaçage===
Les registres des périphériques sont identifiés par des adresses mémoires. Et les adresses sont conçues de façon à ce que les adresses des différentes entrées/sorties ne se marchent pas sur les pieds. Chaque entrée/sortie, chaque registre, chaque contrôleur a sa propre adresse. D'ordinaire, certains bits de l'adresse indiquent quel est le destinataire. Certains indiquent quel est l'entrée/sortie voulue, les restants indiquant le registre de destination.
Il existe deux organisations possibles pour les adresses des registres d’interfaçages. La première possibilité est de séparer les adresses pour les registres d’interfaçage et les adresses pour la mémoire. Le processeur doit avoir des instructions séparées pour gérer les périphériques et adresser la mémoire. Il a des instructions de lecture/écriture pour lire/écrire en mémoire, et d'autres pour lire/écrire les registres d’interfaçage. Sans cela, le processeur ne saurait pas si une adresse est destinée à un périphérique ou à la mémoire.
[[File:Espaces d'adressages séparés entre mémoire et périphérique.png|centre|vignette|upright=2.5|Espaces d'adressages séparés entre mémoire et périphérique]]
L'autre méthode mélange les adresses mémoire et des entrées-sorties. Si on prend par exemple un processeur de 16 bits, où les adresses font 16 bits, alors les 65536 adresses possibles seront découpées en deux portions : une partie ira adresser la RAM/ROM, l'autre les périphériques. On parle alors d''''entrées-sorties mappées en mémoire'''. L'avantage est que le processeur n'a pas besoin d'avoir des instructions séparées pour les deux.
[[File:IO mappées en mémoire.png|centre|vignette|upright=2.0|IO mappées en mémoire]]
Pour résumer, communiquer avec une entrée/sortie est similaire à ce qu'on a avec les mémoires. Il suffit de lire ou écrire dans des registres d’interfaçage, qui ont chacun une adresse mémoire. Le problème est que le système d'exploitation ne connaît pas toujours le fonctionnement d'une entrée/sortie : il faut installer un programme qui va s'exécuter quand on souhaite communiquer avec l'entrée/sortie, et qui s'occupera de tout ce qui est nécessaire pour le transfert des données, l'adressage du périphérique, etc. Ce petit programme est appelé un driver ou '''pilote de périphérique'''. La « programmation » périphérique est très simple : il suffit de savoir quoi mettre dans les registres, et c'est le pilote qui s'en charge.
==Les architectures Harvard et Von Neumann==
Après avoir vu le processeur, les mémoires et les entrées-sorties, voyons voir comment le tout est interconnecté. Tous les ordinateurs ne sont pas organisés de la même manière, pour ce qui est de leurs bus. Mais pour comprendre pourquoi, nous devons regarder qui communique avec qui, dans un ordinateur. Pour rappel, les données sont placées en mémoire RAM, alors que les instructions sont placées en mémoire ROM. Le processeur lit des instructions dans la mémoire ROM, il lit et écrit dans la mémoire RAM, et accède aux registres d’interfaçage des entrées-sorties. Il y a donc besoins de trois interconnexions : CPU-ROM, CPU-RAM et CPU-IO.
[[File:Réseau d'interconnexion avec un processeur au centre.png|centre|vignette|upright=2|Réseau d'interconnexion avec un processeur au centre]]
Il parait intéressant d'utiliser trois interconnexions, au minimum CPU-ROM, CPU-RAM et CPU-IO. Néanmoins, faire ainsi a de nombreux désavantages. Déjà, il faut pouvoir brancher tout ça sur le processeur. Et celui-ci n'a pas forcément assez de broches pour. Aussi, il est parfois préférable de mutualiser des bus, à savoir de connecter plusieurs composants sur un même bus. Par exemple, on peut mutualiser le bus pour la mémoire RAM et pour la mémoire ROM. Il faut dire que les deux bus sont des bus mémoire, avec un bus d'adresse, un bus de données, et surtout : des bus de commande similaires. Les mutualiser est alors très simple, et permet d'économiser pas mal de broches.
[[File:Réseau d'interconnexion avec un processeur au centre et une architecture Harvard.png|centre|vignette|upright=2|Réseau d'interconnexion avec un processeur au centre et une architecture Harvard]]
Cette mutualisation nous amène naturellement à parler de la distinction entre les architectures Harvard d'un côté et les architectures Von Neumann de l'autre. Elle est très liée au fait d'utiliser soit un bus mémoire unique, soit des bus séparés pour la ROM et la RAM. Voyons cela en détail.
===Les architectures Harvard et Von Neumann : des bus séparés ou unifiés===
Avec l''''architecture Harvard''', la mémoire ROM et la mémoire RAM sont reliées au processeur par deux bus séparés. Il y a un bus RAM pour la mémoire RAM, un bus ROM pour la mémoire ROM. L'avantage de cette architecture est qu'elle permet de charger une instruction et une donnée simultanément : une instruction chargée sur le bus relié à la mémoire programme, et une donnée chargée sur le bus relié à la mémoire de données. Et cela simplifie fortement la conception du processeur.
[[File:Harvard Architecture.png|centre|vignette|upright=2|Architecture Harvard, avec une ROM et une RAM séparées.]]
Avec l''''architecture Von Neumann''', mémoire ROM et mémoire RAM sont reliées au processeur par un bus unique. Le bus unique qui relie processeur, RAM et ROM, s'appelle le '''bus mémoire'''. Un défaut de ces architecture est qu'elles ne peuvent pas charger une instruction et une donnée en même temps. Et cela pose quelques problèmes pour la conception du processeur. Par contre, nous verrons dans ce qui suit qu'utiliser un bus mémoire partagé est bien plus flexible et permet des choses que les architectures Harvard ne peuvent pas faire.
[[File:Architecture Von Neumann, avec deux bus séparés.png|centre|vignette|upright=2|Architecture Von Neumann, avec deux bus séparés.]]
===Les architectures Harvard et Von Neumann : des espaces d'adressage séparés ou unifiés===
La distinction précédente se base sur les connexions entre RAM, ROM et processeur. Mais il existe une autre distinction, très liée, qui est souvent utilisée comme seconde définition des architectures Harvard/Von Neumann. Elle est liée aux adresses mémoire que le processeur peut gérer. Prenons un processeur 16 bits, par exemple, qui gère naturellement des adresses de 16 bits. Il peut gérer 2^16 adresses, soit 64 kibioctets de mémoire. L'ensemble de ces adresses est appelé un '''espace d'adressage'''. Mais comment cet espace d'adressage est utilisé pour adresser une RAM et une ROM ?
Sur les architectures Harvard, le processeur voit deux mémoires séparées avec leur lot d'adresses distinctes. Une même adresse peut donc correspondre soit à la mémoire ROM, soit à la mémoire RAM, suivant le bus utilisé. L'espace d'adressage est donc doublé, dupliqué, avec un pour la ROM, un autre pour la RAM. Rien d'étonnant à cela : il y a deux bus d'adresses, chacun correspondant à un espace d'adressage.
[[File:Vision de la mémoire par un processeur sur une architecture Harvard.png|centre|vignette|upright=2|Vision de la mémoire par un processeur sur une architecture Harvard.]]
Avec l'architecture Von Neumann, la RAM et la ROM doivent se partager les adresses mémoires disponibles. Il n'y a qu'un seul espace d'adressage qui est coupé en deux, avec une partie pour la ROM et une autre pour la RAM. Une adresse correspond soit à la mémoire RAM, soit à la mémoire ROM, mais pas aux deux. Typiquement, la mémoire ROM occupe une partie des adresses, la mémoire RAM utilise le reste. La répartition des adresses est réalisée par les circuits de décodage d'adresse mentionnés plus haut.
[[File:Vision de la mémoire par un processeur sur une architecture Von Neumann.png|centre|vignette|upright=2|Vision de la mémoire par un processeur sur une architecture Von Neumann.]]
Les '''architectures Harvard modifiées''' sont des intermédiaires entre architectures Harvard et architectures Von Neumann, bien qu'elles penchent bien plus du côté des architectures Harvard. Précisons que la terminologie n'est pas claire, beaucoup d'auteurs mettent des définitions différentes derrière ces deux termes. Mais dans ce cours, nous utiliserons une définition très stricte de ce qu'est une architecture Harvard modifiée.
Une architecture Harvard modifiée est une architecture Harvard, où le processeur peut lire des données constantes depuis la mémoire ROM. Nous avions vu plus haut que les mémoires ROM peuvent mémoriser, en plus d'un programme exécutable, des données constantes, qui ne varient pas. Les architectures Harvard pures ne permettent pas de lire des données de ce genre depuis la mémoire ROM, alors que les architectures Harvard modifiées le permettent.
Une architecture Harvard modifiée dispose d'une instruction pour lire les données en mémoire RWM, et d'une instruction pour lire des données en mémoire ROM. Il y a donc deux versions de l'instruction LOAD, qui copient la donnée dans un registre général, mais dont la source de la donnée est différente. Une autre possibilité, plus rare, est que une instruction de copie, qui copie une constante depuis la mémoire ROM vers la mémoire RAM. Le cas le plus commun est l'utilisation de deux instructions LOAD séparées.
[[File:Espaces d'adressage sur une archi harvard modifiée.png|centre|vignette|upright=2.5|Espaces d'adressage sur une archi harvard modifiée]]
Ceci étant dit, revenons à la distinction entre architecture Harvard et Von Neumann. Il faut noter que la RAM et la ROM n'ont pas forcément la même taille. Et ce que ce soit sur une architecture Harvard que sur une architecture Von Neumann, mais c'est plus facile à expliquer sur une architecture Harvard.
On peut par exemple imaginer une architecture Harvard qui utilise des adresses de 16 bits pour la ROM, et seulement 8 bits pour la RAM. Le résultat est qu'il peut adresser 64 kibioctets de ROM, mais seulement 256 octets de RAM. Les deux bus d'adresse sont alors de taille différente, l'un faisant 8 bits, l'autre 16. Quelques processeurs 8 bits étaient dans ce cas, comme on le verra dans le chapitre sur les CPU 8bits. Mais d'autres processeurs utilisent des valeurs différentes, avec par exemple des adresses de 16 bits pour la RAM, mais de 20 bits pour la ROM, ou inversement.
Sur une architecture Von Neumann, tout dépend de comment les adresses sont réparties. La solution la plus simple découpe l'espace d'adressage en deux parties égales, avec la RAM qui est dans la moitié basse (qui part de l'adresse 0 jusqu'à l'adresse au milieu), alors que la ROM est dans la moitié haute (entre l'adresse du milieu et l'adresse maximale). Mais ce n'est pas la seule possibilité, la limite entre RAM et ROM peut être mise n'importe où. Prenons par exemple un processeur 32 bits, capable de gérer 4 milliards d'adresse. Il est parfaitement possible de réserver 128 mébioctets de poids fort à la mémoire ROM, et de laisser le reste à la mémoire RAM.
===Le décodage d'adresse sur les architectures Von Neumann===
Pour résumer, les architectures Harvard et Von Neumann se distinguent sur deux points :
* L'accès à la RAM et à la ROM se font par des bus séparés sur l'architecture Harvard, sur le même bus avec l'architecture Von Neumann.
* Les adresses pour la mémoire ROM et la mémoire RAM sont séparées sur les architectures Harvard, partagées sur l’architecture Von Neumann.
Les architectures Von Neumann utilisent donc un seul bus pour connecter la RAM et la ROM au processeur. Mais cela ne parait pas intuitif : comment deux composants peuvent se connecter aux mêmes fils ? Parce que c'est ce qu'implique le fait de partager un bus. Si je prends une mémoire RAM et une mémoire ROM, toutes deux de 8 bits, elles seront connectées à un bus mémoire de 8 bits. Intuitivement, on se dit qu'il y aura des conflits, du genre : la RAM et la ROM vont accéder au bus en même temps, comment savoir si une adresse est destinée à la RAM ou la ROM, etc ?
Tous ces problèmes sont résolus avec une solution très simple : à chaque instant, seule une mémoire est connectée au bus. L'idée est que les mémoires sont connectées ou déconnectées du bus selon les besoins. Si le processeur veut envoyer lire une donnée en mémoire RAM, il déconnecte la mémoire ROM du bus. Et inversement, s'il veut lire une instruction, il déconnecte la RAM et connecte la ROM.
Pour cela, les mémoires RAM et ROM possèdent une entrée ''Chip Select'' ou ''Output Enable'', qui agit comme une sorte de bouton ON/OFF. Lorsqu'on met un 1 sur cette entrée, la mémoire se connectera au bus. Ses entrées et sorties fonctionneront normalement, elle pourra recevoir des adresses, envoyer ou recevoir des données, tout sera normal. Par contre, si on met un 0 sur cette entrée, la mémoire se "désactive", ses entrée-sorties ne répondent plus aux sollicitations extérieures. Pire que ça : elles sont électriquement déconnectées.
Au total, tout cela demande de gérer deux bit ''Chip Select''/''Output Enable'' : un pour la RAM, un pour la ROM. Et ces deux bits sont configurés pour chaque accès mémoire, pour chaque lecture ou écriture. Pour cela, un circuit de '''décodage d'adresse''' prend en entrée l'adresse mémoire à lire/écrire, et active/désactive les mémoires RAM/ROM selon les besoins. Il prend l'adresse et configure les bits ''Chip Select''/''Output Enable''.
[[File:Décodage d'adresse sur une architecture Von Neumann.png|centre|vignette|upright=2|Décodage d'adresse sur une architecture Von Neumann.]]
L'implémentation la plus simple réserve la moitié des adresses pour la RAM, l'autre moitié pour la ROM. Typiquement, la ROM prend la moitié basse, la RAM la moitié haute. Dans ce cas, activer/désactiver la RAM et la ROM se fait avec seulement le bit de poids fort de l'adresse. Si le bit de poids fort est à 1, alors on accède à la RAM et la ROM doit être désactivée. Mais si ce bit est à 0, alors on accède à la moitié basse et il faut désactiver la RAM.
Une remarque intéressante : le fait de séparer la mémoire en deux parts égales permet de simuler une architecture Harvard à partir d'une architecture Von Neumann. Par exemple, le tout premier processeur d'Intel, le 4004, était l'un de ceux là. La RAM et la ROM sont reliés au même bus, et il y a donc un unique espace d'adressage, qui est séparé en deux parties égales. Le truc est que le processeur traite les deux parties égales comme deux espaces d'adressage séparés. Le processeur se débrouille pour cacher le fait qu'il y a un espace d'adressage unique coupé en deux, ce qui fait que les programmeurs voient bien deux espaces d'adressages distincts.
[[File:Décodage d'adresse sur une architecture Von Neumann basique.png|centre|vignette|upright=2|Décodage d'adresse sur une architecture Von Neumann basique.]]
Pour résumer, quand une adresse est envoyée sur le bus, les deux mémoires vont la recevoir mais une seule va répondre et se connecter au bus. Le décodage d'adresse garantit que seule la mémoire adéquate réponde à un accès mémoire. Le décodage d'adresse est réalisé par la carte mère, par un composant dédié.
Le mécanisme peut être utilisé pour combiner plusieurs RAM en une seule, idem avec les ROM. Pour comprendre l'idée, je vais prendre l'exemple de l'IBM PC, un des tout premier PC existant. Nous étudierons ce PC dans une section dédiée, à la fin du chapitre, aussi je vais passer rapidement dessus. Tout ce que je vais faire est vous présenter la carte mère du PC, et vous demander de faire est de compter les mémoires ROM et mémoires RAM sur la carte mère :
[[File:IBM 5150 Motherboard.svg|centre|vignette|upright=3|Carte mère de l'IBM 5150, un modèle de l'IBM PC.]]
Si vous remarquerez qu'il y a 5 mémoires ROM et 8 à 32 mémoires RAM. Le fait est que le processeur voit les différentes mémoires ROM comme une seule mémoire ROM. Idem avec les mémoires RAM : elle font chacune 2 kibioctets, et l'ensemble est vu par le processeur comme une seule RAM de 16 à 64 kibioctets. Et cela grâce aux circuits de décodage d'adresse, qui sont situés en haut à droite de la carte mère.
Pour comprendre l'idée, prenons l'exemple d'un processeur 16 bits, capable de gérer 64 kibioctets de mémoire. L'espace d'adressage est découpé en quatre portions, de 16 kibioctets chacune. Une portion est réservée à une ROM de 16 kibioctet, les autres sont chacune réservée à une RAM de 16 kibioctet. Le décodage d'adresse sélectionne alors la mémoire adéquate en utilisant les deux bits de poids fort de l'adresse.
* S'ils valent 00, alors c'est la mémoire ROM qui est activée, connectée au bus.
* S'ils valent 01, alors c'est la première mémoire RAM qui est connectée au bus.
* S'ils valent 10, alors c'est la seconde mémoire RAM qui est connectée au bus.
* S'ils valent 11, alors c'est la troisième mémoire RAM qui est connectée au bus.
[[File:Décodage d'adresse sur une architecture Von Neumann, utilisant plusieurs RAM et une ROM.png|centre|vignette|upright=3|Décodage d'adresse sur une architecture Von Neumann, utilisant plusieurs RAM et une ROM]]
===L'impact sur la conception du processeur===
Plus haut, j'ai parlé d'un des avantages des architectures Harvard : elles peuvent lire une instruction en même temps qu'elles accèdent à une donnée. La donnée est lue/écrite en RAM, alors que l'instruction est lue en ROM. Et cela permet de simplifier l'intérieur du processeur. Pas de beaucoup, mais c'est déjà ça de pris. Voyons maintenant comment cela impacte l'intérieur du processeur. Tout ce dont vous avez à vous rappeler est la séparation entre chemin de données et unité de contrôle, et que les registres généraux sont dans le premier, le ''program counter'' dans la seconde.
Avec une architecture Harvard, les instructions et les données passent par des bus différent : bus ROM pour les instructions, bus RAM pour les données. L'intuition nous dit que le bus pour la mémoire ROM est connecté à l'unité de contrôle, alors que le bus pour la RAM est connecté au chemin de données. Et dans les grandes lignes, c'est vrai. La logique est imparable pour ce qui est des bus de données. Mais il y a une petite subtilité pour les bus d'adresse.
Pour comprendre comment le processeur exploite ces deux bus, voyons ce qui transite dessus. Pour la mémoire ROM, elle reçoit l'adresse de l'instruction à lire, elle renvoie l'instruction adéquate. Pour cela, le ''program counter'' est envoyé sur le bus d'adresse, l'instruction sur le bus de données. Pour la mémoire RAM, elle échange des données avec les registres généraux, les registres pour les données. Les adresses utilisées pour la RAM viennent elles soit du chemin de données, soit de l'unité de contrôle, tout dépend du mode d'adressage. Mais le ''program counter'' n'est pas impliqué.
[[File:Architecture Harvard - échanges de données.png|centre|vignette|upright=2|Architecture Harvard - échanges de données]]
Les architectures Harvard modifiées doivent cependant rajouter une connexion entre le bus ROM et les registres généraux. C'est nécessaire pour charger une donnée constante depuis la mémoire ROM. Rappelons que la donnée constante est copiée dans un registre général, donc dans le chemin de données.
[[File:Architecture Harvard modifiée - implémentation du processeur.png|centre|vignette|upright=2|Architecture Harvard modifiée - implémentation du processeur]]
Avec les architectures Von Neumann, il y a un seul bus qui est relié à la fois au chemin de données et à l'unité de contrôle. Si le processeur lit une instruction, le bus doit être relié à l'unité de contrôle. Par contre, s'il accède à une donnée, il doit être relié au chemin de données (le bus d'adresse peut éventuellement être connecté au séquenceur, si celui-ci fournit l'adresse à lire). Il faut donc utiliser un paquet de multiplexeurs et de démultiplexeurs pour faire la connexion au bon endroit.
[[File:Architecture Von Neumann - implémentation du processeur.png|centre|vignette|upright=2|Architecture Von Neumann - implémentation du processeur]]
Une instruction se fait en deux temps : on charge l'instruction depuis la mémoire ROM, puis on l'exécute. Avec une architecture Harvard, tout cela se fait en un seul cycle d'horloge, vu que charger la ROM et accéder aux données peut se faire en même temps. Pas avec les architectures Von Neumann, qui doivent libérer le bus mémoire après avoir chargé une instruction. Elles n'ont pas le choix : elles chargent l'instruction lors d'un premier cycle d'horloge, puis l'exécutent lors du second.
Pour cela, ils incorporent un registre appelé le '''registre d'instruction''', qui mémorise l'instruction chargée. L'instruction est copiée dans ce registre lors du premier cycle, puis est utilisée lors du second cycle. Le registre permet de ne pas oublier l’instruction entre les deux cycles. Le registre d'instruction est obligatoire sur les architectures Von Neumann. En comparaison, il est facultatif sur les architectures Harvard. Elles peuvent en avoir un, pour des raisons techniques, mais ce n'est pas obligatoire.
[[File:Registre d'instruction.png|centre|vignette|upright=2|Registre d'instruction.]]
===Les architectures Von Neumann sont plus flexibles===
Sur les architectures Harvard, le processeur sait faire la distinction entre programme et données. Les données sont stockées dans la mémoire RAM, le programme est stocké dans la mémoire ROM. Les deux sont séparés, accédés par le processeur sur des bus séparés, et c'est ce qui permet de faire la différence entre les deux. Il est impossible que le processeur exécute des données ou modifie le programme. Du moins, tant que la mémoire qui stocke le programme est bien une ROM.
Par contre, sur les architectures Von Neumann, il est impossible de distinguer programme et données, sauf en ajoutant des techniques de protection mémoire avancées. La raison est qu'il est impossible de faire la différence entre donnée et instruction, vu que rien ne ressemble plus à une suite de bits qu'une autre suite de bits. Et c'est à l'origine d'un des avantages majeur de l'architecture Von Neumann : il est possible que des programmes soient copiés dans la mémoire RWM et exécutés dans celle-ci.
Un cas d'utilisation familier est celui de votre ordinateur personnel. Le système d'exploitation et les autres logiciels sont copiés en mémoire RAM à chaque fois que vous les lancez. Mais cet exemple implique un disque dur, ce qui rend les choses plus compliquées que prévu. Un autre exemple serait la compilation de code à la volée, mais il ne sera pas très parlant.
Un exemple plus adapté serait celui où la ROM mémorise un programme compressée dans la mémoire ROM, qui est décompressé pour être exécuté en mémoire RAM. Le programme de décompression est stocké en mémoire ROM et est exécuté au lancement de l’ordinateur. Cette méthode permet d'utiliser une mémoire ROM très petite et très lente, tout en ayant un programme rapide (si la mémoire RWM est rapide).
Il est aussi possible de créer des programmes qui modifient leurs propres instructions : cela s'appelle du '''code auto-modifiant'''. Ce genre de choses servait autrefois sur des ordinateurs rudimentaires, au tout début de l'informatique. À l'époque, les adresses à lire/écrire devaient être écrites en dur dans le programme, dans les instructions exécutées. Pour gérer certaines fonctionnalités des langages de programmation qui ont besoin d'adresses modifiables, comme les tableaux, on devait corriger les adresses au besoin avec du code auto-modifiant. De nos jours, le code automodifiant est utilisée occasionnellement pour rendre un programme indétectable dans la mémoire (les virus informatiques utilisent beaucoup ce genre de procédés).
L'impossibilité de séparer données et instructions est à l'origine de problèmes assez fâcheux. Il est parfaitement possible que le processeur charge et exécute des données, qu'il prend par erreur pour des instructions. C'est le cas quand des pirates informatiques arrivent à exploiter des bugs. Il arrive que des pirates informatiques vous fournissent des données corrompues, qui contiennent un virus ou un programme malveillant est caché dans les données. Les bugs en question permettent d'exécuter ces données, donc virus. Pour éviter cela, le système d'exploitation peut marquer certaines zones de la mémoire comme non-exécutable, c’est-à-dire que le système d'exploitation interdit d’exécution de quoi que ce soit qui est dans cette zone. Mais ce n'est pas parfait.
Toujours est-il que tout cela est impossible sur les architectures Harvard. Et ce serait très limitant. Imaginez : pas possible de lancer un programme depuis le disque dur ou une clé USB, le programme doit impérativement être dans une mémoire ROM, pas de compilation à la volée, etc. Que des techniques très utilisées dans l'informatique moderne. Malgré ses défauts, les architectures Von Neumann ne sont pas les plus utilisées pour rien. Les architectures Harvard sont concrètement utilisées uniquement dans l'informatique embarquée, sur des microcontrôleurs très spécifiques.
==Le bus de communication avec les entrées-sorties==
Le processeur, la mémoire et les entrées-sorties sont connectées par un ou plusieurs '''bus de communication'''. Ce bus n'est rien d'autre qu'un ensemble de fils électriques sur lesquels on envoie des zéros ou des uns. Pour communiquer avec la mémoire, il y a trois prérequis qu'un bus doit respecter : pouvoir sélectionner la case mémoire (ou l'entrée-sortie) dont on a besoin, préciser à la mémoire s'il s'agit d'une lecture ou d'une écriture, et enfin pouvoir transférer la donnée. Pour cela, on doit donc avoir trois bus spécialisés, bien distincts, qu'on nommera le bus de commande, le bus d'adresse, et le bus de donnée.
* Le '''bus de données''', sur lequel s'échangent les données entre les composants.
* Le '''bus de commande''' pour configurer la mémoire et les entrées-sorties.
* Le '''bus d'adresse''', facultatif, permet de préciser quelle adresse mémoire il faut lire/écrire.
Chaque composant possède des entrées séparées pour le bus d'adresse, le bus de commande et le bus de données. Par exemple, une mémoire RAM possédera des entrées sur lesquelles brancher le bus d'adresse, d'autres sur lesquelles brancher le bus de commande, et des broches d'entrée-sortie pour le bus de données. Précisons cependant que le bus de commande n'est pas exactement le même entre des mémoires RAM/ROM et des entrées-sorties.
[[File:Bus general schematic.svg|centre|vignette|upright=2|Contenu d'un bus, généralités.]]
===Le réseau d'interconnexion : généralités===
Reprenons où nous nous étions arrêté. Avant de voir les architectures Harvard et Von Neumann, nous avions dit que le processeur, les mémoires et les entrées-sorties sont reliées entre eux par un réseau d'interconnexion. Nous venons de voir qu'il est possible de mutualiser certains bus, notamment celui de la mémoire RAM et celui de la mémoire ROM. Mais il est possible de faire la même chose pour les entrées-sorties. Là encore, il est possible de regrouper le bus mémoire avec les bus pour les entrées-sorties. Voyons ce que cela implique.
{|
|[[File:Réseau d'interconnexion avec un processeur au centre.png|centre|vignette|upright=2|Réseau d'interconnexion avec une architecture Harvard.]]
|[[File:Réseau d'interconnexion avec un processeur au centre et une architecture Harvard.png|centre|vignette|upright=2|Interconnexions d'une architecture Von Neumann.]]
|}
Avant de poursuivre, nous devons préciser quelque chose d'important. Sur les ordinateurs modernes, les entrées-sorties peuvent accéder à la mémoire RAM. Les ordinateurs modernes intègrent des techniques de '''''Direct Memory Access''''' (DMA) qui permettent aux entrées-sorties de lire ou d'écrire en mémoire RAM. Les transferts DMA se font sans intervention du processeur. Ils permettent de copier un bloc de plusieurs octets, dans deux sens : de la mémoire RAM vers une entrée-sortie, ou inversement. Le DMA demande d'ajouter un circuit dédié sur la carte mère : le contrôleur DMA. Il effectue la copie d'un paquet d'octets de la RAM vers l'entrée-sortie ou dans l'autre sens.
[[File:Réseau d'interconnexion avec un processeur au centre, et direct memory access.png|centre|vignette|upright=2|Réseau d'interconnexion avec un processeur au centre, et direct memory access]]
===Les bus systèmes===
La première solution utilise un bus unique, celui-ci est appelé le '''bus système''', aussi appelé ''backplane bus''. Le bus système est connecté à la mémoire RAM, la mémoire ROM, au processeur, et aux entrées-sorties. Tous les composants présents dans l'ordinateur sont connectés à ce bus, sans exception. De tels bus avaient pour avantage la simplicité. Le processeur n'est connecté qu'à un seul bus, ce qui utilise peu de broches et économise des fils. La mutualisation des bus est totale, le câblage est plus simple, la fabrication aussi.
[[File:Architecture minimale d'un ordinateur.png|centre|vignette|upright=2|Architecture minimale d'un ordinateur.]]
Un bus système contient un bus d'adresse, de données et de commande. Un bus système se marie bien avec des entrées-sorties mappées en mémoire. La conséquence est que le bus d'adresse ne sert pas que pour l'accès à la mémoire RAM/ROM, mais aussi pour l'accès aux entrées-sorties. Il y a moyen d'implémenter un système d'adresse séparés avec, mais c'est pas l'idéal.
[[File:Architecture Von Neumann avec les bus.png|centre|vignette|upright=2|Architecture Von Neumann avec les bus.]]
Un bus système n'a pas de limitations quant aux échanges de données. Le processeur peut communiquer directement avec les mémoires et les entrées-sorties, les entrées-sorties peuvent communiquer avec la mémoire RAM, etc. Notamment, un bus système peut implémenter le ''Direct Memory Access''. Il suffit juste de connecter un contrôleur DMA sur le bus système. Le contrôleur DMA est considéré comme une entrée-sortie, ses registres sont mappés en mémoire et sont donc accessibles directement par le processeur.
[[File:Bus système avec controleur DMA.png|centre|vignette|upright=2|Bus système avec contrôleur DMA.]]
Si on suit la définition à la lettre, un bus système est systématiquement une architecture Von Neumann, vu que la mémoire ROM et la mémoire RAM sont reliées sur le bus système. La conséquence est que les circuits de décodage d'adresse sont présents. Ils sont toujours sur la carte mère, et sont plus ou moins à côté du bus système. Cependant, le décodage d'adresse est parfois étendu pour tenir compte des entrées-sorties.
Les entrées-sorties soudées sur la carte mère ont elles aussi des entrées ''Chip Select'' ou quelque chose de similaire. Le décodage d'adresse peut alors les activer ou les désactiver suivant l'adresse envoyée sur le bus d'adresse. C'est ce qui arrive quand le processeur écrit dans un registre d’interfaçage : il envoie l'adresse de ce registre sur le bus d'adresse, le circuit de décodage d'adresse active seulement l'entrée-sortie associée. Il faut noter que ce n'est pas systématique, il existe des techniques pour se passer de décodage d'adresse. Mais nous en reparlerons dans le chapitre sur les bus de communication.
[[File:Chipselectfr.png|centre|vignette|upright=1.5|Exemple détaillé.]]
Les bus systèmes sont certes très simples, mais ils ont aussi des désavantages. Par exemple, il faut éviter que le processeur et les entrées-sorties se marchent sur les pieds, ils ne peuvent pas utiliser le bus en même temps. De tels conflits d'accès au bus système sont fréquents et ils réduisent la performance, comme on le verra dans le chapitre sur les bus. De plus, un bus système a le fâcheux désavantage de relier des composants allant à des vitesses très différentes : il arrivait fréquemment qu'un composant rapide doive attendre qu'un composant lent libère le bus. Le processeur était le composant le plus touché par ces temps d'attente.
Elle était utilisée sur les tout premiers ordinateurs, pour sa simplicité. Elle était parfaitement adaptée aux anciens composants, qui allaient tous à la même vitesse. De nos jours, les ordinateurs à haute performance ne l'utilisent plus trop, mais elle est encore utilisée sur certains systèmes embarqués, en informatique industrielle dans des systèmes très peu puissants.
===Les bus d'entrées-sorties===
Les bus systèmes ont de nombreux problèmes, ce qui fait que d'anciens ordinateurs faisaient autrement. À la place d'un bus système unique, ils utilisent un bus séparé pour les mémoires, et un autre séparé pour les entrées-sorties. Le bus spécialisé pour la mémoire est appelé le '''bus mémoire''', l'autre bus est appelé le '''bus d'entrées-sorties'''. Le bus mémoire est généralement relié à la fois à la mémoire RAM et à la mémoire ROM, les exceptions ne sont pas rares, cependant.
[[File:Bus mémoire séparé du bus pour les IO.png|centre|vignette|upright=2|Bus mémoire séparé du bus pour les IO]]
Les bus d'entrée-sorties peuvent être spécialisés et simplifiés. Par exemple, ils peuvent avoir un bus de commande différent de celui de la mémoire, qui utilise nettement moins de fils. Le bus d'adresse peut aussi être réduit, et utiliser des adresses plus courtes que celles du bus mémoire. Les bus de données peuvent aussi être de taille différentes. Il est ainsi possible d'avoir un bus mémoire capable de lire/écrire 64 bits à la fois, alors que la communication avec les entrées-sorties se fait octet par octet ! En général, les bus d'entrée-sortie sont assez petits, ils ont une taille de 8 ou 16 bits, même si le bus mémoire est plus grand. Cela permet de ne pas gaspiller trop de broches. Ajouter un bus d'entrée-sortie n'est donc pas très gourmand en broches et en fils.
: Il est en théorie possible d'avoir une fréquence différente pour les deux bus, avec un bus mémoire ultra-rapide et un bus pour les entrées-sorties est un bus moins rapide. Mais il faut que le processeur soit prévu pour, et c'est très rare.
Niveau performances, le processeur peut théoriquement accéder à la mémoire en attendant qu'une entrée/sortie réponde, mais il faut que le processeur soit prévu pour, et ce n'est pas de la tarte. Par contre, cela implique d'avoir des adresses séparées pour les registres d’interfaçage et la mémoire. En clair : pas d'entrée-sortie mappée en mémoire ! Un autre problème est que les entrées-sorties ne peuvent pas communiquer avec la mémoire directement, elles doivent passer par l'intermédiaire du processeur. En clair : pas de ''Direct Memory Access'' ! Les deux sont des défauts rédhibitoires pour les programmeurs système, notamment pour ceux qui codent les pilotes de périphériques.
Pour résumer, les défauts sont assez problématiques : pas d'entrées-sorties mappées en mémoire, pas de ''Direct Memory Access'', économie de broches limitée. Les deux premiers sont des défauts majeurs, qui font que de tels bus ne sont pas utilisés dans les ordinateurs modernes. À la place, ils utilisent une troisième solution, distincte des bus systèmes et des bus d'entrée-sorties.
===Les bus avec répartiteur===
Il existe une méthode intermédiaire, qui garde deux bus séparés pour la mémoire et les entrées-sorties, mais élimine les problèmes de brochage sur le processeur. L'idée est d'intercaler, entre le processeur et les deux bus, un '''circuit répartiteur'''. Il récupère tous les accès et distribue ceux-ci soit sur le bus mémoire, soit sur le bus des périphériques. Le ou les répartiteurs s'appellent aussi le '''''chipset''''' de la carte mère.
C'était ce qui était fait à l'époque des premiers Pentium. À l'époque, la puce de gestion du bus PCI faisait office de répartiteur. Elle mémorisait des plages mémoires entières, certaines étant attribuées à la RAM, les autres aux périphériques mappés en mémoire. Elles utilisaient ces plages pour faire la répartition.
[[File:IO mappées en mémoire avec séparation des bus.png|centre|vignette|upright=2|IO mappées en mémoire avec séparation des bus]]
Niveau adresses des registres d'interfacage, il est possible d'avoir soit des adresses unifiées avec les adresses mémoire, soit des adresses séparées.
L'usage d'un répartiteur ne pose pas de problèmes particuliers pour implémenter le DMA. La seule contrainte est que le contrôleur DMA soit intégré dans le répartiteur. Les échanges entre IO et mémoire passent par le répartiteur, qui fait le pont entre bus mémoire et bus des IO.
[[File:Implémentation du DMA avec un répartiteur.png|centre|vignette|upright=2|Implémentation du DMA avec un répartiteur]]
==Les microcontrôleurs et ''system on chip''==
Parfois, on décide de regrouper la mémoire, les bus, le CPU et les ports d'entrée-sortie dans un seul circuit intégré, un seul boitier. L'ensemble forme alors ce qu'on appelle un '''''System on Chip''''' (système sur une puce), abrévié en SoC. Le nom est assez explicite : un SoC comprend un système informatique complet sur une seule puce de silicium, microprocesseurs, mémoires et périphériques inclus. Ils incorporent aussi des ''timers'', des compteurs, et autres circuits très utiles.
[[File:ARMSoCBlockDiagram.svg|centre|vignette|upright=2|SoC basé sur un processeur ARM, avec des entrées-sorties typiques de celles d'un µ-contrôleur. Le support du bus CAN, d'Ethernet, du bus SPI, d'un circuit de PWM (génération de signaux spécifiques), de convertisseurs analogique-digital et inverse, sont typiques des µ-contrôleurs.]]
Le terme SoC regroupe des circuits imprimés assez variés, aux usages foncièrement différents et à la conception distincte. Les plus simples d’entre eux sont des microcontrôleurs, qui sont utilisés pour des applications à base performance. Les plus complexes sont utilisés pour des applications qui demandent plus de puissance, nous les appellerons SoC haute performance.
La relation entre SoC et microcontrôleurs est assez compliquée à expliquer, la terminologie n'est pas clairement établie. Il existe quelques cours/livres qui séparent les deux, d'autres qui pensent que les deux sont très liés. Dans ce cours, nous allons partir du principe que tous les systèmes qui regroupent processeur, mémoire et quelques périphériques/entrées-sorties sont des SoC. Les microcontrôleurs sont donc un cas particulier de SoC, en suivant cette définition.
===Les microcontrôleurs===
Les '''microcontrôleurs''' sont des composants utilisés dans l'embarqué ou d'informatique industrielle. Leur nom trahit leur rôle. Ils sont utilisés pour contrôler de l'électroménager, des chaines de fabrication dans une usine, des applications robotiques, les alarmes domestiques, les voitures. De manière générale, on les trouve dans tous les systèmes dits embarqués et/ou temps réel. Ils ont besoin de s'interconnecter à un grand nombre de composants et intègrent pour cela un grand nombre d'entrée-sorties. Les microcontrôleurs sont généralement peu puissants, et doivent consommer peu d'énergie/électricité.
Fait amusant, on en trouve dans certains périphériques informatiques. Par exemple, les anciens disques durs intégraient un microcontrôleur qui contrôlait plusieurs moteurs/ Les moteurs pour faire tourner les plateaux magnétiques et les moteurs pour déplacer les têtes de lecture/écriture étaient commandés par ce microcontrôleur. Comme autre exemple, les claviers d'ordinateurs intègrent un microcontrôleur connecté aux touches, qui détecte quand les touches sont appuyées et qui communique avec l'ordinateur. Nous détaillerons ces deux exemples dans les chapitres dédiés aux périphériques et aux disques durs, tout deviendra plus clair à ce moment là. La majorité des périphériques ou des composants internes à un ordinateur contiennent des microcontrôleurs.
Un microcontrôleur tend à intégrer des entrées-sorties assez spécifiques, qu'on ne retrouve pas dans les SoC destinés au grand public. Un microcontrôleur est typiquement relié à un paquet de senseurs et son rôle est de commander des moteurs ou d'autres composants. Et les entrées-sorties intégrées sont adaptées à cette tâche. Par exemple, ils tendent à intégrer de nombreux convertisseurs numériques-analogiques pour gérer des senseurs. Ils intègrent aussi des circuits de génération de signaux PWM spécialisés pour commander des moteurs, le processeur peut gérer des calculs trigonométriques (utiles pour commander la rotation d'un moteur), etc.
[[File:C8051F340-9 A B C D.png|centre|vignette|upright=2|Exemple d'entrées-sorties intégrées à un microcontroleur.]]
En plus des entrées-sorties intégrées, les microcontrôleurs ont souvent des '''ports d'entrées-sorties''' banalisés, à savoir qu'on peut brancher n'importe quoi dessus. Il était possible de brancher un capteur de température, un moteur à commander, un port série, un port parallèle, un écran, un clavier, une souris, peu importe. Les ports font souvent un octet et ils sont généralement reliées directement ou indirectement au processeur. Le logiciel qui s'exécute sur le processeur décide quoi envoyer sur des broches et comment interprète ce qui est reçu dessus.
Les ports banalisés de ce type sont parfois appelés des '''GPIO''', abréviation de ''General Purpose Input/Output'', mais nous utiliserons le terme de ''port I/O''. Un port regroupe plusieurs broches qui peuvent être utilisés à volonté. C'est le logiciel qui s'exécute sur le processeur qui décide de la fonction de broches. Un port IO peut fonctionner soit en tant qu'entrée, soit en tant que sortie. Il est possible de changer de sens en cours de fonctionnement, pour passer d'une entrée à une sortie ou inversement.
[[File:Afficheurs7seg.png|centre|vignette|upright=2|Exemple d'utilisation d'un port I/O. le port est connecté à un afficheur LCD dit 7-segments. Les 8 entrées de cet afficheur sont connectées à un port I/O d'un octet.]]
===Les SoC haute performance===
Les SoC les plus performants sont actuellement utilisés dans les téléphones mobiles, tablettes, ''Netbook'', ''smartphones'', ou tout appareil informatique grand public qui ne doit pas prendre beaucoup de place. La petite taille de ces appareils fait qu'ils gagnent à regrouper toute leur électronique dans un circuit imprimé unique. Mais les contraintes font qu'ils doivent être assez puissants. Ils incorporent des processeurs assez puissants, surtout ceux des ''smartphones''. C'est absolument nécessaire pour faire tourner le système d'exploitation du téléphone et les applications installées dessus.
Niveau entrées-sorties, ils incorporent souvent des interfaces WIFI et cellulaires (4G/5G), des ports USB, des ports audio, et même des cartes graphiques pour les plus puissants d'entre eux. Les SoC incorporent des cartes graphiques pour gérer tout ce qui a trait à l'écran LCD/OLED, mais aussi pour gérer la caméra, voire le visionnage de vidéo (avec des décodeurs/encodeurs matériel). Par exemple, les SoC Tegra de NVIDIA incorporent une carte graphique, avec des interfaces HDMI et VGA, avec des décodeurs vidéo matériel H.264 & VC-1 gérant le 720p. Pour résumer, les périphériques sont adaptés à leur utilisation et sont donc foncièrement différents de ceux des microcontrôleurs.
[[File:SOMblk.png|centre|vignette|upright=3|Exemple de SoC.]]
Un point important est que les processeurs d'un SoC haute performance sont... performants. Ils sont le plus souvent des processeurs de marque ARM, qui sont différents de ceux utilisés dans les PC fixe/portables grand public qui sont eux de type x86. Nous verrons dans quelques chapitres en quoi consistent ces différences, quand nous parlerons des jeux d'instruction du processeur. Autrefois réservé au monde des PCs, les processeurs multicœurs deviennent de plus en plus fréquents pour les SoC de haute performance. Il n'est pas rare qu'un SoC incorpore plusieurs cœurs. Il arrive même qu'ils soient foncièrement différents, avec plusieurs cœurs d'architecture différente.
La frontière entre SoC haute performance et microcontrôleur est de plus en plus floue. De nombreux appareils du quotidien intègrent des SoC haute performance, d'autres des microcontrôleurs. Par exemple, les lecteurs CD/DVD/BR et certains trackers GPS intègrent un SoC ou des processeurs dont la performance est assez pêchue. À l'opposé, les systèmes domotiques intègrent souvent des microcontrôleurs simples. Malgré tout, les deux cas d'utilisation font que le SoC/microcontrôleur est connecté à un grand nombre d'entrées-sorties très divers, comme des capteurs, des écrans, des LEDs, etc.
[[File:GPS tracker Hardware Architecture.png|centre|vignette|upright=2|Hardware d'un tracker GPS.]]
==Étude de l'architecture de quelques consoles de jeu==
Après avoir vu la théorie, nous allons voir des exemples réels d'ordinateurs. Dans ce qui suit, nous allons voir des ordinateurs qui collent assez bien à l''''architecture de base''' vue plus haut, avec un CPU, une RAM et une ROM, quelques entrées-sorties. Tous les ordinateurs modernes, mais aussi dans les smartphones, les consoles de jeu et autres, utilisent une architecture grandement modifiée et améliorée, avec un grand nombre de périphériques, des disques durs/SSD, un grand nombre de mémoires différentes, etc.
Il pourrait sembler pertinent d’étudier des microcontrôleurs ou des ''System On Chip'', en premier lieu. Mais nous éviterons soigneusement de tels systèmes pour le moment. La raison est qu'ils ont un grand nombre d'entrées-sorties, qui sont peu familières. Attendez-vous à avoir près d'une vingtaine ou centaine d'entrée-sorties différentes pour de tels systèmes. Le tout est très complexe, bien trop pour un premier exemple.
À la place, nous allons voir précisément des exemples plus simples : les premiers PC, et des consoles de jeu 8 et 16 bits. Bien que ce soit des systèmes très simples, ils sont cependant plus complexes que l'architecture de base. Et leur avantages/désavantages sont un peu inverse l'un de l'autre. Si on devait résumer les différences, on aurait ceci :
* Les PC ont plus d'entrées-sorties que les consoles, bien que nettement moins que pour les microcontrôleurs/SoC.
* Les PC utilisent des disques durs, les consoles font avec soit des cartouches de jeu, soit des CD/DVD.
* Les PC utilisent des cartes électroniques séparées pour le son et l'écran, les consoles utilisent des circuits soudés sur la carte mère, qui sont souvent des co-processeurs.
* Les PC ont une mémoire ROM soudées sur la carte mère, les consoles 8 bits font sans.
Les PC et micro-ordinateurs ont plus d'entrées-sorties que les consoles. Même si on mets de côté les périphériques, ils ont aussi beaucoup d'entrées-sorties soudées sur la carte mère. En comparaison, les consoles de jeu 8/16 bits se débrouillent avec : une cartouche de jeu et une manette en entrée, une sortie vidéo et une sortie son.
Un autre point important est l'absence de disque dur ou de lecteur CD. La présence d'un disque dur ou d'un lecteur CD/DVD complexifie tout de suite l'architecture des PC. Il faut leur réserver un bus dédié ou les connecter à un bus système, cela demande d'ajouter des circuits sur la carte mère, etc. Et surtout, il faut expliquer comment l'ordinateur exécute des programmes, ce qui demande de parler de l'interaction avec le disque dur et la ROM du BIOS. Rien de tout cela sur les consoles de jeu 8 et 16 bits. Elles utilisent à la place des cartouches de jeu, qui intègrent une mémoire ROM, pour mémoriser les données du jeu, voire son code. Pas besoin de parler des mémoires de stockage, on est beaucoup plus proche de l'architecture de base avec une ROM unique.
Les PC utilisent des cartes électroniques à brancher sur la carte mère pour alimenter l'écran et les hauts-parleurs/casques, alors que les consoles de jeu utilisent des co-processeurs dédiés pour le son et les graphismes. Nous avons déjà expliqué ce que sont les co-processeurs plus haut, aussi les co-processeurs des consoles nous paraitrons familiers. On n'a pas à s’embêter à expliquer ce que sont les cartes d'extension, les bus associés et tout ce qui va avec, cela peut être retardé pour la section sur l'architecture des PC.
Par contre, n'allez pas croire que tout est rose avec les consoles 8/16 bits. Il y a quelques différences qui font qu'elles sont plus complexes qu'un PC sur certains points. La gestion de la cartouche de jeu est notamment un peu subtile à comprendre, bien que ce soit bien plus simple à comprendre qu'un système avec un disque dur. Les cartouches de jeu intègrent une mémoire ROM, pour mémoriser les données du jeu, voire son code. Et le processeur doit exécuter le code depuis cette mémoire ROM. La conséquence est que les consoles 8/16 bits utilisent une architecture Harvard, avec un bus relié à la cartouche pour lire les instructions. Mais si ce n'était que ça... Les cartouches mémorisent aussi les données pour les graphismes, ce qui fait que le co-processeur vidéo doit lui aussi lire la cartouche pour récupérer ces données...
===L'architecture de la TurboGraphX-16===
La console PC Engine, aussi appelée TurboGraphX, est une ancienne console 8 bits. Elle contient un processeur 65C02, 8 kibioctets de RAM, un port manettes, une carte son et une carte vidéo. La '''carte son''' est le composant qui s'occupe de commander les haut-parleurs et de gérer tout ce qui a rapport au son. La '''carte graphique''' est le composant qui est en charge de calculer les graphismes, tout ce qui s'affiche à l'écran. Sur cette console, les cartes son et graphique ne sont PAS des co-processeurs, ce sont des circuits électroniques dits fixes. C'est totalement différent de ce qu'on a sur les consoles modernes, aussi le préciser est important.
Bien que la carte graphique ne soit pas un processeur, elle a 64 kibioctets de RAM rien que pour elle. La RAM en question est séparée de la RAM normale, c'est un circuit intégré séparé. Et c'est un cas très fréquent, qui reviendra par la suite. La majeure partie des cartes graphiques dispose de leur propre '''mémoire vidéo''', totalement réservée à la carte graphique. La RAM vidéo est connectée à la carte graphique via un bus séparé. Le processeur est souvent connecté à ce bus, afin de pouvoir écrire des données dedans, mais ce n'est pas le cas ici.
[[File:Architecture de la PC Engine, aussi appelée TurboGrafx-16.png|centre|vignette|upright=2.5|Architecture de la PC Engine, aussi appelée TurboGrafx-16]]
L'architecture de la console était particulièrement simple. Le processeur était le centre de l'architecture, tout était connecté dessus. Il y a un bus pour la cartouche de jeu, un autre pour la RAM, un autre pour les manettes, un autre pour carte son, et un dernier pour la carte graphique. Le fait d'avoir un bus par composant est assez rare et ce n'est le cas ici que parce des conditions particulières sont remplies. Déjà, il y a peu d'entrée-sorties. Ensuite, les bus font tous 8 bits, vu que le processeur est un CPU 8 bits. Avec 5 connexions de 8 bits, le tout utilise 40 broches, ce qui est beaucoup, mais totalement gérable. Par contre, les choses changerons pour les autres consoles.
Au final, l'organisation des bus peut s'expliquer avec ce qu'on a vu dans la section sur les bus de communication. La console utilise une architecture Harvard, car la ROM et la RAM utilisent des bus différents. De plus, il y a des bus dédiés aux entrées-sorties, séparés des bus mémoire. Enfin, la carte graphique a droit à ses propres bus pour lire dans la cartouche et dans sa RAM vidéo dédiée.
===L'architecture de la console de jeu NES===
Maintenant, nous allons voir la console de Jeu Famicom, aussi appelée la NES en occident. Elle a une architecture centrée sur un processeur Ricoh 2A03, similaire au processeur 6502, un ancien processeur autrefois très utilisé et très populaire. Le processeur est associé à 2 KB de mémoire RAM.
Sur certaines cartouches, on trouve une RAM utilisée pour les sauvegardes, qui est adressée par le processeur directement. Première variation par rapport à l'architecture de la console précédente : l'ajout de la RAM pour les sauvegardes dans les cartouches.
Niveau carte graphique, une différence importante est que la carte graphique est connectée à la cartouche de jeu via un autre bus, afin de pouvoir lire les sprites et textures du jeu dans la cartouche.
[[File:Architecture de la NES.png|centre|vignette|upright=2.5|Architecture de la NES]]
La différence avec l'architecture précédente est que des bus ont été fusionnés. Comme dit plus haut, le système utilise une architecture Harvard, vu que la ROM est dans la cartouche, alors que la RAM est soudée à la carte mère. Par contre, la Famicon utilise un bus dédié aux entrées-sorties. Il est utilisé pour la carte son et la carte graphique, seules les manettes sont sur un bus à part. Ce qui fait qu'on devrait plutôt parler de bus de sorties, mais passons... L'essentiel est qu'on n'est plus tout à fait dans le cas de la console précédente, avec un bus par composant.
===L'architecture de la SNES===
L'architecture de la SNES est illustrée ci-dessous. Les changements pour le processeur et la RAM sont mineurs.La RAM a augmenté en taille et passe à 128 KB. Pareil pour la RAM de la carte vidéo, qui passe à 64 KB. Par contre, on remarque un changement complet au niveau des bus, de la carte graphique et de la carte son.
[[File:Architecture de la SNES.png|centre|vignette|upright=2|Architecture de la SNES]]
La console utilise un '''bus système unique''', sur lequel tout est connecté : ROM, RAM, entrées-sorties, etc. La seule exception est pour les manettes, qui sont encore connectées directement sur le processeur, via un bus séparé. La transition vers un bus système s'explique par le fait que la console est maintenant de 16 bits, ce qui fait que les bus doivent être plus larges. Le processeur adresse des mémoires RAM et ROM plus grandes, ce qui double la taille de leurs bus. De plus, les entrées-sorties aussi ont besoin d'un bus plus large. Le processeur n'ayant pas un nombre illimité de broches, la seule solution est de fusionner les bus en un seul bus système.
Un autre changement est que la carte graphique est maintenant composée de deux circuits séparés. Encore une fois, il ne s'agit pas de coprocesseurs, mais de circuits non-programmables. Par contre, la carte son est remplacée par deux coprocesseurs audio ! De plus, les deux processeurs sont connectés à une mémoire RAM dédiée de 64 KB, comme pour la carte graphique. L'un est un processeur 8 bits (le DSP), l'autre est un processeur 16 bits.
Un point très intéressant : certains jeux intégraient des coprocesseurs dans leurs cartouches de jeu ! Par exemple, les cartouches de Starfox et de Super Mario 2 contenait un coprocesseur Super FX, qui gérait des calculs de rendu 2D/3D. Le Cx4 faisait plus ou moins la même chose, il était spécialisé dans les calculs trigonométriques, et diverses opérations de rendu 2D/3D. En tout, il y a environ 16 coprocesseurs d'utiliser et on en trouve facilement la liste sur le net. La console était conçue pour, des pins sur les ports cartouches étaient prévues pour des fonctionnalités de cartouche annexes, dont ces coprocesseurs. Ces pins connectaient le coprocesseur au bus des entrées-sorties. Les coprocesseurs des cartouches de NES avaient souvent de la mémoire rien que pour eux, qui était intégrée dans la cartouche.
===L'architecture de la Megadrive et de la néo-géo===
Passons maintenant à la console de jeu Megadrive, une console 16 bits. Elle a une architecture similaire à celle de la néo-géo, une autre console bien plus puissante, sorti à peu près en même temps. Elles intègrent deux processeurs : un Motorola 68000 qui sert de processeur principal, un Z80 qui sert de processeur dédié à l'audio. Le Z80 et le Motorola 68000 étaient deux processeurs très populaires à l'époque. Le Z80 est une sorte de version améliorée de l'Intel 8088 utilisé sur les anciens PC et de nombreuses consoles utilisaient des Z80 comme processeur principal. Il était familier pour les programmeurs de l'époque, pour son cout réduit, sa bonne disponibilité, et bien d'autres avantages liés à sa production de masse.
Le Z80 est utilisé comme co-processeur audio. Il commande un synthétiseur sonore, et est relié à sa propre mémoire, distincte de la mémoire principale. Le MC68000 est le processeur principal et a une relation maitre-esclave avec le Z80 : le MC68000 envoie des commandes au Z80, mais la communication ne va pas dans l'autre sens.
Le Motorola 68000 était un processeur 16 bits, alors que le Z80 est un processeur 8 bits. Et cette différence fait que l'on ne peut pas connecter directement les deux sur le même bus, ou du moins pas facilement. La solution retenue est d'utiliser deux bus séparés : un bus de 16 bits connecté au 68000, un bus de 8 bits connecté au Z80. Le premier bus est un bus système sur lequel est connecté le 68000, 64 kibioctets de RAM, la cartouche de jeu, et la carte graphique. Le second bus est un bus de 8 bits, plus court, relié au Z80, à un synthétiseur sonore, et 8 kibioctets de RAM
Les deux bus sont connectés à un '''''chipset''''', un circuit répartiteur, qui fait le pont entre les deux bus. Les manettes sont connectées sur le ''chipset''. Il contient un registre de 8 bits, dans lequel le MC68000 peut écrire dedans à sa guise, le registre étant adressable par le processeur. Lorsque le MC68000 écrit une valeur dedans, cela déclenche l’exécution automatique d'un programme pré-déterminé sur le Z80.
: Pour ceux qui savent ce qu'est une interruption, les valeurs écrites dans ce registre sont des numéros d'interruption, qui indiquent quelle routine d'interruption exécuter.
[[File:Architecture de la Megadrive et de la Néogeo.png|centre|vignette|upright=2.5|Architecture de la Megadrive et de la Néogeo]]
Cet exemple nous montre que les bus systèmes sont certes très simples, mais aussi inflexibles. Ils fonctionnent bien quand les composants branchés dessus sont tous des composants 8 bits, ou sont tous de 16 bits, ou tous 32 bits. Mais dès qu'on mélange composants 8, 16, 32 ou 64 bits, les choses deviennent plus compliquées. Il est alors préférable d'utiliser des bus séparés, avec des répartiteurs pour faire le pont entre les différents bus. Et nous verrons que le problème s'est posé lui aussi sur les PC.
===L'architecture des anciennes consoles Playstation : beaucoup de co-processeurs===
Les consoles que nous venons d'aborder étaient des consoles 8 ou 16 bits. A partir des consoles 32 bits, leur architecture s'est rapprochée de celle des PC, avec un usage plus complexes de répartiteurs. La XBOX était très semblable à un PC : le processeur était un Pentium 3 modifié, la carte graphique était une Geforce 3 modifiée, les 64 mébioctets de RAM était la même mémoire DDR que celle des PC, le répartiteur secondaire était un ''chipset'' nForce de NVIDIA, etc. Mais les Playstation 1, 2 et 3 se distinguent de leur contemporains. Elles disposent de très nombreux co-processeurs, qui sont en plus très variés.
La Playstation 1 a été une des premières console à utiliser les CD-ROM comme support de stockage, en remplacement des cartouches. La conséquence est que la console contient une mémoire ROM, soudée à la carte mère, de 512 kibioctets. Elle contient aussi 2 mébioctets de RAM, une carte graphique avec 1 mébioctet de mémoire vidéo, un processeur, et de quoi gérer les périphériques. Il y a un co-processeur audio spécialisé, avec 512 kibioctets de RAM, ce qui nous est familier. Par contre, les autres co-processeurs ne le sont pas.
Déjà, le lecteur de CD-ROM est associé à des circuits sur la carte mère, il y a tout un sous-système dédié au lecteur de CD. Il y a un contrôleur qui sert d'interface avec le lecteur proprement dit, mais aussi deux co-processeurs audio et 32 kibioctets de RAM. Les co-processeurs audio servent à lire des CD sans trop utiliser le second co-processeur audio, ils lui servent de complément.
Ensuite, le processeur incorpore plusieurs cœurs, avec un cœur principal et plusieurs co-processeurs. Le premier est un co-processeur système, qui est utilisé pour gérer la mémoire cache intégrée au processeur, pour des fonctionnalités appelées interruptions et exceptions, ainsi que pour configurer le processeur. Le second est un co-processeur arithmétique spécialisé dans les calculs en virgule flottante, très importants pour le rendu 3D. Enfin, il y a un décodeur vidéo, qui n'est pas un co-processeur, mais un circuit non-programmable, spécialisé dans le décodage vidéo. De nos jours, ce circuit aurait été intégré dans la carte graphique, mais il était intégré dans le processeur sur la Playstation 2.
Pour le reste, le processeur est la figure centrale de la console. Il est connecté à 4 bus : un pour la RAM, un pour la carte graphique, un pour les manettes, un autre pour le reste. Le dernier bus est connecté au système audio et au système pour le lecteur CD. Ce serait un bus d'entrée-sortie, s'il n'était pas connecté à la mémoire ROM. Vous avez bien lu : la mémoire ROM est reliée au bus d'entrée-sortie.
[[File:Architecture de la Playstation.png|centre|vignette|upright=2.5|Architecture de la Playstation]]
La Playstation 2 est composé d'un processeur, couplé à 32 Mébioctets de RAM, et d'un paquet de co-processeurs. Plus de co-processeurs que la PS1. Le processeur principal n'est pas la même que celui de la PS1, mais il a une architecture similaire. Il intègre un décodeur vidéo sur le même circuit intégré, ainsi que deux co-processeur. Les co-processeurs ne sont cependant pas les mêmes.
Le co-processeur système disparait et est remplacé par un second co-processeur arithmétique. Les deux co-processeurs arithmétiques sont spécialisés dans les nombres flottants, avec quelques différences entre les deux. Par exemple, le second co-processeur gérait des calculs trigonométriques, des exponentielles, des logarithmes, et d'autres fonctions complexes du genre ; mais pas le premier co-processeur. Ils sont reliés à 4 kibioctets de RAM pour le premier, 16 kibioctets de RAM pour le second ; qui sont intégrées dans le processeur et non-représentés dans le diagramme ci-dessous.
La PS2 intègre aussi un co-processeur d'entrées-sorties. Pour information, il s'agit du processeur principal de la Playstation 1, qui est ici utilisé différemment, suivant que l'on place un jeu PS1 ou PS1 dans la console. Si on met un jeu PS1, il est utilisé pour émuler la Playstation 1, afin de faire tourner le jeu PS1 sur la PS2. Si on met un jeu PS2, il est utilisé comme co-processeur d'entrée-sortie et fait l'interface entre CPU et entrées-sorties. Il est relié à 2 mébioctets de RAM, soit exactement la même quantité de mémoire que la Playstation 1.
Tous les périphériques sont connectés au co-processeur d'entrées-sortie. Pour cela, le co-processeur d'entrées-sortie est relié à deux bus dédiés aux périphériques. Le premier bus est relié aux manettes, aux ports USB et aux ports pour cartes mémoires. Le second bus est relié à la carte son, la carte réseau, le lecteur DVD, et un port PCMIA. Notons que la carte son intègre un co-processeur audio, qui n'est pas représenté dans le diagramme ci-dessous.
[[File:Playstation 2 architecture.png|centre|vignette|upright=2.5|Playstation 2 architecture]]
==L'architecture des PC et son évolution==
Après avoir vu les consoles, nous allons maintenant voir les anciens PC, des années 80 ou 90. Le tout premier PC était techniquement l''''IBM PC'''. Par la suite, de nombreux ordinateurs ont tenté de reproduire l'IBM PC originel, avec parfois quelques modifications mineures. De tels ordinateurs ''IBM PC compatibles'', ont été très nombreux, pour des raisons diverses. Le fait d'utiliser des composants banalisés, facilement disponibles, ainsi qu'une bonne documentation de l'IBM PC originel, a grandement aidé. Les IBM PC compatibles ont progressivement évolué pour donner les PC actuels. L'IBM PC compatible a donné naissance à de nombreux standards divers.
===L'IBM PC originel et l'IBM PC XT===
[[File:IBM PC XT 02.jpg|vignette|IBM PC XT.]]
Nous allons commencer par voir l'IBM PC originel, et son successeur : l'IBM Personal Computer XT. Nous les appelerons tous deux l'IBM PC. L'IBM PC utilisait un processeur Intel 8088, qui était un processeur 8 bits. Ils utilisaient un bus système unique, appelé le '''bus XT'''. Le bus système allait à 4.77 MHz, soit la même fréquence que le processeur. C'était un bus de 8 bits, ce qui collait parfaitement avec les processeurs 8 bits commercialisés par Intel à l'époque.
L'IBM PC comprenait une mémoire ROM avec de quoi faire fonctionner le PC. La ROM en question contenait un programme minimal, appelé le '''BIOS''', sans lequel le PC ne fonctionnait pas du tout. Il servait de base pour le système d'exploitation et MS-DOS ne fonctionnait pas sans elle. De nos jours, son rôle est plus limité : sans elle, le PC ne démarre pas. Mais nous détaillerons cela dans le prochain chapitre.
En plus de la ROM pour le BIOS, l'IBM PC avait quatre mémoires ROM dédiée au langage de programmation BASIC. Lorsque le PC démarrait, il ne bootait pas un système d'exploitation, mais lançait l'interpréteur pour le langage BASIC. De nos jours, ce serait l'équivalent d'un ordinateur qui boote directement sur du Python, à savoir la console Python que vous avez peut-être déjà utilisé si vous avez testé Python. Ceux qui ont déjà touché à un ordinateur de l'époque savent ce que ca veut dire, mais c'est malheureusement très difficile à expliquer sans ce genre d'expérience. Toujours est-il que c'était une sorte de norme à l'époque
: les ordinateurs bootaient généralement sur un interpréteur BASIC.
[[File:XT Bus pins.svg|vignette|Connecteur du bus XT.]]
Les PC étaient conçus pour qu'on branche des '''cartes d'extension''', à savoir des cartes électroniques qu'on branchait sur la carte mère, à l'intérieur du PC. Les cartes d'extension de l'époque étaient surtout des cartes son ou des cartes graphiques, mais aussi des cartes pour brancher des péripéhriques. par exemple, on pouvait ajouter deux cartes graphiques dans l'IBM PC originel : l'''IBM Monochrome Display Adapter'' et/ou la ''IBM Color Graphics Adapter''. De nos jours, les cartes son sont intégrées à la carte mère, mais les cartes graphiques sont restées des cartes d'extension.
Les cartes d'extension étaient branchées sur un '''connecteur XT''', qui était directement relié au bus XT. Le connecteur XT est illustré ci-contre, mais ne vous en souciez pas trop pour le moment. La carte mère de l'IBM PC avait 5 connecteurs de ce type, qu'on pouvait peupler avec autant de cartes d'extension. L'IBM Personal Computer XT est passé à 8 connecteurs XT, soit trois de plus.
Pour ce qui est des périphériques, l'IBM PC avait plusieurs connecteurs : un port série, un port parallèle, un port pour le clavier, et un port pour un lecteur cassette. Le clavier et le lecteur cassette étaient connectés directement sur la carte mère, qui contenait quelques circuits pour gérer le clavier. Par contre, les deux premiers n'étaient pas connectés à la carte mère. Le port série était en réalité une carte d'extension, branchée sur un connecteur XT. Et il en est de même pour le port parallèle.
Pour ce qui est des supports de stockage, l'IBM PC originel n'avait pas de disque dur et n'avait que des lecteurs de disquette. De plus, le lecteur de disquette n'était pas connecté directement sur la carte mère, mais était connecté à une carte d'extension, branchée sur un connecteur XT. La carte d'extension avait deux connecteurs, un par lecteur de disquette, ce qui fait que les deux lecteurs de disquettes pouvaient être branchés sur une seule carte d'extension. L'IBM Personal Computer XT a ajouté un disque dur, sauf sur quelques sous-modèles spécifiques.
Le PC avait aussi un petit haut-parleur capable de faire des bips.
Pour résumer, l'IBM PC originel se reposait beaucoup sur les cartes d'extension, sa carte mère contenait peu de choses. Enfin, peu de choses... Il y avait un processeur Intel 8088, éventuellement un coprocesseur flottant 8087, de la RAM, de la ROM, et des circuits intégrés assez divers. En voici la liste, certains vous seront familiers, d'autres vous seront inconnus à ce stade du cours :
* les circuits de décodage d'adresse ;
* un contrôleur DMA intel 8273 ;
* un contrôleur d'interruption 8259 ;
* un contrôleur de bus Intel 8288 pour gérer le bus XT ;
* un générateur d'horloge Intel 8284 et un diviseur de fréquence ;
* un ''timer'' Intel 8253, le même que celui étudié dans le chapitre sur les ''timers'' ;
* un contrôleur parallèle 8255.
Les multiplexeurs, registres et portes logiques, sont des circuits de décodage d'adresse, qui permettent de combiner plusieurs RAM en une seule, idem avec la mémoire ROM. Si vous verrez qu'il y a 5 mémoires ROM : une ROM pour le BIOS, et quatre autres ROM pour le BASIC. Les 4 ROM du BASIC sont combinées en une seule mémoire ROM. Pour les RAM, il y en a 8 à 32, qui sont combinées en une seule RAM de 16 à 64 kibioctets.
[[File:IBM 5150 Motherboard.svg|centre|vignette|upright=3|Carte mère de l'IBM 5150, un modèle de l'IBM PC.]]
===L'architecture d'un IBM PC compatible 16 bits===
Les PC suivants sont passés à des processeurs 16 bits, mais c'était toujours des processeurs x86 d'Intel, à savoir des Intel 286 et 386. La RAM a grossi, quelques entrées-sorties ont été ajoutées, mais l'architecture globale est plus moins resté le même. C'est surtout au niveau du bus et des périphériques que les changements majeurs ont eu lieu.
[[File:ISA Bus pins.svg|vignette|Connecteur ISA.]]
Les PC 16 bits utilisaient un bus système unique, sur lequel tout était connecté : le processeur, la RAM, la ROM, les cartes d'extension et tout le reste. Le bus en question s'appelait le '''bus AT''', mais il a rapidement été renommé en '''bus ISA''' (''Industry Standard Architecture''). Le bus ISA était prévu pour avoir une compatibilité avec le bus 8 bits de l'IBM PC originel. D'ailleurs, cela se ressent jusque dans le connecteur utilisé : le connecteur ISA est un connecteur XT qu'on a fusionné avec un second connecteur pour l'étendre de 8 à 16 bits.
Les PC 16 bits avaient toujours un port série, un port parallèle, un clavier, un lecteur de disquette et des cartes d'extension. Des disques durs pouvaient être ajoutés, aussi. Mais pour ces périphériques, un changement majeur a eu lieu comparé à l'IBM PC originel. L'IBM PC originel utilisait des cartes d'extension pour tout, sauf le clavier. Mais maintenant, les périphériques ne sont plus connectés à une carte d'extension. À la place, les circuits de la carte d'extension sont déplacés sur la carte mère. Mais n'allez pas croire qu'ils étaient connectés directement au bus ISA, il y avait des intermédiaires.
Le clavier était relié à un '''contrôleur de clavier''', qui faisait l'interface entre le connecteur du clavier et le bus ISA. Le contrôleur de clavier était appelé le ''Keyboard Controler'', abrévié en KB. Il recevait ce qui est tapé au clavier et traduisait cela en quelque chose de compréhensible par l'ordinateur.
Les autres périphériques étaient connectés à un circuit intégré dédié : l''''Intel 82091AA'''. Il était connecté au lecteur de disquette, au port série et au port parallèle. Il servait d'intermédiaire entre ces périphériques et le bus ISA. Vous pouvez le voir comme une sorte de répartiteur, mais qui ne serait pas connecté sur le processeur et la RAM
Enfin, il ne faut pas oublier les autres composants présents sur l'IBM PC originel. Le BIOS est toujours là, de même que les ''timers'' Intel 8253 PIT, le contrôleur d'interruption Intel 8259 et le contrôleur DMA Intel 8237. Les PC 16 bits ont aussi intégré une ''Real Time Clock'' (RTC). Pour rappel, c'est un composant qui permet au PC de mémoriser la date et l'heure courante, à la seconde près. Le tout est résumé dans le schéma ci-dessous.
[[File:Architecture de l'IBM PC compatible.png|centre|vignette|upright=2.5|Architecture de l'IBM PC compatible]]
Un point important est que le bus ISA allait à la même fréquence que le processeur, vu que c'était un bus système. Les processeurs de l'époque étaient des CPU 286 d'Intel, ou le 386 d'Intel. Les Intel 286 allaient de 4 MHz minimum, à 25 MHz maximum. Le 386, quant à lui, allait de 12 à 40 MHz. Le bus ISA devait aller à cette fréquence, il était synchrone avec le processeur.
Par la suite, les processeurs ont gagné en performance, ce qui fait que le bus ISA est devenu trop lent pour le processeur. Une idée a alors été de conserver le bus ISA, pour des raisons de compatibilité, mais de le reléguer comme bus secondaire. L'ordinateur contient alors deux bus : un bus système, et un bus ISA secondaire. Le lien entre les deux est réalisé par un '''pont ISA''', ''ISA Bridge'' en anglais. Le bus ISA fonctionnait alors sa fréquence usuelle, alors que le bus système était beaucoup plus rapide. Le bus système fonctionnait à une fréquence bien plus élevée, ce qui fait que le processeur pouvait communiquer à pleine vitesse, notamment avec la RAM. Le processeur n'était alors plus forcé à aller à la même fréquence que le bus ISA
[[File:Architecture de l'IBM PC compatible avec bridge ISA.png|centre|vignette|upright=2.5|Architecture de l'IBM PC compatible avec bridge ISA]]
Les PC de l'époque intégraient donc plusieurs bus séparés. Vous avez bien lu : plusieurs bus ! Ici, il s'agit de ce que j'appelle des '''bus en cascade''', à savoir qu'un bus est connecté à un autre bus par un intermédiaire. Au passage, si j'aborde ces exemples, car c'est pareil sur les ordinateurs modernes. Le pont ISA a été remplacé par des circuits différents, mais qui ont un rôle assez similaire. Le ''chipset'' de votre carte mère n'est qu'un lointain descendant du pont ISA, qui s'interface avec des bus différents.
===L'arrivée des standards AT et IDE pour les disques durs===
Initialement, les disques durs étaient placés dans l'ordinateur et étaient connectés sur le bus ISA, via une carte d'extension ISA. En clair, il fallait connecter le disque dur sur une carte d'extension, et non sur la carte mère. Les cartes d'extension en question permettaient de connecter un ou plusieurs disques durs, parfois des lecteurs de disquette supplémentaires. Les cartes ISA de ce type faisaient juste l'interface entre le bus ISA et les disques durs, rien de plus. L'interface en question a été standardisée, ce qui a donné le standard ''AT Bus Attachment'', qui a été abrévié en ATA.
Et ce n'était pas que pour les disques durs, de nombreux composants étaient dans ce cas. Une carte d'extension servait d'intermédiaire entre eux et la carte mère. Les cartes d'extension en question étaient appelées des ''Host bus adapter''.
[[File:Acculogic sIDE-4 Controller ISA.jpg|centre|vignette|upright=2|Carte ISA d'interface disque dur, de marque Acculogic.]]
Mais les choses ont rapidement évoluées, que ce soit du côté des cartes mères que du côté des disques durs. Le '''standard IDE''' a permis de brancher un disque dur directement sur la carte mère, sans passer par une carte d'interface ISA. Pour cela, la carte mère réservait un connecteur ISA pour le disque dur, renommé '''connecteur ATA'''. Pour que cela soit possible, il a fallu rajouter des circuits sur la carte mère. Tout ce qui était sur les cartes d'interface ISA s'est retrouvé sur la carte mère.
[[File:Ajout des ports IDE sur la carte mère.png|centre|vignette|upright=2|Ajout des ports IDE sur la carte mère]]
En réalité, les connecteurs ATA étaient des connecteurs ISA simplifiés. Un connecteur ISA avait en tout 98 broches, alors qu'un connecteur ATA n'en contient que 40. Les broches qui étaient inutiles pour les disques durs ont simplement été enlevées. Et qui dit connecteur spécialisé, dit câble spécialisé. Les disques durs étaient branchés sur le connecteur AT grâce à un câble ATA, sur lequel on pouvait connecter deux disques durs.
[[File:ATA Plug.svg|centre|vignette|upright=2|Connecteur ATA.]]
[[File:ATA cables.jpg|centre|vignette|upright=2|Cable ATA.]]
Il était donc possible de connecter deux disques durs sur un seul connecteur ATA. Et cette possibilité est devenue d'autant plus utile par la suite. A partir de la version 2, ATA supportait aussi les lecteurs de disquettes, les lecteurs de CD/DVD, et bien d'autres supports de stockage. Il était alors possible de connecter un lecteur CD et un disque dur sur un seul connecteur. Les cartes mères avaient généralement deux connecteurs ATA, et n'avaient pas besoin de plus. C'était suffisant pour connecter un disque dur, un lecteur de disquette et un lecteur CD, configuration courante entre les années 90 et 2000.
Un câble est donc connecté à deux supports de stockage. Pour distinguer les deux, le standard ATA ajoute une possibilité de configuration. Sur un câble, il doit y avoir un support de stockage "maitre" et un support "esclave". C'était la terminologie de l'époque, que je reproduis ici, même si elle est fortement trompeuse. N'allez pas croire que cela implique que l'un ait des avantages sur l'autre. Le support 'maitre" n'a pas droit à plus de bande passante, il n'a pas la priorité sur l'autre, rien du tout. Il s'agit juste d'un nombre qui permet de savoir avec qui le processeur communique, qui vaut 0 pour le premier support, 1 pour l'autre. Une sorte d'adresse de 1 bit, si l'on veut.
[[File:ATA-Konfiguration02.png|centre|vignette|upright=2|Configuration ATA.]]
Pour configurer un support de stockage en mode "maitre" ou "esclave", le support de stockage avait quelques pins dédiés. Il suffisait de placer un détrompeur en plastique sur les pins adéquats. Les pins se trouvaient à l'arrière du disque dur ou du lecteur de CD/DVD/Disquette/autre.
[[File:HDD Master and Slave Description.jpg|centre|vignette|upright=2|Configuration ''Master/Slave''.]]
===L'architecture d'un PC avec un processeur Intel 486===
Maintenant, passons aux ordinateurs 32 bits, avec l'exemple d'un PC avec un processeur 486 d'Intel. A cette époque, le bus ISA était devenu trop limité et était en place d'être remplacé par le bus PCI, qui avait la même fonction. De nombreuses cartes d'extension utilisaient déjà ce standard et étaient branchées sur des connecteurs PCI dédiés, différents des connecteurs ISA. Intuitivement, on se dit que le bus PCI remplaçait le bus ISA, mais les choses étaient plus compliquées. Les disques durs gardaient leur connecteur ATA, et ne passaient pas par le bus PCI. Ils avaient un bus IDE séparé, qui était un bus ISA modifié.
Là encore, les processeurs étaient devenus beaucoup plus rapides que le bus PCI. Les deux allaient à des fréquences assez différentes, ce qui fait que le bus PCI était séparé du bus système. Il y avait alors deux implémentations possibles.
* La première utilise un répartiteur unique, relié au processeur, à la RAM, au bus PCI, et au bus IDE.
* La seconde utilise un bus système séparé du bus PCI, avec un '''pont PCI''' pour faire l'interface entre les deux.
Le '''''System Controler''''' était un circuit intégré, placé sur la carte mère, qui peut servir soit de pont PCI, soit de répartiteur. Le répartiteur PCI sert d'intermédiaire avec le bus PCI, mais aussi avec le bus IDE, utilisé pour les disques durs, aussi appelé le bus ''Parallel ATA''. Il peut aussi être connecté au processeur, à la mémoire RAM, ainsi qu'à la mémoire cache, mais cela ne sert que quand il est utilisé comme répartiteur.
[[File:Architecture d'un PC utilisant un bus PCI, implémentation avec un répartiteur.png|centre|vignette|upright=2|Architecture d'un PC utilisant un bus PCI, implémentation avec un répartiteur]]
Pour des raisons de compatibilité, le bus ISA avait été conservé, aux côtés du bus PCI. Il y avait un pont ISA en plus du pont/répartiteur PCI. Une implémentation possible aurait été de connecter les deux ponts ISA et PCI à un bus système unique. Mais cette solution n'a pas été retenue. La raison est que le bus PCI et le bus ISA ont des performances très différentes. Le bus PCI est très rapide, le bus ISA beaucoup plus lent. La différence est d'un ordre de grandeur, environ. Dans ces conditions, il est possible de faire passer les communications ISA à travers le bus PCI. Pour cela, le pont ISA est directement connecté sur le pont PCI, comme illustré ci-dessous.
Et il en est de même pour le bus dédié aux disques durs. En effet, les disques durs étaient autrefois reliés au bus ISA, mais cela a changé depuis. Ils disposent maintenant de leur propre bus dédié, le '''bus IDE''', qui est un bus ISA simplifié. Et ce bus ISA simplifié était connecté directement sur le pont PCI.
[[File:Architecture de l'IBM PC compatible avec pont PCI.png|centre|vignette|upright=2|Architecture de l'IBM PC compatible avec pont PCI]]
Dans ce qui va suivre, nous allons étudier un exemple qui utilise un bus système séparé, avec un pont PCI, sans répartiteur. Voilà pour les grandes lignes, mais le schéma ci-dessous montre que tout est plus complexe. Vous remarquerez des connexions optionnelles entre le pont PCI et la mémoire RAM et la mémoire cache. La raison est que le pont PCI peut aussi servir de répartiteur en remplacement du bus système. Concrètement, on peut alors retirer le bus système. La mémoire, le bus PCI, le bus ISA, le bus IDE, le processeur et la RAM sont alors connectés au répartiteur PCI, qui sert d'intermédiaire central entre tous ces composants. Mais ce n'est pas la solution qui a été retenue dans notre exemple.
[[File:Intel486-Typ PCI System.png|centre|vignette|upright=2|PC IBM compatible avec un 486, un bus PCI et un bus ISA. Le ''host bus'' est le bus système.]]
Le pont ISA sert ici d'intermédiaire entre le bus système et le bus ISA. De plus, il a été amélioré sur de nombreux points. Il inclut notamment des circuits qui étaient autrefois sur la carte mère, à savoir le contrôleur DMA 82C87 et le contrôleur d'interruption 82C59, ainsi que les ''timers'' Intel 82C54. Les composants restants sont eux reliés sur un quatrième bus : le bus X, l'ancêtre du bus ''Low Pin Count''. Le bus X était celui du BIOS, du contrôleur de clavier, de la ''Real Time Clock'', et du contrôleur de périphérique 82091AA d'Intel.
[[File:ISA Bridge schematic.png|centre|vignette|upright=2|ISA Bridge.]]
===L'architecture des PC des années 90-2000===
Par la suite, les ponts PCI et ISA ont évolué avec l'évolution des bus de l'ordinateur. Le bus ISA a progressivement été remplacé par d'autres bus, comme le bus ''Low Pin Count'', le bus PCI a été remplacé par le PCI Express, d'autres bus ont été ajoutés, etc. Mais la séparation du ''chipset'' en deux a été conservée.
[[File:Chipset schematic.svg|vignette|upright=1.0|Chipset séparé en northbridge et southbridge.]]
Le pont PCI et le pont ISA ont été remplacés respectivement par le '''pont nord''' et le '''pont sud''', plus connus par leurs noms anglais de ''northbridge'' et de ''southbridge''. Le pont nord servait d'interface entre le processeur, la mémoire et la carte graphique et est connecté à chacun par un bus dédié. Il intégrait aussi le contrôleur mémoire. Le pont sud est le répartiteur pour les composants lents, à savoir l'USB, l'Ethernet, etc. Le bus qui relie le processeur au pont nord était appelé le '''''Front Side Bus''''', abrévié en FSB.
[[File:IMac Chipset.png|centre|vignette|upright=2|Chipset séparé en northbridge et southbridge.]]
Un point important est que le bus PCI est devenu un bus assez lent, ce qui fait qu'il a finit par être connecté au pont sud. Le pont PCI est donc devenu le pont sud, dans le courant des années 2000. Durant un moment, un équivalent du pont ISA a subsisté dans un circuit de '''''Super IO'''''. Concrètement, il s'occupait du lecteur de disquette, du port parallèle, du port série, et des ports PS/2 pour le clavier et la souris. Mais il ne gérait pas le bus ISA, mais son remplaçant, le bus ''Low Pin Count''.
[[File:Motherboard diagram fr.svg|centre|vignette|upright=1.5|Carte mère avec circuit Super IO.]]
===L'architecture des PC depuis les années 2000===
Depuis la sortie du processeur AMD Athlon 64, le pont nord a été fusionné dans le processeur. La fusion ne s'est pas faite en une fois, des fonctionnalités ont progressivement été progressivement intégrées dans le processeur. Le pont sud est resté, mais il a alors été progressivement connecté directement au processeur. La raison derrière cette intégration est que les processeurs avaient de plus en plus de transistors à leur disposition. Ils en ont profité pour intégrer le pont nord. Et cela permettait de simplifier le câblage des cartes mères, sans pour autant rendre vraiment plus complexe la fabrication du processeur. Les industriels y trouvent leur compte.
La première étape a été l'intégration du contrôleur mémoire a été intégré au processeur. Concrètement, le résultat était que la mémoire RAM n'était plus connectée au pont nord, mais était connectée directement au processeur ! Il y a donc eu un retour d'un bus mémoire, mais spécialisé pour la mémoire RAM. En théorie, une telle intégration permet diverses optimisations quant aux transferts avec la mémoire RAM. Les transferts ne passent pas par un répartiteur, ce qui réduit le temps d'accès à la mémoire RAM. Ajoutons de sombres histoires de prefetching, d'optimisation des commandes, et j'en passe. Toujours est-il que le pont nord ne servait alors d'intermédiaire que pour les ports PCI Express, et le pont sud.
[[File:X58 Block Diagram.png|centre|vignette|upright=2|Chipset X58 d'Intel.]]
Par la suite, la carte graphique fût aussi connectée directement sur le processeur. Le processeur incorpore pour cela des contrôleurs PCI-Express. Le pont nord a alors disparu complétement, son intégration dans le processeur était complète. Sur les cartes mères Intel récentes, le pont sdud subsiste, il est appelé le ''Platform Controler Hub'', ou PCH. L'organisation des bus sur la carte mère qui résulte de cette connexion du processeur à la carte graphique, est illustrée ci-dessous, avec l'exemple du PCH.
[[File:Intel 5 Series architecture.png|centre|vignette|upright=2|Intel 5 Series architecture]]
<noinclude>
{{NavChapitre | book=Fonctionnement d'un ordinateur
| prev=L'interface électrique entre circuits intégrés et bus
| prevText=L'interface électrique entre circuits intégrés et bus
| next=La hiérarchie mémoire
| nextText=La hiérarchie mémoire
}}
</noinclude>
r6i7sial6825cb8g1r8hqsnvqkywu6r
765749
765748
2026-05-01T22:15:15Z
Mewtow
31375
/* Étude de l'architecture de quelques consoles de jeu */
765749
wikitext
text/x-wiki
Dans les chapitres précédents, nous avons vu comment représenter de l'information, la traiter et la mémoriser avec des circuits. Mais un ordinateur n'est pas qu'un amoncellement de circuits et est organisé d'une manière bien précise. Il est structuré autour de trois circuits principaux :
* un '''processeur''', qui manipule l'information et donne un résultat ;
* une '''mémoire''' qui mémorise les données à manipuler ;
* les '''entrées/sorties''', qui permettent à l'ordinateur de communiquer avec l'extérieur.
[[File:Architecture Von Neumann.png|centre|vignette|upright=2|Architecture d'un système à mémoire.]]
Pour faire simple, le processeur est un circuit qui s'occupe de faire des calculs. Rien d'étonnant à cela. Je rappelle que tout est codé par des nombres dans un ordinateur, ce qui fait que manipuler des nombres revient simplement à faire des calculs. Un ordinateur n'est donc qu'une grosse calculatrice améliorée, et le processeur est le composant qui fait les calculs.
La mémoire s'occupe purement de la mémorisation des données, des nombres sur lesquelles faire des calculs. Pour être plus précis, il y a deux mémoires : une pour les données proprement dites, une autre pour le programme à exécuter. La première est la '''mémoire RAM''', la seconde est la '''mémoire ROM'''. Nous détaillerons ce que sont ces deux mémoires dans la suite du chapitre, mais sachez que nous avions déjà rencontré ces deux types de mémoires dans les chapitres sur les registres et les mémoires adressables.
Les entrées-sorties permettent au processeur et à la mémoire de communiquer avec l'extérieur et d'échanger des informations avec des périphériques. Les '''périphériques''' regroupent, pour rappel, tout ce est branché sur un ordinateur, mais n'est pas à l'intérieur de celui-ci.
Le processeur, les mémoires et les entrées-sorties communiquent ensemble via un '''réseau d'interconnexions'''. Le terme est assez barbare, mais rien de compliqué sur le principe. C'est juste un ensemble de fils électriques qui relie les différents éléments d'un ordinateur. Les interconnexions sont souvent appelées le bus de communication, mais le terme est un abus de langage, comme on le verra plus bas.
Afin de simplifier les explications, on va supposer que le réseau d'interconnexion est le suivant. Tout est connecté au processeur. Il y a des interconnexions entre le processeur et la mémoire RAM, d'autres interconnexions entre processeur et mémoire ROM, et d'autres entre le processeur et les entrées-sorties. Nous verrons que d'autres réseaux d'interconnexions fusionnent certaines interconnexions, pour les partager entre la ROM et la RAM, par exemple. Mais pour le moment, gardez le schéma ci-dessous en tête.
[[File:Réseau d'interconnexion avec un processeur au centre.png|centre|vignette|upright=2|Réseau d'interconnexion avec un processeur au centre]]
==Les mémoires RAM et ROM==
La mémoire est le composant qui mémorise des informations, des données. Dans la majorité des cas, la mémoire est composée de plusieurs '''cases mémoire''', chacune mémorisant plusieurs bits, le nombre de bits étant identique pour toutes les cases mémoire. Dans le cas le plus simple, une case mémoire mémorise un '''octet''', un groupe de 8 bits. Mais les mémoires modernes mémorisent plusieurs octets par case mémoire : elles ont des cases mémoires de 16, 32 ou 64 bits, soit respectivement 2/4/8 octets. De rares mémoires assez anciennes utilisaient des cases mémoires contenant 1, 2, 3, 4, 5, 6 7, 13, 17, 23, 36 ou 48 bits. Mais ce n'était pas des mémoires électroniques, aussi nous allons les passer sous silence.
Tout ce qu'il faut savoir est que la quasi-totalité des mémoires électronique a un ou plusieurs octets par case mémoire. Pour simplifier, vous pouvez imaginer qu'une mémoire RAM est un regroupement de registre, chacun étant une case mémoire. C'est une description pas trop mauvaise pour décrire les mémoires RAM, qu'on abordera dans ce qui suit.
{|class="wikitable"
|+ Contenu d'une mémoire, case mémoire de 16 bits (deux octets)
|-
! Case mémoire N°1
| 0001 0110 1111 1110
|-
! Case mémoire N°2
| 1111 1110 0110 1111
|-
! Case mémoire N°3
| 0001 0000 0110 0001
|-
! Case mémoire N°4
| 1000 0110 0001 0000
|-
! Case mémoire N°5
| 1100 1010 0110 0001
|-
! ...
| ...
|-
! Case mémoire N°1023
| 0001 0110 0001 0110
|-
! Case mémoire N°1024
| 0001 0110 0001 0110
|}
Dans ce cours, il nous arrivera de partir du principe qu'il y a un octet par case mémoire, par souci de simplification. Mais ce ne sera pas systématique. De plus, il nous arrivera d'utiliser le terme adresse pour parler en réalité de la case mémoire associée, par métonymie.
===La capacité mémoire===
Bien évidemment, une mémoire ne peut stocker qu'une quantité finie de données. Et à ce petit jeu, certaines mémoires s'en sortent mieux que d'autres et peuvent stocker beaucoup plus de données que les autres. La '''capacité''' d'une mémoire correspond à la quantité d'informations que celle-ci peut mémoriser. Plus précisément, il s'agit du nombre maximal de bits qu'une mémoire peut contenir. Elle est le produit entre le nombre de cases mémoire, et la taille en bit d'une case mémoire.
Toutes les mémoires actuelles utilisant des cases mémoire d'un ou plusieurs octets, ce qui nous arrange pour compter la capacité d'une mémoire. Au lieu de compter cette capacité en bits, on préfère mesurer la capacité d'une mémoire avec le nombre d'octets qu'elle contient. Mais les mémoires des PC font plusieurs millions ou milliards d'octets. Pour se faciliter la tâche, on utilise des préfixes pour désigner les différentes capacités mémoires. Vous connaissez sûrement ces préfixes : kibioctets, mébioctets et gibioctets, notés respectivement Kio, Mio et Gio.
{|class="wikitable"
|-
!Préfixe!!Capacité mémoire en octets!!Puissance de deux
|-
||Kio||1024||2<sup>10</sup> octets
|-
||Mio||1 048 576||2<sup>20</sup> octets
|-
||Gio||1 073 741 824||2<sup>30</sup> octets
|}
On peut se demander pourquoi utiliser des puissances de 1024, et ne pas utiliser des puissances un peu plus communes ? Dans la majorité des situations, les électroniciens préfèrent manipuler des puissances de deux pour se faciliter la vie. Par convention, on utilise souvent des puissances de 1024, qui est la puissance de deux la plus proche de 1000. Or, dans le langage courant, kilo, méga et giga sont des multiples de 1000. Quand vous vous pesez sur votre balance et que celle-ci vous indique 58 kilogrammes, cela veut dire que vous pesez 58 000 grammes. De même, un kilomètre est égal à 1000 mètres, et non 1024 mètres.
Autrefois, on utilisait les termes kilo, méga et giga à la place de nos kibi, mebi et gibi, par abus de langage. Mais peu de personnes sont au courant de l'existence de ces nouvelles unités, et celles-ci sont rarement utilisées. Et cette confusion permet aux fabricants de disques durs de nous « arnaquer » : Ceux-ci donnent la capacité des disques durs qu'ils vendent en kilo, méga ou giga octets : l’acheteur croit implicitement avoir une capacité exprimée en kibi, mébi ou gibi octets, et se retrouve avec un disque dur qui contient moins de mémoire que prévu.
===Lecture et écriture : mémoires ROM et RWM===
Pour simplifier grandement, on peut grossièrement classer les mémoires en deux types : les ''Read Only Memory'' et les ''Read Write Memory'', aussi appelées mémoires ROM et mémoires RWM. Pour les '''mémoires ROM''', on ne peut pas modifier leur contenu. On peut y récupérer une donnée ou une instruction : on dit qu'on y accède en lecture. Mais on ne peut pas modifier les données qu'elles contiennent. Quant aux '''mémoires RWM''', on peut y accéder en lecture (récupérer une donnée stockée en mémoire), mais aussi en écriture : on peut stocker une donnée dans la mémoire, ou modifier une donnée existante.
Tout ordinateur contient au minimum une ROM et une RWM (souvent une mémoire RAM), les deux n'ont pas exactement le même rôle. Pour simplifier, la mémoire ROM mémorise le programme à exécuter, la mémoire RWM stocke des données. Il a existé des ordinateurs où la mémoire RWM était une mémoire magnétique, voire acoustique, mais ce n'est plus le cas de nos jours. Pour les ordinateurs modernes, la mémoire RWM est une mémoire électronique. Pour faire la différence avec ces anciennes mémoires RWM, elle est appelée la '''mémoire RAM'''. Il s'agit d'une mémoire qui stocke temporairement des données que le processeur doit manipuler (on dit qu'elle est volatile). Elle s'efface complètement quand on coupe l'alimentation de l'ordinateur.
Il existe d'autres différences entre mémoire RWM et RAM :
* la mémoire RWM peut ne pas être volatile et donc conserver les données écrites ;
* la mémoire RAM possède un temps d'accès constant aux données (quelle que soit l'adresse), ce qui n'est pas garanti pour les mémoires RWM.
Outre le programme à exécuter, la mémoire ROM peut mémoriser des constantes, des données qui ne changent pas. Elles ne sont jamais modifiées et gardent la même valeur quoi qu'il se passe lors de l'exécution du programme. En conséquence, elles ne sont jamais accédées en écriture durant l'exécution du programme, ce qui fait que leur place est dans une mémoire ROM. La mémoire RWM est alors destinée aux données temporaires, qui changent ou sont modifiées lors de l'exécution du programme, et qui sont donc manipulées aussi bien en lecture et en écriture. La mémoire RWM mémorise alors les variables du programme à exécuter, qui sont des données que le programme va manipuler. Pour les systèmes les plus simples, la mémoire RWM ne sert à rien de plus.
[[File:Espaces d'adressage sur une archi harvard modifiée.png|centre|vignette|upright=2.5|Espaces d'adressage sur une archi harvard modifiée]]
Pour donner un exemple de données stockées en ROM, on peut prendre l'exemple des anciennes consoles de jeu 8 et 16 bits. Les jeux vidéos sur ces consoles étaient placés dans des cartouches de jeu, précisément dans une mémoire ROM à l'intérieur de la cartouche de jeu. La ROM mémorisait non seulement le code du jeu, le programme du jeu vidéo, mais aussi les niveaux et les ''sprites'' et autres données graphiques.
Une conséquence est que les consoles 8/16 bits n'avaient pas besoin de beaucoup de RAM, comparé aux ordinateurs de l'époque, vu qu'une grande partie des données utiles étaient dans une ROM directement accessible par le processeur. À l'opposé, les micro-ordinateurs devaient copier les données d'un jeu depuis une disquette dans la mémoire RAM, ce qui demandait d'avoir plus de RAM. Le passage au support CD sur les consoles 32 bits a eu la même conséquence. Le processeur ne pouvant pas lire directement le CD à sa guise, il fallait copier les données du CD en RAM. D'où l'apparition de temps de chargement assez longs, inexistants sur support cartouche.
===L'adressage mémoire===
Sur une mémoire RAM ou ROM, on ne peut lire ou écrire qu'une case mémoire, qu'un registre à la fois : une lecture ou écriture ne peut lire ou modifier qu'une seule case mémoire. Techniquement, le processeur doit préciser à quel case mémoire il veut accéder à chaque lecture/écriture. Pour cela, chaque case mémoire se voit attribuer un nombre binaire unique, l''''adresse''', qui va permettre de le sélectionner et de l'identifier celle-ci parmi toutes les autres. En fait, on peut comparer une adresse à un numéro de téléphone (ou à une adresse d'appartement) : chacun de vos correspondants a un numéro de téléphone et vous savez que pour appeler telle personne, vous devez composer tel numéro. Les adresses mémoires en sont l'équivalent pour les cases mémoire.
[[File:Adressage mémoire.png|centre|vignette|upright=2|Exemple : on demande à la mémoire de sélectionner la case mémoire d'adresse 1002 et on récupère son contenu (ici, 17).]]
L'adresse mémoire est générée par le processeur. Le processeur peut parfaitement calculer des adresses, en extraire du programme qu'il exécute, et bien d'autres choses. Nous détaillerons d'ailleurs les mécanismes pour dans les chapitres portant sur les modes d'adressage du processeur. Mais pour le moment, nous avons juste besoin de savoir que c'est le processeur qui envoie des adresses aux mémoires RAM et ROM.
Les adresses générées par le processeur sont alors envoyées à la RAM ou la ROM via une connexion dédiée, un ensemble de fils qui connecte le processeur à la mémoire : le '''bus d'adresse mémoire'''. L'adresse sélectionne une case mémoire, le processeur peut alors récupérer la donnée dedans pour une lecture, écrire une donnée pour l'écriture. Pour cela, un second ensemble de fil connecte le processeur à la RAM/ROM, mais cette fois-ci pour échanger des données. Il s'agit du '''bus de données mémoire'''. Les deux sont souvent regroupés sous le terme de '''bus mémoire'''.
Un ordinateur contient toujours une RAM et une ROM, ce qui demande aux bus mémoire de s'adapter à la présence de deux mémoires. Il y a alors deux solutions, illustrées dans les deux schémas ci-dessous. Avec la première, il y a un seul bus mémoire partagé entre la RAM et la ROM, comme illustré ci-dessous. Une autre solution utilise deux bus séparés : un pour la RAM et un autre pour la ROM. Nous verrons les différences pratiques entre les deux à la fin du chapitre. Pour le moment, nous allons partir du principe qu'il y a un bus pour la mémoire ROM, et un autre bus pour la RAM.
[[File:CPT-System-Architecture-gapfill1-ANS.svg|centre|vignette|upright=2|Architecture avec une ROM et une RAM.]]
[[File:Réseau d'interconnexion avec un processeur au centre.png|centre|vignette|upright=2|Réseau d'interconnexion avec un processeur au centre]]
===L'alignement mémoire : introduction===
Plus haut, nous avions dit qu'il y a une adresse par case mémoire, chaque case mémoire contenant un ou plusieurs octets. Mais les processeurs modernes partent du principe que la mémoire a un octet par adresse, pas plus. Et ce même si la mémoire reliée au processeur utilise des cases mémoires de 2, 3, 4 octets ou plus. D'ailleurs, la majorité des mémoires RAM actuelle a des cases mémoires de 64 bits, soit 8 octets par case mémoire. Les raisons à cela sont multiple, mais nous les verrons en détail dans le chapitre sur l'alignement mémoire. Toujours est-il qu'il faut distinguer les '''adresses mémoire''' et les '''adresses d'octet''' gérées par le processeur.
Le processeur génère des adresses d'octet, qui permettent de sélectionner un octet bien précis. L'adresse d'octet permet de sélectionner un octet parmi tous les autres. Mais la mémoire ne comprend pas directement cette adresse d'octet. Heureusement, l'octet en question est dans une case mémoire bien précise, qui a elle-même une adresse mémoire bien précise. L'adresse d'octet est alors convertie en une adresse mémoire, qui sélectionne la case mémoire adéquate, celle qui contient l'octet voulu. La case mémoire entière est lue, puis le processeur ne récupère que les données adéquates. Pour cela, des circuits d'alignement mémoire se chargent de faire la conversion entre adresses du processeur et adresse mémoire. Nous verrons cela dans le détail dans le chapitre sur l'alignement mémoire.
Il existe des mémoires qui n'utilisent pas d'adresses mémoire, mais passons : ce sera pour la suite du cours.
==Le processeur==
Dans les ordinateurs, l'unité de traitement porte le nom de '''processeur''', ou encore de '''''Central Processing Unit''''', abrévié en CPU. Le rôle principal du processeur est de faire des calculs. La plupart des processeurs actuels supportent au minimum l'addition, la soustraction et la multiplication. Quelques processeurs ne gèrent pas la division, qui est une opération très gourmande en circuit, peu utilisée, très lente. Il arrive que des processeurs très peu performants ne gèrent pas la multiplication, mais c'est assez rare.
Un processeur ne fait pas que des calculs. Tout processeur est conçu pour effectuer un nombre limité d'opérations bien précises, comme des calculs, des échanges de données avec la mémoire, etc. Ces opérations sont appelées des '''instructions'''. Les plus intuitives sont les '''instructions arithmétiques''', qui font des calculs, comme l'addition, la soustraction, la multiplication, la division. Mais il y a aussi des '''instructions d'accès mémoire''', qui échangent des données entre la mémoire RAM et le processeur. Les autres instructions ne sont pas très intuitives, aussi passons-les sous silence pour le moment, tout deviendra plus clair dans les chapitres sur le processeur.
===Le processeur exécute un programme, une suite d'instructions===
Tout processeur est conçu pour exécuter une suite d'instructions dans l'ordre demandé, cette suite s'appelant un '''programme'''. Ce que fait le processeur est défini par la suite d'instructions qu'il exécute, par le programme qu'on lui demande de faire. Les instructions sont exécutées dans un ordre bien précis, les unes après les autres. L'ordre en question est décidé par le programmeur. La totalité des logiciels présents sur un ordinateur sont des programmes comme les autres.
Le programme à exécuter est stockée dans la mémoire de l'ordinateur. C'est ainsi que l'ordinateur est rendu programmable : modifier le contenu de la mémoire permet de changer le programme exécuté. Mine de rien, cette idée de stocker le programme en mémoire est ce qui a fait que l’informatique est ce qu'elle est aujourd’hui. C'est la définition même d'ordinateur : appareil programmable qui stocke son programme dans une mémoire modifiable.
Une instruction est codée comme les données : sous la forme de suites de bits. Telle suite de bit indique qu'il faut faire une addition, telle autre demande de faire une soustraction, etc. Pour simplifier, nous allons supposer qu'il y a une instruction par adresse mémoire. Sur la grosse majorité des ordinateurs, les instructions sont placées les unes à la suite des autres dans l'ordre où elles doivent être exécutées. Un programme informatique n'est donc qu'une vulgaire suite d'instructions stockée quelque part dans la mémoire de l'ordinateur.
{|class="wikitable"
|+ Exemple de programme informatique
|-
! Adresse
! Instruction
|-
! 0
| Copier le contenu de l'adresse 0F05 dans le registre numéro 5
|-
! 1
| Charger le contenu de l'adresse 0555 dans le registre numéro 4
|-
! 2
| Additionner ces deux nombres
|-
! 3
| Charger le contenu de l'adresse 0555
|-
! 4
| Faire en XOR avec le résultat antérieur
|-
! ...
| ...
|-
! 5464
| Instruction d'arrêt
|}
Pour exécuter une suite d'instructions dans le bon ordre, le processeur détermine à chaque cycle quelle est la prochaine instruction à exécuter. Pour cela, le processeur mémorise l'adresse de l'instruction en cours dans un registre : le '''Program Counter'''. Je rappelle que des instructions consécutives sont dans des adresses consécutives. Pour passer à la prochaine instruction, il suffit donc d'incrémenter le ''program counter''.
: Si une instruction prend plusieurs octets, plusieurs adresses, il suffit de l'incrémenter du nombre d'octets/adresses.
D'autres processeurs font autrement : chaque instruction précise l'adresse de la suivante, directement dans la suite de bit représentant l'instruction en mémoire. Ces processeurs n'ont pas besoin de calculer une adresse qui leur est fournie sur un plateau d'argent. Sur des processeurs aussi bizarres, pas besoin de stocker les instructions en mémoire dans l'ordre dans lesquelles elles sont censées être exécutées. Mais ces processeurs sont très très rares et peuvent être considérés comme des exceptions à la règle.
Nous venons de voir qu'un processeur contient un registre appelé le ''program counter''. Mais il n'est pas le seul. Pour pouvoir fonctionner, tout processeur doit mémoriser un certain nombre d’informations nécessaires à son fonctionnement, qui sont mémorisées dans des '''registres de contrôle'''. La plupart ont des noms assez barbares (registre d'état, ''program counter'') et nous ne pouvons pas en parler à ce moment du cours. Nous les verrons en temps voulu, mais il est important de préciser qu'ils existent.
===L'intérieur d'un processeur===
Fort de ce que nous savons, nous pouvons expliquer ce qu'il y a à l'intérieur d'un processeur. Le premier point est qu'un processeur fait des calculs, ce qui implique qu'il contient des circuits de calcul. Ils sont regroupés dans une ou plusieurs '''unités de calcul'''. Nous avons déjà vu comment fabriquer une unité de calcul simple, dans un chapitre dédié, et c'est la même qui est présente dans un processeur. Du moins dans les grandes lignes, les circuits des processeurs modernes étant particulièrement optimisés. Il en est de même pour les autres circuits de calcul comme ceux pour les multiplications/division/autres.
Si le processeur fait des calculs, qu'en est-il des opérandes ? Et où sont mémorisés les résultats des opérations ? Pour cela, le processeur incorpore des '''registres généraux'''. Les registres généraux servent à mémoriser les opérandes et résultats des instructions. Ils mémorisent des données, contrairement aux registres de contrôle mentionnés plus haut. Le nombre de registres généraux dépend grandement du processeur. Les tout premiers processeurs se débrouillaient avec un seul registre, mais les processeurs actuels utilisent plusieurs registres, pour mémoriser plusieurs opérandes/résultats. Mais la présence de registres est source de pas mal de petites complications. Par exemple, il faut échanger les données entre la RAM et les registres, il faut gérer l'adressage des registres, etc. Il s'agit là de détails que nous expliquerons dans les chapitres sur le processeur.
Le processeur contient enfin un circuit pour interpréter les instructions, appelé l''''unité de contrôle'''. Elle lit les instructions depuis la mémoire, interprète la suite de bit associée, et commande le reste du processeur pour qu'il exécute l'instruction. Ses fonctions sont assez variées, mais nous allons simplifier en disant qu'elle configure l'unité de calcul et les registres pour faire le bon calcul. Son rôle est d'analyser la suite de bit qui constitue l'instruction, et d'en déduire quelle opération effectuer. Elle gère aussi l'accès à la mémoire RAM, et notamment ce qui est envoyé sur son bus d'adresse.
: Dans ce qui suit, on suppose que le ''program counter'' fait partie de l'unité de contrôle.
Pour résumer, un processeur contient une unité de calcul, des registres et une interface avec la mémoire RAM. Le tout est interconnecté, afin de pouvoir échanger des données. L’ensemble forme le '''chemin de données''', nom qui trahit le fait que c'est là que les données se déplacent et sont traitées. Il faut aussi ajouter l'unité de contrôle pour commander le tout. Elle lit les instructions en mémoire, puis commande le chemin de données pour que l'instruction soit exécutée correctement.
[[File:Microarchitecture d'un processeur.png|centre|vignette|upright=2|Microarchitecture d'un processeur]]
Un processeur parait donc assez simple expliqué comme ça, mais il y a de nombreuses subtilités. L'une d'entre elle est liée aux registres, et notamment à la manière dont on les utilise. Pour expliquer ces subtilités, nous allons voir comment les premiers processeurs fonctionnaient, avant de passer aux processeurs un peu plus modernes. Les tout premiers processeurs n'utilisaient qu'un seul registre, ce qui fait que l'utilisation des registres était très simple. Le passage à plusieurs registres a complexifié le tout.
===D'où viennent les adresses ?===
Il est maintenant temps de répondre à une question qui s'était posée dans la section sur l'adressage : d'où viennent les adresses envoyées à la mémoire ? Pour ce qui est des adresses des instructions, on connait déjà la réponse : c'est le ''program counter'' qui gère tout. Mais pour les données, il y a deux possibilités, qui correspondent à deux types de données : les données statiques et les données dynamiques.
Les '''données statiques''' sont les plus simples : elles existent durant toute la durée de vie du programme. Tant que celui-ci s'exécute, il aura besoin de ces données. En conséquence, il leur réserve une place en mémoire, qui est toujours la même. La donnée se situe donc à une adresse bien précise, qui ne change jamais. Attention cependant : les données peuvent être modifiées, changer de valeur. Le programme écrit dans les donnée statiques, c'est même assez fréquent. Ce sont ne sont pas forcément des données constantes !
Pour les données statiques, elles sont toujours placées à la même adresse mémoire. Pour le dire autrement, l'adresse mémoire est une constante, qui ne change pas. L'adresse est connue avant d’exécuter le programme, le programme a été codé pour utiliser cette adresse pour telle donnée, on a réservé une adresse pour la donnée voulue. Et même si vous quittez le programme et vous le relancez plusieurs jours après, l'adresse mémoire sera la même avant et après.
Et cela permet d'utiliser l''''adressage direct'''. L'idée est que les instructions précisent donc l'adresse à lire ou écrire. Pour cela, l'adresse est intégrée dans l’instruction elle-même. Pour rappel, l'instruction est codée par une suite de bit en mémoire RAM/ROM, dont certains précisent l'opération à faire, les autres servant à autre chose. L'idée est que certains bits précisent l'adresse mémoire de la donnée à lire. Les instructions sont donc du genre :
* ''LOAD 56'' - lit l'adresse numéro 56 et copie son contenu dans un registre;
* ''STORE R5 , adress 99'', copie le registre R5 dans l'adresse 99 ;
* ''ADD R5 , adress 209'' : additionne le registre R5 avec le contenu de l'adresse 209.
S'il existe des données statiques, c'est signe qu'il existe des '''données dynamiques'''. Ces dernières sont des données qui sont créées ou détruites selon les besoins. Pour comprendre d'où viennent ces données dynamiques, prenons le cas d'une personne qui écrit du texte sur un ordinateur. Le texte qu'il écrit est mémorisé dans la RAM de l’ordinateur, puis est sauvegardé sur le disque dur quand il sauvegarde son document. Au fur et à mesure qu'il écrit du texte, la RAM utilisée par ce texte augmente. Donc, ce texte est une donnée dynamique, dont la taille varie dans le temps.
Pour gérer des données dynamiques, la plupart des systèmes d'exploitation incorporent des fonctionnalités d''''allocation mémoire'''. Derrière ce nom barbare, se cache quelque chose de simple : les programmes peuvent réclamer de la mémoire au système d'exploitation, pour y placer les données qu'ils souhaitent. Les langages de programmation bas niveau supportent des fonctions comme malloc(), qui permettent de demander un bloc de mémoire de N octets à l'OS, qui doit alors accommoder la demande. De même, un programme peut libérer de la mémoire qu'il n'utilise plus avec des fonctions comme free().
Avec l'allocation mémoire, les données n'ont pas de place fixe en mémoire. Leur adresse mémoire peut varier d'une exécution du programme à l'autre. Pire que ça : les données peuvent être déplacées dans la mémoire RAM, si besoin. En clair : l'adresse est déterminée lors de l'exécution du programme. L'adresse est alors soit calculée, soit lue depuis la mémoire RAM, soit déterminée autrement. Toujours est-il qu'elle se retrouve dans un registre général. Pour gérer ces adresse variables, les processeurs utilisent l''''adressage indirect'''. L'adressage indirect permet d'utiliser une adresse qui est dans un registre de données. L'adresse en question peut être envoyée à la mémoire RAM sans problème, le processeur peut automatiquement connecter le registre adéquat sur le bus d'adresse.
Au tout début de l'informatique, les processeurs ne supportaient que l'adressage direct, pas plus. L'adressage indirect n'était tout simplement pas possible. Avec l'adressage direct, l'adresse à lire est extraite directement des instructions, par l'unité de contrôle. Le bus d'adresse de la RAM est alors relié directement à l'unité de contrôle, le bus de données est relié aux registres.
[[File:Architecture Harvard avec adressage direct uniquement.png|centre|vignette|upright=2|Architecture Harvard avec adressage direct uniquement]]
Mais dès les années 70, l'adressage indirect est apparu, rendant la programmation bien plus simple. Mais cela a demandé quelques adaptation au niveau du processeur. Avec l'adressage indirect, le bus d'adresse est connecté aux registres. Il a donc fallu rajouter un multiplexeur pour que le processeur décide de relier le bus d'adresse soit aux registres, soit à l'unité de contrôle.
===Un ordinateur peut avoir plusieurs processeurs===
La plupart des ordinateurs n'ont qu'un seul processeur, ce qui fait qu'on désigne avec le terme d''''ordinateurs mono-processeur'''. Mais il a existé (et existe encore) des '''ordinateurs multi-processeurs''', avec plusieurs processeurs sur la même carte mère. L'idée était de gagner en performance : deux processeurs permettent de faire deux fois plus de calcul qu'un seul, quatre permettent d'en faire quatre fois plus, etc. C'est très courant sur les supercalculateurs, des ordinateurs très puissants conçus pour du calcul industriel ou scientifique, mais aussi sur les serveurs ! Dans le cas le plus courant, ils utilisent plusieurs processeurs identiques : on utilise deux processeurs Core i3 de même modèle, ou quatre Pentium 3, etc.
Pour utiliser plusieurs processeurs, les programmes doivent être adaptés. Pour cela, il y a plusieurs possibilités :
* Une première possibilité, assez intuitive, est d’exécuter des programmes différents sur des processeurs différents. Par exemple, on exécute le navigateur web sur un processeur, le lecteur vidéo sur un autre, etc.
* La seconde option est de créer des programmes spéciaux, qui utilisent plusieurs processeurs. Ils répartissent les calculs à faire sur les différents processeurs. Un exemple est la lecture d'une vidéo sur le web : un processeur peut télécharger la vidéo pendant le visionnage et bufferiser celle-ci, un autre processeur peut décoder la vidéo, un autre décoder l'audio. De tels programmes restent des suites d'instructions, mais ils sont plus complexes que les programmes normaux, aussi nous les passons sous silence.
* La troisième option est d’exécuter le même programme sur les différents processeurs, mais chaque processeur traite son propre ensemble de données. Par exemple, pour un programme de rendu 3D, quatre processeurs peuvent s'occuper chacun d'une portion de l'image.
[[File:Architecture de Von Neumann Princeton multi processeurs.svg|centre|vignette|upright=2|Architecture de Von Neumann Princeton multi processeurs]]
De nos jours, les ordinateurs grand public les plus utilisés sont dans un cas intermédiaire, ils ne sont ni mono-, ni multi-processeur. Ils n'ont qu'un seul processeur, dans le sens où si on ouvre l'ordinateur et qu'on regarde la carte mère, il n'y a qu'un seul processeur. Mais ce processeur est en réalité assez similaire à un regroupement de plusieurs processeurs dans le même boitier. Il s'agit de '''processeurs multicœurs''', qui contiennent plusieurs cœurs, chaque cœur pouvant exécuter un programme tout seul.
La différence entre cœur et processeur est assez difficile à saisir, mais pour simplifier : un cœur est l'ensemble des circuits nécessaires pour exécuter un programme. Chaque cœur dispose de toute la machinerie électronique pour exécuter un programme, à savoir des circuits aux noms barbares comme : un séquenceur d'instruction, des registres, une unité de calcul. Par contre, certains circuits d'un processeur ne sont présents qu'en un seul exemplaire dans un processeur multicœur, comme les circuits de communication avec la mémoire ou les circuits d’interfaçage avec la carte mère.
Suivant le nombre de cœurs présents dans notre processeur, celui-ci sera appelé un processeur double-cœur (deux cœurs), quadruple-cœur (4 cœurs), octuple-cœur (8 cœurs), etc. Un processeur double-cœur est équivalent à avoir deux processeurs dans l'ordinateur, un processeur quadruple-cœur est équivalent à avoir quatre processeurs dans l'ordinateur, etc. Ces processeurs sont devenus la norme dans les ordinateurs grand public et les logiciels et systèmes d'exploitation se sont adaptés.
===Les coprocesseurs===
Quelques ordinateurs assez anciens disposaient de '''coprocesseurs''', des processeurs qui complémentaient un processeur principal. Les ordinateurs de ce type avaient un processeur principal, le '''CPU''', qui était secondé par un ou plusieurs coprocesseurs. Sauf exception, le CPU et le coprocesseur exécutent des programmes différents, ils travaillent en parallèle.
Les coprocesseurs les plus connus sont les '''coprocesseurs pour le rendu 2D/3D'''. Ils ont eu leur heure de gloire sur les anciennes consoles de jeux vidéo, comme Super Nintendo, la Playstation et autres consoles de cette génération ou antérieure. Ils s'occupaient respectivement de calculer les graphismes des jeux vidéos. De nos jours, ils ont été remplacés par des cartes graphiques, ou des ''Graphic Processing Units'', qui ne sont pas considérées comme des coprocesseurs.
Les '''coprocesseurs sonores''' sont une sorte d'ancêtre des cartes son, utilisés sur les anciennes consoles de jeux vidéo, comme La Nintendo 64, la Playstation et autres consoles antérieures. Ils s'occupaient respectivement de calculer tout ce qui a trait au son. Pour donner un exemple, on peut citer la console Neo-géo, qui disposait de deux processeurs travaillant en parallèle : un processeur principal, et un coprocesseur sonore. Le processeur principal était un Motorola 68000, alors que le coprocesseur sonore était un processeur Z80.
L'accès aux périphériques est quelque chose sur lequel nous passerons plusieurs chapitres dans ce cours. Mais sachez que l'accès aux périphériques peut demander pas mal de puissance de calculs. Le CPU principal peut faire ce genre de calculs par lui-même, mais il n'est pas rare qu'un '''coprocesseur d'IO''' soit dédié à l'accès aux périphériques. Un exemple assez récent est celui de la console de jeu Nintendo 3DS. Elle disposait d'un processeur principal de type ARM9, d'un coprocesseur pour les divisions qu'on abordera plus bas, et d'un second processeur ARM7. L'ARM 7 était utilisé comme coprocesseur d'I/O, ainsi que pour l'émulation de la console GBA.
[[File:Asmp 2.gif|centre|vignette|upright=2|Co-processeur pour l'accès aux entrées-sorties.]]
Les '''coprocesseurs arithmétiques''' sont un peu à part des autres. Ils sont spécialisés dans les calculs en virgule flottante. Ils étaient utilisés à une époque où les CPU ne géraient que des calculs entiers (en binaire ou en BCD). Un exemple est le coprocesseur flottant x87, complémentaire des premiers processeurs Intel x86. Il y a eu la même chose sur les processeurs Motorola 68000, avec deux coprocesseurs flottants appelés les Motorola 68881 et les Motorola 68882.
Un exemple récent de coprocesseur est celui utilisé sur la console de jeu Nintendo DS. La console utilisait deux processeurs, un ARM9 et un ARM7, qui ne pouvaient pas faire de division entière. Il s'agit pourtant d'opérations importantes dans le cas du rendu 3D, ce qui fait que les concepteurs de la console ont rajouté un coprocesseur spécialisé dans les divisions entières et les racines carrées. Le coprocesseur était adressable directement par le processeur, comme peuvent l'être la RAM ou les périphériques.
==Les entrées-sorties==
Tous les circuits vus précédemment traitent des données codées en binaire. Ceci dit, les données ne sortent pas de n'importe où : l'ordinateur contient des composants électroniques qui traduisent des informations venant de l’extérieur en nombres. Ces composants sont ce qu'on appelle des '''entrées'''. Par exemple, le clavier est une entrée : l'électronique du clavier attribue un nombre entier (''scancode'') à une touche, nombre qui sera communiqué à l’ordinateur lors de l'appui d'une touche. Pareil pour la souris : quand vous bougez la souris, celle-ci envoie des informations sur la position ou le mouvement du curseur, informations qui sont codées sous la forme de nombres. La carte son évoquée il y a quelques chapitres est bien sûr une entrée : elle est capable d'enregistrer un son, et de le restituer sous la forme de nombres.
S’il y a des entrées, on trouve aussi des '''sorties''', des composants électroniques qui transforment des nombres présents dans l'ordinateur en quelque chose d'utile. Ces sorties effectuent la traduction inverse de celle faite par les entrées : si les entrées convertissent une information en nombre, les sorties font l'inverse : là où les entrées encodent, les sorties décodent. Par exemple, un écran LCD est un circuit de sortie : il reçoit des informations, et les transforme en image affichée à l'écran. Même chose pour une imprimante : elle reçoit des documents texte encodés sous forme de nombres, et permet de les imprimer sur du papier. Et la carte son est aussi une sortie, vu qu'elle transforme les sons d'un fichier audio en tensions destinées à un haut-parleur : c'est à la fois une entrée, et une sortie.
Les '''entrées-sorties''' incluent toutes les entrées et sorties, et même certains composants qui sont les deux à la fois. Il s'agit d'un terme générique, qui regroupe des composants forts différents. Dans ce qui va suivre, nous allons parfois parler de périphériques au lieu d'entrées-sorties, mais les deux termes ne sont pas équivalents. Dans le détail, les entrées-sorties regroupent :
* Les '''périphériques''' sont les composants connectés sur l'unité centrale. Exemple : les claviers, souris, webcam, imprimantes, écrans, clés USB, disques durs externes, la Box internet, etc.
* Les '''cartes d'extension''', qui se connectent sur la carte mère via un connecteur, comme les cartes son ou les cartes graphiques.
* D'autres composants sont soudés à la carte mère mais sont techniquement des entrées-sorties : les cartes sons soudées sur les cartes mères actuelles, par exemple.
===L'interface avec le reste de l'ordinateur===
Les entrées-sorties sont très diverses, fonctionnent très différemment les unes des autres. Mais du point de vue du reste de l'ordinateur, les choses sont relativement standardisées. Du point de vue du processeur, les entrées-sorties sont juste des paquets de registres ! Tous les périphériques, toutes les entrées-sorties contiennent des '''registres d’interfaçage''', qui permettent de faire l'intermédiaire entre l'entrée/sortie et le reste de l'ordinateur. L'entrée/sortie est conçu pour réagir automatiquement quand on écrit dans ces registres.
[[File:Registres d'interfaçage.png|centre|vignette|upright=2|Registres d'interfaçage.]]
Les registres d’interfaçage sont assez variés. Les plus évidents sont les '''registres de données''', qui permettent l'échange de données entre le processeur et les périphériques. Pour échanger des données avec l'entrée/sortie, le processeur a juste à lire ou écrire dans ces registres de données. On trouve généralement un registre de lecture et un registre d'écriture, mais il se peut que les deux soient fusionnés en un seul registre d’interfaçage de données. Si le processeur veut envoyer une donnée à une entrée/sortie, il a juste à écrire dans ces registres. Inversement, s'il veut lire une donnée, il a juste à lire le registre adéquat.
Mais le processeur ne fait pas que transmettre des données à l'entrée/sortie. Le processeur lui envoie aussi des « commandes », des valeurs numériques auxquelles l'entrée/sortie répond en effectuant un ensemble d'actions préprogrammées. En clair, ce sont l'équivalent des instructions du processeur, mais pour l'entrée/sortie. Par exemple, les commandes envoyées à une carte graphique peuvent être : affiche l'image présente à cette adresse mémoire, calcule le rendu 3D à partir des données présentes dans ta mémoire, etc. Pour recevoir les commandes, l'entrée/sortie contient des ''registres de commande'' qui mémorisent les commandes envoyées par le processeur. Quand le processeur veut envoyer une commande à l'entrée/sortie, il écrit la commande en question dans ce ou ces registres.
Enfin, beaucoup d'entrée/sortie ont un ''registre d'état'', lisible par le processeur, qui contient des informations sur l'état de l'entrée/sortie. Ils servent notamment à indiquer au processeur que l'entrée/sortie est disponible, qu'il est en train d’exécuter une commande, qu'il est occupé, qu'il y a un problème, qu'il y a une erreur de configuration, etc.
===Les adresses des registres d’interfaçage===
Les registres des périphériques sont identifiés par des adresses mémoires. Et les adresses sont conçues de façon à ce que les adresses des différentes entrées/sorties ne se marchent pas sur les pieds. Chaque entrée/sortie, chaque registre, chaque contrôleur a sa propre adresse. D'ordinaire, certains bits de l'adresse indiquent quel est le destinataire. Certains indiquent quel est l'entrée/sortie voulue, les restants indiquant le registre de destination.
Il existe deux organisations possibles pour les adresses des registres d’interfaçages. La première possibilité est de séparer les adresses pour les registres d’interfaçage et les adresses pour la mémoire. Le processeur doit avoir des instructions séparées pour gérer les périphériques et adresser la mémoire. Il a des instructions de lecture/écriture pour lire/écrire en mémoire, et d'autres pour lire/écrire les registres d’interfaçage. Sans cela, le processeur ne saurait pas si une adresse est destinée à un périphérique ou à la mémoire.
[[File:Espaces d'adressages séparés entre mémoire et périphérique.png|centre|vignette|upright=2.5|Espaces d'adressages séparés entre mémoire et périphérique]]
L'autre méthode mélange les adresses mémoire et des entrées-sorties. Si on prend par exemple un processeur de 16 bits, où les adresses font 16 bits, alors les 65536 adresses possibles seront découpées en deux portions : une partie ira adresser la RAM/ROM, l'autre les périphériques. On parle alors d''''entrées-sorties mappées en mémoire'''. L'avantage est que le processeur n'a pas besoin d'avoir des instructions séparées pour les deux.
[[File:IO mappées en mémoire.png|centre|vignette|upright=2.0|IO mappées en mémoire]]
Pour résumer, communiquer avec une entrée/sortie est similaire à ce qu'on a avec les mémoires. Il suffit de lire ou écrire dans des registres d’interfaçage, qui ont chacun une adresse mémoire. Le problème est que le système d'exploitation ne connaît pas toujours le fonctionnement d'une entrée/sortie : il faut installer un programme qui va s'exécuter quand on souhaite communiquer avec l'entrée/sortie, et qui s'occupera de tout ce qui est nécessaire pour le transfert des données, l'adressage du périphérique, etc. Ce petit programme est appelé un driver ou '''pilote de périphérique'''. La « programmation » périphérique est très simple : il suffit de savoir quoi mettre dans les registres, et c'est le pilote qui s'en charge.
==Les architectures Harvard et Von Neumann==
Après avoir vu le processeur, les mémoires et les entrées-sorties, voyons voir comment le tout est interconnecté. Tous les ordinateurs ne sont pas organisés de la même manière, pour ce qui est de leurs bus. Mais pour comprendre pourquoi, nous devons regarder qui communique avec qui, dans un ordinateur. Pour rappel, les données sont placées en mémoire RAM, alors que les instructions sont placées en mémoire ROM. Le processeur lit des instructions dans la mémoire ROM, il lit et écrit dans la mémoire RAM, et accède aux registres d’interfaçage des entrées-sorties. Il y a donc besoins de trois interconnexions : CPU-ROM, CPU-RAM et CPU-IO.
[[File:Réseau d'interconnexion avec un processeur au centre.png|centre|vignette|upright=2|Réseau d'interconnexion avec un processeur au centre]]
Il parait intéressant d'utiliser trois interconnexions, au minimum CPU-ROM, CPU-RAM et CPU-IO. Néanmoins, faire ainsi a de nombreux désavantages. Déjà, il faut pouvoir brancher tout ça sur le processeur. Et celui-ci n'a pas forcément assez de broches pour. Aussi, il est parfois préférable de mutualiser des bus, à savoir de connecter plusieurs composants sur un même bus. Par exemple, on peut mutualiser le bus pour la mémoire RAM et pour la mémoire ROM. Il faut dire que les deux bus sont des bus mémoire, avec un bus d'adresse, un bus de données, et surtout : des bus de commande similaires. Les mutualiser est alors très simple, et permet d'économiser pas mal de broches.
[[File:Réseau d'interconnexion avec un processeur au centre et une architecture Harvard.png|centre|vignette|upright=2|Réseau d'interconnexion avec un processeur au centre et une architecture Harvard]]
Cette mutualisation nous amène naturellement à parler de la distinction entre les architectures Harvard d'un côté et les architectures Von Neumann de l'autre. Elle est très liée au fait d'utiliser soit un bus mémoire unique, soit des bus séparés pour la ROM et la RAM. Voyons cela en détail.
===Les architectures Harvard et Von Neumann : des bus séparés ou unifiés===
Avec l''''architecture Harvard''', la mémoire ROM et la mémoire RAM sont reliées au processeur par deux bus séparés. Il y a un bus RAM pour la mémoire RAM, un bus ROM pour la mémoire ROM. L'avantage de cette architecture est qu'elle permet de charger une instruction et une donnée simultanément : une instruction chargée sur le bus relié à la mémoire programme, et une donnée chargée sur le bus relié à la mémoire de données. Et cela simplifie fortement la conception du processeur.
[[File:Harvard Architecture.png|centre|vignette|upright=2|Architecture Harvard, avec une ROM et une RAM séparées.]]
Avec l''''architecture Von Neumann''', mémoire ROM et mémoire RAM sont reliées au processeur par un bus unique. Le bus unique qui relie processeur, RAM et ROM, s'appelle le '''bus mémoire'''. Un défaut de ces architecture est qu'elles ne peuvent pas charger une instruction et une donnée en même temps. Et cela pose quelques problèmes pour la conception du processeur. Par contre, nous verrons dans ce qui suit qu'utiliser un bus mémoire partagé est bien plus flexible et permet des choses que les architectures Harvard ne peuvent pas faire.
[[File:Architecture Von Neumann, avec deux bus séparés.png|centre|vignette|upright=2|Architecture Von Neumann, avec deux bus séparés.]]
===Les architectures Harvard et Von Neumann : des espaces d'adressage séparés ou unifiés===
La distinction précédente se base sur les connexions entre RAM, ROM et processeur. Mais il existe une autre distinction, très liée, qui est souvent utilisée comme seconde définition des architectures Harvard/Von Neumann. Elle est liée aux adresses mémoire que le processeur peut gérer. Prenons un processeur 16 bits, par exemple, qui gère naturellement des adresses de 16 bits. Il peut gérer 2^16 adresses, soit 64 kibioctets de mémoire. L'ensemble de ces adresses est appelé un '''espace d'adressage'''. Mais comment cet espace d'adressage est utilisé pour adresser une RAM et une ROM ?
Sur les architectures Harvard, le processeur voit deux mémoires séparées avec leur lot d'adresses distinctes. Une même adresse peut donc correspondre soit à la mémoire ROM, soit à la mémoire RAM, suivant le bus utilisé. L'espace d'adressage est donc doublé, dupliqué, avec un pour la ROM, un autre pour la RAM. Rien d'étonnant à cela : il y a deux bus d'adresses, chacun correspondant à un espace d'adressage.
[[File:Vision de la mémoire par un processeur sur une architecture Harvard.png|centre|vignette|upright=2|Vision de la mémoire par un processeur sur une architecture Harvard.]]
Avec l'architecture Von Neumann, la RAM et la ROM doivent se partager les adresses mémoires disponibles. Il n'y a qu'un seul espace d'adressage qui est coupé en deux, avec une partie pour la ROM et une autre pour la RAM. Une adresse correspond soit à la mémoire RAM, soit à la mémoire ROM, mais pas aux deux. Typiquement, la mémoire ROM occupe une partie des adresses, la mémoire RAM utilise le reste. La répartition des adresses est réalisée par les circuits de décodage d'adresse mentionnés plus haut.
[[File:Vision de la mémoire par un processeur sur une architecture Von Neumann.png|centre|vignette|upright=2|Vision de la mémoire par un processeur sur une architecture Von Neumann.]]
Les '''architectures Harvard modifiées''' sont des intermédiaires entre architectures Harvard et architectures Von Neumann, bien qu'elles penchent bien plus du côté des architectures Harvard. Précisons que la terminologie n'est pas claire, beaucoup d'auteurs mettent des définitions différentes derrière ces deux termes. Mais dans ce cours, nous utiliserons une définition très stricte de ce qu'est une architecture Harvard modifiée.
Une architecture Harvard modifiée est une architecture Harvard, où le processeur peut lire des données constantes depuis la mémoire ROM. Nous avions vu plus haut que les mémoires ROM peuvent mémoriser, en plus d'un programme exécutable, des données constantes, qui ne varient pas. Les architectures Harvard pures ne permettent pas de lire des données de ce genre depuis la mémoire ROM, alors que les architectures Harvard modifiées le permettent.
Une architecture Harvard modifiée dispose d'une instruction pour lire les données en mémoire RWM, et d'une instruction pour lire des données en mémoire ROM. Il y a donc deux versions de l'instruction LOAD, qui copient la donnée dans un registre général, mais dont la source de la donnée est différente. Une autre possibilité, plus rare, est que une instruction de copie, qui copie une constante depuis la mémoire ROM vers la mémoire RAM. Le cas le plus commun est l'utilisation de deux instructions LOAD séparées.
[[File:Espaces d'adressage sur une archi harvard modifiée.png|centre|vignette|upright=2.5|Espaces d'adressage sur une archi harvard modifiée]]
Ceci étant dit, revenons à la distinction entre architecture Harvard et Von Neumann. Il faut noter que la RAM et la ROM n'ont pas forcément la même taille. Et ce que ce soit sur une architecture Harvard que sur une architecture Von Neumann, mais c'est plus facile à expliquer sur une architecture Harvard.
On peut par exemple imaginer une architecture Harvard qui utilise des adresses de 16 bits pour la ROM, et seulement 8 bits pour la RAM. Le résultat est qu'il peut adresser 64 kibioctets de ROM, mais seulement 256 octets de RAM. Les deux bus d'adresse sont alors de taille différente, l'un faisant 8 bits, l'autre 16. Quelques processeurs 8 bits étaient dans ce cas, comme on le verra dans le chapitre sur les CPU 8bits. Mais d'autres processeurs utilisent des valeurs différentes, avec par exemple des adresses de 16 bits pour la RAM, mais de 20 bits pour la ROM, ou inversement.
Sur une architecture Von Neumann, tout dépend de comment les adresses sont réparties. La solution la plus simple découpe l'espace d'adressage en deux parties égales, avec la RAM qui est dans la moitié basse (qui part de l'adresse 0 jusqu'à l'adresse au milieu), alors que la ROM est dans la moitié haute (entre l'adresse du milieu et l'adresse maximale). Mais ce n'est pas la seule possibilité, la limite entre RAM et ROM peut être mise n'importe où. Prenons par exemple un processeur 32 bits, capable de gérer 4 milliards d'adresse. Il est parfaitement possible de réserver 128 mébioctets de poids fort à la mémoire ROM, et de laisser le reste à la mémoire RAM.
===Le décodage d'adresse sur les architectures Von Neumann===
Pour résumer, les architectures Harvard et Von Neumann se distinguent sur deux points :
* L'accès à la RAM et à la ROM se font par des bus séparés sur l'architecture Harvard, sur le même bus avec l'architecture Von Neumann.
* Les adresses pour la mémoire ROM et la mémoire RAM sont séparées sur les architectures Harvard, partagées sur l’architecture Von Neumann.
Les architectures Von Neumann utilisent donc un seul bus pour connecter la RAM et la ROM au processeur. Mais cela ne parait pas intuitif : comment deux composants peuvent se connecter aux mêmes fils ? Parce que c'est ce qu'implique le fait de partager un bus. Si je prends une mémoire RAM et une mémoire ROM, toutes deux de 8 bits, elles seront connectées à un bus mémoire de 8 bits. Intuitivement, on se dit qu'il y aura des conflits, du genre : la RAM et la ROM vont accéder au bus en même temps, comment savoir si une adresse est destinée à la RAM ou la ROM, etc ?
Tous ces problèmes sont résolus avec une solution très simple : à chaque instant, seule une mémoire est connectée au bus. L'idée est que les mémoires sont connectées ou déconnectées du bus selon les besoins. Si le processeur veut envoyer lire une donnée en mémoire RAM, il déconnecte la mémoire ROM du bus. Et inversement, s'il veut lire une instruction, il déconnecte la RAM et connecte la ROM.
Pour cela, les mémoires RAM et ROM possèdent une entrée ''Chip Select'' ou ''Output Enable'', qui agit comme une sorte de bouton ON/OFF. Lorsqu'on met un 1 sur cette entrée, la mémoire se connectera au bus. Ses entrées et sorties fonctionneront normalement, elle pourra recevoir des adresses, envoyer ou recevoir des données, tout sera normal. Par contre, si on met un 0 sur cette entrée, la mémoire se "désactive", ses entrée-sorties ne répondent plus aux sollicitations extérieures. Pire que ça : elles sont électriquement déconnectées.
Au total, tout cela demande de gérer deux bit ''Chip Select''/''Output Enable'' : un pour la RAM, un pour la ROM. Et ces deux bits sont configurés pour chaque accès mémoire, pour chaque lecture ou écriture. Pour cela, un circuit de '''décodage d'adresse''' prend en entrée l'adresse mémoire à lire/écrire, et active/désactive les mémoires RAM/ROM selon les besoins. Il prend l'adresse et configure les bits ''Chip Select''/''Output Enable''.
[[File:Décodage d'adresse sur une architecture Von Neumann.png|centre|vignette|upright=2|Décodage d'adresse sur une architecture Von Neumann.]]
L'implémentation la plus simple réserve la moitié des adresses pour la RAM, l'autre moitié pour la ROM. Typiquement, la ROM prend la moitié basse, la RAM la moitié haute. Dans ce cas, activer/désactiver la RAM et la ROM se fait avec seulement le bit de poids fort de l'adresse. Si le bit de poids fort est à 1, alors on accède à la RAM et la ROM doit être désactivée. Mais si ce bit est à 0, alors on accède à la moitié basse et il faut désactiver la RAM.
Une remarque intéressante : le fait de séparer la mémoire en deux parts égales permet de simuler une architecture Harvard à partir d'une architecture Von Neumann. Par exemple, le tout premier processeur d'Intel, le 4004, était l'un de ceux là. La RAM et la ROM sont reliés au même bus, et il y a donc un unique espace d'adressage, qui est séparé en deux parties égales. Le truc est que le processeur traite les deux parties égales comme deux espaces d'adressage séparés. Le processeur se débrouille pour cacher le fait qu'il y a un espace d'adressage unique coupé en deux, ce qui fait que les programmeurs voient bien deux espaces d'adressages distincts.
[[File:Décodage d'adresse sur une architecture Von Neumann basique.png|centre|vignette|upright=2|Décodage d'adresse sur une architecture Von Neumann basique.]]
Pour résumer, quand une adresse est envoyée sur le bus, les deux mémoires vont la recevoir mais une seule va répondre et se connecter au bus. Le décodage d'adresse garantit que seule la mémoire adéquate réponde à un accès mémoire. Le décodage d'adresse est réalisé par la carte mère, par un composant dédié.
Le mécanisme peut être utilisé pour combiner plusieurs RAM en une seule, idem avec les ROM. Pour comprendre l'idée, je vais prendre l'exemple de l'IBM PC, un des tout premier PC existant. Nous étudierons ce PC dans une section dédiée, à la fin du chapitre, aussi je vais passer rapidement dessus. Tout ce que je vais faire est vous présenter la carte mère du PC, et vous demander de faire est de compter les mémoires ROM et mémoires RAM sur la carte mère :
[[File:IBM 5150 Motherboard.svg|centre|vignette|upright=3|Carte mère de l'IBM 5150, un modèle de l'IBM PC.]]
Si vous remarquerez qu'il y a 5 mémoires ROM et 8 à 32 mémoires RAM. Le fait est que le processeur voit les différentes mémoires ROM comme une seule mémoire ROM. Idem avec les mémoires RAM : elle font chacune 2 kibioctets, et l'ensemble est vu par le processeur comme une seule RAM de 16 à 64 kibioctets. Et cela grâce aux circuits de décodage d'adresse, qui sont situés en haut à droite de la carte mère.
Pour comprendre l'idée, prenons l'exemple d'un processeur 16 bits, capable de gérer 64 kibioctets de mémoire. L'espace d'adressage est découpé en quatre portions, de 16 kibioctets chacune. Une portion est réservée à une ROM de 16 kibioctet, les autres sont chacune réservée à une RAM de 16 kibioctet. Le décodage d'adresse sélectionne alors la mémoire adéquate en utilisant les deux bits de poids fort de l'adresse.
* S'ils valent 00, alors c'est la mémoire ROM qui est activée, connectée au bus.
* S'ils valent 01, alors c'est la première mémoire RAM qui est connectée au bus.
* S'ils valent 10, alors c'est la seconde mémoire RAM qui est connectée au bus.
* S'ils valent 11, alors c'est la troisième mémoire RAM qui est connectée au bus.
[[File:Décodage d'adresse sur une architecture Von Neumann, utilisant plusieurs RAM et une ROM.png|centre|vignette|upright=3|Décodage d'adresse sur une architecture Von Neumann, utilisant plusieurs RAM et une ROM]]
===L'impact sur la conception du processeur===
Plus haut, j'ai parlé d'un des avantages des architectures Harvard : elles peuvent lire une instruction en même temps qu'elles accèdent à une donnée. La donnée est lue/écrite en RAM, alors que l'instruction est lue en ROM. Et cela permet de simplifier l'intérieur du processeur. Pas de beaucoup, mais c'est déjà ça de pris. Voyons maintenant comment cela impacte l'intérieur du processeur. Tout ce dont vous avez à vous rappeler est la séparation entre chemin de données et unité de contrôle, et que les registres généraux sont dans le premier, le ''program counter'' dans la seconde.
Avec une architecture Harvard, les instructions et les données passent par des bus différent : bus ROM pour les instructions, bus RAM pour les données. L'intuition nous dit que le bus pour la mémoire ROM est connecté à l'unité de contrôle, alors que le bus pour la RAM est connecté au chemin de données. Et dans les grandes lignes, c'est vrai. La logique est imparable pour ce qui est des bus de données. Mais il y a une petite subtilité pour les bus d'adresse.
Pour comprendre comment le processeur exploite ces deux bus, voyons ce qui transite dessus. Pour la mémoire ROM, elle reçoit l'adresse de l'instruction à lire, elle renvoie l'instruction adéquate. Pour cela, le ''program counter'' est envoyé sur le bus d'adresse, l'instruction sur le bus de données. Pour la mémoire RAM, elle échange des données avec les registres généraux, les registres pour les données. Les adresses utilisées pour la RAM viennent elles soit du chemin de données, soit de l'unité de contrôle, tout dépend du mode d'adressage. Mais le ''program counter'' n'est pas impliqué.
[[File:Architecture Harvard - échanges de données.png|centre|vignette|upright=2|Architecture Harvard - échanges de données]]
Les architectures Harvard modifiées doivent cependant rajouter une connexion entre le bus ROM et les registres généraux. C'est nécessaire pour charger une donnée constante depuis la mémoire ROM. Rappelons que la donnée constante est copiée dans un registre général, donc dans le chemin de données.
[[File:Architecture Harvard modifiée - implémentation du processeur.png|centre|vignette|upright=2|Architecture Harvard modifiée - implémentation du processeur]]
Avec les architectures Von Neumann, il y a un seul bus qui est relié à la fois au chemin de données et à l'unité de contrôle. Si le processeur lit une instruction, le bus doit être relié à l'unité de contrôle. Par contre, s'il accède à une donnée, il doit être relié au chemin de données (le bus d'adresse peut éventuellement être connecté au séquenceur, si celui-ci fournit l'adresse à lire). Il faut donc utiliser un paquet de multiplexeurs et de démultiplexeurs pour faire la connexion au bon endroit.
[[File:Architecture Von Neumann - implémentation du processeur.png|centre|vignette|upright=2|Architecture Von Neumann - implémentation du processeur]]
Une instruction se fait en deux temps : on charge l'instruction depuis la mémoire ROM, puis on l'exécute. Avec une architecture Harvard, tout cela se fait en un seul cycle d'horloge, vu que charger la ROM et accéder aux données peut se faire en même temps. Pas avec les architectures Von Neumann, qui doivent libérer le bus mémoire après avoir chargé une instruction. Elles n'ont pas le choix : elles chargent l'instruction lors d'un premier cycle d'horloge, puis l'exécutent lors du second.
Pour cela, ils incorporent un registre appelé le '''registre d'instruction''', qui mémorise l'instruction chargée. L'instruction est copiée dans ce registre lors du premier cycle, puis est utilisée lors du second cycle. Le registre permet de ne pas oublier l’instruction entre les deux cycles. Le registre d'instruction est obligatoire sur les architectures Von Neumann. En comparaison, il est facultatif sur les architectures Harvard. Elles peuvent en avoir un, pour des raisons techniques, mais ce n'est pas obligatoire.
[[File:Registre d'instruction.png|centre|vignette|upright=2|Registre d'instruction.]]
===Les architectures Von Neumann sont plus flexibles===
Sur les architectures Harvard, le processeur sait faire la distinction entre programme et données. Les données sont stockées dans la mémoire RAM, le programme est stocké dans la mémoire ROM. Les deux sont séparés, accédés par le processeur sur des bus séparés, et c'est ce qui permet de faire la différence entre les deux. Il est impossible que le processeur exécute des données ou modifie le programme. Du moins, tant que la mémoire qui stocke le programme est bien une ROM.
Par contre, sur les architectures Von Neumann, il est impossible de distinguer programme et données, sauf en ajoutant des techniques de protection mémoire avancées. La raison est qu'il est impossible de faire la différence entre donnée et instruction, vu que rien ne ressemble plus à une suite de bits qu'une autre suite de bits. Et c'est à l'origine d'un des avantages majeur de l'architecture Von Neumann : il est possible que des programmes soient copiés dans la mémoire RWM et exécutés dans celle-ci.
Un cas d'utilisation familier est celui de votre ordinateur personnel. Le système d'exploitation et les autres logiciels sont copiés en mémoire RAM à chaque fois que vous les lancez. Mais cet exemple implique un disque dur, ce qui rend les choses plus compliquées que prévu. Un autre exemple serait la compilation de code à la volée, mais il ne sera pas très parlant.
Un exemple plus adapté serait celui où la ROM mémorise un programme compressée dans la mémoire ROM, qui est décompressé pour être exécuté en mémoire RAM. Le programme de décompression est stocké en mémoire ROM et est exécuté au lancement de l’ordinateur. Cette méthode permet d'utiliser une mémoire ROM très petite et très lente, tout en ayant un programme rapide (si la mémoire RWM est rapide).
Il est aussi possible de créer des programmes qui modifient leurs propres instructions : cela s'appelle du '''code auto-modifiant'''. Ce genre de choses servait autrefois sur des ordinateurs rudimentaires, au tout début de l'informatique. À l'époque, les adresses à lire/écrire devaient être écrites en dur dans le programme, dans les instructions exécutées. Pour gérer certaines fonctionnalités des langages de programmation qui ont besoin d'adresses modifiables, comme les tableaux, on devait corriger les adresses au besoin avec du code auto-modifiant. De nos jours, le code automodifiant est utilisée occasionnellement pour rendre un programme indétectable dans la mémoire (les virus informatiques utilisent beaucoup ce genre de procédés).
L'impossibilité de séparer données et instructions est à l'origine de problèmes assez fâcheux. Il est parfaitement possible que le processeur charge et exécute des données, qu'il prend par erreur pour des instructions. C'est le cas quand des pirates informatiques arrivent à exploiter des bugs. Il arrive que des pirates informatiques vous fournissent des données corrompues, qui contiennent un virus ou un programme malveillant est caché dans les données. Les bugs en question permettent d'exécuter ces données, donc virus. Pour éviter cela, le système d'exploitation peut marquer certaines zones de la mémoire comme non-exécutable, c’est-à-dire que le système d'exploitation interdit d’exécution de quoi que ce soit qui est dans cette zone. Mais ce n'est pas parfait.
Toujours est-il que tout cela est impossible sur les architectures Harvard. Et ce serait très limitant. Imaginez : pas possible de lancer un programme depuis le disque dur ou une clé USB, le programme doit impérativement être dans une mémoire ROM, pas de compilation à la volée, etc. Que des techniques très utilisées dans l'informatique moderne. Malgré ses défauts, les architectures Von Neumann ne sont pas les plus utilisées pour rien. Les architectures Harvard sont concrètement utilisées uniquement dans l'informatique embarquée, sur des microcontrôleurs très spécifiques.
==Le bus de communication avec les entrées-sorties==
Le processeur, la mémoire et les entrées-sorties sont connectées par un ou plusieurs '''bus de communication'''. Ce bus n'est rien d'autre qu'un ensemble de fils électriques sur lesquels on envoie des zéros ou des uns. Pour communiquer avec la mémoire, il y a trois prérequis qu'un bus doit respecter : pouvoir sélectionner la case mémoire (ou l'entrée-sortie) dont on a besoin, préciser à la mémoire s'il s'agit d'une lecture ou d'une écriture, et enfin pouvoir transférer la donnée. Pour cela, on doit donc avoir trois bus spécialisés, bien distincts, qu'on nommera le bus de commande, le bus d'adresse, et le bus de donnée.
* Le '''bus de données''', sur lequel s'échangent les données entre les composants.
* Le '''bus de commande''' pour configurer la mémoire et les entrées-sorties.
* Le '''bus d'adresse''', facultatif, permet de préciser quelle adresse mémoire il faut lire/écrire.
Chaque composant possède des entrées séparées pour le bus d'adresse, le bus de commande et le bus de données. Par exemple, une mémoire RAM possédera des entrées sur lesquelles brancher le bus d'adresse, d'autres sur lesquelles brancher le bus de commande, et des broches d'entrée-sortie pour le bus de données. Précisons cependant que le bus de commande n'est pas exactement le même entre des mémoires RAM/ROM et des entrées-sorties.
[[File:Bus general schematic.svg|centre|vignette|upright=2|Contenu d'un bus, généralités.]]
===Le réseau d'interconnexion : généralités===
Reprenons où nous nous étions arrêté. Avant de voir les architectures Harvard et Von Neumann, nous avions dit que le processeur, les mémoires et les entrées-sorties sont reliées entre eux par un réseau d'interconnexion. Nous venons de voir qu'il est possible de mutualiser certains bus, notamment celui de la mémoire RAM et celui de la mémoire ROM. Mais il est possible de faire la même chose pour les entrées-sorties. Là encore, il est possible de regrouper le bus mémoire avec les bus pour les entrées-sorties. Voyons ce que cela implique.
{|
|[[File:Réseau d'interconnexion avec un processeur au centre.png|centre|vignette|upright=2|Réseau d'interconnexion avec une architecture Harvard.]]
|[[File:Réseau d'interconnexion avec un processeur au centre et une architecture Harvard.png|centre|vignette|upright=2|Interconnexions d'une architecture Von Neumann.]]
|}
Avant de poursuivre, nous devons préciser quelque chose d'important. Sur les ordinateurs modernes, les entrées-sorties peuvent accéder à la mémoire RAM. Les ordinateurs modernes intègrent des techniques de '''''Direct Memory Access''''' (DMA) qui permettent aux entrées-sorties de lire ou d'écrire en mémoire RAM. Les transferts DMA se font sans intervention du processeur. Ils permettent de copier un bloc de plusieurs octets, dans deux sens : de la mémoire RAM vers une entrée-sortie, ou inversement. Le DMA demande d'ajouter un circuit dédié sur la carte mère : le contrôleur DMA. Il effectue la copie d'un paquet d'octets de la RAM vers l'entrée-sortie ou dans l'autre sens.
[[File:Réseau d'interconnexion avec un processeur au centre, et direct memory access.png|centre|vignette|upright=2|Réseau d'interconnexion avec un processeur au centre, et direct memory access]]
===Les bus systèmes===
La première solution utilise un bus unique, celui-ci est appelé le '''bus système''', aussi appelé ''backplane bus''. Le bus système est connecté à la mémoire RAM, la mémoire ROM, au processeur, et aux entrées-sorties. Tous les composants présents dans l'ordinateur sont connectés à ce bus, sans exception. De tels bus avaient pour avantage la simplicité. Le processeur n'est connecté qu'à un seul bus, ce qui utilise peu de broches et économise des fils. La mutualisation des bus est totale, le câblage est plus simple, la fabrication aussi.
[[File:Architecture minimale d'un ordinateur.png|centre|vignette|upright=2|Architecture minimale d'un ordinateur.]]
Un bus système contient un bus d'adresse, de données et de commande. Un bus système se marie bien avec des entrées-sorties mappées en mémoire. La conséquence est que le bus d'adresse ne sert pas que pour l'accès à la mémoire RAM/ROM, mais aussi pour l'accès aux entrées-sorties. Il y a moyen d'implémenter un système d'adresse séparés avec, mais c'est pas l'idéal.
[[File:Architecture Von Neumann avec les bus.png|centre|vignette|upright=2|Architecture Von Neumann avec les bus.]]
Un bus système n'a pas de limitations quant aux échanges de données. Le processeur peut communiquer directement avec les mémoires et les entrées-sorties, les entrées-sorties peuvent communiquer avec la mémoire RAM, etc. Notamment, un bus système peut implémenter le ''Direct Memory Access''. Il suffit juste de connecter un contrôleur DMA sur le bus système. Le contrôleur DMA est considéré comme une entrée-sortie, ses registres sont mappés en mémoire et sont donc accessibles directement par le processeur.
[[File:Bus système avec controleur DMA.png|centre|vignette|upright=2|Bus système avec contrôleur DMA.]]
Si on suit la définition à la lettre, un bus système est systématiquement une architecture Von Neumann, vu que la mémoire ROM et la mémoire RAM sont reliées sur le bus système. La conséquence est que les circuits de décodage d'adresse sont présents. Ils sont toujours sur la carte mère, et sont plus ou moins à côté du bus système. Cependant, le décodage d'adresse est parfois étendu pour tenir compte des entrées-sorties.
Les entrées-sorties soudées sur la carte mère ont elles aussi des entrées ''Chip Select'' ou quelque chose de similaire. Le décodage d'adresse peut alors les activer ou les désactiver suivant l'adresse envoyée sur le bus d'adresse. C'est ce qui arrive quand le processeur écrit dans un registre d’interfaçage : il envoie l'adresse de ce registre sur le bus d'adresse, le circuit de décodage d'adresse active seulement l'entrée-sortie associée. Il faut noter que ce n'est pas systématique, il existe des techniques pour se passer de décodage d'adresse. Mais nous en reparlerons dans le chapitre sur les bus de communication.
[[File:Chipselectfr.png|centre|vignette|upright=1.5|Exemple détaillé.]]
Les bus systèmes sont certes très simples, mais ils ont aussi des désavantages. Par exemple, il faut éviter que le processeur et les entrées-sorties se marchent sur les pieds, ils ne peuvent pas utiliser le bus en même temps. De tels conflits d'accès au bus système sont fréquents et ils réduisent la performance, comme on le verra dans le chapitre sur les bus. De plus, un bus système a le fâcheux désavantage de relier des composants allant à des vitesses très différentes : il arrivait fréquemment qu'un composant rapide doive attendre qu'un composant lent libère le bus. Le processeur était le composant le plus touché par ces temps d'attente.
Elle était utilisée sur les tout premiers ordinateurs, pour sa simplicité. Elle était parfaitement adaptée aux anciens composants, qui allaient tous à la même vitesse. De nos jours, les ordinateurs à haute performance ne l'utilisent plus trop, mais elle est encore utilisée sur certains systèmes embarqués, en informatique industrielle dans des systèmes très peu puissants.
===Les bus d'entrées-sorties===
Les bus systèmes ont de nombreux problèmes, ce qui fait que d'anciens ordinateurs faisaient autrement. À la place d'un bus système unique, ils utilisent un bus séparé pour les mémoires, et un autre séparé pour les entrées-sorties. Le bus spécialisé pour la mémoire est appelé le '''bus mémoire''', l'autre bus est appelé le '''bus d'entrées-sorties'''. Le bus mémoire est généralement relié à la fois à la mémoire RAM et à la mémoire ROM, les exceptions ne sont pas rares, cependant.
[[File:Bus mémoire séparé du bus pour les IO.png|centre|vignette|upright=2|Bus mémoire séparé du bus pour les IO]]
Les bus d'entrée-sorties peuvent être spécialisés et simplifiés. Par exemple, ils peuvent avoir un bus de commande différent de celui de la mémoire, qui utilise nettement moins de fils. Le bus d'adresse peut aussi être réduit, et utiliser des adresses plus courtes que celles du bus mémoire. Les bus de données peuvent aussi être de taille différentes. Il est ainsi possible d'avoir un bus mémoire capable de lire/écrire 64 bits à la fois, alors que la communication avec les entrées-sorties se fait octet par octet ! En général, les bus d'entrée-sortie sont assez petits, ils ont une taille de 8 ou 16 bits, même si le bus mémoire est plus grand. Cela permet de ne pas gaspiller trop de broches. Ajouter un bus d'entrée-sortie n'est donc pas très gourmand en broches et en fils.
: Il est en théorie possible d'avoir une fréquence différente pour les deux bus, avec un bus mémoire ultra-rapide et un bus pour les entrées-sorties est un bus moins rapide. Mais il faut que le processeur soit prévu pour, et c'est très rare.
Niveau performances, le processeur peut théoriquement accéder à la mémoire en attendant qu'une entrée/sortie réponde, mais il faut que le processeur soit prévu pour, et ce n'est pas de la tarte. Par contre, cela implique d'avoir des adresses séparées pour les registres d’interfaçage et la mémoire. En clair : pas d'entrée-sortie mappée en mémoire ! Un autre problème est que les entrées-sorties ne peuvent pas communiquer avec la mémoire directement, elles doivent passer par l'intermédiaire du processeur. En clair : pas de ''Direct Memory Access'' ! Les deux sont des défauts rédhibitoires pour les programmeurs système, notamment pour ceux qui codent les pilotes de périphériques.
Pour résumer, les défauts sont assez problématiques : pas d'entrées-sorties mappées en mémoire, pas de ''Direct Memory Access'', économie de broches limitée. Les deux premiers sont des défauts majeurs, qui font que de tels bus ne sont pas utilisés dans les ordinateurs modernes. À la place, ils utilisent une troisième solution, distincte des bus systèmes et des bus d'entrée-sorties.
===Les bus avec répartiteur===
Il existe une méthode intermédiaire, qui garde deux bus séparés pour la mémoire et les entrées-sorties, mais élimine les problèmes de brochage sur le processeur. L'idée est d'intercaler, entre le processeur et les deux bus, un '''circuit répartiteur'''. Il récupère tous les accès et distribue ceux-ci soit sur le bus mémoire, soit sur le bus des périphériques. Le ou les répartiteurs s'appellent aussi le '''''chipset''''' de la carte mère.
C'était ce qui était fait à l'époque des premiers Pentium. À l'époque, la puce de gestion du bus PCI faisait office de répartiteur. Elle mémorisait des plages mémoires entières, certaines étant attribuées à la RAM, les autres aux périphériques mappés en mémoire. Elles utilisaient ces plages pour faire la répartition.
[[File:IO mappées en mémoire avec séparation des bus.png|centre|vignette|upright=2|IO mappées en mémoire avec séparation des bus]]
Niveau adresses des registres d'interfacage, il est possible d'avoir soit des adresses unifiées avec les adresses mémoire, soit des adresses séparées.
L'usage d'un répartiteur ne pose pas de problèmes particuliers pour implémenter le DMA. La seule contrainte est que le contrôleur DMA soit intégré dans le répartiteur. Les échanges entre IO et mémoire passent par le répartiteur, qui fait le pont entre bus mémoire et bus des IO.
[[File:Implémentation du DMA avec un répartiteur.png|centre|vignette|upright=2|Implémentation du DMA avec un répartiteur]]
==Les microcontrôleurs et ''system on chip''==
Parfois, on décide de regrouper la mémoire, les bus, le CPU et les ports d'entrée-sortie dans un seul circuit intégré, un seul boitier. L'ensemble forme alors ce qu'on appelle un '''''System on Chip''''' (système sur une puce), abrévié en SoC. Le nom est assez explicite : un SoC comprend un système informatique complet sur une seule puce de silicium, microprocesseurs, mémoires et périphériques inclus. Ils incorporent aussi des ''timers'', des compteurs, et autres circuits très utiles.
[[File:ARMSoCBlockDiagram.svg|centre|vignette|upright=2|SoC basé sur un processeur ARM, avec des entrées-sorties typiques de celles d'un µ-contrôleur. Le support du bus CAN, d'Ethernet, du bus SPI, d'un circuit de PWM (génération de signaux spécifiques), de convertisseurs analogique-digital et inverse, sont typiques des µ-contrôleurs.]]
Le terme SoC regroupe des circuits imprimés assez variés, aux usages foncièrement différents et à la conception distincte. Les plus simples d’entre eux sont des microcontrôleurs, qui sont utilisés pour des applications à base performance. Les plus complexes sont utilisés pour des applications qui demandent plus de puissance, nous les appellerons SoC haute performance.
La relation entre SoC et microcontrôleurs est assez compliquée à expliquer, la terminologie n'est pas clairement établie. Il existe quelques cours/livres qui séparent les deux, d'autres qui pensent que les deux sont très liés. Dans ce cours, nous allons partir du principe que tous les systèmes qui regroupent processeur, mémoire et quelques périphériques/entrées-sorties sont des SoC. Les microcontrôleurs sont donc un cas particulier de SoC, en suivant cette définition.
===Les microcontrôleurs===
Les '''microcontrôleurs''' sont des composants utilisés dans l'embarqué ou d'informatique industrielle. Leur nom trahit leur rôle. Ils sont utilisés pour contrôler de l'électroménager, des chaines de fabrication dans une usine, des applications robotiques, les alarmes domestiques, les voitures. De manière générale, on les trouve dans tous les systèmes dits embarqués et/ou temps réel. Ils ont besoin de s'interconnecter à un grand nombre de composants et intègrent pour cela un grand nombre d'entrée-sorties. Les microcontrôleurs sont généralement peu puissants, et doivent consommer peu d'énergie/électricité.
Fait amusant, on en trouve dans certains périphériques informatiques. Par exemple, les anciens disques durs intégraient un microcontrôleur qui contrôlait plusieurs moteurs/ Les moteurs pour faire tourner les plateaux magnétiques et les moteurs pour déplacer les têtes de lecture/écriture étaient commandés par ce microcontrôleur. Comme autre exemple, les claviers d'ordinateurs intègrent un microcontrôleur connecté aux touches, qui détecte quand les touches sont appuyées et qui communique avec l'ordinateur. Nous détaillerons ces deux exemples dans les chapitres dédiés aux périphériques et aux disques durs, tout deviendra plus clair à ce moment là. La majorité des périphériques ou des composants internes à un ordinateur contiennent des microcontrôleurs.
Un microcontrôleur tend à intégrer des entrées-sorties assez spécifiques, qu'on ne retrouve pas dans les SoC destinés au grand public. Un microcontrôleur est typiquement relié à un paquet de senseurs et son rôle est de commander des moteurs ou d'autres composants. Et les entrées-sorties intégrées sont adaptées à cette tâche. Par exemple, ils tendent à intégrer de nombreux convertisseurs numériques-analogiques pour gérer des senseurs. Ils intègrent aussi des circuits de génération de signaux PWM spécialisés pour commander des moteurs, le processeur peut gérer des calculs trigonométriques (utiles pour commander la rotation d'un moteur), etc.
[[File:C8051F340-9 A B C D.png|centre|vignette|upright=2|Exemple d'entrées-sorties intégrées à un microcontroleur.]]
En plus des entrées-sorties intégrées, les microcontrôleurs ont souvent des '''ports d'entrées-sorties''' banalisés, à savoir qu'on peut brancher n'importe quoi dessus. Il était possible de brancher un capteur de température, un moteur à commander, un port série, un port parallèle, un écran, un clavier, une souris, peu importe. Les ports font souvent un octet et ils sont généralement reliées directement ou indirectement au processeur. Le logiciel qui s'exécute sur le processeur décide quoi envoyer sur des broches et comment interprète ce qui est reçu dessus.
Les ports banalisés de ce type sont parfois appelés des '''GPIO''', abréviation de ''General Purpose Input/Output'', mais nous utiliserons le terme de ''port I/O''. Un port regroupe plusieurs broches qui peuvent être utilisés à volonté. C'est le logiciel qui s'exécute sur le processeur qui décide de la fonction de broches. Un port IO peut fonctionner soit en tant qu'entrée, soit en tant que sortie. Il est possible de changer de sens en cours de fonctionnement, pour passer d'une entrée à une sortie ou inversement.
[[File:Afficheurs7seg.png|centre|vignette|upright=2|Exemple d'utilisation d'un port I/O. le port est connecté à un afficheur LCD dit 7-segments. Les 8 entrées de cet afficheur sont connectées à un port I/O d'un octet.]]
===Les SoC haute performance===
Les SoC les plus performants sont actuellement utilisés dans les téléphones mobiles, tablettes, ''Netbook'', ''smartphones'', ou tout appareil informatique grand public qui ne doit pas prendre beaucoup de place. La petite taille de ces appareils fait qu'ils gagnent à regrouper toute leur électronique dans un circuit imprimé unique. Mais les contraintes font qu'ils doivent être assez puissants. Ils incorporent des processeurs assez puissants, surtout ceux des ''smartphones''. C'est absolument nécessaire pour faire tourner le système d'exploitation du téléphone et les applications installées dessus.
Niveau entrées-sorties, ils incorporent souvent des interfaces WIFI et cellulaires (4G/5G), des ports USB, des ports audio, et même des cartes graphiques pour les plus puissants d'entre eux. Les SoC incorporent des cartes graphiques pour gérer tout ce qui a trait à l'écran LCD/OLED, mais aussi pour gérer la caméra, voire le visionnage de vidéo (avec des décodeurs/encodeurs matériel). Par exemple, les SoC Tegra de NVIDIA incorporent une carte graphique, avec des interfaces HDMI et VGA, avec des décodeurs vidéo matériel H.264 & VC-1 gérant le 720p. Pour résumer, les périphériques sont adaptés à leur utilisation et sont donc foncièrement différents de ceux des microcontrôleurs.
[[File:SOMblk.png|centre|vignette|upright=3|Exemple de SoC.]]
Un point important est que les processeurs d'un SoC haute performance sont... performants. Ils sont le plus souvent des processeurs de marque ARM, qui sont différents de ceux utilisés dans les PC fixe/portables grand public qui sont eux de type x86. Nous verrons dans quelques chapitres en quoi consistent ces différences, quand nous parlerons des jeux d'instruction du processeur. Autrefois réservé au monde des PCs, les processeurs multicœurs deviennent de plus en plus fréquents pour les SoC de haute performance. Il n'est pas rare qu'un SoC incorpore plusieurs cœurs. Il arrive même qu'ils soient foncièrement différents, avec plusieurs cœurs d'architecture différente.
La frontière entre SoC haute performance et microcontrôleur est de plus en plus floue. De nombreux appareils du quotidien intègrent des SoC haute performance, d'autres des microcontrôleurs. Par exemple, les lecteurs CD/DVD/BR et certains trackers GPS intègrent un SoC ou des processeurs dont la performance est assez pêchue. À l'opposé, les systèmes domotiques intègrent souvent des microcontrôleurs simples. Malgré tout, les deux cas d'utilisation font que le SoC/microcontrôleur est connecté à un grand nombre d'entrées-sorties très divers, comme des capteurs, des écrans, des LEDs, etc.
[[File:GPS tracker Hardware Architecture.png|centre|vignette|upright=2|Hardware d'un tracker GPS.]]
==Étude de l'architecture de quelques consoles de jeu==
Après avoir vu la théorie, nous allons voir des exemples réels d'ordinateurs. Dans ce qui suit, nous allons voir des ordinateurs qui collent assez bien à l''''architecture de base''' vue plus haut, avec un CPU, une RAM et une ROM, quelques entrées-sorties. Tous les ordinateurs modernes, mais aussi dans les smartphones, les consoles de jeu et autres, utilisent une architecture grandement modifiée et améliorée, avec un grand nombre de périphériques, des disques durs/SSD, un grand nombre de mémoires différentes, etc.
Il pourrait sembler pertinent d’étudier des microcontrôleurs ou des ''System On Chip'', en premier lieu. Mais nous éviterons soigneusement de tels systèmes pour le moment. La raison est qu'ils ont un grand nombre d'entrées-sorties, qui sont peu familières. Attendez-vous à avoir près d'une vingtaine ou centaine d'entrée-sorties différentes pour de tels systèmes. Le tout est très complexe, bien trop pour un premier exemple.
À la place, nous allons voir précisément des exemples plus simples : les premiers PC, et des consoles de jeu 8 et 16 bits. Bien que ce soit des systèmes très simples, ils sont cependant plus complexes que l'architecture de base. Et leur avantages/désavantages sont un peu inverse l'un de l'autre. Si on devait résumer les différences, on aurait ceci :
* Les PC ont plus d'entrées-sorties que les consoles, bien que nettement moins que pour les microcontrôleurs/SoC.
* Les PC utilisent des disques durs, les consoles font avec soit des cartouches de jeu, soit des CD/DVD.
* Les PC utilisent des cartes électroniques séparées pour le son et l'écran, les consoles utilisent des circuits soudés sur la carte mère, qui sont souvent des co-processeurs.
* Les PC ont une mémoire ROM soudées sur la carte mère, les consoles 8 bits font sans.
Les PC et micro-ordinateurs ont plus d'entrées-sorties que les consoles. Même si on mets de côté les périphériques, ils ont aussi beaucoup d'entrées-sorties soudées sur la carte mère. En comparaison, les consoles de jeu 8/16 bits se débrouillent avec : une cartouche de jeu et une manette en entrée, une sortie vidéo et une sortie son.
Un autre point important est l'absence de disque dur ou de lecteur CD. La présence d'un disque dur ou d'un lecteur CD/DVD complexifie tout de suite l'architecture des PC. Il faut leur réserver un bus dédié ou les connecter à un bus système, ajouter des circuits sur la carte mère, etc. Et surtout, il faut expliquer comment l'ordinateur exécute des programmes, ce qui demande de parler de l'interaction avec le disque dur et la ROM du BIOS. Rien de tout cela sur les consoles de jeu 8 et 16 bits. Elles utilisent à la place une mémoire ROM, dans la cartouche de jeu, pour mémoriser le code du jeu. Pas besoin de parler des mémoires de stockage, on est beaucoup plus proche de l'architecture de base avec une ROM unique.
Autre différence : les PC utilisent des cartes électroniques à brancher sur la carte mère pour alimenter l'écran et les hauts-parleurs/casques, alors que les consoles de jeu utilisent des co-processeurs dédiés pour le son et les graphismes. Nous avons déjà expliqué ce que sont les co-processeurs plus haut, aussi les co-processeurs des consoles nous paraitrons familiers. On n'a pas à s’embêter à expliquer ce que sont les cartes d'extension, les bus associés et tout ce qui va avec, cela peut être retardé pour la section sur l'architecture des PC.
Par contre, n'allez pas croire que tout est rose avec les consoles 8/16 bits. Il y a quelques différences qui font qu'elles sont plus complexes qu'un PC sur certains points. La gestion de la cartouche de jeu est notamment un peu subtile à comprendre, bien que ce soit bien plus simple à comprendre qu'un système avec un disque dur. Les cartouches de jeu intègrent une mémoire ROM, pour mémoriser les données du jeu, voire son code. Et le processeur doit exécuter le code depuis cette mémoire ROM. La conséquence est que les consoles 8/16 bits utilisent une architecture Harvard, avec un bus relié à la cartouche pour lire les instructions. Mais si ce n'était que ça... Les cartouches mémorisent aussi les données pour les graphismes, ce qui fait que le co-processeur vidéo doit lui aussi lire la cartouche pour récupérer ces données...
===L'architecture de la TurboGraphX-16===
La console PC Engine, aussi appelée TurboGraphX, est une ancienne console 8 bits. Elle contient un processeur 65C02, 8 kibioctets de RAM, un port manettes, une carte son et une carte vidéo. La '''carte son''' est le composant qui s'occupe de commander les haut-parleurs et de gérer tout ce qui a rapport au son. La '''carte graphique''' est le composant qui est en charge de calculer les graphismes, tout ce qui s'affiche à l'écran. Sur cette console, les cartes son et graphique ne sont PAS des co-processeurs, ce sont des circuits électroniques dits fixes. C'est totalement différent de ce qu'on a sur les consoles modernes, aussi le préciser est important.
Bien que la carte graphique ne soit pas un processeur, elle a 64 kibioctets de RAM rien que pour elle. La RAM en question est séparée de la RAM normale, c'est un circuit intégré séparé. Et c'est un cas très fréquent, qui reviendra par la suite. La majeure partie des cartes graphiques dispose de leur propre '''mémoire vidéo''', totalement réservée à la carte graphique. La RAM vidéo est connectée à la carte graphique via un bus séparé. Le processeur est souvent connecté à ce bus, afin de pouvoir écrire des données dedans, mais ce n'est pas le cas ici.
[[File:Architecture de la PC Engine, aussi appelée TurboGrafx-16.png|centre|vignette|upright=2.5|Architecture de la PC Engine, aussi appelée TurboGrafx-16]]
L'architecture de la console était particulièrement simple. Le processeur était le centre de l'architecture, tout était connecté dessus. Il y a un bus pour la cartouche de jeu, un autre pour la RAM, un autre pour les manettes, un autre pour carte son, et un dernier pour la carte graphique. Le fait d'avoir un bus par composant est assez rare et ce n'est le cas ici que parce des conditions particulières sont remplies. Déjà, il y a peu d'entrée-sorties. Ensuite, les bus font tous 8 bits, vu que le processeur est un CPU 8 bits. Avec 5 connexions de 8 bits, le tout utilise 40 broches, ce qui est beaucoup, mais totalement gérable. Par contre, les choses changerons pour les autres consoles.
Au final, l'organisation des bus peut s'expliquer avec ce qu'on a vu dans la section sur les bus de communication. La console utilise une architecture Harvard, car la ROM et la RAM utilisent des bus différents. De plus, il y a des bus dédiés aux entrées-sorties, séparés des bus mémoire. Enfin, la carte graphique a droit à ses propres bus pour lire dans la cartouche et dans sa RAM vidéo dédiée.
===L'architecture de la console de jeu NES===
Maintenant, nous allons voir la console de Jeu Famicom, aussi appelée la NES en occident. Elle a une architecture centrée sur un processeur Ricoh 2A03, similaire au processeur 6502, un ancien processeur autrefois très utilisé et très populaire. Le processeur est associé à 2 KB de mémoire RAM.
Sur certaines cartouches, on trouve une RAM utilisée pour les sauvegardes, qui est adressée par le processeur directement. Première variation par rapport à l'architecture de la console précédente : l'ajout de la RAM pour les sauvegardes dans les cartouches.
Niveau carte graphique, une différence importante est que la carte graphique est connectée à la cartouche de jeu via un autre bus, afin de pouvoir lire les sprites et textures du jeu dans la cartouche.
[[File:Architecture de la NES.png|centre|vignette|upright=2.5|Architecture de la NES]]
La différence avec l'architecture précédente est que des bus ont été fusionnés. Comme dit plus haut, le système utilise une architecture Harvard, vu que la ROM est dans la cartouche, alors que la RAM est soudée à la carte mère. Par contre, la Famicon utilise un bus dédié aux entrées-sorties. Il est utilisé pour la carte son et la carte graphique, seules les manettes sont sur un bus à part. Ce qui fait qu'on devrait plutôt parler de bus de sorties, mais passons... L'essentiel est qu'on n'est plus tout à fait dans le cas de la console précédente, avec un bus par composant.
===L'architecture de la SNES===
L'architecture de la SNES est illustrée ci-dessous. Les changements pour le processeur et la RAM sont mineurs.La RAM a augmenté en taille et passe à 128 KB. Pareil pour la RAM de la carte vidéo, qui passe à 64 KB. Par contre, on remarque un changement complet au niveau des bus, de la carte graphique et de la carte son.
[[File:Architecture de la SNES.png|centre|vignette|upright=2|Architecture de la SNES]]
La console utilise un '''bus système unique''', sur lequel tout est connecté : ROM, RAM, entrées-sorties, etc. La seule exception est pour les manettes, qui sont encore connectées directement sur le processeur, via un bus séparé. La transition vers un bus système s'explique par le fait que la console est maintenant de 16 bits, ce qui fait que les bus doivent être plus larges. Le processeur adresse des mémoires RAM et ROM plus grandes, ce qui double la taille de leurs bus. De plus, les entrées-sorties aussi ont besoin d'un bus plus large. Le processeur n'ayant pas un nombre illimité de broches, la seule solution est de fusionner les bus en un seul bus système.
Un autre changement est que la carte graphique est maintenant composée de deux circuits séparés. Encore une fois, il ne s'agit pas de coprocesseurs, mais de circuits non-programmables. Par contre, la carte son est remplacée par deux coprocesseurs audio ! De plus, les deux processeurs sont connectés à une mémoire RAM dédiée de 64 KB, comme pour la carte graphique. L'un est un processeur 8 bits (le DSP), l'autre est un processeur 16 bits.
Un point très intéressant : certains jeux intégraient des coprocesseurs dans leurs cartouches de jeu ! Par exemple, les cartouches de Starfox et de Super Mario 2 contenait un coprocesseur Super FX, qui gérait des calculs de rendu 2D/3D. Le Cx4 faisait plus ou moins la même chose, il était spécialisé dans les calculs trigonométriques, et diverses opérations de rendu 2D/3D. En tout, il y a environ 16 coprocesseurs d'utiliser et on en trouve facilement la liste sur le net. La console était conçue pour, des pins sur les ports cartouches étaient prévues pour des fonctionnalités de cartouche annexes, dont ces coprocesseurs. Ces pins connectaient le coprocesseur au bus des entrées-sorties. Les coprocesseurs des cartouches de NES avaient souvent de la mémoire rien que pour eux, qui était intégrée dans la cartouche.
===L'architecture de la Megadrive et de la néo-géo===
Passons maintenant à la console de jeu Megadrive, une console 16 bits. Elle a une architecture similaire à celle de la néo-géo, une autre console bien plus puissante, sorti à peu près en même temps. Elles intègrent deux processeurs : un Motorola 68000 qui sert de processeur principal, un Z80 qui sert de processeur dédié à l'audio. Le Z80 et le Motorola 68000 étaient deux processeurs très populaires à l'époque. Le Z80 est une sorte de version améliorée de l'Intel 8088 utilisé sur les anciens PC et de nombreuses consoles utilisaient des Z80 comme processeur principal. Il était familier pour les programmeurs de l'époque, pour son cout réduit, sa bonne disponibilité, et bien d'autres avantages liés à sa production de masse.
Le Z80 est utilisé comme co-processeur audio. Il commande un synthétiseur sonore, et est relié à sa propre mémoire, distincte de la mémoire principale. Le MC68000 est le processeur principal et a une relation maitre-esclave avec le Z80 : le MC68000 envoie des commandes au Z80, mais la communication ne va pas dans l'autre sens.
Le Motorola 68000 était un processeur 16 bits, alors que le Z80 est un processeur 8 bits. Et cette différence fait que l'on ne peut pas connecter directement les deux sur le même bus, ou du moins pas facilement. La solution retenue est d'utiliser deux bus séparés : un bus de 16 bits connecté au 68000, un bus de 8 bits connecté au Z80. Le premier bus est un bus système sur lequel est connecté le 68000, 64 kibioctets de RAM, la cartouche de jeu, et la carte graphique. Le second bus est un bus de 8 bits, plus court, relié au Z80, à un synthétiseur sonore, et 8 kibioctets de RAM
Les deux bus sont connectés à un '''''chipset''''', un circuit répartiteur, qui fait le pont entre les deux bus. Les manettes sont connectées sur le ''chipset''. Il contient un registre de 8 bits, dans lequel le MC68000 peut écrire dedans à sa guise, le registre étant adressable par le processeur. Lorsque le MC68000 écrit une valeur dedans, cela déclenche l’exécution automatique d'un programme pré-déterminé sur le Z80.
: Pour ceux qui savent ce qu'est une interruption, les valeurs écrites dans ce registre sont des numéros d'interruption, qui indiquent quelle routine d'interruption exécuter.
[[File:Architecture de la Megadrive et de la Néogeo.png|centre|vignette|upright=2.5|Architecture de la Megadrive et de la Néogeo]]
Cet exemple nous montre que les bus systèmes sont certes très simples, mais aussi inflexibles. Ils fonctionnent bien quand les composants branchés dessus sont tous des composants 8 bits, ou sont tous de 16 bits, ou tous 32 bits. Mais dès qu'on mélange composants 8, 16, 32 ou 64 bits, les choses deviennent plus compliquées. Il est alors préférable d'utiliser des bus séparés, avec des répartiteurs pour faire le pont entre les différents bus. Et nous verrons que le problème s'est posé lui aussi sur les PC.
===L'architecture des anciennes consoles Playstation : beaucoup de co-processeurs===
Les consoles que nous venons d'aborder étaient des consoles 8 ou 16 bits. A partir des consoles 32 bits, leur architecture s'est rapprochée de celle des PC, avec un usage plus complexes de répartiteurs. La XBOX était très semblable à un PC : le processeur était un Pentium 3 modifié, la carte graphique était une Geforce 3 modifiée, les 64 mébioctets de RAM était la même mémoire DDR que celle des PC, le répartiteur secondaire était un ''chipset'' nForce de NVIDIA, etc. Mais les Playstation 1, 2 et 3 se distinguent de leur contemporains. Elles disposent de très nombreux co-processeurs, qui sont en plus très variés.
La Playstation 1 a été une des premières console à utiliser les CD-ROM comme support de stockage, en remplacement des cartouches. La conséquence est que la console contient une mémoire ROM, soudée à la carte mère, de 512 kibioctets. Elle contient aussi 2 mébioctets de RAM, une carte graphique avec 1 mébioctet de mémoire vidéo, un processeur, et de quoi gérer les périphériques. Il y a un co-processeur audio spécialisé, avec 512 kibioctets de RAM, ce qui nous est familier. Par contre, les autres co-processeurs ne le sont pas.
Déjà, le lecteur de CD-ROM est associé à des circuits sur la carte mère, il y a tout un sous-système dédié au lecteur de CD. Il y a un contrôleur qui sert d'interface avec le lecteur proprement dit, mais aussi deux co-processeurs audio et 32 kibioctets de RAM. Les co-processeurs audio servent à lire des CD sans trop utiliser le second co-processeur audio, ils lui servent de complément.
Ensuite, le processeur incorpore plusieurs cœurs, avec un cœur principal et plusieurs co-processeurs. Le premier est un co-processeur système, qui est utilisé pour gérer la mémoire cache intégrée au processeur, pour des fonctionnalités appelées interruptions et exceptions, ainsi que pour configurer le processeur. Le second est un co-processeur arithmétique spécialisé dans les calculs en virgule flottante, très importants pour le rendu 3D. Enfin, il y a un décodeur vidéo, qui n'est pas un co-processeur, mais un circuit non-programmable, spécialisé dans le décodage vidéo. De nos jours, ce circuit aurait été intégré dans la carte graphique, mais il était intégré dans le processeur sur la Playstation 2.
Pour le reste, le processeur est la figure centrale de la console. Il est connecté à 4 bus : un pour la RAM, un pour la carte graphique, un pour les manettes, un autre pour le reste. Le dernier bus est connecté au système audio et au système pour le lecteur CD. Ce serait un bus d'entrée-sortie, s'il n'était pas connecté à la mémoire ROM. Vous avez bien lu : la mémoire ROM est reliée au bus d'entrée-sortie.
[[File:Architecture de la Playstation.png|centre|vignette|upright=2.5|Architecture de la Playstation]]
La Playstation 2 est composé d'un processeur, couplé à 32 Mébioctets de RAM, et d'un paquet de co-processeurs. Plus de co-processeurs que la PS1. Le processeur principal n'est pas la même que celui de la PS1, mais il a une architecture similaire. Il intègre un décodeur vidéo sur le même circuit intégré, ainsi que deux co-processeur. Les co-processeurs ne sont cependant pas les mêmes.
Le co-processeur système disparait et est remplacé par un second co-processeur arithmétique. Les deux co-processeurs arithmétiques sont spécialisés dans les nombres flottants, avec quelques différences entre les deux. Par exemple, le second co-processeur gérait des calculs trigonométriques, des exponentielles, des logarithmes, et d'autres fonctions complexes du genre ; mais pas le premier co-processeur. Ils sont reliés à 4 kibioctets de RAM pour le premier, 16 kibioctets de RAM pour le second ; qui sont intégrées dans le processeur et non-représentés dans le diagramme ci-dessous.
La PS2 intègre aussi un co-processeur d'entrées-sorties. Pour information, il s'agit du processeur principal de la Playstation 1, qui est ici utilisé différemment, suivant que l'on place un jeu PS1 ou PS1 dans la console. Si on met un jeu PS1, il est utilisé pour émuler la Playstation 1, afin de faire tourner le jeu PS1 sur la PS2. Si on met un jeu PS2, il est utilisé comme co-processeur d'entrée-sortie et fait l'interface entre CPU et entrées-sorties. Il est relié à 2 mébioctets de RAM, soit exactement la même quantité de mémoire que la Playstation 1.
Tous les périphériques sont connectés au co-processeur d'entrées-sortie. Pour cela, le co-processeur d'entrées-sortie est relié à deux bus dédiés aux périphériques. Le premier bus est relié aux manettes, aux ports USB et aux ports pour cartes mémoires. Le second bus est relié à la carte son, la carte réseau, le lecteur DVD, et un port PCMIA. Notons que la carte son intègre un co-processeur audio, qui n'est pas représenté dans le diagramme ci-dessous.
[[File:Playstation 2 architecture.png|centre|vignette|upright=2.5|Playstation 2 architecture]]
==L'architecture des PC et son évolution==
Après avoir vu les consoles, nous allons maintenant voir les anciens PC, des années 80 ou 90. Le tout premier PC était techniquement l''''IBM PC'''. Par la suite, de nombreux ordinateurs ont tenté de reproduire l'IBM PC originel, avec parfois quelques modifications mineures. De tels ordinateurs ''IBM PC compatibles'', ont été très nombreux, pour des raisons diverses. Le fait d'utiliser des composants banalisés, facilement disponibles, ainsi qu'une bonne documentation de l'IBM PC originel, a grandement aidé. Les IBM PC compatibles ont progressivement évolué pour donner les PC actuels. L'IBM PC compatible a donné naissance à de nombreux standards divers.
===L'IBM PC originel et l'IBM PC XT===
[[File:IBM PC XT 02.jpg|vignette|IBM PC XT.]]
Nous allons commencer par voir l'IBM PC originel, et son successeur : l'IBM Personal Computer XT. Nous les appelerons tous deux l'IBM PC. L'IBM PC utilisait un processeur Intel 8088, qui était un processeur 8 bits. Ils utilisaient un bus système unique, appelé le '''bus XT'''. Le bus système allait à 4.77 MHz, soit la même fréquence que le processeur. C'était un bus de 8 bits, ce qui collait parfaitement avec les processeurs 8 bits commercialisés par Intel à l'époque.
L'IBM PC comprenait une mémoire ROM avec de quoi faire fonctionner le PC. La ROM en question contenait un programme minimal, appelé le '''BIOS''', sans lequel le PC ne fonctionnait pas du tout. Il servait de base pour le système d'exploitation et MS-DOS ne fonctionnait pas sans elle. De nos jours, son rôle est plus limité : sans elle, le PC ne démarre pas. Mais nous détaillerons cela dans le prochain chapitre.
En plus de la ROM pour le BIOS, l'IBM PC avait quatre mémoires ROM dédiée au langage de programmation BASIC. Lorsque le PC démarrait, il ne bootait pas un système d'exploitation, mais lançait l'interpréteur pour le langage BASIC. De nos jours, ce serait l'équivalent d'un ordinateur qui boote directement sur du Python, à savoir la console Python que vous avez peut-être déjà utilisé si vous avez testé Python. Ceux qui ont déjà touché à un ordinateur de l'époque savent ce que ca veut dire, mais c'est malheureusement très difficile à expliquer sans ce genre d'expérience. Toujours est-il que c'était une sorte de norme à l'époque
: les ordinateurs bootaient généralement sur un interpréteur BASIC.
[[File:XT Bus pins.svg|vignette|Connecteur du bus XT.]]
Les PC étaient conçus pour qu'on branche des '''cartes d'extension''', à savoir des cartes électroniques qu'on branchait sur la carte mère, à l'intérieur du PC. Les cartes d'extension de l'époque étaient surtout des cartes son ou des cartes graphiques, mais aussi des cartes pour brancher des péripéhriques. par exemple, on pouvait ajouter deux cartes graphiques dans l'IBM PC originel : l'''IBM Monochrome Display Adapter'' et/ou la ''IBM Color Graphics Adapter''. De nos jours, les cartes son sont intégrées à la carte mère, mais les cartes graphiques sont restées des cartes d'extension.
Les cartes d'extension étaient branchées sur un '''connecteur XT''', qui était directement relié au bus XT. Le connecteur XT est illustré ci-contre, mais ne vous en souciez pas trop pour le moment. La carte mère de l'IBM PC avait 5 connecteurs de ce type, qu'on pouvait peupler avec autant de cartes d'extension. L'IBM Personal Computer XT est passé à 8 connecteurs XT, soit trois de plus.
Pour ce qui est des périphériques, l'IBM PC avait plusieurs connecteurs : un port série, un port parallèle, un port pour le clavier, et un port pour un lecteur cassette. Le clavier et le lecteur cassette étaient connectés directement sur la carte mère, qui contenait quelques circuits pour gérer le clavier. Par contre, les deux premiers n'étaient pas connectés à la carte mère. Le port série était en réalité une carte d'extension, branchée sur un connecteur XT. Et il en est de même pour le port parallèle.
Pour ce qui est des supports de stockage, l'IBM PC originel n'avait pas de disque dur et n'avait que des lecteurs de disquette. De plus, le lecteur de disquette n'était pas connecté directement sur la carte mère, mais était connecté à une carte d'extension, branchée sur un connecteur XT. La carte d'extension avait deux connecteurs, un par lecteur de disquette, ce qui fait que les deux lecteurs de disquettes pouvaient être branchés sur une seule carte d'extension. L'IBM Personal Computer XT a ajouté un disque dur, sauf sur quelques sous-modèles spécifiques.
Le PC avait aussi un petit haut-parleur capable de faire des bips.
Pour résumer, l'IBM PC originel se reposait beaucoup sur les cartes d'extension, sa carte mère contenait peu de choses. Enfin, peu de choses... Il y avait un processeur Intel 8088, éventuellement un coprocesseur flottant 8087, de la RAM, de la ROM, et des circuits intégrés assez divers. En voici la liste, certains vous seront familiers, d'autres vous seront inconnus à ce stade du cours :
* les circuits de décodage d'adresse ;
* un contrôleur DMA intel 8273 ;
* un contrôleur d'interruption 8259 ;
* un contrôleur de bus Intel 8288 pour gérer le bus XT ;
* un générateur d'horloge Intel 8284 et un diviseur de fréquence ;
* un ''timer'' Intel 8253, le même que celui étudié dans le chapitre sur les ''timers'' ;
* un contrôleur parallèle 8255.
Les multiplexeurs, registres et portes logiques, sont des circuits de décodage d'adresse, qui permettent de combiner plusieurs RAM en une seule, idem avec la mémoire ROM. Si vous verrez qu'il y a 5 mémoires ROM : une ROM pour le BIOS, et quatre autres ROM pour le BASIC. Les 4 ROM du BASIC sont combinées en une seule mémoire ROM. Pour les RAM, il y en a 8 à 32, qui sont combinées en une seule RAM de 16 à 64 kibioctets.
[[File:IBM 5150 Motherboard.svg|centre|vignette|upright=3|Carte mère de l'IBM 5150, un modèle de l'IBM PC.]]
===L'architecture d'un IBM PC compatible 16 bits===
Les PC suivants sont passés à des processeurs 16 bits, mais c'était toujours des processeurs x86 d'Intel, à savoir des Intel 286 et 386. La RAM a grossi, quelques entrées-sorties ont été ajoutées, mais l'architecture globale est plus moins resté le même. C'est surtout au niveau du bus et des périphériques que les changements majeurs ont eu lieu.
[[File:ISA Bus pins.svg|vignette|Connecteur ISA.]]
Les PC 16 bits utilisaient un bus système unique, sur lequel tout était connecté : le processeur, la RAM, la ROM, les cartes d'extension et tout le reste. Le bus en question s'appelait le '''bus AT''', mais il a rapidement été renommé en '''bus ISA''' (''Industry Standard Architecture''). Le bus ISA était prévu pour avoir une compatibilité avec le bus 8 bits de l'IBM PC originel. D'ailleurs, cela se ressent jusque dans le connecteur utilisé : le connecteur ISA est un connecteur XT qu'on a fusionné avec un second connecteur pour l'étendre de 8 à 16 bits.
Les PC 16 bits avaient toujours un port série, un port parallèle, un clavier, un lecteur de disquette et des cartes d'extension. Des disques durs pouvaient être ajoutés, aussi. Mais pour ces périphériques, un changement majeur a eu lieu comparé à l'IBM PC originel. L'IBM PC originel utilisait des cartes d'extension pour tout, sauf le clavier. Mais maintenant, les périphériques ne sont plus connectés à une carte d'extension. À la place, les circuits de la carte d'extension sont déplacés sur la carte mère. Mais n'allez pas croire qu'ils étaient connectés directement au bus ISA, il y avait des intermédiaires.
Le clavier était relié à un '''contrôleur de clavier''', qui faisait l'interface entre le connecteur du clavier et le bus ISA. Le contrôleur de clavier était appelé le ''Keyboard Controler'', abrévié en KB. Il recevait ce qui est tapé au clavier et traduisait cela en quelque chose de compréhensible par l'ordinateur.
Les autres périphériques étaient connectés à un circuit intégré dédié : l''''Intel 82091AA'''. Il était connecté au lecteur de disquette, au port série et au port parallèle. Il servait d'intermédiaire entre ces périphériques et le bus ISA. Vous pouvez le voir comme une sorte de répartiteur, mais qui ne serait pas connecté sur le processeur et la RAM
Enfin, il ne faut pas oublier les autres composants présents sur l'IBM PC originel. Le BIOS est toujours là, de même que les ''timers'' Intel 8253 PIT, le contrôleur d'interruption Intel 8259 et le contrôleur DMA Intel 8237. Les PC 16 bits ont aussi intégré une ''Real Time Clock'' (RTC). Pour rappel, c'est un composant qui permet au PC de mémoriser la date et l'heure courante, à la seconde près. Le tout est résumé dans le schéma ci-dessous.
[[File:Architecture de l'IBM PC compatible.png|centre|vignette|upright=2.5|Architecture de l'IBM PC compatible]]
Un point important est que le bus ISA allait à la même fréquence que le processeur, vu que c'était un bus système. Les processeurs de l'époque étaient des CPU 286 d'Intel, ou le 386 d'Intel. Les Intel 286 allaient de 4 MHz minimum, à 25 MHz maximum. Le 386, quant à lui, allait de 12 à 40 MHz. Le bus ISA devait aller à cette fréquence, il était synchrone avec le processeur.
Par la suite, les processeurs ont gagné en performance, ce qui fait que le bus ISA est devenu trop lent pour le processeur. Une idée a alors été de conserver le bus ISA, pour des raisons de compatibilité, mais de le reléguer comme bus secondaire. L'ordinateur contient alors deux bus : un bus système, et un bus ISA secondaire. Le lien entre les deux est réalisé par un '''pont ISA''', ''ISA Bridge'' en anglais. Le bus ISA fonctionnait alors sa fréquence usuelle, alors que le bus système était beaucoup plus rapide. Le bus système fonctionnait à une fréquence bien plus élevée, ce qui fait que le processeur pouvait communiquer à pleine vitesse, notamment avec la RAM. Le processeur n'était alors plus forcé à aller à la même fréquence que le bus ISA
[[File:Architecture de l'IBM PC compatible avec bridge ISA.png|centre|vignette|upright=2.5|Architecture de l'IBM PC compatible avec bridge ISA]]
Les PC de l'époque intégraient donc plusieurs bus séparés. Vous avez bien lu : plusieurs bus ! Ici, il s'agit de ce que j'appelle des '''bus en cascade''', à savoir qu'un bus est connecté à un autre bus par un intermédiaire. Au passage, si j'aborde ces exemples, car c'est pareil sur les ordinateurs modernes. Le pont ISA a été remplacé par des circuits différents, mais qui ont un rôle assez similaire. Le ''chipset'' de votre carte mère n'est qu'un lointain descendant du pont ISA, qui s'interface avec des bus différents.
===L'arrivée des standards AT et IDE pour les disques durs===
Initialement, les disques durs étaient placés dans l'ordinateur et étaient connectés sur le bus ISA, via une carte d'extension ISA. En clair, il fallait connecter le disque dur sur une carte d'extension, et non sur la carte mère. Les cartes d'extension en question permettaient de connecter un ou plusieurs disques durs, parfois des lecteurs de disquette supplémentaires. Les cartes ISA de ce type faisaient juste l'interface entre le bus ISA et les disques durs, rien de plus. L'interface en question a été standardisée, ce qui a donné le standard ''AT Bus Attachment'', qui a été abrévié en ATA.
Et ce n'était pas que pour les disques durs, de nombreux composants étaient dans ce cas. Une carte d'extension servait d'intermédiaire entre eux et la carte mère. Les cartes d'extension en question étaient appelées des ''Host bus adapter''.
[[File:Acculogic sIDE-4 Controller ISA.jpg|centre|vignette|upright=2|Carte ISA d'interface disque dur, de marque Acculogic.]]
Mais les choses ont rapidement évoluées, que ce soit du côté des cartes mères que du côté des disques durs. Le '''standard IDE''' a permis de brancher un disque dur directement sur la carte mère, sans passer par une carte d'interface ISA. Pour cela, la carte mère réservait un connecteur ISA pour le disque dur, renommé '''connecteur ATA'''. Pour que cela soit possible, il a fallu rajouter des circuits sur la carte mère. Tout ce qui était sur les cartes d'interface ISA s'est retrouvé sur la carte mère.
[[File:Ajout des ports IDE sur la carte mère.png|centre|vignette|upright=2|Ajout des ports IDE sur la carte mère]]
En réalité, les connecteurs ATA étaient des connecteurs ISA simplifiés. Un connecteur ISA avait en tout 98 broches, alors qu'un connecteur ATA n'en contient que 40. Les broches qui étaient inutiles pour les disques durs ont simplement été enlevées. Et qui dit connecteur spécialisé, dit câble spécialisé. Les disques durs étaient branchés sur le connecteur AT grâce à un câble ATA, sur lequel on pouvait connecter deux disques durs.
[[File:ATA Plug.svg|centre|vignette|upright=2|Connecteur ATA.]]
[[File:ATA cables.jpg|centre|vignette|upright=2|Cable ATA.]]
Il était donc possible de connecter deux disques durs sur un seul connecteur ATA. Et cette possibilité est devenue d'autant plus utile par la suite. A partir de la version 2, ATA supportait aussi les lecteurs de disquettes, les lecteurs de CD/DVD, et bien d'autres supports de stockage. Il était alors possible de connecter un lecteur CD et un disque dur sur un seul connecteur. Les cartes mères avaient généralement deux connecteurs ATA, et n'avaient pas besoin de plus. C'était suffisant pour connecter un disque dur, un lecteur de disquette et un lecteur CD, configuration courante entre les années 90 et 2000.
Un câble est donc connecté à deux supports de stockage. Pour distinguer les deux, le standard ATA ajoute une possibilité de configuration. Sur un câble, il doit y avoir un support de stockage "maitre" et un support "esclave". C'était la terminologie de l'époque, que je reproduis ici, même si elle est fortement trompeuse. N'allez pas croire que cela implique que l'un ait des avantages sur l'autre. Le support 'maitre" n'a pas droit à plus de bande passante, il n'a pas la priorité sur l'autre, rien du tout. Il s'agit juste d'un nombre qui permet de savoir avec qui le processeur communique, qui vaut 0 pour le premier support, 1 pour l'autre. Une sorte d'adresse de 1 bit, si l'on veut.
[[File:ATA-Konfiguration02.png|centre|vignette|upright=2|Configuration ATA.]]
Pour configurer un support de stockage en mode "maitre" ou "esclave", le support de stockage avait quelques pins dédiés. Il suffisait de placer un détrompeur en plastique sur les pins adéquats. Les pins se trouvaient à l'arrière du disque dur ou du lecteur de CD/DVD/Disquette/autre.
[[File:HDD Master and Slave Description.jpg|centre|vignette|upright=2|Configuration ''Master/Slave''.]]
===L'architecture d'un PC avec un processeur Intel 486===
Maintenant, passons aux ordinateurs 32 bits, avec l'exemple d'un PC avec un processeur 486 d'Intel. A cette époque, le bus ISA était devenu trop limité et était en place d'être remplacé par le bus PCI, qui avait la même fonction. De nombreuses cartes d'extension utilisaient déjà ce standard et étaient branchées sur des connecteurs PCI dédiés, différents des connecteurs ISA. Intuitivement, on se dit que le bus PCI remplaçait le bus ISA, mais les choses étaient plus compliquées. Les disques durs gardaient leur connecteur ATA, et ne passaient pas par le bus PCI. Ils avaient un bus IDE séparé, qui était un bus ISA modifié.
Là encore, les processeurs étaient devenus beaucoup plus rapides que le bus PCI. Les deux allaient à des fréquences assez différentes, ce qui fait que le bus PCI était séparé du bus système. Il y avait alors deux implémentations possibles.
* La première utilise un répartiteur unique, relié au processeur, à la RAM, au bus PCI, et au bus IDE.
* La seconde utilise un bus système séparé du bus PCI, avec un '''pont PCI''' pour faire l'interface entre les deux.
Le '''''System Controler''''' était un circuit intégré, placé sur la carte mère, qui peut servir soit de pont PCI, soit de répartiteur. Le répartiteur PCI sert d'intermédiaire avec le bus PCI, mais aussi avec le bus IDE, utilisé pour les disques durs, aussi appelé le bus ''Parallel ATA''. Il peut aussi être connecté au processeur, à la mémoire RAM, ainsi qu'à la mémoire cache, mais cela ne sert que quand il est utilisé comme répartiteur.
[[File:Architecture d'un PC utilisant un bus PCI, implémentation avec un répartiteur.png|centre|vignette|upright=2|Architecture d'un PC utilisant un bus PCI, implémentation avec un répartiteur]]
Pour des raisons de compatibilité, le bus ISA avait été conservé, aux côtés du bus PCI. Il y avait un pont ISA en plus du pont/répartiteur PCI. Une implémentation possible aurait été de connecter les deux ponts ISA et PCI à un bus système unique. Mais cette solution n'a pas été retenue. La raison est que le bus PCI et le bus ISA ont des performances très différentes. Le bus PCI est très rapide, le bus ISA beaucoup plus lent. La différence est d'un ordre de grandeur, environ. Dans ces conditions, il est possible de faire passer les communications ISA à travers le bus PCI. Pour cela, le pont ISA est directement connecté sur le pont PCI, comme illustré ci-dessous.
Et il en est de même pour le bus dédié aux disques durs. En effet, les disques durs étaient autrefois reliés au bus ISA, mais cela a changé depuis. Ils disposent maintenant de leur propre bus dédié, le '''bus IDE''', qui est un bus ISA simplifié. Et ce bus ISA simplifié était connecté directement sur le pont PCI.
[[File:Architecture de l'IBM PC compatible avec pont PCI.png|centre|vignette|upright=2|Architecture de l'IBM PC compatible avec pont PCI]]
Dans ce qui va suivre, nous allons étudier un exemple qui utilise un bus système séparé, avec un pont PCI, sans répartiteur. Voilà pour les grandes lignes, mais le schéma ci-dessous montre que tout est plus complexe. Vous remarquerez des connexions optionnelles entre le pont PCI et la mémoire RAM et la mémoire cache. La raison est que le pont PCI peut aussi servir de répartiteur en remplacement du bus système. Concrètement, on peut alors retirer le bus système. La mémoire, le bus PCI, le bus ISA, le bus IDE, le processeur et la RAM sont alors connectés au répartiteur PCI, qui sert d'intermédiaire central entre tous ces composants. Mais ce n'est pas la solution qui a été retenue dans notre exemple.
[[File:Intel486-Typ PCI System.png|centre|vignette|upright=2|PC IBM compatible avec un 486, un bus PCI et un bus ISA. Le ''host bus'' est le bus système.]]
Le pont ISA sert ici d'intermédiaire entre le bus système et le bus ISA. De plus, il a été amélioré sur de nombreux points. Il inclut notamment des circuits qui étaient autrefois sur la carte mère, à savoir le contrôleur DMA 82C87 et le contrôleur d'interruption 82C59, ainsi que les ''timers'' Intel 82C54. Les composants restants sont eux reliés sur un quatrième bus : le bus X, l'ancêtre du bus ''Low Pin Count''. Le bus X était celui du BIOS, du contrôleur de clavier, de la ''Real Time Clock'', et du contrôleur de périphérique 82091AA d'Intel.
[[File:ISA Bridge schematic.png|centre|vignette|upright=2|ISA Bridge.]]
===L'architecture des PC des années 90-2000===
Par la suite, les ponts PCI et ISA ont évolué avec l'évolution des bus de l'ordinateur. Le bus ISA a progressivement été remplacé par d'autres bus, comme le bus ''Low Pin Count'', le bus PCI a été remplacé par le PCI Express, d'autres bus ont été ajoutés, etc. Mais la séparation du ''chipset'' en deux a été conservée.
[[File:Chipset schematic.svg|vignette|upright=1.0|Chipset séparé en northbridge et southbridge.]]
Le pont PCI et le pont ISA ont été remplacés respectivement par le '''pont nord''' et le '''pont sud''', plus connus par leurs noms anglais de ''northbridge'' et de ''southbridge''. Le pont nord servait d'interface entre le processeur, la mémoire et la carte graphique et est connecté à chacun par un bus dédié. Il intégrait aussi le contrôleur mémoire. Le pont sud est le répartiteur pour les composants lents, à savoir l'USB, l'Ethernet, etc. Le bus qui relie le processeur au pont nord était appelé le '''''Front Side Bus''''', abrévié en FSB.
[[File:IMac Chipset.png|centre|vignette|upright=2|Chipset séparé en northbridge et southbridge.]]
Un point important est que le bus PCI est devenu un bus assez lent, ce qui fait qu'il a finit par être connecté au pont sud. Le pont PCI est donc devenu le pont sud, dans le courant des années 2000. Durant un moment, un équivalent du pont ISA a subsisté dans un circuit de '''''Super IO'''''. Concrètement, il s'occupait du lecteur de disquette, du port parallèle, du port série, et des ports PS/2 pour le clavier et la souris. Mais il ne gérait pas le bus ISA, mais son remplaçant, le bus ''Low Pin Count''.
[[File:Motherboard diagram fr.svg|centre|vignette|upright=1.5|Carte mère avec circuit Super IO.]]
===L'architecture des PC depuis les années 2000===
Depuis la sortie du processeur AMD Athlon 64, le pont nord a été fusionné dans le processeur. La fusion ne s'est pas faite en une fois, des fonctionnalités ont progressivement été progressivement intégrées dans le processeur. Le pont sud est resté, mais il a alors été progressivement connecté directement au processeur. La raison derrière cette intégration est que les processeurs avaient de plus en plus de transistors à leur disposition. Ils en ont profité pour intégrer le pont nord. Et cela permettait de simplifier le câblage des cartes mères, sans pour autant rendre vraiment plus complexe la fabrication du processeur. Les industriels y trouvent leur compte.
La première étape a été l'intégration du contrôleur mémoire a été intégré au processeur. Concrètement, le résultat était que la mémoire RAM n'était plus connectée au pont nord, mais était connectée directement au processeur ! Il y a donc eu un retour d'un bus mémoire, mais spécialisé pour la mémoire RAM. En théorie, une telle intégration permet diverses optimisations quant aux transferts avec la mémoire RAM. Les transferts ne passent pas par un répartiteur, ce qui réduit le temps d'accès à la mémoire RAM. Ajoutons de sombres histoires de prefetching, d'optimisation des commandes, et j'en passe. Toujours est-il que le pont nord ne servait alors d'intermédiaire que pour les ports PCI Express, et le pont sud.
[[File:X58 Block Diagram.png|centre|vignette|upright=2|Chipset X58 d'Intel.]]
Par la suite, la carte graphique fût aussi connectée directement sur le processeur. Le processeur incorpore pour cela des contrôleurs PCI-Express. Le pont nord a alors disparu complétement, son intégration dans le processeur était complète. Sur les cartes mères Intel récentes, le pont sdud subsiste, il est appelé le ''Platform Controler Hub'', ou PCH. L'organisation des bus sur la carte mère qui résulte de cette connexion du processeur à la carte graphique, est illustrée ci-dessous, avec l'exemple du PCH.
[[File:Intel 5 Series architecture.png|centre|vignette|upright=2|Intel 5 Series architecture]]
<noinclude>
{{NavChapitre | book=Fonctionnement d'un ordinateur
| prev=L'interface électrique entre circuits intégrés et bus
| prevText=L'interface électrique entre circuits intégrés et bus
| next=La hiérarchie mémoire
| nextText=La hiérarchie mémoire
}}
</noinclude>
6ce0grumr12out7y9bdgsfnyxowwnkv
Wikilivres:GUS2Wiki
4
78643
765680
764835
2026-05-01T12:24:14Z
Alexis Jazz
81580
Updating gadget usage statistics from [[Special:GadgetUsage]] ([[phab:T121049]])
765680
wikitext
text/x-wiki
{{#ifexist:Project:GUS2Wiki/top|{{/top}}|This page provides a historical record of [[Special:GadgetUsage]] through its page history. To get the data in CSV format, see wikitext. To customize this message or add categories, create [[/top]].}}
Les données suivantes sont en cache et ont été mises à jour pour la dernière fois le 2026-05-01T06:55:10Z. {{PLURAL:5000|1=Un seul résultat|5000 résultats}} au maximum {{PLURAL:5000|est disponible|sont disponibles}} dans le cache.
{| class="sortable wikitable"
! Gadget !! data-sort-type="number" | Nombre d’utilisateurs !! data-sort-type="number" | Utilisateurs actifs
|-
|AncreTitres || 33 || 0
|-
|ArchiveLinks || 12 || 0
|-
|Barre de luxe || 35 || 1
|-
|BoutonsLiens || 41 || 0
|-
|CategoryAboveAll || 19 || 0
|-
|CategorySeparator || 22 || 0
|-
|CoinsArrondis || 99 || 1
|-
|CollapseSidebox || 35 || 1
|-
|CouleurContributions || 33 || 0
|-
|CouleursLiens || 25 || 0
|-
|DeluxeAdmin || 5 || 1
|-
|DeluxeEdit || 36 || 1
|-
|DeluxeHistory || 46 || 1
|-
|DeluxeImport || 19 || 1
|-
|DeluxeRename || 16 || 1
|-
|DeluxeSummary || 36 || 1
|-
|DevTools || 17 || 1
|-
|DirectPageLink || 25 || 1
|-
|Emoticons || 43 || 0
|-
|EmoticonsToolbar || 45 || 0
|-
|FastRevert || 36 || 1
|-
|FixArrayAltLines || 22 || 1
|-
|FlecheHaut || 66 || 1
|-
|GoogleTrans || 28 || 0
|-
|HotCats || 81 || 3
|-
|JournalDebug || 21 || 1
|-
|JournalEnTable || 2 || 1
|-
|LeftPaneSwitch || 5 || 1
|-
|ListeABordure || 30 || 1
|-
|LiveRC || 30 || 0
|-
|LocalLiveClock || 27 || 1
|-
|Logo || 42 || 0
|-
|MobileView || 18 || 2
|-
|NavigAdmin || 38 || 0
|-
|OngletEditCount || 44 || 1
|-
|OngletEditZeroth || 66 || 1
|-
|OngletGoogle || 28 || 1
|-
|OngletPurge || 54 || 1
|-
|OptimizedSuivi || 18 || 0
|-
|Popups || 61 || 0
|-
|RenommageCategorie || 6 || 2
|-
|RestaurationDeluxe || 12 || 1
|-
|RevertDiff || 35 || 3
|-
|ScriptAutoVersion || 16 || 1
|-
|ScriptSidebox || 31 || 0
|-
|ScriptToolbar || 42 || 0
|-
|SisterProjects || 16 || 0
|-
|SkinPreview || 4 || 1
|-
|Smart patrol || 2 || 1
|-
|SourceLanguage || 24 || 0
|-
|SousPages || 57 || 2
|-
|SpaceToolbar || 29 || 0
|-
|TableUnicode || 55 || 0
|-
|Tableau || 66 || 1
|-
|TitreDeluxe || 56 || 1
|-
|TitreHierarchique || 17 || 0
|-
|UTCLiveClock || 26 || 0
|-
|UnicodeEditRendering || 29 || 1
|-
|WikEd || 29 || 0
|-
|autonum || 2 || 0
|-
|massblock || 3 || 1
|-
|monBrouillon || 19 || 1
|-
|perpagecustomization || 16 || 1
|-
|recentchangesbox || 15 || 0
|-
|searchFocus || 18 || 0
|-
|searchbox || 30 || 2
|}
* [[Spécial:GadgetUsage]]
* [[m:Meta:GUS2Wiki/Script|GUS2Wiki]]
<!-- data in CSV format:
AncreTitres,33,0
ArchiveLinks,12,0
Barre de luxe,35,1
BoutonsLiens,41,0
CategoryAboveAll,19,0
CategorySeparator,22,0
CoinsArrondis,99,1
CollapseSidebox,35,1
CouleurContributions,33,0
CouleursLiens,25,0
DeluxeAdmin,5,1
DeluxeEdit,36,1
DeluxeHistory,46,1
DeluxeImport,19,1
DeluxeRename,16,1
DeluxeSummary,36,1
DevTools,17,1
DirectPageLink,25,1
Emoticons,43,0
EmoticonsToolbar,45,0
FastRevert,36,1
FixArrayAltLines,22,1
FlecheHaut,66,1
GoogleTrans,28,0
HotCats,81,3
JournalDebug,21,1
JournalEnTable,2,1
LeftPaneSwitch,5,1
ListeABordure,30,1
LiveRC,30,0
LocalLiveClock,27,1
Logo,42,0
MobileView,18,2
NavigAdmin,38,0
OngletEditCount,44,1
OngletEditZeroth,66,1
OngletGoogle,28,1
OngletPurge,54,1
OptimizedSuivi,18,0
Popups,61,0
RenommageCategorie,6,2
RestaurationDeluxe,12,1
RevertDiff,35,3
ScriptAutoVersion,16,1
ScriptSidebox,31,0
ScriptToolbar,42,0
SisterProjects,16,0
SkinPreview,4,1
Smart patrol,2,1
SourceLanguage,24,0
SousPages,57,2
SpaceToolbar,29,0
TableUnicode,55,0
Tableau,66,1
TitreDeluxe,56,1
TitreHierarchique,17,0
UTCLiveClock,26,0
UnicodeEditRendering,29,1
WikEd,29,0
autonum,2,0
massblock,3,1
monBrouillon,19,1
perpagecustomization,16,1
recentchangesbox,15,0
searchFocus,18,0
searchbox,30,2
-->
0k435xxxd0z07d0njv565eiuzd6ous2
Les débats de Gérard de Suresnes/Puissance et gloire
0
82212
765757
765629
2026-05-02T04:12:12Z
Texou
99491
/* Le débat sur les boîtes de nuit */
765757
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 ===
=== Les personnages ===
=== Transcription ===
C'est Patrick Petitsfils avec Macarvan, Marchaud, Diazel et donc c'est toujours les débats du rare 2h10
Donc vous pouvez toujours nous appeler au 0870 5000 et 0803 085000 et toujours le 3615
Code Pen Radio rubrique directe et pour l'instant j'ai zéro connecté
C'est pas cool ça hein ?
C'est une honte
Et sur internet donc vous pouvez toujours nous laisser des messages
Donc www.frfunradio.com
Et on va bientôt atteindre les 300 connectés
Oh là là, le blé qu'on va se faire encore
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
Bonsoir Gérard
On peut écouter Fun Radio sur 101.9
Ouais exactement
Alors 35.9
C'est quoi là Manu ?
C'est moi
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
C'est son, comment tu dis ça ?
Son QRZ
Son QRZ
Ouais QRZ ok
Voilà je suis un cibiste et tout
Ok donc on peut écouter Fun Radio à Arras sur 96.9
Tu me confirmes bien la fréquence ?
Ouais je te confirme ouais
Ok
Je te copie
Pas mal
Tout est bon
me saoule bonsoir mon amour il n'y a pas de ton amour d'accord ok tu as pas commencé comme ça ok
moi je te dis tout de suite je suis pas ton amour ok alors bon d'accord donc on peut écouter fun
radio à brest sur 98.9 non elle est pas là elle est pas là ou quoi elle qui ça tu me saoule ouais
mais si elle est là je suis là moi je t'écoute on peut écouter un peu de radio sur à brest sur 98.9
c'est bien ça c'est tout à fait ça non mais non c'est pas ça mais si ça lui fait plaisir donc
horloge 18 ans d'art cachons peut écouter fun radio sur 92.fm oui dégage non bonsoir gérard
je vais te calmer manu parce que sinon je vais t'attraper ta tête je vais te l'éclater
opération cornet de bif 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 à la balle sur 102.3 exactement gérard pas du tout on peut écouter
qui sait qui commence là et frigo on va trouver qui c'est vas-y frigo oui bonsoir gérard big big up
à tous pardon voilà donc on peut toulon 93.1 je confirme je confirme ok donc première question
sur les routiers et que pensez-vous des routiers on va demander à un frigo ouais moi je trouve que
c'est une bonne solution parce que toute façon sur les routiers on pourrait pas manger c'est
clair ouais donc il en faut il en faut et oui mais moi si j'ai envie de manger j'ai envie de manger
mais moi si je te dis si on se met en grève et qu'on peut plus râler s'il peut plus rallye
alimenter les grandes surfaces que je fais c'est les emmerdeurs dans ces cas là ah ouais mais c'est
dans emmerdeurs mais attention c'est leur game pas quand même ah ouais mais faut pas qu'ils se mettent
en grève 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 tu as un patron qui dit bon ben il faut que tu sois y'a
telle heure là bas ouais mais si t'es pas 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 que quand même qu'ils respectent ces temps de coupure c'est quoi les
temps de coupure par exemple tu roules huit heures faut que tu t'arrêtes au moins trois quarts d'heure
pour pisser non non tu t'arrêtes trois quarts d'heure comment pendant les trois quarts d'heure
tu fais quoi eh ben tu te reposes tu te mets dans ta couchette et tu t'allonges et tu dors il foutait
rien ok ah ouais mais il foutait rien mais attends arnett il foutait rien c'était horloge ouais ben
horloge s'il foutait rien ben je suis désolé mais ils vont pas risquer leur vie à cause d'un patron
on est bien d'accord mais nous notre bouffe elle arrive en retard aussi ouais mais d'accord votre
bouffe elle arrive en retard mais de toute manière parce que trois quarts d'heure au départ ça fait
six sept jours à l'arrivée non non non non non non en plus elle est périmée en plus après ouais ouais
c'est ça t'as bien t'as raison tu me prends pour un con toi non non non 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 à des gages écoute 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 d'accord alors maintenant horloge avec ta grande
gueule oui maintenant tu vas l'ouvrir bah écoute moi je pense que les routiers font pas aller ils
font pas un métier si difficile que ça faut pas exagérer non plus quoi non mais attends attends
tu sais combien de temps qu'ils passent sur la route non ils passent pas loin de sur un an par
exemple 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 par an alors je vais 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 leur 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 parce que
d'habitude quand tu les prépares tes questions c'est pas toi qui les pose si si ah bon d'accord
donc je peux je peux vous dire que le premier qui va déconner sur
là par contre moi je vais te dire une chose que c'est pas les routiers qui créent les accidents
parce qu'il faut dire une chose 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 à perdre les cons par exemple moi je l'ai vu il y
a 15 jours trois semaines hein fais-moi confiance qu'un mec sur deux une pile ou 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 aux mecs eh ben le mec il n'en a rien à foutre
à part freiner les mecs qui s'amusent à perdre ça pour moi qui reste chez eux qui prennent leur
voiture le dimanche ou qui prennent les transports en commun ça sera mieux ça coûte encore moins cher
ça prend moins de pollution ouais mais le transport en commun sur l'autoroute c'est pas évident ouais
mais attends maintenant il y a le météore et puis il y a des tramways nommé désir ouais non mais t'as
des tramways et t'as des t'as des bus euh l'ailerois 6 bus tout ça ouais non mais t'as des bus hein donc
euh tu me saoules ouais bah moi c'est clair hyper sympa ouais mais néanmoins sur l'autoroute sache
qu'il me gonfle mais puissant quoi parce qu'il me bloque à chaque fois ah mais attends c'est pas toi
qui les emmerdes aussi euh non mais quand je te dis ça c'est qu'il roule pas vite et franchement ça
me fait perdre ouais mais ils sont ouais mais euh dans ces cas-là si tu peux pas les doubler dans
ces cas-là j'ai rien contre eux mais simplement ils me font chier ils me font chier sur la route
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 mobilette et bien euh tu seras tranquille oui mais Gérard la route n'appartient
non mais attends sur autoroute tu as quatre voix 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 il n'y a pas besoin de permis pour la mobilité ouais non mais peut-être mais c'est pas
moi les routiers je les aime bien mais ils me font chier c'est tout ouais bah alors dans ces cas-là le
jour où tu vas te faire quoi c'est entre deux routiers hein et tu verras que qu'est-ce que ça
va te faire 35 tonnes 35 tonnes 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 non mais attends est-ce que est-ce que t'es routier ou pas non non je suis
pas routier je suis cibiste moi c'est pas pareil non mais attends faut pas qu'on qu'on fonde ton
tracule et on cule ta sœur exactement c'est la cibille 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 tout les routiers ont une cibille j'ai une cibille donc j'écoute les
routiers donc on discute ensemble et donc je dis qu'ils sont sympas voilà ah ok arnett internet
pardon tu m'excuses mais je prends une question je prends les questions les plus importants sur internet
bah tu l'as dit oui en attendant sur IRC il y a je sais plus comment il s'appelle des mercelles qui
disaient que il y a des pistes cyclables pourquoi il ferait pas des pistes camionnables ça n'existe
pas et je pense pas qu'ils en feront et pourquoi non mais pourquoi ils en feraient pas non mais
il n'y a pas il n'y a pas des des commandes les accidents c'est pas les routiers qui les font faut
pas dire tout ça que ça soit il est routier en fin de compte ils ont ils sont au volant 24 heures sur
24 tu t'affirmes toi d'accord merci donc les les chauffeurs 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 game pain ok alors arnette ouais alors moi j'aime bien les routiers mais quand même
il ya des limites parce qu'un jour j'ai voulu aller au disney à cause de j'ai pas pu puisqu'ils
étaient en grève et ils ont bouché l'autoroute dans un temps arnette ouais arnette déjà pour
aller à euro disney tu as deux possibilités tu prends ou l'autoroute ou la nationale en
vient pas me dire vient pas me dire qu'ils ont bloqué l'autoroute et la nationale parce que je te dirai
tu as un menteur bah ouais mais moi j'ai une voiture c'est pas pour prendre les transports au commun donc
voilà dans ce cas là tu as une voiture tu peux prendre la nationale bah oui mais c'est plus
rapide par l'autoroute donc j'ai pas peur de mon temps non plus et alors bah dans ce cas là t'avais
qu'à prendre la nationale ouais mais l'autoroute et de manière l'autoroute et de manière la
nationale elle est pour tout le monde elle est aussi bien pour les routiers pour que pour les
voitures oui l'autoroute est pareil justement il y a des routiers sur les nationales et sur les
autoroutes oui pour le raisonnement de tout à l'heure pourquoi les routiers ne prennent pas
les transports au commun dans ce cas là mais attend mais les gens quand ils partent de chez
eux pour aller bosser ils y vont comment comment tu veux mettre un camion dans un bus ah c'est vrai
désolé les gars on peut mettre un camion sur un train 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 l'histoire du gouvernement je trouve que le gouvernement il est un peu con parce que s'ils vont mettre des l'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 pourquoi pas
mettre des trains sur des camions et pourquoi pas mettre ta cervelle d'en faire plus de
taffes pour les routiers à broutille tu peux faire du standard et un peu micro que j'ai déjà dit ça
voudra mieux je suis donc deuxième question combien coûte un permis vl un permis quoi vpl
vpl
je préviens et quoi ça c'est le nom d'un vaccin tu dégages bonne nuit à toi c'est qui c'est d'être
une meuf mais c'est plus laquelle non mais là tu es tu cherches au port et hop tu me vers n'importe
donc un permis pl je pense que c'est un permis poids lourd voilà voilà alors combien ça peut
coûter à votre avis on va demander à arnette d'après moi
ça doit coûter genre dans les dix ans francs comme un paquet d'euros d'accord
mais tu n'as pas de permis de voiture toi
mais je n'ai pas payé très cher puisque je n'ai pas c'est aux états unis
tu as passé ton permis aux états unis tu me mets tu me prends pour un con quoi
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 d'accord
35 tonnes ouais alors moi je pense que tu as approximativement je pense que ça doit coûter
dans les 1 franc 52 francs il est lourd et moi en toi 35 tonnes 35 tonnes 1 franc 52 francs
non non non mais attends c'est le prix d'une communication téléphonique hockey ouais mais
non anciens je te dis pas nouveau m'arrête on attend l'ancien permis ou nouveau permis
non mais de toute manière il n'y a pas d'ancien ou nouveau permis non mais ancien franc tu comprends
il n'y a pas d'ancien ou nouveau permis maintenant bah si non bah si t'as le permis euro et t'as le
permis franc mais attends abrouti toi qu'est-ce que tu me parles de l'euro il y a le permis euro
mais attends t'es complètement si t'as le permis euro la gaffe d'accord fume l'avocate
ok
tu me saoules
ouais je sais pas ça doit certainement coûter la peau des fesses parce que vu le nombre de
manifestations qu'il faut attendre je crois que tu étais à la plaque aussi toi tu es comme
35 tonnes vous y allez à la mouiquette 1 tu me saoules ah ouais non mais moi quand je t'écoute je
déconne pas tu me saoules ah ouais non mais moi quand je t'écoute je déconne pas tu me saoules ah ouais non mais moi quand je t'écoute je déconne pas
Ah ouais ben fume la moquette
Fume la moquette ça vaudra mieux
Horloge
Oui ben moi je pense que le permis tu l'as
C'est celui qui arrive à boire le plus de bière à la suite
D'accord horloge
Parce que les routiers c'est alcoolique quand même
Horloge c'est terminé pour toi bonne nuit
Horloge terminé
Hop ça y est il est parti
Non non mais c'est même plus la peine qu'il revienne
Ah ben il revient plus
Pour lui Arcachon ben tant pis pour lui
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
Non mais attends un permis voiture vaut combien à l'heure actuelle
Ben moi j'ai payé ça 10 000 balles quoi
Hein
Ah ben oui avec les cours excuse moi
On se tait derrière
Attendez attendez
Tu dis 10 000 balles
Ouais
Tu déconnes
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
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
Ok
Frigo
Je sais pas je vais dire 100 000 francs hors taxes
Non j'en sais pas du tout
Hé Frigo
Je pense que tu ferais mieux d'aller voir
S'il n'y a pas quelque chose dans ton camion
Ah mais j'ai pas de camion moi Gérard
Oui
C'était pour vous dire qu'on accueillait donc à la place d'horloge
On accueille un petit routier
Je crois qu'il a eu un accident
Un truc pas possible un truc pénible
Bonsoir
Il va vous raconter bonsoir
Oui bonsoir
Salut
Bonsoir
Salut à toi
Bonsoir
Alors ?
Quand tu veux
Il a eu un problème avec un routier donc laisse le se remettre quand même
Non mais attends tu réponds maintenant
C'est pas la peine qu'il passe
Appelle-le
Allo
Oui bonsoir
Je vous écoute
Moi je t'écoute
Bon bah hop
Mais non mais il est là
Attends mais oh
Je vais pas passer ma
Je dois répondre à la question ou ?
Bah oui
Bah je viens d'arriver donc
Ouais bah alors
Combien quoi
Combien coûte un permis PL ?
Euh
C'est-à-dire c'est du
C'est quoi c'est du sans plomb ça ?
C'est du
Je dirais euh
Ce soir on vous met
Ce soir on vous met le feu
Ouais non mais je crois que
Pour l'instant
Justement vous êtes en train de chanter une chanson
Qui fait bien penser que les routiers quand même sont des alcooliques
Ouais
Parce que moi j'ai eu un accident avec
Ouais
Un camion
Ouais
Il y a combien de temps ?
Il y a un an et demi
Un accident
Ouais
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 qui vivez dans
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
Alors
Euh
La double est que
Il est fatigué
Qu'il a pas dormi depuis
48 heures
Parce que les routiers vous dites
Qu'il s'arrête pour dormir
Mais ça il faut
Il s'arrête pas pour dormir
C'est pas vrai
Quand ils sont en retard
Ils s'arrêtent pas
Ouais quand ils sont en retard
Non mais attends
Il accélère
Attendez
Attendez
Attends
On va
Je vais répondre à la question
A Fildar
Alors Fildar
Moi je peux te dire une chose
Que si le patron
Lui dit
Tu vas
Qui va
C'est que c'est
Le patron
C'est de la faute du patron
Parce que le mec
Il risque sa vie aussi
C'est peut-être la faute du patron
Mais c'est pas le patron
Qui va tuer des gens
Le patron qui va tuer
Non mais attendez
Là je suis d'accord
Avec tout
Avec
Qui c'est qui vient de répondre
Aussi derrière
C'est Antti Routier
Et Trigo
Trigo qui a dit
C'est pas le patron
Qui va prendre
Oui
Ouais mais d'accord
Mais là-dedans
C'est pas le patron
Qui prend
Si
C'est Contribab
Non non non
Parce qu'il faut dire
Attends que toi le tronc
Contribu
Contribu
Oui oui
Il a raison
Attends
Mais attends
Tu crois que c'est le Contribab
Qui va redonner
Antti Routier
Antti Routier
Non mais je vais répondre
A la nana
Qui m'a dit
Ça coûte
1000 francs quoi
Ouais 1000 balles
Un permis poids lourd
Alors avec toi
Ça vaut
400 000 francs
Hein ?
400 000 francs
Bah oui bah voyons
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 ?
Non
En plus ou que t'achètes le camion ?
Non ça dépend
Moi j'ai la remorque en plus
Non mais attends
T'as l'air
Je vais t'acheter ta remorque
Je vais t'acheter
Que tu as dégagé
Non mais je me renseigne
C'est tout je sais pas
Ouais non mais moi je te dis
Tu as dégagé
Si tu continues
Pour le routier
C'est pas votre fort quand même
Non mais moi je peux vous dire
Moi je peux dire
Qu'un permis à l'heure actuelle
Coute plus de 20 000 balles
Euh Gérard
Non non non
Quoi non ?
Attends
T'es mieux renseigné que moi ?
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
Ouais bah
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
Ouais mais non
Pour l'instant
On est en 1998
Ok ?
Non mais jouez pas sur les mots
Vous êtes bien routier
Ouais alors
La troisième question
La cible est-elle
Un moyen de communication ?
Ouais
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
On doit marcher hein
Donc apparemment
Ça a l'air de bien fonctionner
Donc
C'est super ce soir
C'est super
C'est magnifique
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
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
Il m'énerve lui
Donc
Troisième question
La cible
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
Ouais
Tu sais
Tu peux me répéter la question
Non je sais
Non non non Arnett
C'est pas pour t'ennuyer
C'est pas pour t'ennuyer Gérard
Je te jure
Non non Arnett
Arnett
Je ne répète plus les questions
Moi je vais le répéter si tu veux
Merci Manu
T'es gentil
Alors vas-y
La cible est-elle un moyen de communication ?
Alors
Bah je pense que oui
Oui c'est sûr
Puisqu'on peut communiquer avec des gens en fait
D'accord
C'est automatiquement un moyen de communication
Ok
Ok
Donc pour toi
La cible c'est un moyen de communication ?
Oui
Ok
35 tonnes ?
Ouais bah je dirais un petit peu comme Arnett quoi en fait
C'est beaucoup de gens qui
Ouais non mais attends
35 tonnes
Ouais
Faut quand même essayer
Ouais non
De chercher
Non non mais vous avez eu le temps pendant la pause
Ouais ouais
De réfléchir
Faut pas dire
Tu t'fuis toi mais je suis
Ouais mais attends
35 tonnes tu permets ?
Ouais mais tout le monde est d'accord avec moi
C'est pour ça Gérard
Ouais mais attends Arnett
Arnett pour l'instant tu vas te taire s'il te plaît
Ah excuse-moi
Je suis pas d'accord moi
Non mais attends 35 tonnes
Ouais ouais je vais répéter
Bon et même les autres là qui sont pas d'accord
Ouais
Bon alors attends
Moi je te dis déjà
La cible à la base
C'est un moyen de communication
Tu vois comme le téléphone
Donc en fait ça c'est partagé
A plein de gens
De l'émotion quoi tu vois
Donc voilà c'est un moyen de communication
C'est tout
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 8P
Les gens
Des questions
Allo c'est anti-routier là
Allo
Non non
Tu me saoules
Moi je trouve que la cible
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
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 récanent derrière
Bon Arnett
Tu t'affirmes
C'est anti-routier
Bon alors anti-routier
Tu commences à me les gonfler
Sérieusement
Youpi
Parce que t'as pas laissé
Parler les hommes jusqu'au bout
Ouais mais attends
Moi je fais ce que je veux
D'accord
D'accord
En de bon entendeur
Salut
Alors pour l'instant
Tu t'écrases
Tu t'en vas ?
Non mais pour l'instant
Je t'ai pas demandé
Quelle heure il était
Ouais ben il y a eu 2h
Ouais ben quand je t'appelle
Avec Potium
Tu sortiras de sous le lit
Ok
Alors tu me saoules
Ouais donc je te disais
Que pour eux
Je trouve que c'est vachement
Important la cible
Parce que quand il y a
Des contrôles d'alco-test
Ils peuvent être prévenus
Et puis ça leur évite
De leur faire sauter
Leur permis
Ouais c'est ça
Non mais attendez
Attendez derrière
S'il vous plaît
Ils arrivent pas de boire
Oui mais Gérard
Mais qui ?
La sortie routier
Tu comprends que c'est normal
Vraiment qu'avec la cible
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
Non non non
Mais attendez
Attendez
Attendez
Attends
Tu es routier
Ç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
Ah bah c'est ce que les routiers font
Ils continuent à conduire
Bah allez oh
C'est inadmissible
Oh tu me
Oh
Anti-routier
Tu me saoules s'il vous plaît
Vous vous calmez
Mais attends
Tu me saoules aussi
Anti-routier
Si ça te plaît pas
Tu dégages
Tu m'accroches
Je sais que c'était à moi
Que tu parlais
Anti-routier
Si ça te plaît pas
Tu t'écrases
Tu t'écrases
Bah Gérard
Ok
Gérard
Oui
Ouais c'est Frigaud
Je peux répondre
Non mais attends
On va demander
Je vais
On va demander
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 civile
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
Manu
Tu me dégages
En anti-routier
Là parce que ça
Y'a pas de merde
On peut même pas discuter
Ouais y'a pas de merde
Ok
Ah mais c'est incroyable
La vulgarité
Dans ce débat
Ah bah lui
Gérard
Gérard sur hier
C'est y'a Dav
Qui te demande
S'il est quitte main libre
Sibi dans un camion
Est-ce que c'est dangereux ?
Quitte main libre
Sur Sibi
Pour l'instant
J'en ai jamais
Entendu parler
Ça existe aux Etats-Unis
Ah si tu viens
D'en entendre parler là
Oh non mais
Avec ce qu'aux Etats-Unis
Non mais ça
Pour l'instant
Aux Etats-Unis
On me confirme
Aux Etats-Unis
En fait tu peux
Te masturber
Conduire
Et faire de la Sibi
Non c'est pas ça
Non
Non mais attends
Parce que toi
Tu te masturbes
En conduisant ta voiture
Et en faisant
Pourquoi les routiers
Ils font que ça
Puisqu'ils sont jamais
Avec leur femme
Alors attends
Alors là
Je vais te dire une chose
Qui c'est qui vient de dire ça ?
Eh oh
Alors tu es routier
Alors je vais te dire une chose
Que tu vois
La question que tu viens de dire
Non mais c'est pas une question
C'est une affirmation
Oui non mais moi
Je peux te dire une chose
Moi je vais te répondre
A ta question
Pendant que ta femme
Elle était au boulot
C'est ça ?
Oui non mais moi
Je vais te dire une chose
Attends
Je vais te dire une chose
Que tu crois
Que les routiers
Ont que ça à foutre
De se masturber
Dans leur camion
Non non non
Si si
Si si
Avec la main libre
Avec le système de main libre
Mais attends
Tu crois
Tu crois qu'ils ont
Ils ont des trucs
Automatiques
Non pas tout le temps
Je pense qu'ils sont
Suissis par des bruits
Mais par exemple
Au lieu de mettre
De la cibille
Il faudrait mieux
De mettre l'internet
Ouais
D'ailleurs
D'ailleurs
J'ai quelqu'un
Je vais te mettre
Un gros doigt dans le cul
Aussi
Pour toi
Ça c'est toi
Qui balance l'info
Là t'es bien routier
T'es bien vulgaire
T'es bien routier là
Attendez
S'il vous plaît
J'ai une question internet
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
Direction vers Rouen
Est-ce que
Est-ce que l'internet
Ça vous sert
Est-ce que
Pardon
La cibille
Ça vous sert pas
Justement à savoir
Où est-ce qu'il peut
Voudrer du carré de vigne
Il y a deux heures du mat
Allez dégage toi
Allez
C'est terminé
C'est terminé
J'ai un petit frigo
Je peux répondre
GG
Ouais frigo
Ouais
Donc moi
Je trouve que c'est un bon moyen
De communication
La cibille
Puis ça permet aux routiers
De prévenir
Quand il y a un accident
Sur leur route
Ouais mais ça
Ça de toute manière
La cibille
Je pense que
Moi j'en ai fait
Je peux vous dire une chose
Que la cibille
Bon tu vas te calmer toi
Ok
Donc moi je peux vous dire
Une chose
Que la cibille
C'est un moyen de communication
Pour savoir
Où sont les radars
Et de savoir
Comment que ça roule
GG
Oui
J'ai une question internet
De la part d'Anakin
Qui me demande
Si t'as des calendriers
De femmes nues
Dans ta caisse de camion
Oui
Alors toi tu dégages
Non mais il est sur internet
En plus
Mais c'est pas lui
Qui doit dégager
C'est le mec sur internet
Ouais non mais lui
Tu lui dis
On lui répond plus
Gérard
Mais non
Il est sur internet
Gérard excuse-moi
On va accueillir deux personnes
On va accueillir Goldo
Ouais
Et on va accueillir Tam Tam
Salut
Salut GG
Il était temps
Qu'on va se...
Salut à tous
Salut Sean
Salut Arnett
Salut Goldo
Salut Goldo
Salut tout le monde
Bonsoir Gérard
Bonsoir
On se calme
Non c'est Gérard
Non c'est Gérard
Ben vas-y vas-y
Pose ta...
Tam Tam
Tam Tam ouais
Bonsoir
Salut Tam Tam
Bonsoir
Donc t'as entendu la question là ?
Oui
Donc je la répète pour Goldo et Tam Tam
Donc la Cibie était la moyenne de communication
En...
Pas 50 ans
Tout à fait
Oui
Pour moi oui
Pour moi Tam Tam c'est la moyenne de communication
Ça permet effectivement
Lors des accidents
Des contrôles radars
De prévenir
Voilà
Donc tu reviens à ce que
Ce que je disais
À l'instant
Attends 5 minutes Tam Tam
Oui sur IRC
On me demande
Si tu connais la mini Cibie
Mini Cibie
Oui c'est
Non c'est un petit truc
De poche
Ouais c'est un petit truc de poche
Un genre de portable
De toute manière
C'est ici
C'est ici
D'accord
C'est ici
Ouais ouais c'est des Cibie portables
Non non
Non non
Non non
Non non tu rigoles Pildar
Mais moi je réponds
Je réponds
Moi je vais dire une chose
Que la Cibie portable
Tu n'entends même pas
La personne que t'as
Ouais
Et t'es capable
Donc en fait t'es capable
T'es capable
De l'avoir dans la main
Ouais non mais
C'est comme un téléphone portable
Mais sauf
Sauf que
T'as les canaux
Qui s'affichent
C'est un peu incroyable non ?
La distance du portable
C'est à combien de distance ?
Euh
Sur la Cibie portable
Je pense que
C'est à peu près
La même distance
Que le portable
2 mètres 50
Ouais non même pas
Même pas
Mais il paraît que
Il paraît que le son
Est excès crabe
Ouais ben ça
Ça dépend de l'antenne qu'on a
Ça dépend des country bab
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
Salut à tous
Merci en tout cas
C'est qui ?
Ah c'est pas fini ?
Là tu dis qu'on coupe
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 ?
Oh là là
J'ai vu un reportage
Par exemple
Non non ouais ouais
Un reportage
Ouais voilà
Ouais
C'est qui ?
C'est qui là ?
Tam Tam
J'ai vu le reportage
Ouais
Arlette aussi je l'ai vu
Et c'est hallucinant
Ce que ça coûte cher
A ton avis
Non non mais
Grosso modo
On va
On va pas
S'acharner
Sur ça
A ton avis
Combien que ça peut coûter ?
Parce que
Manu m'a dit
Qu'il fallait que je réponde
En euros
C'est obligé ?
Non non non
Pas en euros
C'est mieux
C'est la nouvelle norme
Éteins s'il te plaît
Manu merci
Non non
Non non
Tam Tam
Non non mais sans
Sans parler d'euros
En franc français
Ouais
Je dirais
30 000 francs
30 ?
Ouais
30 000
Qui dit mieux
Donc pour toi
Ça coûterait
30 millions
Avec toutes les guirlandes
Et tout
A peu près
Non non non
Simplement
Pour faire décorer
L'extérieur
Pas l'intérieur
Ah pardon
Je dirais 100 000 francs
Ouais mais le tout
Grosso modo
Qui me dit
100 000 francs
100 000 francs alors
Pardon
Avec la peinture
100 000 francs
Avec 50 000 francs
Avec la peinture
Je te fais un prix
GG
Je te fais un prix moi
Ok
Attendez
Tam Tam
Tu me dis
50 ?
50 000 francs
Avec la peinture
50 000 avec la peinture
Ouais
Goldo
Ouais bah moi je te disais
Je te fais un prix
Si tu veux pour écrire
Un poste d'André
Ou un camion
C'est un camion
Pas de problème
Je te fais ça pour
Ouais bah Goldo
Goldo
Goldo
Au revoir
Va va va
Va va
Essaye de
De continuer
Non mais continue
Continue à voyager
Mais c'est une décoration
Non non non
Allez hop
Goldo terminé
C'est qu'il a pas compris
C'est pas les écritures
C'est les peintures
Les dessins
Tu parles de publicité
Tout ça
Poissonnerie
Boucherie
Pour les livraisons
Excuse moi
J'ai pas compris
Mais attends
Faut pas qu'on confonde
Tu veux dire
Genre un dessin
Genre tu te fais dessiner
Un cow-boy
Un indien
Un truc comme ça
Un paysage
Non mais n'importe
T'as pas besoin
De dessiner ce que tu veux
Qu'est-ce que tu dessinerais
Toi GG
Si tu pouvais décorer
Non non mais on va demander
A Prigo
Ouais moi je dirais
20 000 francs
20 000
Ouais ouais
Moi je dirais 10 000
Euh dégage
30 000
30 000
J'ai rien fait
Euh tu me saoules
Ah s'il vous plaît
Derrière merci
Tu me saoules aussi
Et oh
383,44
Oh quel écho
Bon allez dégage
Allez dégage
Allez dégage
Dégage moi ça
Dégage moi ça
Dégage
Allez hop
Bonne nuit
Euh 35 tonnes
Ah il est lourd celui-là
35 tonnes
Il est parti
C'est Goldo à la plage
Je te l'ai dit tout à l'heure
Ah bon
35 tonnes est parti
Alors avec qui
Euh Arnett
Euh ouais moi je pense
Que ça doit coûter
Aux alentours de 10 000 francs
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 serai
Et puis je vous donnerai
Le prix réel
Il y en a un sur IRC
Il peut te répondre tout de suite
Si tu lui poses la question
Bah qu'il me dise
Quoi ?
Bah
Le prix
Que ça peut y coûter
S'il est sur IRC
Ça dépend ce que tu dis
Non mais
Le prix que
Que ça coûte
Un ordinateur
De francs
Ou 1500
Un truc comme ça
Non non non
29 la minute
Ça dépend si tu prends le clavier
Il est sur la route
Ça met un peu de temps à répondre
Il me dit
50 000 euros
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é
Leur poste
Leur reportage
De la semaine dernière
Je pense
Tu ne l'as pas vu ?
Combien mais combien Gérard ?
Combien ?
Moi je peux vous dire que
Ça coûte plus de
10 000 balles
Gérard
À peu près
10 000 francs
À peu près
Non mais attendez
Pour nous renseigner
On a Marcel
Un routier là
Qui nous a appelé
Marcel salut
Oui bonsoir
Salut Marcel
Salut Marcel
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
Acheté
Avec la TVA ou pas ?
Non non non
Non mais attends
Marcel
Oui
Non mais attendez
Les autres s'il vous plaît
Derrière
Vous me laissez
Vous me laissez parler
Oh
Avec ou sans TVA ?
Oh
Avec ou sans TVA
Toi tu as
T'as permis pour l'instant
Je vais discuter un peu
Avec Marcel
Oui
Bon toi Marcel
Tu me dis
25 367 francs
Acheté
Acheté
Donc hors taxe
Oui
Ok
Mais
T'as fait
L'extérieur
Ou l'intérieur
De ta cabine ?
La totale
Donc
La totale
Donc
T'as le volant
Avec
Oh attends
Il y a le volant
Tu me calmes
Seul qui régale
Comme une
Comme une bécasse
Parce que ça m'énerve
Tu as mis la photo
De ta femme
Sur le
Le volant
J'ai un volant
Le vis vitesse
Fildar
Attendez
Attendez
S'il vous plaît
Fildar
Tu me coupes tout le monde
Sauf
Je peux pas moi d'ici
C'est moi
C'est moi
Je vais le faire
Tu me laisses
Le dernier
Marcel
Donc pour toi
Marcel
Ça t'a coûté
25 000
267 francs
Quand même
25 300
Acheté
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
Alors là
Ça c'est une très bonne question
Donc
La photo de Jacques Brel
Toi tu
Tu fermes ta gueule
Ça dépend du routier
Bon toi
Tu te la fermes aussi
C'est Marcel
Donc
Moi personnellement
Dessus
J'aurais bien vu
Mais je sais pas
Si ça existe
Le clos
Non
J'aurais bien vu
Ricky Martins
Non non
Un truc
Carrément
Avec
Un cibi président
Vas-y Gérard
Vas-y
T'en occupes pas
Donc
Moi je réponds
Donc c'est
C'est un truc
Avec carrément
La Formule 1 dessus
Non non mais
Mais
Mais peut-être
C'est un truc blaireau
Mais on peut dire une chose
Tu peux faire ça
En un poste
Comme ça
Tu mets
C'est là
Tu mets juste des briques
Ouais c'est ça
Alors bonne nuit à toi
Ok
Donc
Qui c'est
Comme on avait
Marcel ouais
Ouais
Donc
Ouais mais
T'as payé
Que l'extérieur
Toi pour toi
Ah non non
La totale
Donc
Intérieur et extérieur
Gérard
Tout routier qui se respecte
Et puis
Un petit frigo
Pour mettre les bières
Ouais ça
Le frigo
De toute manière
Tu peux le mettre
A l'extérieur
Oui
Quand tu dis
Que tu veux repeindre ton truc
En Formule 1
Parce que t'as l'impression
D'aller plus vite ou pas
Ou c'est juste pour un hommage
Non non non
Mais ça maintenant
Tu peux mettre n'importe quoi
Pour un hommage
Non mais je veux pas
Rendre hommage
A Arteon Senna
Ou autre
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
Pourquoi
Si t'as pas l'argent
Bah dans ce cas là
Tu le fais
Sur ton camion
Tu pourrais très bien marquer
Vroom
Quoi ?
Vroom
Bah ouais
Vroom
Ça veut dire quoi ?
Bah pour aller vite
Bah ouais
Non je suis pas d'accord
Formule 1
Ça fait
Vroom
Non non
Non non
Oui
Moi je veux bien te refaire ton intérieur
Y'a pas de problème
Bon bah toi
Toi tu t'appelles
Euh
Bon de toute manière
On s'écoute
Le
Dernier disque
Bah tu vas peut-être poser une question
Y'a encore des questions
Ouais
Bah
La dernière
C'est
Les routiers sur la route
Comment ?
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'autoroutier
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
Oh là là
Il va dégager
Alors toi tu vas dégager
Tout de suite
Parce que
C'est pas le thème
Du débat
Bah si les routiers
Ah bah Gérard sur IRC
Yoda qui est dans son camion
Il me dit qu'il en a vu une
Tout à l'heure
Oh bah ça
Sur l'autoroute
Il pense qu'il vole
Alors la dernière question
C'est
Il n'a pas préparé son débat
Si si si
Il va la retrouver
Attends
Tu connais pas Gérard toi ?
Non
Non
Euh
Au hasard
Qui c'est qu'a une
Oui t'fais Alei
Ouais allez
Pourquoi les routiers
Sont trop cons ?
Non
Alors toi tu dégages
Pourquoi les routiers
N'ont pas de cuit ?
Non
Plus de routiers
Y a-t-il une différence ?
Non
Gérard sur IRC
La question
Attends y en avait une bien là
Y en avait une bien
Ouais
Eh salope
Merci
Merci
Alors
Malcavienne
Qui demande si
Ah bah c'est trop tard
Je l'ai raté
Non mais
Je pense que ça défile
Et j'ai pas eu le temps de le voir
Non
Est-ce que les routiers
Peuvent devenir des stars ?
Que font les routiers
Partant de Verglas ?
Non
Est-ce que
Le parc soleil vert
Transparent
Avec l'équipe
De faute préférée
Marquée dessus
Est obligatoire ?
Merci
C'était la question de Malcavienne
Voilà
Alors donc
La question
C'est combien de temps
Les routiers passent-ils sur la route
Et on se retrouve juste après
C'est naze
C'est naze
Attends
Tu l'as posé tout à l'heure
Tu l'as déjà posé
Oh mais merde
Derrière
C'est nul
C'est nul
Vous la fermez ou sinon
Allez hop
Conclusion
Non attends
Non non non
Ça y est j'ai une question
C'est peu
Allez
Calme-moi tout le monde
On va passer au séminaire
Gérard
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 ?
Voilà
Ça c'est une bonne question
Voilà
Et on se retrouve après
On va s'écouter
Roger
Pussot
Avec ma sœur
Elle joue du pipo
C'est nul
Oh donc
Vous pouvez toujours nous appeler
Au 0800
08 5000
On est toujours dans le débat des routiers
Et la dernière question
C'était donc
A votre avis les auditeurs
Combien de temps
Un routier peut-il exercer
Dans cette profession si belle ?
Voilà
Tam Tam
Bah déjà
Moi je sais pas
Mais je pense qu'un routier
Peut tenir facilement
Jusqu'à
Bah
Les routiers de la retraite
C'est à quel âge Gérard ?
Euh ça je peux
Je peux
Non c'est la question je crois
Non non mais moi je te demande
Jusqu'à quel âge
Un routier peut-il continuer
De rouler ?
Un routier ça doit
La retraite ça doit être vers 55 ans
Non
Non 55 ans ça c'est
Ça c'est
C'est les mecs qui
Qui travaillent
Dans
À la retape
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'en balades et tout
Ouais
Je pense que ça devrait travailler
Jusqu'à peu près 70-75 ans
Parce que c'est quand même
Une profession de feignant
Ouais c'est facile ouais
Ouais non mais attends
Une profession de feignant
Fais-moi confiance
Non non mais attends
Celui qui vient de dire
Que c'est une profession de feignant
Fais-moi confiance
C'est Tam Tam
Celui qui vient de dire ça
Déjà c'est un con
Ouais
Et un boulot de feignant
C'est pas vrai
Parce qu'il faut dire une chose
Que les mecs
Vous allez voir
On bosse comme des tarés
Ouais
Comme des tarés
Ouais bah attends
Si t'es pas content
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 feignants
Quand même
Attends
Tu crois que dans les bureaux
Ils comptent 15h par jour
Non mais c'est pas des feignants
Attends
Ils arrivent
Attends
Non mais attends
Attends Tam Tam
Moi je vais te répondre
A ta question
Le lundi ils arrivent
Hop
Ils commencent déjà
Par leur petit café
On parle des routiers
On parle des routiers
Non non non
Non mais attends
Non non non
Stop
Stop
Stop
Stop
Maintenant Tam Tam
Tu as bien m'écouté
Ouais
Tu as bien tout ouvert
Tes gourdes
Tes oreilles
Ouais ça tu dis
Qu'il est en train de boire
C'est tout ce que tu dis
Bon alors moi je peux te dire
Une chose
Que déjà
Les routiers
Ils commencent le dimanche soir
A 22h
Ils n'ont pas le droit
De rouler le week-end
Ils commencent le dimanche
A 22h
C'est pour arrêter
Le lendemain
Mon cul Pildar
Les routiers
Commencent à partir
De 22h
Ils n'ont pas le droit
Ils n'ont pas le droit
Aux autoroutes
Le lundi je fais
S'il vous plaît
Ouais mais non
Mais le lundi
Oh Tam Tam
Tam Tam
Oui
Tu t'écrases
Je vais te répondre moi
Alors déjà
Dans les bureaux
Ils ne font pas 55h
Non mais oui
Ils commencent à 8h du matin
Et pas à 22h
Ouais
Ah ouais
Alors dans ces cas-là
A 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
A 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
A 22h
Et ils disent
Au regard à leur femme
Ils ne savent même pas
S'ils vont rentrer
Ok
Ok
Alors on te parle
Tom Tom
Tu te la perds
Stop
Stop
Stop
Stop
Stop
J'ai une question
Un tarot
Il y a une question
Sur les tarots
Allez allez
Coupe-moi
Coupe-moi tout ça là
Je coupe qui ?
Enfin
Alors Hugo
Oui
Alors Hugo
S'il te plaît
C'est allé trop vite
C'est allé trop vite encore
J'ai vraiment pas le temps de lire
Vu qu'il y a environ 418 connectés
Et tu vois les
Je peux t'aider
Vas-y je t'écoute
C'était qui ?
C'était qui ?
C'était
Je crois que c'était ce nul
Je sais plus
Il y avait une question intéressante
Et j'ai pas eu le temps de la voir
C'est pas grave
Tu vas la retrouver
Frigo
Frigo
Oui je crois que les routiers
Peuvent conduire jusqu'à l'âge de 50 ans
Ah non
C'est des conneries ça
Bon attends
Je suis d'accord
J'ai lu un bouquin moi
Sur les routiers
Ouais
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
Ça dépend
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 que à 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
Et est-ce que t'as vu son gros nez ?
Et t'as vu déjà quel âge ?
Non mais
Ça
Son âge
Ça vous regarde pas
Gérard
Euh
Rigo
Rigo
Oui
Question internet pour finir
Non ?
Le point commun entre une femme
Non non
Non non
Allez
Allez
Non non non
Allez
Non non
Conclusion
Conclusion
Gégé
Gégé
J'ai une question internet
Je suis pas tous en même temps s'il vous plaît
Gégé
J'ai une question intéressante sur internet
Pourquoi les hommes éculent-ils par saccades ?
Ah là j'ai la même là
Tu vois
C'est pas le thème du débat
Parce que Gérard avale par gorgée
Gérard
Oui tu me le dégages
Hop là
Il y a terminé
On fait la conclusion là ?
Ouais
Ouais bah on fait conclusion
Parce qu'on arrête
Ouais
Bah moi ce que je conclue 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 feignants
Non mais de toute manière
En plus c'était pas
C'est un débat
Un improvisé qu'on a fait
Ouais bah ça c'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
Euh
Alors je vais te dire une chose
Ouais ouais
Tu la diras tout à l'heure
Ouais bah
Honnêtement
Non c'est pas moi
Non mais je pense que
Celui qui s'amuse à faire des conneries comme ça
Va se calmer
Ouais
Bon est-ce que t'as été routier pour de vrai ou pas ?
Oui
Trouve-le
Non il a été routier sur internet
Est-ce que tu as glissé sur du verglas ?
Oui ou non ?
Non
Alors toi tu as
Non mais sérieusement
Est-ce que t'as été routier ?
Oui
Combien d'années ?
J'ai fait deux ans de route
Combien de kilomètres t'as fait ?
Euh
22
22
Non
J'ai fait
Plus de 10 000 bornes
Combien de putes ?
C'est tout
Combien de putes est ta soeur ?
Ta soeur elle est en train de se pas enculer
Non non non
Toi tu dégages
Il n'a pas de soeur
Il n'a pas de soeur
C'est un imbécile
Allez hop
Terminé pour celui-là
Ça y est
Ça y est
Ça y est
Allez on y va
La conclusion
Allez vite vite vite vite vite
Allez
Allez
Allez hop
Hop
Terminé
Terminé
Terminé
T'envoies le
Attends t'as conclu
10 000 kilomètres en deux ans
Comment ?
10 000 kilomètres en deux ans
C'est pas beaucoup quand même
Gérard
Oui
T'es un feignant
Ouais ben
Euh
Réveille-toi
Un broutier
Je vais te donner ma conclusion
Ouais
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
On a 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 va bien être tous à ta place
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 que
Ils sont nombreux
Ils sont nombreux
Même les chopeurs 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 peut
Qu'on puisse rentrer chez nous
Avec les chopeurs de taxi
Mais grâce aux routiers
Si
Oh s'il vous plaît
Laissez-le finir
Laissez-le finir
Grâce aux routiers
C'est grâce à eux
Si on mange
Quand même
Que les grandes surpasses
Soient
Ravitaillées
Si on n'a rien
Dans les grandes surpasses
On ne peut pas manger
Alors qu'est-ce que c'est vous ?
Qu'est-ce que c'est vous ?
Vous savez
Vous savez pas
Oui Rigo
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
C'est pas possible
J'applaudis Dave
Sur l'IRC
De toute manière
Sur la CB
Sur la CB
C'est quand même aussi
Grâce
Il y a 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
A devenir rengaine
Parce que sur le canal 19
C'est qu'il y en a
Qui s'amusent
A s'amuser
A nous mettre
De la radio constamment
Et on peut pas savoir
Où sont les barrages
Ni rien
Donc
Alors maintenant
Ceux qui s'amusent
A faire ça
Sur la CB
C'est pas possible
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 devant d'entendeurs
Salut
Vous allez
Vous allez retrouver
Danan
Danan ça y est
Ça y est c'est fini
J'ai pas fait ma conclusion
C'est bon
J'ai rien dans les conclusions
Alors allez-y vite fait
Alors c'est vrai
Ouais
Je te kiffe
Parce que franchement
Ce que t'as fait c'était bien
Non mais attends
Moi je te kiffe pas
Ok
Mais alors
Les routiers
C'est n'importe quoi
Le seul truc qu'ils savent faire
C'est se branler dans leur cabine
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 qui se font la confiance
Qu'il y en a qui sont
À m'attendre
Ok
Salut Bouffon
Ouais bah Bouffon
Toi-même les connards
Ouais
GG c'est Goldo
Ouais
Je peux faire ma conclusion
Vas-y
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 feignasse
Qui s'ignole
Et t'es un digne représentant
De cette profession
Alors Goldo
Dégage
Bonne nuit
C'est terminé pour ta conclusion
Bonne soirée
Au revoir
Au revoir
Guérisse
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
Et bah
C'est dommage parce que
C'est comme ça
C'est comme ça
C'est les routiers
Bah ouais mais c'est pas bien
Moi je trouve pas
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 bien
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
Ah mais c'est sûr
C'est ce que j'ai dit à Gérard
J'ai appris beaucoup de choses
Ç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
Je suis tout à fait d'accord
Avec Gérard
Ça c'est sûr
Non mais ça à toute manière
Moi c'est un truc
Que je défendrais jusqu'au bout
Et moi j'ai routier
Chapeau pour ce que vous faites
Je sais qu'il y en a
Qui sont là-haut
Il y a NJ qui est venu
Et qui m'a dit
Qu'ils étaient en haut
Et qu'ils voulaient me voir
Mais t'es d'accord avec moi
Comme quoi c'est une passion
Et que c'est normal qu'on s'énerve
Une passion de toute manière
Tu es obligé de la défendre
C'est un gain de pain
C'est tout ce que tu veux pour toi
C'est comme toi animateur radio
C'est comme
Quand on parle des passions
C'est aussi dépassionné que le papillon
C'est un gain de pain
Ça dépend des personnes
Vas-y
Didi
Didi
Dis ce que tu as à dire
Je n'ai pas besoin d'avoir le casque
Tu parles dans le micro
Je fais exactement ce que tu viens de faire
Il flippe
C'est pas grave
Vas-y c'est pas grave
Donc ta conclusion 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
Pour une fois il était bien
C'est pas mal
A part qu'il y a eu des petits emmerdes
Non mais c'est normal
C'est un métier de passion
Mais donc
On vous retrouve
Jeudi prochain
Déjà pour les débats
Voilà
Donc
Ça s'apportera sur quoi d'ailleurs ?
On peut savoir les thèmes ou pas ?
T'avais pensé tout à l'heure au synthétiseur
Alors
Donc on va parler sur les synthés
Et sur le harcèlement sexuel
Donc on va se quitter
J'ai hâte d'écouter le débat sur le synthétiseur
C'est qu'il y a de la question quand même
Tu ne manges pas aux derniers moments
Comme d'habitude
Ou le mercredi
Tu viens me voir en me disant
Qu'est-ce que c'est ?
Que finalement tu n'y arrives pas
T'es sûr ?
C'est un débat sur le synthétiseur
Ah ouais
Alors là le synthé
T'as intérêt de me trouver
Du Jean-Michel Georges
J'en ai moi à la maison
On va s'en écouter
Un la semaine prochaine
Si si si
Le truc de la coupe du monde
Le coupe d'Europe
Coupe du monde
Ouais
J'en ai même plus
Que ça
Tu vas t'é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
C'est ça
Avec la bande de Billy
Du slip
Avec les cochons
On les grillons
Ah c'est bien ça
Qui chauffent
Vas-y
On le groin qui chauffe
Les cochons
C'est un groin
C'est pas un grillon
Bon attends
T'avais qu'à l'annoncer
Toi-même
Après tout
C'est toi qui fais la raya
Et puis c'est tout
Alors
Poupouille à toi
Ok
De bonheur
Sendeur
Salut
Et de la clinique
== Le débat sur les synthétiseurs ==
=== Contexte ===
=== Les personnages ===
=== Transcription ===
Pas de radio et pas d'insultes de 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
On va dire la musique électronique parce que si on dit que les synthés vont avoir peur
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 Mazanet
Bonsoir Gérard
Bonsoir
Et alors Tupu
Bonsoir Gérard, bonsoir Sandy, bonsoir Yargla
Non mais Sandy elle n'est pas à côté de moi donc désolé pour toi
Pardon
Elle est là mais elle ne veut pas venir écouter
On embrasse là pour moi
Ongle de pied
Bonsoir Gérard
Bonsoir
Machat
Bonsoir Gérard
Salut
Guillaume, Guimauve
Bonsoir
On va parler un peu plus fort déjà
Bonsoir
Bonsoir et Trou Noir
Bonsoir Gérard
Bonsoir
Donc premier débat, on va parler sur la musique des synthétiseurs
Donc il y a toujours le site internet
Non c'est moi qui parle à Manu Oranten, excuse-moi
Donc il y a toujours le...
L'internet
L'internet www.fr
Voilà, tout à fait
Double slash
Il y a déjà beaucoup de connectés
Donc voilà
Donc alors en gros
Aimez-vous la musique
Aimez-vous la musique jouée au synthé ?
Qui ça ?
Ben qui ça ?
La main de ma soeur dans les culottes d'un zouave qui joue
Oui ça commence
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
Alors 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
Non mais toi dans l'ensemble
T'aimes bien
Ouais moi je trouve que c'est de l'ambiance
C'est bien au moins
Ouais ouais
D'accord
Tu pues ?
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
Non mais attends
Francis Cabrel il a jamais joué du synthé
Il a toujours joué de la guitare
Non attends
Faux
Il a fait des morceaux au synthé
Ouais mais je voudrais bien savoir quel morceau
C'était des sons de guitare
Mais c'était au synthé
Ouais
Ouais non mais
Non si
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 canot
Ouais mais ça c'est
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
Ouais mais
Ben synthé c'est quoi ?
Ça peut être très bien aussi
Sur ordinateur
Comme Jean-Michel Jarre
Il a fait
Lors du concert
Au Wembley
Le 14 juillet
A Wembley
Non à Paris
Ah ouais j'ai pas vu
Je l'enregistrerai
Faudrait que tu me le prêtes alors
Non non
Moi je prête pas
J'aimerais que cette vidéo
Que j'enregistre comme ça
Ben j'aimerais le voir chez toi
Non
Il est en deux questions
Attends
Euh
Machat
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
Non mais je te parle
De la musique du santé
Ah ouais ben
C'est de la musique électronique
Ben c'est pareil
Ah bon ?
Ouais
Non mais ouais je kiffe
Ouais c'est bien
Ouais tu kiffes
Ouais je kiffe à mort
Euh Guimauve
Euh non moi j'aime pas
Ça me prend la tête
Et dans
Dans quel sens
S'il te plaît
Ça te prend la tête
Dans tous les sens du terme
C'est à dire
Ouais non mais attends
Tu vas répondre aux questions
Que je te pose
C'est tout
D'accord
Alors pourquoi que ça te prend la tête
Et dans quel sens
C'est tout
Parce que je trouve que
C'est pas de la musique
C'est pas de la musique pour moi
Bon alors c'est quoi alors ?
Ben alors
C'est des sons inventés
Sur des machines
Pour moi
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
S'il te plaît
Ok
Non je suis pas d'accord
Bon d'accord
Ben pourquoi ?
Trou noir
Ah ben moi j'adore
Le synthé Gérard
Et puis je suis moi-même
Joueur de synthé
Ah c'est bien ça
Ok
Ben tiens ben justement
C'est une question
Peut-être sur IRC
Oui sur IRC
Déjà on te demande Gérard
Qu'est-ce que c'est un synthétiseur ?
Un synthé c'est une musique
Comme t'as là
Toi attends
Tu prendrais ça
Et que
Et on voit pas nous
Non mais vous voyez pas
Vous avez pas besoin de voir
Ah d'accord
Donc
Donc ça serait
Un genre d'appareil
Comme tu tapes
Sur un clavier
C'est-à-dire que là
Attends je vais essayer
De jouer un morceau
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
Ah c'est ça un synthétiseur alors ?
C'est pas comme un piano
Alors c'est différent
Ben le piano c'est
Le piano c'est le piano
Ouais mais ça c'est pas pareil
C'est-à-dire ?
C'est quoi la différence
Entre un synthé et un piano ?
Non mais justement
Arrêtez de me bouffer
Les questions
Ah merde
On s'intéresse
On s'intéresse
Ouais non mais attendez
On a faim
Donc comme un trou noir
Comme toi
Tu joues de
Donc jouez-vous
Du synthétiseur chez vous
Donc c'est une question
Qui est pour toi ?
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
Gris pas les questions
Trou noir s'il te plaît
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 sampleur
Maintenant sur pas mal de choses
C'est vrai que
Maintenant
Tout le monde
Tout le monde joue
Sur
Sur du
Des synthés
Ou sur
Des
Des genres de
Wetman
Spécialisés pour
Pour ça
Ouais ouais
Et même Francis Cabral
Gérard
Je confirme
Oh non mais ça
Je m'en fous moi
Personnellement
Tu vois c'est pas un chanteur
Qui m'intéresse
Gingmove
Bon toi je sais que ça
Ça t'intéresse pas
Non non moi j'en joue pas
Je préfère casser des assiettes
Et des verres
Ça fait le même bruit
Bon ben alors tu vois
Gingmove
Tu vas aller casser tes assiettes
Et tes verres
Chez toi
Parce que dans ce cas là
Je sais pas pourquoi
Qu'on t'a sélectionné
Bonne nuit
Bonne nuit
Il en faut qui aime
Et qui aime pas
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
A é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 devant d'entendeurs
Salut
Gérard
Gérard un débat
C'est des pour et des contre
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 ?
Ok
Donc vas-y explique
Donc la première question
T'as pas voulu me répondre
La deuxième je te demande
Jouez-vous du santé
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
Mais non mais non
Alors si je te dis
La quatrième
Connaissez-vous le fonctionnement
Des synthés
Gris pas tes questions Gérard
Bon alors
Non mais moi je vois pas
Une nana comme ça
Qui
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é
Ca fait exactement le même bruit
Mais non
Voilà c'est tout
Ouais mais attends
En tout cas c'est
Le synthé
Tu peux le faire réparer
Les assiettes
Faut que t'en rachètes
Alors attends
C'est pas con
La guimauve
Là je crois que
Moi qui t'as un peu de colle
Ouais
De la superglue
C'est ça
Ouais mais enfin
Dis-toi que
Ca revient moins cher
D'acheter les assiettes
Qu'un synthé quoi
Ouais bah justement
On verra ça tout à l'heure
Donc
Machette
Ouais bah moi je joue pas de synthé
Mais j'aimerais bien en jouer
C'est un instrument
Qui me plairait bien
La question c'était quoi Gérard
Ta question
Est-ce qu'on peut jouer du synthé
Chez soi
Jouez-vous du synthétiseur
Chez vous
Mais est-ce qu'on peut jouer
Du synthétiseur
Ailleurs que chez soi
Si je demande chez vous
Pour l'instant
J'ai pas dit où
Je pose chez vous
C'est tout
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
Ouais on peut en jouer en plein air
Si ça est portable
Si on en joue
Quand on fait des soirées
Automatiquement
Le synthétiseur
Tu vas pas le lécher chez toi
Tu vas l'emmener
Ah ouais
Donc il est portable
Ouais voilà
Ah d'accord
Sur IRC
Il y a Vatou
Qui demande
Si le synthé
Fait autant de bien
Que le synthol
Ah
Je vois pas du tout
Le rapport avec
Le synthol et le synthé
C'est pas grave
Bah si parce que
Le synthol ça relaxe
Aussi bien que
Le synthé
Quand on joue
Ah c'est ce qu'il nous dit
Ça s'écrit presque pareil
En plus ouais
Oncle de pied
Donc toi
Non bah moi malheureusement
J'ai pas l'occasion d'en jouer
Mais c'est vrai que j'aimerais bien
D'accord
Tu pues ?
Bah moi non
Tu sais j'habite à Gap
Et je sais
Bon
J'ai pas
J'ai pas le loisir
De pouvoir
T'es dans une cabine téléphonique ?
Je suis chez moi
Je suis désolé
Ça c'est bizarre
On vient d'entendre
Un genre de
De corne
De corne ?
Ouais c'est le groupe fun
Ah non c'est pas moi ça
Ah c'est pas moi
Ça doit être quelqu'un
Qui trafique dans les studios encore
Moi non mais je me doute
Qui c'est
Mais c'est pas grave
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
Ça se prête pas un synthé normalement ?
Bah je sais c'est personnel
Mais bon
Je l'ai dit
Normalement
Tous les appareils électroniques
C'est que
Ça se prête pas
C'est comme une femme
Une femme ça se prête pas
C'est à dire
Tu prêtes pas ton tatou
Tu prêtes pas ton portable
Une femme ?
Mais non mais tu dis
Tous les instruments électroniques
Ne se prêtent pas
Une femme
Une femme
Une femme
C'est pas électronique
Une femme ça se prête pas
Mais c'est pas électronique une femme
Ça dépend
Mais tu peux en mettre une
Sur Poupée Gonflop
Pour toi ça y est
Si tu veux
Gonflop
Gonflop ouais
Je me doute où que c'est maintenant
Ça doit être Trou Noir
Non non non
C'est pas Trou Noir
Tu vois c'est Olivier Dapro
Qui est en train de me brancher
Le synthé que vous avez
De l'autre côté
Me prends pas pour un compte
Tu veux ?
Ok
Non non je n'en serai surtout pas
Non non mais tu m'y laisseras
D'accord ?
Olivier
Olivier
Olivier
Il paraît que tu as un synthé là-bas
Ah ouais non
C'est n'importe quoi
T'as grillé Gérard
Il t'a grillé
Tiens tiens tiens
Ouais ouais t'es là
T'es en train de chercher
Pour en venir au débat
Pour en venir au débat
La plupart des gens sur IRC
Préfèrent les 3T au 5T
Je vois rien
Je vois pas le rapport
Avec le débat
Donc alors maintenant
Ta réponse à toi
C'est au standard
Ça se voit que c'est au standard
C'est un auditeur qui fait ça
Bah oui c'est ça
T'as raison
Prends-moi pour un compte aussi toi
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
Bon celui qui s'est mis à ça
Arrête parce que ça commence
A me prendre la tête
Ouais
Donc
En plus il sait même pas bien jouer
C'est vrai
Ce serait agréable
Ça c'est un truc
On peut le prendre
Tu peux le transporter comme tu veux
A une condition
Que là où tu veux jouer
T'as
Une batterie
Non mais t'as la vide
Qui te donne le feu vert
Pour pouvoir brancher
Alors celui
Celui qui s'est mis à ça
Qui s'amuse à faire ça
Arrête ça
Parce que ça commence à me gonfler
Je sens que tu auras pas
L'éducation ce soir là
Ah si
Alors
Qu'il arrête tout de suite
Ça vaudra mieux
Donc troisième
Combien peut coûter
Un synthétiseur ?
Ouais
Bon Manu
Tu vas me gérer ça
Parce que sinon
Je vais te gaufrer
Oui mais le problème
C'est qu'ils me disent
Que personne n'a de synthé
Au standard
Ouais non mais personne
Ils se foutent de toi
Ils se foutent de toi
Les auditeurs Manu
Non mais c'est pas sûr
Non plus que ça vienne
Du standard
Ça peut venir de n'importe où
Ouais ouais
Non non non
C'est du standard
C'est sûr et certain
Gérard c'est quand tu veux
Citron
Oui
Comment ça coûte
Je sais pas
Entre 150 balles
Un bon tant pis
Et puis 30 ou 40 balles
Un bon synthé
Non mais attends
Tu sais ce que c'est
Un synthétiseur ?
Oui
Pas de marque
Oui oui je sais
Alors c'est quoi ?
Bah c'est un instrument
Sur lequel tu fais
De la musique électronique
Ouais
Et tu crois que ça vaut
150 balles ?
Un bon tant pis
Ouais un vrai bon
Un bon tant pis
Non mais là je crois
Non non là je crois
Que tu te mets de loin dans l'œil
Ah bah écoute non
Je pourrais t'apporter des preuves
Ouais bah tu les envoies à la radio
Y'a pas de problème
Tu pues ?
J'ai pas trop
Moi tu sais comme je te dis
J'habite un peu à Gap
Et donc j'ai
Enfin je sais pas
Un citron
Bah attends
Non non mais attends
Tu pues
Quand je demande un citron
Quoi ?
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
Oh n'importe quoi
Ils ont voulu
Ouais non mais attends
Des noms comme ça
Ongdopi et Machat
Faudrait quand même
Vraiment parano
Hein ?
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 ?
Gérard il est pas parano
Il est perno
Hein ?
Alors maintenant
Réponds toi
Qui ça moi ?
Ouais tu pues
D'accord
Bah moi je sais pas
Je pense entre 100 ou 150 francs
Mais des francs anciens
Je sais pas trop exactement moi
Ouais d'accord
Apparemment
Tu dis que
Tu penses
Je suis pas de Paris moi
Je connais pas bien les prix
Je suis en haut dans la montagne
Je connais pas
C'est où que c'est ?
C'est derrière
Non mais de toute façon
Maintenant il faut se dire un truc
C'est qu'à Paris
On vend des synthés en euros
Ouais ouais
Non non attends
Pour l'instant l'euro
Ça sort pas encore
Ça sort pas avant l'année prochaine
Non mais il commence
Ongdopi
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
Combien ?
10 000 francs
Ah enfin
Une
Une qui répond à peu près
A la question
Parce que les deux autres
On met genoux
On peut avoir des synthés
De casse aussi
On est pas obligé
De l'acheter neuf
Attends un synthé
Tu vas trouver un synthé
Pour combien toi
De casse ?
Bah peut-être 150 balles
Bah ouais t'as raison
Bah c'est clair
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
Machette
Ouais bah on va dire
2000 roubles
Bon alors toi
Toi ça va être pareil
Que Gimbaub
Soit tu vas répondre
Correctement aux questions
Soit tu vas virer
Pour 15 000 francs
Les bancos
15 000
15 000
15 000
Tu les fais cher toi
On est loin
Du prix encore
Génial
Toi
Oncle de pied
T'as dit 10 000
Ouais dans les alentours
Dans les alentours
De 10 000
10 000
Y'a combien de 0,4 ?
Guimauve
Si elle est encore là
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
Ah bah d'accord
Ça c'est un truc
D'occasion pour moi
Bah ouais
Ça c'est clair
Non mais tout dépend
Si tu prends un matériel
De haute gamme
Ou un matériel
De gamme moyenne
Ouais mais de toute manière
Tout ça dépend
De la perfection
Que vous pouvez
Avoir pour en jouer
C'est-à-dire ?
Alors on va demander
Un trou noir
Est-ce que tu pourrais
Expliquer ça Gérard ?
Non non mais on va finir
Au moins répéter
Au moins répéter ta phrase
Parce qu'elle était très forte
Tout ça dépend
De la perfection
Que vous avez
Pour taper sur un synthé
Qu'est-ce que t'entends dire
Par perfection 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
Sur IRC
Ils me disent
Qu'ils connaissent
Saint-Michel
Saint-François
Mais ils connaissent pas du tout
Synthétiseur
Bon bah ça
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
Oh mais
Qui c'est
Qui s'amuse avec ça là ?
C'est bizarre
Quand on se gueule
Ça s'arrête
Ah bah oui
Mais il peut pas t'entendre
Les jouets
Non ouais
Je me doute
D'où que ça devient
Olivier
Ça peut pas être Olivier
Gérard il est là
Attends ouais ouais
Dégage
Non non dégage
Je sais qui c'est
Qui a la roue
Non non
Non non
Dans ton studio
Y'a qui ?
Y'a un synthé
Y'a Max et Jean-Marie
Qui viennent d'arriver
Mais pas du tout
Ils sont en train justement
De préparer la soirée
De la loco demain
Donc Trou noir
Oui
Ils viennent de répondre Gérard
Donc toi tu me dis à peu près
Bah vas-y
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
C'est comme les prostituées
Non non non
Attends
Parce que là
Faut quand même pas confondre
Synthé et pute
Et une pute
Parce que la pute
A 100 balles
T'as quelque chose
Dans un synthé
Pour 100 balles
Tu l'auras pas
Et puis surtout
Elle fait pas le même bruit
Ma pierre elle balle pas
Non mais
Donc c'est Trou noir
T'aimes bien un peu
Jean-Michel Jarre quoi
Ah bah oui
Tiens
Je vais même te dire un truc
J'étais le voir
A 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
Ouais je sais
Il avait fait un salon
Au mois de septembre
Ouais c'était à la porte
De Versailles
Moi je l'ai vu
C'était sur Invitation
Alors donc
Attends
Je vais te
Redonne-moi le
Ah ouais
Parce qu'en fait
Gérard nous a mis
Un CD de Jean-Michel Jarre
Oxygène
Donc toi
Toi tu dois connaître
Parce que comme ça fait
Sur synthé
Tu connais à peu près
Tous les
Tous les oxygènes
Il y a oxygène
Il y en a beaucoup
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
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
Donc tu la poses pas
Bah la pose pas
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
A peu près jouer
Oui
Donc t'as vu
Qu'il joue avec des gants
Il a un genre de casque
C'est pour pas se brûler
Ah non non
Quand il joue avec des gants
C'est quand il joue
Avec l'harpe laser
Ouais bah
Donc le harpe laser
Donc c'est branché
Aussi sur santé
C'est branché sur synthétiseur
Mais c'est très technique
Je vais pas faire
Un cours de technique
À ce temps-là
Non non non
C'est pas le but du débat
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
Ah bah oui oui
Non mais quand il met les gants
Et les lunettes
C'est pour l'harpe laser
C'est pas de la frime
C'est parce que l'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é
Ok
Gérard
Oui
C'est Machat
Je voulais te poser une question
Est-ce que tu penses
Que le synthétiseur
C'est la musique du futur ?
Ça
À l'heure actuelle
Je ne sais pas
Parce qu'il faudrait
On est pas dans le futur encore
Non mais il faudrait voir
S'il y a des personnes
Qu'on a chez eux
Et qui pourraient
Nous le confirmer
Ah bah moi
J'ai des synthés chez moi
Bah ouais
Non mais
Par exemple
Des gens
Qui ont l'habitude
D'en jouer
Ou qui ont déjà été
Dans le futur
Et qui savent
Si ou non
Les synthés existent là-bas
Dans le futur
Je ne sais pas
Mais certainement oui
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
Au bébé
Mets-toi
De la crème
Sur les genoux
Toujours nous appeler
Au 0875000
Et donc
Il est 1h du matin
Et toujours
Le site internet
Donc
www.fr
www.fr
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
Ah c'est pas mal déjà
527
Déjà
La semaine dernière
Au premier débat
On était
On n'était même pas
A tout ça
On est meilleur
Et on aura peut-être
Une surprise
D'ici une dizaine de minutes
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
A nous appeler
Manu se fera un plaisir
De me gérer ça
Pas de problème
Je suis là
Je vous attends
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
Guignol
Machette
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
Que 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
Ah ouais
Le synthé
Ouais ouais ouais
Et bah tu vois
Sinon
Sinon on peut tourner
Entre 5
Et 3 000 balles
Et en euros
5 balles ?
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
En euros
Ça fait combien Gérard ?
Ça j'en sais rien
Mais Gérard
Gérard moi je voulais te demander
Ça fonctionne à quoi un synthé ?
C'est de l'essence ?
C'est du
Non non
Truc électrique
Ton micro
Ton micro devant la bouche
Non non c'est électrique
C'est électrique ?
Ça marche à pile
Non non ça marche pas à pile
Désolé
Le mien marche à pile
Donc
Ouais bah tiens
Il fonctionne à pile
Mais le mien il fonctionne pas à pile
Le mien j'en ai pas
Donc connaissez-vous
Le fonctionnement d'un synthétiseur ?
On va demander à Citron
Oui
Ouais bah t'appuies sur on
Ouais
Et après ça joue
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
Bah voilà
Après tu joues
Tu joues avec tes doigts
Bah alors tu dis
J'attends qu'il fonctionne
Non je dis après tu joues
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
Ah non et après j'ai dit
Après ça joue
Après ça joue
Tu joues quoi
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
On dit
Qu'avec
Leur mode
103
Alliant
Plus vite
Allez plus vite
Allez plus vite
C'est pas ça du tout
C'est 40%
On pense avec
Avec leur synthé
Il y en a
Avec leur mob
Leur mob 103
Allez plus vite
Donc je vois
Pas le rapport
Là je vois pas le rapport
Avec le synthétiseur
Tu te sers du synthé
Comme kit
Non non mais attends
Et une mob
Tu sais c'est quoi
C'est une mobilette
Ok
Eh bah oui
Bon alors
60%
Non tu permets
60% des gens
On 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
Mais si
Après il y avait
Jean-Michel Jarre
Mais c'était
Non non
Non non
Non non
Ça tu vois
Hop
Voilà
Voilà
On rigole bien quand même
Enfin
J'ai un air d'emploi
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
Voilà
Alors donc
Tu pues toi
Moi je connais pas exactement bien
Le mode de fonctionnement
Mais je pense que ça va être
Une histoire de multiplexeur
De bascule
De résistance en parallèle
Et de polymultiplier indexé
Oh la la la
C'est le genre de truc
Qui marche avec
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
Tout à fait
Même ton appareil
Il crame derrière
D'accord
Ça dépend de ce que tu utilises
En série
Ouais mais
De toute manière
On va pas préciser les marques
Non mais ça dépend
Ça dépend si tu le branches
Dans le synthé en dérivation aussi
Ça c'est important
Ouais
Ok
Tu vois la différence
J'irai en série en dérivation ou pas ?
Non
Je t'expliquerai après
On va écouter les questions
Sur l'IRC
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 ?
Non
Si c'en est un
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
Bah non
N'importe quoi
Ça remplit
Ça remplit le rôle
D'un synthétiseur
Mais oui
Les touches noires
Les touches blanches
Ça fait de la musique
C'est un synthé
Alors attends
Moi j'ai un téléphone
Quand j'appelle quelqu'un
Ça me fait pas de musique
Comme tu me dis
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
Ouais bah on va voir
Non c'est pas un synthé
Si c'est un son de synthé ça
C'est bon c'est bon
C'est bon arrêtez
Arrêtez
Arrêtez
Arrêtez
J'ai reconnu
Ils jouent la marseillaise quand même
Putain mais hey
Tu vas où ?
Donc c'est bon tu vois
Ils t'ont fait
Ils t'ont montré
Ils t'ont fait l'exemple que
Oncle de pied
On peut se servir d'un téléphone comme synthé
Moi Gérard
J'ai jamais eu l'occasion
De toucher un synthé
Donc je peux vraiment pas te dire
Comment ça marche
D'accord
Ma chatte
Ouais alors c'est tout simple
Tu prends ton synthé play school
Tu le branches sur le gris peint
Tu mets une biscotte dedans
Dès que t'envoies la biscotte
Ça marche
Et si je mets ta connerie
Dans le gris peint
Dans le gris peint
Est-ce que
Est-ce que ta connerie
Va ressortir ?
Non je crois que ça marchera pas Gérard
Non ça marche pas
J'ai un synthé play school
Si tu veux
Bon j'ai plus de pied
J'ai plus de courant chez moi
Bon je m'éclaire la bougie
Est-ce que je peux
Attends t'as plus de courant
Et tu permets de nous appeler
Abrouti
Bah oui mais je t'appelle
D'un téléphone play school
Que je branche
Sur le frigo
C'est ça allez
Bah ouais le frigo
Ça marche au courant
Espèce de petit con
Non il pédale
Allez allez allez
Il peut très bien avoir
Des vietnamiens chez lui
Qui pédalent
C'est ça
Guillemove
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
Tu peux appuyer
Sur les touches
T'as les sons
Qui se forment
A l'aide d'un amplificateur
D'écoute
Ouais tout à fait
N'importe quoi
Elle a du coup quoi
Trou noir
Désolé
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
Enfermes
Comme tu dis
Et t'appuies sur
Bah voilà
Mais moi ce que
J'aimerais bien comprendre
Gérard
J'aimerais bien que tu expliques
Aux auditeurs
Et ainsi qu'à moi-même
C'est comment
En appuyant sur une touche
Tu fais un son
Mais ça c'est
C'est à toi de le gérer
Pourtant vous en avez un
Synthé
Bah oui mais ça m'explique
Comment ça marche
Mais alors
Mais de toute manière
Vous avez différents sons
Donc c'est à vous
De choisir
Ce que vous voulez
Non mais
Je vais te l'expliquer
Non mais attends
Attends
Attends
Toi ça fait combien de temps
Que tu travailles à la radio ?
Je sais pas
Mais je vois pas
Non mais attends
Depuis le temps
Que tu es à la radio
Le synthé
Tu le connais pas ?
Oui mais moi
J'en ai déjà fait
Mais attends
Mais Max le matin
Lui ça fait plus longtemps
Qu'il est à la radio
Il connait comment
Il fonctionne le synthé
Alors toi
T'es à moitié cab
Bah non mais je le sais
T'es comme les auditeurs
T'es une cab
C'est tout
Vous avez entendu les auditeurs ?
Gérard
Gérard
Gérard
Oui
C'est Machat
Je voulais savoir
Si tu te foutais le synthé
Dans le cul
Est-ce que ça le faisait marcher ?
Alors toi Machat
Tu dégages
Au revoir pour toi
Bonne nuit
Ça y est
Terminé pour lui
Liquidé
C'est même pas la peine
Qu'il revienne sous un autre nom
Rasé
Direct
Je dégage Machat
Alors vas-y
Rien
Continue
Donc qu'est-ce qui vous plaît
Dans un synthé ?
Son cul
Oh non
Là sérieux
Fille d'air
Fais gaffe
Parce que tout à l'heure
Tu as dégagé plus vite
Chez toi
Qu'autre chose
D'accord
On va demander à Trou Noir
Qu'est-ce qui me plaît
Dans un synthé ?
Je parlais de cul
J'ai raison
C'est sensuel
Un synthé
C'est sensuel
Non mais qu'est-ce
Non mais qu'est-ce
Qu'est-ce qui te plaît
Toi dedans ?
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
Moi je dis
Tu peux
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
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
Il y a des programmes aussi
Le synthé
On appuie sur une touche
Il marche tout seul
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
Bah voilà
La surprise que t'avais annoncée
Est arrivée
Donc tu peux dire bonjour
Au monsieur
Que
Tu peux dire bonjour
Au monsieur
Mais tu idolâtres
Donc JM
Oui bonsoir
C'est Jean-Michel Jarre
Oui bonsoir
Bonsoir à tous
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 Suren
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
Déjà je voulais quand même
Remercier Jean-Michel Jarre
D'être délégué
Avec nous ce soir
Oui je sais
J'ai un emploi
Le temps très chargé
Mais je me suis
Alors donc
Une question
Que je voulais te poser
Combien coûte un synthé ?
Un synthétiseur
Peut coûter environ
150 000 francs
C'est un bon synthé
C'est le synthé
Dont tu te sers Jean-Michel
Quand tu fais des concerts ?
Voilà
Non mais ça c'est
Le mien je le paye
Exactement 20 millions de francs
Mais un synthétiseur
D'occasion
150 000 francs
D'accord
Ok
Alors
Oui
Ça fait cher quand même
Je veux dire pour moi
Je sais que je pourrais
Jamais me payer
Un truc comme ça
Non mais donnez bon nom
Quand vous posez des questions
Excuse-moi
C'est Tupu
Je sais que bon
Quelle que soit
Ma future vie
Je pourrais pas me payer
Un truc comme ça
C'est beaucoup trop cher
Oui mais c'est normal
Vous vous utilisez
Du matériel de merde
Moi je me sers
De produits
Qui sont professionnels
Il y a une question
Hier c'est
Une question pour
Jean-Michel Jarre
Les gens de l'IRC
Se demandent
Si c'est le frère
De Maurice B. Jarre
Je vois pas du tout
Le rapport avec
La question sur les synthés
Excuse-nous Jean-Michel
Pour la question
Il y a pas le mal
Il y a pas le mal
Donc la question
Qu'on va poser aux auditeurs
Donc qu'est-ce qui vous plaît
Dans un synthé
Donc on va demander
Un citron
J'ai dit son cul
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
Je vois pas
Je vois pas tellement
Le rapport avec
Tu mets sur le programme
Trompette
Et tu joues du piano
Tu pianotes
Et ça fait de la trompette
Ah bon
T'as le son de trompette
En fait
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
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 potable
Même en house
En house
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
Exceptionnellement bien
Oui tout à fait
Ok
Tu pues ?
Moi je viens de te répondre
Je te l'ai dit tout à l'heure
Attends
T'as répondu
Ongle de pied
Ongle de pied est parti 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
Il était sur Minitel
Et on l'a rappelé
Bernard
Voilà
Allo
Bonsoir
Bonsoir Bernard
Bonsoir
T'appelles d'où ?
De Saint-Etienne
Et on écoute Fun sur
Sur une radio pareil
Sur la radio
Sur la radio ouais
Non mais je demande à Manu la fréquence
Attends bouge pas je te trouve ça
Bah j'essaye
Donc bah
Ma chatte elle est partie
Game over
Moi je trouve
C'est l'esthétique
C'est vraiment joli
En plus genre
Faut que ta chatte elle est à l'accueil non ?
Gare à celui qui s'amuse à dire des conneries
Parce que ça va virer
Il va casser
Moi j'ai pas dit
J'ai pas dit pour lui Gérard
Donc game over
Ouais moi je t'ai dis
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
Ouais mais c'est ce que j'ai dit tout à l'heure
Je pense
Mais c'est toujours pareil en fait
C'est Bernard là
Oui Bernard
J'ai pas entendu la fréquence de Saint-Etienne
Non moi non plus
La fréquence de Saint-Etienne
86.3
Et non c'est 104.7
Ouais ça a changé
Ah mince
Bravo Manu
Bravo Manu
Bravo Manu hein
Je sais pas si ça a changé
Si ça a changé
Tu demandes à ce qu'on
Mette ton tableau à jour
Donc Bernard
Oui donc moi je tiens un magasin
De Saint-Et plus
A Saint-Et
Et je tiens à dire
Qu'il n'y a plus que des touches
Noires et blanches
Qu'on peut les faire
De couleurs différentes
Les gens peuvent demander
Aujourd'hui de faire des synthétiseurs
A la couleur dont ils veulent
Comme on fait les matriculations
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
Non mais Bernard
Oui
Quel est le
Je vois pas le
Le rapport avec la question
Non parce que
T'as l'air
Non mais Bernard
Bernard
Bernard
Quel est le rapport
Avec la question
Tu peux m'appeler Nanar
Enfin bon comme Bernard
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 Saint-Et
Je vois pas le rapport
Avec le thème du
Le thème du débat
Sur les Saint-Et
Non mais c'était juste
En jaune
En jaune
Ou
Orange
Orange
Ou bleu
Ou vert si tu veux
C'est pas grave
C'est Jean-Michel
Je voulais préciser que
Moi je connais
C'est Bernard
Pardon
C'est Bernard
C'est Bernard à l'appareil
Ouais bah Bernard
Tu te calmes
C'est le passé versé
Jean-Michel avait
Jean-Michel avait déjà acheté
Du matériel chez moi à l'époque
Quand il travaillait
Oui c'est vrai
Tu sais on se connait 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 des touches blanches
Il fallait le préciser ce soir
C'est vrai
C'est bien placé pour
Pour le
C'est pour ça
C'est pour ça que des fois
On m'a demandé
Est-ce que les touches noires
Soient jaunes ou oranges
Voilà
Les jaunes c'est des chinois
D'accord
Non mais on fait pas du monde
Là-dessus
Donc moi
Il y a une question
Il y a une question IRC
Une question IRC
Non non pas du tout
Ils ont marre des synthétiseurs
Ça les fait chier
Ah bah ça les fait chier
Qu'ils arrêtent
Et puis qu'ils aillent se coucher
Gérard
Ça me prend les vacances
Gérard
Oui
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
Oui mais ça existe
Oui mais seulement
Tu peux choisir la note
Do ou ré
Mais bon ça ne te fait pas
Non plus le
Voir le la
Le la
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és en fusion
C'est-à-dire que là
Par contre c'est directement
Avec un ordinateur
Et là ça coûte
Oui on parle en euros
Ou pas non ?
Non pas ce soir
Bon si Jean-Michel est d'accord
On peut parler en euros
Gérard on peut parler en euros
Oui on peut parler en euros
Ce soir c'est important
Bon bah d'accord alors
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
D'accord
Ok
Donc prochaine question
Donc
Que peut-on rajouter
Comme musique
Sur un synthé ?
Ah c'est une bonne question ça
Pour 250 000 francs
Ça peut paraître cher
Mais bon
Mais
Oui
C'est Jean-Michel Gérard
Je peux répondre à cette question
Oui
Peut-être que Bernard
A pas terminé la question d'avant
Je pense
Non non mais c'est bon
On va pas s'éterniser
Sur une question
Ça me semble cher
250 000 francs
Mais c'est vrai qu'il y a des gens
Qui viennent acheter
Pour 250 000 francs
Non mais attends
Il revient sur la troisième
Alors qu'on est déjà
A la septième
Ah Bernard
Non mais c'était juste
Pour préciser quoi
Non mais non mais
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
Mais qu'est-ce que j'en ai à foutre moi
Des curés
Des
Des curés
Qui a des camarades
Qui a des coups qui vendent
C'est tout
Gérard c'est Jean-Michel
C'est vulgaire
Oui c'est vrai c'est vulgaire
Oui donc
Vous posez la question
Sur les
Avec un synthétiseur
On peut rajouter des bruits
De paix
De rot
Ou de tout ce qui s'ensuit
Voir une chiasse
Ou quelque chose
Dans ce genre là
On peut faire tout
Avec un synthétiseur
Des pets de fous
Oui d'accord
Des pets de fous
Ok
Bernard
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 sort
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
Non mais Bernard
On va essayer de se rattraper
Gérard il faut que tu remontes
Le truc là
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 n'est pas
Le sujet
Je pense qu'il vaut mieux
Non je connais pas
Le synthé
Je connais pas
La musique du synthé
Non mais vous connaissez
Non mais je connais pas
La musique
Non presque pas
Mais tout à l'heure
J'entendais
Vous voulez savoir
Comment fonctionnaient
Les sons de synthé
Je veux dire
Et alors
Parce que
C'est moi qui fais
Les débats
C'est tout
Oui mais d'accord
Mais si ça vous plaît pas
Dans ce 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
Je pense que ce débat
Peut apporter beaucoup
Pour les novices
En la matière du synthétiseur
Complètement
Jean-Michel a raison
Guimauve
Vous demandez des réactions
Quand même de spécialistes
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
Non mais comme musique
Ouais
Comme musique
Guimauve
Parle devant ton téléphone
Ma chérie
Mais j'ose pas
Je suis un peu inquiétée
Ouais mais fais-le quand même
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
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
Je veux dire
Non mais à ce compte là
A ce compte là
Bernard et Jean-Michel
Je pense qu'ils seraient d'accord avec nous
C'est qu'il faut avoir une remorque
Une remorque pour synthé
Oui
C'est une remorque
Américaine d'ailleurs
Exceptionnellement pardon
Dans les magasins
Qui vendent des synthétiseurs
Bah chez moi par exemple
Mais tu vends des remorques
Bernard ?
Ah ça c'est plus
Oui alors le problème
C'est pas trop de pub Bernard quand même
Je lui en ai déjà acheté
Plus ou moins
Parce que Gérard
Il va te choper ça
Non mais
Tu pues
Oui
Toi même
Oui c'était quoi ta question ?
Je suis désolé mais j'ai
On parlait des remorques
Des synthés
Que peut-on ajouter
Comme musique sur un synthé ?
Bah je pense qu'on peut
On peut rajouter tout ce qui nous passe
Par la tête quoi
Non non non
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
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 vrai
C'est tellement facile
Elle est toute naze elle
C'est pas possible
Il faut la vivre elle
Elle ne connait rien
Non moi dans mon magasin
Saint-Etienne
Pas de marque
Bernard ça commence à bien perdre
Parce que je voudrais
Quoi ?
Je vais préciser Gérard
Car moi j'ai besoin
De faire un peu de pub
Pour acheter des synthés
Dont je me sers
Ouais mais toi
Toi Jean-Michel
C'est pas pareil
Donc on va passer
A une autre question
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 du synthé
On a des professionnels
En plus on a Jean-Michel Jarre
Quand même
Ouais Bernard est là
Et on attend lui
Lui pour l'instant
Il est en train de me sortir
Son truc de Saint-Etienne
On en a rien à foutre
A Saint-Etienne
Vous pouvez m'appeler Jean-Mich
Bon
Bernard
Oui
Il faut que tu donnes envie
A Gérard
De continuer le débat
Et d'intéresser les gens du synthé
Moi ce que je peux dire
C'est que je l'invite
De venir à mon magasin
A Synthé Plus
Magmar
De toute manière
J'irai jamais à Saint-Etienne
Allez hop
Quel genre de musique
Peut-on jouer sur un synthé ?
Ah bah du synthé
Qui ?
Bernard du synthé
Bah tout le monde
Bah d'accord
On appelle ça
Une musique synthétique Gérard
Voilà
En fait c'est quoi
Le nom de ton magasin ?
Non mais attends
Le nom du magasin
Si vous voulez
Des renseignements
Vous attendez hors antenne
S'il vous plaît
Merci
8 Avenue du Mer
Ouais bah alors Bernard
Bonne nuit
Gérard
A quel coin ?
Hop
Pour l'adresse c'est très bien
Lui tu peux l'envoyer se coucher
Synthé Plus
8 Boulevard du Mer
D'accord merci
Avenue du Mer
Avenue du Mer pardon
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
On me souvient
Trois dans un premier débat
Faut le faire
Gérard c'est trop noir
Oui
Oui et tu m'as pas laissé répondre
A la question tout à l'heure
Tu m'as un petit peu oublié
A la première
A ta question d'avant
Que peut-on
Que peut-on rajouter
Comme musique sur un synthé ?
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
Non c'est faux monsieur
Bah si
C'est tout à fait
Maintenant
On prend les vieux disques
Pas tous en même temps
C'est pas
C'est pas un champ de bagarre
Maintenant
On prend les vieux disques
On les sample
Ça c'est des boîtes à rythme
Actuellement
C'est des boîtes à rythme
C'est des boîtes à rythme
C'est des boîtes à rythme
C'est même pas la musique électronique
En elle-même
Non non ça y est c'est bon
On se calme
Parce que moi je tiens un magasin
Également à cette année
Qui s'appelle Rythme Plus
Non mais ça y est
On se calme
On se calme
C'est Bernard ou quoi là ?
Oui
Boîte à rythme plus
C'est encore lui ?
J'avais repris un autre
Mais je sais pas
Je me suis fait blouser quoi
C'est quoi la rue ?
Il doit repasser sur les lits
7 avenue du maire
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 santé ?
Au santé ?
Oui
Bah sur un synthétiseur
On peut jouer
On peut jouer à la musique synthétique
Je viens de vous le dire
C'est qui ?
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
Oui de la house
Si vous voulez
Ok
Au standard
Oui un autre professionnel du synthé
Qui s'appelle Tristan
Et j'ai pas eu le temps de lui demander
D'où il...
Ah je le connais aussi
Bonsoir
Bonsoir Tristan
Bonsoir
T'appelles d'où Tristan ?
De Lyon
De Lyon d'accord
Et tu fais quoi ?
Je travaille également
Dans la musique
Je travaille pour un magasin
Et la fréquence de Lyon ?
C'est quoi le nom de ton magasin ?
Non non mais c'est
On va pas commencer comme ça
Musique plus à Lyon
Oui voilà
Je connais bien lui aussi
C'est quoi la rue ?
Bon
Citron
Guillaume
Je sens que pour vous
Ça va mal s'écarmer
On n'a rien fait
Alors nous on voit
Également des guitares électroniques
Non mais c'est pas
Je crois que c'est pas
Le thème du débat
Donc c'est quel
Quel jour
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
Les
On se fout là
L'harmonica électronique
Les putain bec électronique
Également
Voilà donc
Bon bah moi je vous invite
Tous à venir à
Où ça ?
Non non il n'y a pas
D'où ça
Pas de pub
Tristan fais gaffe
Gigmove
Moi je vous invite
A Musique Plus à Lyon
Gigmove
Oui mais en fait
Je ne coupe pas la parole
Il est en train de parler
Non non mais
Maintenant tu réponds
Tu réponds à la question
Je te demande de répondre
D'accord
C'est celui du général Leclerc
Alors lui
Tristan terminé
Lui
Au revoir Tristan
Salut
Ça en fait 4
C'est bien
Continuez comme ça
Bien manu
Contre le deuxième débat
Il n'y en aura pas
Ah tiens c'est nous
Attention
Je dirais
Toutes les
Toutes les personnes
Qui sont intéressantes
Qui parlent de synthétiseurs
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
Ça leur apporte beaucoup
Pour leur magasin
Oui mais peut-être
Peut-être pour eux
Mais pas pour moi
Je dois seulement te dire
Gérard tu n'es pas très crédible
Par rapport à Jean-Michel Gérard
Qui est avec nous
Gigmove
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
Oui d'accord
Tu peux ?
Moi je crois que
Comme l'a dit Jean-Michel
Oui Jean-Michel
Je n'ai pas ma place
Excuse-moi Jean-Michel
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
De rien ajouter
Là on va
Sur
IRC
Non au standard
Ou non IRC
Tout de suite
C'est juste une conclusion
IRC
Bon on va attendre un peu
Alors on va prendre
Au standard
On va prendre Guillaume
Qui est musicien lui-même
Qui voulait réagir
Genre de synthé aussi non ?
Oui oui oui
Tout à fait musicien
Il est d'où ?
Il est de Limoges
Et la fréquence
Je vais vous la dire tout de suite
A moins que Guillaume
Veuille la dire lui-même
Je la connais pas
Ah mince
Alors tu habites Limoges
Et tu connais pas
La fréquence de
De fin de radio
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
Ah Guillaume
Je le connais bien lui aussi
92.2 FM à Limoges
Pourquoi ?
On m'a dit
C'était 93.4 moi
Ah putain Manu
Mais c'est pas vrai
C'est lui qui fait une erreur
Vous pourrez
Peut-être accorder
Vos violons
Guillaume
Guillaume
Bonsoir
Donc pour toi
Alors moi je travaille
Dans un
Je peux juste dire
Que je travaille
Avec un groupe
Qui s'appelle
Les Electrochocs
Ouais alors vas-y
La Russe s'il te plaît
Non non mais
Sinon ça va
Je sens que
De toute manière
On va faire conclusion
Comme ça
Mais c'est un groupe
En fait qui
Non mais écoutez
Laissez parler
Moi je travaille
Dans l'électronique
Je sais pas que je
Moi je travaille
Sur un synthé
Toyota 130
Voilà pour bien préciser
La marque
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
Mais ça on en a rien à foutre
Guillaume
Et je trouve
Oui
D'abord
Grand respect à Jean-Michel
Je passerai
Samedi
Prendre mes bons tempis
Oui
Non mais ça
Vous règlez
Votre popote
Hors antenne
Ah oui mais je suis
Overbooké
Il faut que je règle
Donc Citron
Oui
Donc toi
Vite parce qu'elle est
Assez pressée
C'était quoi déjà
Excuse-moi
La question
Quel genre de musique
Peut-on jouer
Sur un synthé
Tout
Surtout la musique
Faut que je fasse vite
Parce qu'il faut que je répète
Là
Ouais ben
Magne-toi de poser des questions
Tout
Non mais
Magne-toi de poser des questions
Si je veux Guillaume
Tu peux m'appeler Bébert
Ouais non mais
Tu vas te calmer
Mon ascard
Parce que
Sinon tu vas aller vite
Répéter
Je peux juste faire un peu de pub
Pour le groupe
Les électrochats
Non non non
Y'a pas de pub à faire
Ils se produisent où ?
Ouais
Donc
Le 27 octobre
On reste à Limoges
Oh
Tu
Quoi mais quoi ?
Les plats sont de 20
Mais t'es con
Pourquoi t'es un connard ?
Mais Manu
C'est toi
C'est toi qui gère les auditeurs
Fil d'art
Pas connard
En plus
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
C'est fou ça
Je crois que vous avez
Un petit en besogne
Monsieur Gérard
Mais
Terminé
Conclusion
Orgue plus à Paris
Pour mon frère
Bon Gérard
Je vais faire la conclusion
De l'IRC
Vas-y
Fais conclusion
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
Voilà
C'est bien
Donc Citron pour toi
Oui conclusion
Oui
Je vais continuer à jouer
Sur l'orgue de ma tante
Ah non
Faut jouer avec un Toyota 130
Ouais mais j'ai un bon tampi
Moi à 150 balles
Mais moi je possède
Des
Tu viens de la part de Bébert
Tu viens
Mon Bébert
Tu fermes
Tu fermes
Ta goule
Vous venez de la part du groupe
Les électrochocs
Vous avez 5%
Bon Manu
Tu me le vire
Lui c'est terminé
C'est le boulevard de Clichy
Ouais
Dans le 18ème
Ok
Il a été vachement viré
Bravo Manu
C'est le standard
Tactile
J'arrive pas
Oui oui oui
C'est là
Je vais te calculer quelque chose
Moi mon con
Mon con je pense
Tu pubs pour finir
Conclusion
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
Saintes
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
D'accord
Tu peux prendre ton VTT
Non mais faites pas de pub comme ça
Tu prends ton VTT
Et tu te passes
Ok
Allez Gérard
Y'a Jean-Michel Jarre
Qui s'en passe
Game over
Ouais bah moi je vais continuer
A casser mes assiettes
D'accord bah c'est bien
Maintenant on rachètera
Sur le marché
La semaine prochaine
Exactement
Jean-Michel Jarre
Pourquoi la conclusion ?
Le débat n'a rien apporté
Vu qu'on a entendu
Un mec bourré comme vous
Qui a porté des choses
Complètement abstraites
Envers la musique synthétisante
Non
Et je ne vous salue pas
Monsieur Gérard
Et bah c'est bien
Dans ce cas là
On va s'écouter
Je vous mets une quexotte
Dans le cul
Et bah c'est bien
Vous pouvez garder
Vos musiques de naze alors
Et continuer
On va pas l'écouter alors
On va peut-être pas en mettre
Un de morceau
On va pas l'écouter
Si c'est prévu
Sur la fin du débat
Il t'a insulté ?
On va s'écouter
Surtout toi
Tu fais pas de conclusion
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
Mais c'est pas moi
Qui tire les gens
C'est Manu
Non mais lui
Lui de toute manière
Il va reprendre son VTT
Il va rentrer chez lui
C'est moi qui vais rentrer chez moi
Et puis toi aussi
Comme ça je vais être tranquille
Comme ça Rigo
Va passer au standard
Et sur l'IRC
On aura personne
Et Olivia la prend
Si il faut quelqu'un sur l'IRC
Ah non
Personne à l'IRC
Donc pour le deuxième débat
Il y a 800 connectés
Je peux pas les laisser
C'est vrai
Donc conclusion c'est con
Parce que Manu
Tu m'as fait du boulot dégueulasse
Ça c'est un peu de ta faute
Pour moi je suis désolé
Je savais pas que ça allait partir en couille
Avec Jean-Michel
Mais non
Mais non
T'es jamais au courant
Abrouti
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
Mais ça arrive
Maintenant si c'est pour me faire de la merde
Tous les jeudis
C'est pas la peine
Je t'ai commis vu
Tu viens jusqu'à minuit
Et après minuit
Dès que tu me vois
Tu te casses
Ça vaudra mieux pour toi
Il y a un niveau du débat
Sur les synthés
Toi le synthé
Moi le synthé
C'est une musique que j'adore
C'est ta passion
Moi j'aime bien
La musique
C'est tout
D'accord
Donc le synthé
C'est bien
Voilà
D'accord
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
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
L'harcèlement sexuel
L'harcèlement sexuel
Les numéros
0875000
Et toujours l'IRC
Pour un peu le radio
Et 0803
Aussi 085000
Au cas où le numéro vert
Ne fonctionne plus bien sûr
== Le débat sur le harcèlement sexuel ==
=== Contexte ===
=== Les personnages ===
=== Transcription ===
Et voilà, vous m'avez écouté 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, alors on a Marmite, on a Frisbee, Cassoulet, on a Bidon d'huile, on a Point Noir, attends, Ericou est en train de gérer parce que c'est pas son taf, donc t'as voulu que ce soit rigolo, ça a l'air sérieux c'est les casques, et Point Noir.
Sinon, moi je peux peut-être dire un petit truc sur l'IRC, on est 858.
Eh ben c'est bien, voilà.
Ok.
Alors donc, Marmite, bah d'accord ça commence déjà bien.
C'est pas très professionnel ça quand même.
Donc Marmite, bonsoir, donc on écoute Fun Radio à Rouen sur 104.8.
Ouais c'est ça, ouais.
Et toi là, comme d'habitude.
Ah ouais, c'est vrai avec...
D'accord, dégage.
Ah mais ça va ?
Dégage, dégage.
Mais ça va pas, t'es fou ?
Dégage un maximum.
Ah mais oui, je dégage.
Dégage.
Un maximum, ça vaudra mieux pour toi.
Donc Marmite, on peut écouter Rouen, à Rouen, Fun Radio sur 104.8.
Ouais c'est ça.
Donc Frisbee's, 22 ans de Bordeaux sur 101.7, Fun Radio.
C'est exact, j'écoute sur Internet, c'est exactement ça.
C'est pas sur Internet, c'est sur l'AFM, d'accord ?
Pardon.
C'est pas du tout pareil.
Cassoulet, Disneyland, Seine-et-Marne...
Je gère Cassoulet, pour l'instant elle est pas là.
Ah d'accord.
Donc Bidon d'huile, on peut écouter Fun Radio...
C'est Bidon d'huile qui a raccroché.
Non mais hé, oh !
Tu vas pas commencer à foutre ta merde avant que je te gouffe, toi !
Moi je suis pas là, c'est la merde au standard.
C'est de ma faute, c'est la première fois que je fais le standard, excuse-moi Gérard.
Alors c'est qui qui est parti ?
Donc Bidon d'huile est parti, et je suis en train de gérer Cassoulet.
Et je rappelle des gens.
Ah bah là, ça commence bien.
On a Poupon, on a Poupon aussi.
Bonsoir Poupon.
Poupon, bonsoir.
Oui, salut, bonsoir.
Donc t'es d'où ?
Je suis de Paris, je suis de Paris.
Donc t'as quel âge ?
J'ai 23 ans.
23, et on écoute...
101.9.
101.9.
Et on accueille aussi...
On accueille aussi Point Noir.
Bonsoir Gérard, bonsoir Manu, bonsoir tout le monde.
Bonsoir.
Alors donc, première question.
Donc que veut dire le mot harcèlement sexuel ?
On va demander à Marmite.
Ouais, ça veut dire quand t'es harcelé sexuellement.
Ouais mais...
Que veut dire exactement ce mot ?
Ouais bah ça veut dire que t'es un canon,
et puis tu te prends plein de mains au cul.
Ouais non mais attends, t'es un canon,
tu veux dire un top modèle ?
Ah non, t'es un canon.
Non mais attends, un canon, un canon, un canon,
tu veux dire quoi dans...
Bah t'es un canon, t'es super belle.
Ah bah donc, je viens de te dire,
un top modèle, tu me dis non.
Ah non mais t'es pas forcément top belle.
Bah mais attends, un canon pour moi c'est un top modèle,
je suis désolé.
Ah bah ouais d'accord,
mais on n'avait pas le même mot alors.
Bah oui mais un canon ça veut dire ça pour moi.
Ah d'accord.
J'ai récupéré le bidon d'huile.
Salut Jean.
Salut le bidon d'huile.
Donc cassoulet...
J'ai trouvé quelqu'un d'autre.
Ok, donc on n'a pas de cassoulet, c'est bon.
C'est pas grave, j'ai trouvé une choucroute.
Bah tiens, on a une choucroute là,
comme elle veut faire partie du deuxième débat.
Ah non, non, non.
Quoi non, si.
L'invité mystère.
Le bulldog.
Le bulldog.
Le bulldog il t'emmerde.
Putain.
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.
Allô ?
Bah qu'il réponde.
Ouais bah qu'il réponde, alors c'est qui ?
Entre Poupou, Point Noir, Bidon d'huile ?
Ah c'est pas Poupou.
C'est pas Bidon d'huile Jean.
Non et c'est pas Point Noir.
Ah non, non, j'ai rien dit moi.
Ouais c'est Pierrot.
Hein ?
Ouais c'est Pierrot qui a dit ça.
Non mais attends,
il sort d'où celui-là là ?
Bah excuse,
je suis arrivé,
on va pas avancer.
Il sort d'où, il sort d'où lui ?
Non c'est Bidon d'huile.
Non c'est pas moi Jean.
Excusez-moi,
pour répondre à la question c'est...
Eh moi je suis...
Eh Gérard,
c'est le bordel hein,
quand c'est Rigaud.
Eh mais c'est pas là,
allez, allez, allez,
Rigaud,
tu retombes là,
quand tu retombes là-bas,
non non,
parce que là c'est le bordel.
Si je peux me permettre quelque chose,
excusez-moi,
on nous dit un canon,
on nous dit un canon,
c'est fun,
et on nous dit que le boulet c'est Gérard,
merci Jean-Denis.
Non pas t'es fatigué,
tu rentres chez toi.
Ah ouais,
j'ai compris là.
Hein, t'es fatigué,
tu rentres chez toi toi.
C'est chaud là.
Hein,
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.
Ouais.
Alors Pildar,
Pildar.
Bon les mecs.
Pildar.
Calme-toi.
Dégage chez toi,
t'es fatigué.
Allez hop.
Manu au standard.
Manu au standard.
Manu au standard.
Allez c'est bon,
ça y est,
on se calme.
Pildar,
tu rentres chez toi,
t'es fatigué.
Allez hop.
Ça vaudra mieux.
Alors donc,
pour toi Marmite,
toi,
le moins harcèlement sexuel,
pour toi c'est un canon.
Bah ouais.
Donc canon,
donc c'est comme j'ai dit tout à l'heure,
c'est un top modèle,
tu m'as démenti.
Ouais d'accord.
Hein ?
D'accord,
on est bien d'accord.
Oui d'accord.
C'est ta réponse.
Ouais.
Frisbee.
Euh oui,
je crois que l'harcèlement sexuel,
ça doit avoir un rapport avec Binkington,
non ?
Non mais attends.
Non.
Eh Frisbee.
Oui ?
Oui,
je suis là.
Que veut dire le mot harcèlement sexuel ?
C'est pas de savoir si Bill Clinton,
il a été harcelé,
ça on en a rien à foutre.
On est bien d'accord.
Quand même,
il a été harcelé quand même.
Non mais attends,
ça c'est son problème,
c'est sa vie privée,
c'est pas la mienne.
D'accord.
Gérard,
on va accueillir le dernier auditeur,
il s'appelle Sifflet.
Allo ?
Salut.
Bonsoir.
Bonsoir.
Salut Sifflet.
T'appelles d'où ?
De nulle part.
De nulle part.
Alors donc,
la fréquence c'est nulle part,
d'accord.
Dis-moi Sifflet,
je peux t'y faire dedans ?
Bidon d'huile.
Ouais,
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.
Non mais attends.
Je crois que c'est ça.
On te demande,
je te pose la question
parce que je commence à en avoir marre.
Que veut dire le mot harcèlement sexuel ?
Je vais te le dire,
c'est les gens qui n'arrivent pas à baiser.
Non mais attends,
toi t'es con.
Il n'a rien compris.
Non,
il ne comprend pas lui.
Non mais attends,
prends-le hors antenne
et explique plus sur lui.
Je vais m'expliquer
parce qu'ils ne sont pas capables.
Prends-le bien.
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.
Ouais.
Bidon d'huile.
C'était lui,
c'était lui.
Je viens de le dire Gérard.
Non,
c'était Frisbee
qui ne comprenait pas.
Frisbee,
je suis toujours là.
Mais alors toi,
pour toi ?
Mais je viens de répondre.
Mais c'est quoi là ce bordel ?
Ah,
ce n'est pas moi,
je ne suis plus là-bas.
C'est quoi là ce bordel ?
Frisbee vient de répondre,
bidon d'huile.
Eh,
il faudrait peut-être savoir.
Il est bidon d'huile.
Mais je suis là Gérard.
Alors pour toi ?
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 Litton,
voilà.
Bon,
non,
je ne vois pas du tout le rapport.
Point noir,
tu es là toujours ?
Ouais,
je suis là.
Donc pour toi ?
C'est persécuter quelqu'un
physiquement et moralement
pour avoir son cul.
Ouais,
c'est ce que je voulais dire.
Ouais,
mais toi,
de toute manière,
tu veux toujours dire
ce que les gens
ils répondent avant toi.
Il est heureux.
Poupou ?
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.
Oh non,
ben attends.
C'est aussi dans l'autre sens
quand même.
Oh non,
mais il peut y avoir des variables.
Attendez,
il y a une question IRC.
Oui,
sur IRC,
on me demande
pourquoi le harcèlement sexuel
est-il sexuel ?
Ça,
tu vois,
c'est une question
qu'on m'avait demandé
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.
C'est tout.
C'est Frisby, là.
Je crois qu'on peut
faire un harcèlement sexuel
avec les pieds,
par exemple.
Mais non,
mais est-ce que
t'as compris
la question IRC
qu'on a eue ?
Je crois.
Répète-la-moi
si je me suis perdu.
Alors,
la question,
c'était
est-ce que
l'harcèlement sexuel
est sexuel ?
Pourquoi est-il sexuel ?
Pourquoi est-il sexuel ?
Moi, je peux répondre.
Qui ?
C'est Point Noir.
Oui.
Parce qu'il n'y a pas
que l'harcèlement sexuel.
Il y a tout le sexe allemand aussi.
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.
Si, Gérard,
regarde-moi.
Moi, sur l'IRC,
c'est du harcèlement textuel.
Oui, mais c'est pas pareil, toi.
S'il te plaît.
Oui, moi...
Attendez, attendez, attendez.
Quand même pas tout le temps les mêmes.
Moi, je considère
que l'harcèlement sexuel
peut être vécu comme un viol.
Oui, mais ça...
Parce que si la personne
ou si la nana
n'est pas consentante,
c'est considéré comme un viol
et comme un crime.
Oui, alors,
dans ce 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
si on a 2.
C'était quoi, la 2 ?
C'était quoi ?
Non, c'est curieuse que ton
en pratiquant
le harcèlement sexuel,
mais ça...
C'est un déclin.
C'est pas mal.
Oui, alors,
qui veut répondre ?
Tiens, ben, Poupon ?
Non, s'il te plaît,
s'il te plaît, pardon,
Poupon.
S'il te plaît.
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.
Donc,
je suis d'accord
avec toi, s'il te plaît.
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.
Oh, Gérard !
Oui ?
Moi, j'avais entendu dire
que 70% des gens
étaient valences.
À 100%,
dans le cancer.
Alors, attends.
Là, je vais te dire une chose.
C'est qui qui vient dire ça ?
C'est Bidon d'huile.
Alors, Bidon d'huile.
Et Bidon.
Et Bidon.
Et Bidon.
Bidon d'huile.
Ouais.
Tu vois, ton nom,
il porte bien.
Bah, t'es vraiment Bidon.
Parce que là,
tu viens de jouer
sur le signe astrologique
du CEP.
Il a pas entendu.
J'ai entendu vierge.
Donc, moi, je pensais
que c'était
le signe astrologique.
Bah, ouais, attends.
Et la main de ma soeur
dans la culotte d'un zouave,
c'est astrologique, ça ?
Bon, ça, c'est pour problème, hein ?
Bravo.
Bravo.
Alors, Bidon d'huile,
adieu pour toi.
Bon, j'ai eu le choix.
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 ?
Euh, non, je donne...
Je connais tes adresses, oui.
Non, non, mais ça, je...
On parle pas de la vie privée.
Loco ?
Ah, non.
Frisbeez,
tu vas te calmer.
Bah, moi, j'ai dit
qu'on parlait pas de la loco, moi.
Marmite ou Point Noir,
vous allez vous calmer
toutes les deux parce que...
Non, non, j'ai rien dit,
tu plaisantes ou quoi ?
Oui, c'est une fille,
elle a été sifflée, alors.
Bon.
Donc, que risque-t-on
en pratiquement
le harcèlement sexuel ?
On va demander à Poupon.
Ouais, bah, déjà,
je voulais dire à Sifflé
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.
Ouais, mais attends,
alors, moi,
je vais te renvoyer la balle.
Vas-y, renvoie.
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.
Pourquoi ?
T'as parlé de mettre
la main aux fesses à des manchots ?
Pourquoi elle peut pas
me mettre de claques ?
Non, mais attends,
Sifflé, 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 ?
Tu peux me la faire décoder,
j'ai pas...
Attends, toi, bidon d'huile,
tu la permes.
Oui, je sais.
Je t'ai dit de dégager.
Alors, lui, il dégage pour de bon.
Ouais, je parlais avec mon professeur.
Ok, je l'avais calmé,
mais bon, je vois que
c'est pas calmé,
donc hop, il dégage.
Hop, terminé pour lui,
c'est même pas la peine
qu'il revienne sous un autre nom.
Ouais.
Donc, point noir.
Bah, au pire,
ce qui peut arriver au gars,
c'est de se faire du bien, quoi.
S'il arrive assez fin.
C'est-à-dire,
ouais, mais tu crois que
en harcelant une nana
dans la rue,
tu crois qu'il va pouvoir
coucher avec ?
Bah, attends, Gérard,
il y en a qui aiment ça.
Bon, bah, attends,
peut-être des nanas
qui aiment ça.
Bah, des mecs aussi, hein.
Bah, ouais.
Non, non, non, non, non, non, non, non.
En vrai, c'est...
Non, non, qui, qui, qui, qui, qui, qui ?
Non, mais ça peut être du jeu, Gérard.
Ouais.
Non, mais attendez,
attendez, attendez, attendez,
pas tous à la fois.
Qui est pas d'accord
avec moi ?
Moi, moi, moi, moi.
Poupon, poupon.
Poupon, bah, moi, je dis,
s'il y a des punis
qui a des filles,
il y a forcément des garçons avec.
Elles sont pas toutes seules.
Elles se produisent pas toutes seules.
D'accord.
S'il plaît,
tu voulais peut-être répondre
à la...
sur ce qu'elle vient de dire,
là, Point Noir ?
Euh, non, pas du tout, non.
Non ?
Euh...
Oui ?
Couscous ?
Bonjour, Gérard.
Bonsoir à tous.
C'est Gérard.
J'aime bien tes débats.
Bonjour, Couscous.
Salut, Couscous.
Salut, Gérard.
Ça va ?
Ça va, ça va, Couscous.
Y a pas de problème.
J'ai pas regardé ce matin, quand même,
mais ça va, carrément.
OK.
Bon, Gérard, on y va, là, un peu.
Alors, euh...
Donc, Prisby...
Euh...
Prisby ?
Oui ?
Donc, toi ?
Vas-y, pose-moi...
Oh, non, mais attends, hé, oh !
Tu l'as entendu ?
Je vais pas m'amuser, là, hein.
La deuxième ou la troisième ?
Non, non, c'est la deux.
Que risque-t-on
en pratiquant le harcèlement sexuel ?
Hop.
Ben...
En même temps, Couscous,
tu réfléchis à la question, hein.
D'accord, Gérard.
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...
De toute manière,
c'est ce qui est arrivé
à je sais plus qui.
Je veux pas en citer de nom,
parce que, de toute manière,
ça me regarde pas.
Ouais, non.
Tapis ?
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 ?
Oui ?
Donc, pour toi ?
Tu risques gros
et dans certains pays,
tu peux même te faire couper les couilles.
Ouais, non, mais ça, je pense...
Ouais, non, mais ça,
je pense qu'en France,
c'est ce qu'on devrait faire
sur ceux qui pratiquent ça,
sur les mineurs.
Ça va pas ?
Ah oui, sur les mineurs,
mais c'est pas du harcèlement sexuel.
Non, mais alors, c'est quoi ?
Attends.
Non, non, mais attends.
Hé, Marmite !
Attendez, attendez, attendez.
Marmite, Marmite.
Attendez, attendez.
Marmite.
Oui ?
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 ?
Moi, je pensais qu'on parlait
de harcèlement sexuel au travail.
Non, mais attends.
On parle pas aux fesses.
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,
il faut pas qu'il arrête de parler de ça.
Bon, ben alors ?
Gégé, on parle pas des mineurs.
Euh, couscous.
Attends, attends, couscous.
Minitel.
Pas Minitel.
Oui, sur Internet.
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.
Je vois pas du tout le rapport.
C'est un tournoi de kékaraté.
Ouais, demande-lui
s'il y a pas un tournoi de kékaraté, lui,
pour dire des conneries comme ça.
Tu peux lui demander toi-même.
T'as juste à dire.
Tu peux lui dire dans le micro.
Ben, tu réponds à la question.
Est-ce que t'es ce tournoi de kékaraté
pour me sortir des conneries ?
Donc, couscous pour toi.
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 à smoules.
Ça, ça m'aurait étonné
que tu me sors pas
l'histoire de ta merguez
avec ton couscous.
Ah, ouais, il y avait longtemps
que j'étais pas passé sur l'antenne.
Eh ouais, mais si, t'es passé
il y a quand même 15 jours.
Ouais.
Qui c'est qui voulait réagir,
l'habitude ?
Moi, je voulais dire que
dans ton débat, là, quand même,
c'était un peu...
On se sent un peu chier,
et puis, bon, je raccroche.
C'est de la merde.
Au revoir.
Au revoir.
Au revoir, comme ça.
Bonne nuit.
C'était bien, Frisbee.
Frisbee.
Ah, ben, on se sent bien.
Frisbee, il est parti.
Une place de libre.
Ah, ben, c'est bien,
ça fait une place de libre
pour les autres.
Ouais.
Comme ça, si tout le monde
pouvait me dire que mes débats,
c'était de la merde,
eh ben, dans ce cas-là,
on fera plus de débats.
Non, non, Gérard,
c'est bon, il est là,
on pète les barres.
Très bien, Gérard.
Moi, je m'en fous, hein.
Non, mais j'adore tes débats, Gérard.
Moi, si tout le monde se plaint
que les débats,
c'est de la merde,
dans ce cas-là, moi,
je fais encore une question,
à deux heures,
je laisse la place à Rousseau,
je rentre chez moi,
et...
Non, il était gris,
il était gris,
je sais pas ce qu'il avait.
Non, mais on s'imagine, Gérard,
on reprend, on reprend tout.
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.
D'accord.
Donc, voilà.
Donc, je te pose
la même question aussi, toi.
D'accord.
Moi, ouais, ça m'est arrivé,
ça m'arrive encore, ouais.
Mais elle aime ça,
donc je dis rien, quoi,
au contraire.
Ah ouais, non, mais attends.
Attends, dans ces cas-là...
C'est une cochonne,
c'est une cochonne.
Non, non, attendez,
attendez, attendez,
attends, Poupou.
Ouais, Poupou.
Ouais, Poupou.
Ouais, bah, c'est qu'elle aime ça,
si elle dit rien,
c'est que ça lui plaît, en fait.
Bah, ouais, mais dans ces cas-là,
pourquoi...
Dans ces cas-là,
pour pas qu'ils viennent se plaindre,
après, ils t'ont...
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 ?
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.
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, parmi...
Non, juste, vite fait,
il y a Titus sur l'IRC,
il demande ton patron
ou ta patronne.
Ah ouais ?
Ouais, mais ça, ça...
Il a pas tort.
Ouais, j'aurais pu préciser.
Oui, Manu ?
Donc, à la place de Frisbee,
ce qui est raccroché,
on accueille Focu,
il appelle d'Angoulême
sur 92.4.
Bonsoir, Gérard.
Salut.
Focu.
93.4, voilà.
OK, donc...
Qu'est-ce qu'il nous reste ?
Bidon d'huile est parti.
Qui ?
Moi, j'ai couscous.
Ouais, il y a couscous à sa place.
Donc, point noir.
Ah ouais ?
Ben, moi, c'est pas mon patron
qui me harcèle,
c'est moi qui le harcèle.
Ben non, alors attends.
Encore une cochonne.
Ah non, non, attendez, attendez.
Il y a que des cochonnes.
Non, mais attends.
Il 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.
Ouais, non, mais attends.
Poupon, poupon, poupon.
Ouais, ouais, ouais.
C'est toi qui viens de réagir comme ça, non ?
C'est moi, ouais.
Non, mais attends.
Si.
Il y a que Sifflet qui n'est pas cochonne.
Il y a que Sifflet qui est normal.
Ouais, mais Sifflet,
ça, c'est son problème,
c'est pas le vôtre.
Elle va répondre, elle.
Le boss, il va être content.
Qui ?
Ben, rien, non, rien.
Ben si, fini ta pensée.
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.
Ouais.
Ben, je peux pas me faire harceler, quoi.
En fait, c'est mon problème.
OK.
Alors, attends.
Point noir à 17 ans,
c'est toi qui te fais harceler par un patron ?
Ben oui.
C'est toi qui harcèles les patrons à 17 ans ?
Ben oui.
Non, mais tu me prends pour qui, là ?
Ben, pourquoi ?
Je fais un contrat d'apprentissage
dans une boulangerie, je travaille.
Ouais.
Et mon patron, il me plaît,
donc je fais du harcèlement sexuel.
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 ?
Non, non, non.
Elle va lui ploter les pois chiches.
Je le touche pas, je le provoque.
Je le travaille au corps.
C'est pas pareil.
Non, mais alors, c'est pareil.
Non, c'est pas pareil.
C'est pareil, parce que tu...
En travaillant sur le corps,
tu peux descendre...
Mais pourquoi tu lui plotes les pois chiches ?
Le couscous, il a réponse à tout, hein.
Euh, s'il plaît.
Non, je pense que...
Non, attends, attends.
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 la NPE, quoi.
Mais, euh, non, je peux pas me faire harceler
par mon boss, y a pas rien.
T'aimerais ça si t'avais une patronne ?
Euh, si j'avais une patronne
ou un patron pas des masses.
Ouais.
Parce que je suis pas fan de l'usine à six fers, quoi,
mais une patronne, j'ai pas.
Pourquoi pas.
Euh, s'il plaît.
Non, je me suis jamais fait harceler
par un patron, ni rien du tout.
Oh, ben, c'est clair.
Non, mais pourquoi ?
Dans quel sens ?
Ben, elle a pas de patron.
Bah, parce que j'ai jamais eu l'occasion...
Elle travaille pas.
D'après moi, elle doit pas être bien belle.
Bon, toi, tu peux mieux te regarder ta montre, hein.
Oh, là.
Joli !
Joli, joli.
Je sais pas qui c'est qu'a voulu lui poser ce...
Je pense qu'elle a une voix bien mignonne.
Je l'habituerai bien, ma couscous par contre.
Elle a l'air sexy, hein.
Euh, couscous, pour toi.
Oui, ben, j'ai pas entendu la question, excuse-moi.
Oh, ben, d'accord.
Euh, votre patron vous a-t-il déjà harcelé ?
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.
D'accord.
Euh...
Focu, pour terminer sur ce question...
Moi, Gérard, j'étais au standard avec Manu,
j'ai pas entendu la question.
Non, mais attends, ouais.
Non, c'est vrai, c'est vrai.
Non, mais t'aurais pu lui expliquer la question.
Je l'ai calmé, j'ai pas eu le temps, tu viens de l'appeler, donc...
Alors, Focu, pour la dernière fois, je répète la question.
Votre patron vous a-t-il déjà harcelé ?
Euh...
Non, j'ai pas de patron.
D'accord.
Et donc, tu t'es jamais fait harceler ?
Ben non, parce que je suis mon propre patron,
donc quand je me tape des branlettes,
à la rigueur, je me harcèle tout,
d'accord.
Et tu te tapes des branlettes avec...
Ah là là, il est chaud comme la braise.
Eh, eh, Focu,
à mon avis, tu te tapes des branlettes
avec tes secrétaires.
Ah non ?
Ah ben si, t'as quand même des secrétaires, si t'es patron.
Euh...
Non, des secrétaires, mais mal.
Ouais, des mauvaises, d'accord.
IRC, oui, sur IRC,
il y a Cab qui te demande s'il y a harcèlement sexuel
quand on branche son synthé.
Ah ben...
Rien à voir.
C'est pas du tout le...
Oui.
Alors, la question, peut-on...
On va réfléchir, vous allez réfléchir à la question.
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 0800 308 5000
et toujours le...
IRC.
IRC.
www.frfanradio.
A tout de suite.
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 0800 308 5000
et toujours le...
L'IRC qui marche...
Super bien, je crois.
Combien de connectés, à peu près ?
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.
Joli !
Attends, déjà, la semaine dernière, on était à 856.
On bat les records, ce soir encore.
C'est dommage que l'humidité ne fonctionne pas
parce que je crois qu'à partir de 200 connectés,
il n'y a plus personne.
Ça a sauté.
Ah ben alors, c'est dommage.
Donc, on va récupérer Marmite.
Marmite !
J'ai allumé, hein.
Oh !
Ouais, ouais.
Ouais, pardon, pardon.
C'est bon.
Marmite.
Bonsoir.
Rebonsoir.
Rebonsoir.
Point noir.
Salut.
Rebonsoir.
Poupon.
Oui, bonsoir à tous.
Rebonsoir.
Oui.
Sifflet.
Bonsoir.
Rebonsoir.
Qu'est-ce que ça a été, Merguez ?
Allô, vrai body.
Ah, c'est Ashley Body.
OK.
Faut que...
Faut que...
Oh, oui.
Faut que...
Je vais répéter la question pour qu'il la comprenne bien.
Non, non, mais quand je dis...
On reprend et on n'attend plus.
Faucu, t'es là ?
Ouais, ouais, tranquille.
OK, c'est bon.
Donc, la question, je ne vous la repose pas.
Ouais.
Donc, maintenant, on va demander...
Tiens, Faucu, comme t'étais au standard,
on va savoir ce que t'en penses, toi.
Moi, je ne suis pas trop d'accord, en fait.
Alors, explique.
Ça ne peut pas être une marque.
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.
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.
Mais est-ce que c'est un produit vendu en magasin,
c'est tout ?
Je ne te demande pas si c'est une marque.
Ben, si c'est un produit vendu en magasin,
tu vas acheter du harcèlement, toi ?
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.
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.
Euh, ok.
Couscous ?
Ouais, ben moi, j'achète du harcèlement sexuel
à l'épicerie de chez Bébé.
Ouais, ok. Tu achètes les couscous,
les pois chiches et les merguez ?
Ouais, ouais, il n'y a pas de problème, genre.
Le mouton et le poulet ?
Il n'y a pas de problème, mais fais quand tu veux
pour qu'on fasse une couscous party et je te mettrai la merguez.
D'accord.
Sifflez.
Oui, je pense que ça peut être un produit vendu en magasin
parce que l'église fait bien le viagra.
Ouais, non, mais attends,
toi, si tu commences à me bouffer les questions,
je pense que tu as passé...
Non, mais c'est vrai, Gérard, il exhibe bien le viagra,
donc pourquoi pas...
Non, mais ça, le viagra...
Le viagra, c'est pour ceux qui sont...
Oui, ceux qui sont impuissants.
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.
Le viagra et le gras.
Donc pourquoi pas, hein ?
Ouais, pourquoi pas. Poupon ?
Ouais, ben le vieux gras, moi, j'aime pas trop, mais...
Non, non, non, mais attends, ça, c'est pour la semaine prochaine,
la question...
Le débat, c'est pas pour cette semaine.
C'est pas pour le vieux gras, c'est ça ?
Non, pour l'instant, c'est sur l'harcèlement sexuel,
c'est pas sur le vieux gras.
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, c'est que 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.
Non, mais moi, de toute manière, une fois,
je pense que, s'il plaît,
elle peut le dire, une fois, j'étais dans un supermarché...
Et tu t'es fait ploter les fesses.
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...
Attends, attends, attends...
Tu bois de l'eau, toi ? Toi, t'es allergique ?
Non, non, je bois de l'eau, tu vois,
alors me prends pas les...
Arrête, non, bah...
Non, tiens, Sifflé, 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.
Tu la connais ? Tu connais Sifflé ?
Tu connais Sifflé et Sifflé ?
Je me rappelle pas du tout, non.
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.
C'est horrible. 60% des gens
se font harceler par courrier.
Ça, j'en connais un qui est bien placé.
C'est clair.
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 bite dans ma chatte.
Moi, j'aimerais bien avoir le numéro de téléphone
du 1%, là.
Ouais, bah...
Bah, Manu, il va se faire un plaisir de te trouver ça.
Je vais te trouver ça, il n'y a pas de souci.
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.
Gérard, sur IRC, il y a 6 gars
qui te demandent si le harcèlement est héréditaire.
Comment ça ?
Impossible.
C'est des histoires de famille, ça.
C'est des histoires.
Tu m'éteins ça avant que...
Que je me déplace et que je t'éclate
tes petites lunettes.
Vite !
OK ?
Bon.
Bon, Gérard, t'as pas répondu à la question
est-ce que le harcèlement est héréditaire ?
Ça, je peux pas savoir,
parce que j'ai pas goûté à tout ça.
Donc, point noir.
Écoute-moi, en magasin, franchement, j'en ai jamais vu.
Par contre...
Toi, tu travailles en boulangerie,
donc en grande surface, ça m'étonnerait que tu puisses voir ça.
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...
Ouais, dans ces cas-là,
on vient sur les 60% qui sont harcelés
par courrier.
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. 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.
Non, mais attends, tu captes vraiment rien.
Non, c'est dalle. 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é.
Gérard, elle a payé un organisme
pour lui harceler.
Non, non, elle a payé aussi le patron.
Bon, Marmite. Oui.
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.
Elle a assisté le vigile.
Elle a assisté le vigile et ça se fait pas.
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. Bah, t'as pas de chance.
Bah, je préfère.
Ah ouais. Alors, moi, je préfère
être tranquille que de me faire harceler
par des emmerdeuses. Ah ouais.
Voilà. Donc, moi, c'est pas moi
qui aurais payé pour
me faire harceler.
Ouais, ça, ça s'appelle une putain, quand même.
J'ai le droit de demander un truc ?
C'est qui, c'est qui, c'est qui ?
C'est Fokur.
Il y a Manuel sur Minitel
qui demande si tu fuches pour une binouze.
Bon, alors, Fokur,
Fokur, tu sais ce que tu as fait, alors, hein ?
Tu vas aller voir Manuel Standard parce que tu commences
à me gonfler avec tes conneries.
Il a raison, il a raison, c'est un message Minitel.
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, Fokur, tu vas
voir Manuel Standard. Si ça va pas, tu vas
dégager. J'ai le calme, j'ai le calme.
Si ça va pas, tu vas dégager.
Donc, le harcèlement
sexuel, peut-il être
petit ? Peut-il être
consentant ?
Donc, je répète, le harcèlement sexuel
peut-il
être consentant ?
Fokur, écoute,
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
consentant, ouais. Ouais, non, mais
elle était consentante. J'allais la faire, merde.
Ah, je suis désolé.
Je suis désolé, Régo.
T'étais consentant ? Non, moi, j'étais juste d'accord.
Ah, t'étais d'accord, donc tu te sentais
consentant, tu te sentais bien
dans ta peau quand t'as proposé ? Ah, je me sentais
carrément con, ça c'est clair. Ah, bah ouais, d'accord.
Fokur, s'il s'est calmé ?
Ouais.
Oui, je me suis bien calmé. Donc, alors,
vas-y. Mais, je me suis
calmé, j'ai pas pu entendre rien.
Ouais, là, je crois qu'il y a... Ah, j'ai dû répéter,
il voulait savoir si t'étais consentant
pour te faire harceler dans le sexuel, voilà.
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à. Bah, si, ta main droite, elle est d'accord
avec ta main gauche quand tu te pignoles, donc t'es
consentant. Ouais.
Bah, ouais, donc... Bon, on est d'accord. Bah, oui.
Là, je pense que... Mais, le problème, c'est...
Non, c'est que j'ai pas de problème, en fait, de se
projeter là, puisque je suis mon propre boss.
Ouais, d'accord. Donc, voilà. Poupon, ça prend la peine
d'essayer d'y faire comprendre
parce qu'apparemment, il a l'air de nous prendre pour
des cons. Bah, j'essaye de l'aider, quoi.
Non, non, mais il nous... 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...
J'arrête, je coupe, là.
Non, non. Euh... Couscous.
J'ai coupé.
Ah, Rachida, sur la couscous, hier, j'ai mis
un grand coup de chipolata, elle est consentante. Il y a pas de problème.
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...
Welcome back, Olivier.
Donc, pour toi, Couscous,
donc... Ah, il y a pas de problème.
Moi, je suis toujours consentant pour faire l'amour,
il y a pas de problème. Ok. Euh...
S'il plaît. Non, je pense que là, seulement
c'est seul, il peut pas être consentant.
Bon, ça va, là,
vous me laissez parler, un peu ?
Oh, Pascal !
Oh là là !
Olivier, tu commences pas, d'accord ?
J'ai rien fait. Non, non, t'as rien fait,
à peine. Et les autres,
vous vous tchalmez quand je pose une question, s'il plaît,
d'accord ? Y a pas de problème. Ouais. Bon.
Donc, je disais, non, le harcèlement sexuel
peut être considéré comme...
peut être consentant.
Oh, putain, moi, j'arrête, hein.
Oh là là ! Putain, elle a une belle voix,
c'est dommage. Oh, les charmes, Antoine !
Elle est pas conne, en plus.
Et voilà. Merci, merci !
Merci pour celui qui s'amuse
à faire cette connerie.
Donc, là, elle a arrêté, c'est même pas la peine d'essayer
de la rappeler, elle reprendra pas.
Alors, point noir. Je voulais juste dire que sur IRC,
tout le monde est content qu'il ait pu siffler.
Appelez l'invité mystère, soit fait l'invité mystère.
Sur IRC, moi, je les emmerde
que, s'il plaît, je sois plus là, c'est tout.
Gérard.
Au standard, à la place de
Faucu, 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.
Non, mais attends, pour l'instant, on n'en est pas là-dessus,
on est sur le consentement.
Je t'annonce... Ben oui, mais
je t'explique ce qui s'est passé dans sa vie.
Ok. Point noir.
Est-ce que tu peux me répéter la question, s'il te plaît ?
Putain, mais vous allez faire ça
jusqu'à 3h du matin, là ?
Bon, les filles... Ben attends, c'est la première fois que je te demande de répéter.
Le harcèlement sexuel, petit L...
Petit L, consentant.
Euh, tout à fait, ouais.
Petit L, non.
Petit L, grand L.
C'est petit L, c'est ce que je voulais dire. Voilà.
D'accord. Donc, le harcèlement, petit L, consentant.
Voilà. Ouais, d'accord.
Ouais, moi, je pense que, ouais.
Enfin, c'est un avis personnel, mais ouais, je pense, ouais.
D'accord. Marnit ?
Ben oui, moi, oui, c'est clair.
Oui, je suis consentante.
Ça, de toute manière, je pense que les trois quarts
des personnes
sont toutes consentantes
sur des problèmes, comme ça, hein.
Le harcèlement ?
Euh, 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.
Ah, d'accord. Et ben oui.
Et t'as quel âge, sans indiscrétion ?
J'ai 23 ans.
Et t'appelles à elle d'où, sans...
D'un tourneur.
Bon, Olivier, tu vas commencer par t'écraser,
parce que tout à l'heure, tu l'as dégagé, ça va aller vite fait.
D'accord.
Donc, t'appelles d'où ?
De Toulouse.
De Toulouse, de la fréquence ?
Ben, moi, je sais pas, parce que je l'écoute sur Internet.
En 17.5.
Ouais, ben, non, je pense pas, hein.
Si, si, je crois pas, je sais pas, je dis ça comme ça, hein.
Non, parce que c'est pas la première fois qu'on a des gens de Toulouse.
C'est en 3 points de la fréquence, tu verras.
Non, mais moi, je pense que, si je la demande à Manu,
le temps qu'il achète, 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à.
Pourquoi ? Ben, attends, explique-nous pourquoi.
Ben, parce que je veux pas me faire harceler par n'importe qui, déjà, pour commencer.
Ah, mais elle est mignonne.
Non, mais ça, ça dépendra de la personne.
Et tu donnerais pas ton consentement ?
Non.
Non.
Donc, les animaux pratiquent-ils le harcèlement sexuel ?
On va demander à Marmite.
Ouais, les chiens.
Il y en a plein, ils viennent sur moi,
puis ils frottent les cheveux.
Ils mettent leurs zigounettes sur ma jambe, c'est désagréable.
Moi, je vais te dire une chose, Marmite,
je pense que Point Noir...
Oui ?
Point Noir, ça va être pareil.
Ouais, ouais.
C'est surtout chez les bulldogs.
Oh là là !
Olivier, tu fais gaffe !
Il y a Gérard qui m'attaque.
Olivier, tu fais gaffe, c'est la dernière fois !
D'accord, d'accord.
On a Olivier, c'est content de t'avoir.
T'amuses pas à faire des conneries, toi.
Gérard ?
Oui ?
On accueille Casse-toi à la place de Sifflet.
Salut, Gérard.
Salut, Casse-toi.
Casse-toi, salut. T'appelles d'où ?
Et j'appelle de Seine-et-Marne.
Et la fréquence, c'est 101.9.
Ouais, voilà, 101.9.
Donc, on va demander à Point Noir.
Attends, Marmite, tu me disais, toi ?
Que j'étais sexuellement harcelée par les chiens.
Non, mais ça, je peux...
Maintenant, il y a quand même trois filles.
Trois filles et trois garçons.
Oui.
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...
J'ai le temps par les...
Non, non, non, mais attendez, attendez, attendez.
Je vais continuer.
Moi, j'ai le chien de ma copine, donc...
Il se frotte toujours à ta jambe quand t'attends.
Non, non, non.
Comme ça ?
Non, non.
Il va carrément sur sa sœur.
Ouh là !
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é barqué, là.
Il suffit juste de te laver, Gérard.
Tu sens pas, ça sent pas.
Faut te laver, c'est tout.
Non, mais c'est pas moi qui...
Non, mais dis-le à ta belle-sœur.
Non, mais de toute manière...
Ou à ta meuf.
Non, mais attends, ma meuf, attends, merde, toi.
D'accord ?
Tiens, ben, Poupon.
Oui.
Donc, pour toi ?
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é barqué,
qui vient se frotter sur ma jambe,
il prend un coup de savate, quoi.
Non, mais alors, dans ce cas-là,
je vais te dire une chose, que...
Non, non, non, non, non, non.
Ça dépend du chien, ça dépend du chien.
Non, mais t'es vraiment dégueulasse de dire ça, c'est tout.
Si t'es un gros rottweiler, je le laisse terminer.
Si t'es un caniche, je le fous.
Non, mais attends, moi...
Ah, c'est dégueulasse, là, franchement.
N'importe quoi.
Attends, j'ai pas envie de me faire spermer
par un clé bar sur la jambe.
Pousse, pousse.
Ouais, Gérard.
Moi, j'ai déjà vu deux dromadaires
qui se frottaient là-bas, aussi.
Ils étaient en train de se masturber, eux-mêmes.
Dans le désert du Sahara, en plus.
Attends, attends, hé, hé, hé, hé.
À la place des dromadaires,
il n'y avait pas des chameaux ?
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.
Ouais, les chameaux, ils ont deux bosses ?
Ouais.
Non, une, une, une.
Non, ils en ont deux.
Non, ils en ont deux.
Les dromadaires, ils en ont une.
Oh, les filles, bravo.
Ç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...
Ils ont tout ce qu'il faut, hein.
Ils ont une quéquette, ça suffit, hein.
Bah ouais, mais comment tu veux
qu'ils reproduisent, alors ?
Faut bien qu'ils aillent sur une femelle.
En plus, ils arrivent à se la lécher.
Bah ouais, c'est ça.
Oui, ça, oui.
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.
Attends, un chien te met une main, une couille.
Ouais, c'est ça.
Tu dirais qu'ils te mettent une patte, ouais.
C'est plutôt malin de te toucher une couille.
Moi, ça m'est déjà arrivé, un chien
qui me fait un clin d'œil, par contre.
Bon, toi...
Attends, Couscous.
L'autre, quand il me dit
qu'il y a un chien qui lui a fait un clin d'œil,
vu qu'il a ouvert ta tranche,
ça m'étonne pas de toi, hein.
Ça m'étonne pas de toi, hein.
Bravo.
Les premiers chiens que tu vois dans la rue,
ils sont pour toi, hein.
Casse-toi.
Gérard, sur IRC, on me demande
si tu t'es déjà toi-même harcelé sexuellement.
Non.
Avec ta main droite ou gauche ?
Non plus.
Alors, casse-toi.
Oui, ben, excuse-moi,
j'ai pas entendu la question.
Tu peux la répéter ?
Les animaux pratiquent-ils le harcèlement sexuel ?
Ah, j'y crois pas, là, du tout.
C'est quoi le débat, Gérard ?
Les animaux.
J'étais pas là au début.
Non, ben, toi, les oreilles,
c'est comme le cul, ça se lave.
T'étais dans l'ossidio en train de faire le con, alors...
C'est sur les animaux, les animaux.
Ils travaillaient.
Oh, non, ben, ils travaillaient,
mais ils n'avaient qu'à écouter.
Et tu m'éteins ce son,
parce que tout à l'heure,
je vais te faire du...
Je vais te mettre une barf.
Je vais te mettre une barf.
Alors, septième question, Manu,
tu m'éteins...
Tu veux répondre, moi ?
Qui ?
Point noir.
T'avais pas répondu, toi.
Non, j'ai pas répondu.
Tu m'as posé la question,
et puis tu m'as coupé en plein milieu.
Ah, bon, ben, alors, vas-y.
Ouais.
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.
Ouais, mais ça, c'est partout.
C'est pas drôle.
Donc, voilà.
Moi, je peux...
Oui ?
Non, rien, rien, rien.
Donc, je peux vous dire une chose,
que j'ai jamais vu des animaux le faire,
mais bon, peut-être que 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.
Ouais, j'ai hâte.
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...
Le foot ?
Le foot.
Ah, pardon.
Le football.
Donc, je vois pas du tout
le rapport avec le harcèlement sexuel.
Ça, c'est les sondages.
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.
Rien à voir.
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.
Moi...
C'est des Mongols.
Pour moi, c'est des Mongols.
C'est des petits cons.
Ouais.
Sur Minital, il y a Caroline DS
qui dit qu'elle veut te voir à la loco.
Mais écoute, il n'y a personne.
Tiens.
Regarde.
Ah, il y a un connecté.
Deux.
Ah, un connecté.
Bah, allez, non, ça...
C'est les parents, Olivier, de toute façon.
Ah, bravo.
Non, je pense pas.
Le téléphone ne répond plus, Max.
Je te branche.
Bon, bon, d'accord.
Bon, bah...
OK.
Donc, septième question.
Avant qu'on fasse la pub.
Non, non, non, non, non, non.
La pub ?
Il n'y a pas de pub, Gérard.
Il n'y a pas de pub.
La pub, à 2h30 du matin.
Gérard, il veut de la pub.
Non, non, avant qu'on...
On va faire la pub.
Avant qu'on s'envoie à un petit disque.
Alors, être harcelé sexuellement
peut-il devenir une maladie ?
On va demander à...
Casse-toi.
J'ai pas compris ta question, Gérard.
Tu peux répéter.
J'ai rien compris.
Être harcelé sexuellement
peut-il devenir une maladie ?
Ah, pas du tout.
Bien sûr, bien sûr.
Mais alors, ça n'a aucun rapport, quoi, je veux dire.
Si, moi, je sais, moi, je sais, moi.
Qui ?
Poupon, Poupon, Poupon.
Ouais, vas-y, 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.
Ouais.
Et Malade Nocturne, c'est donc pour guérir, justement,
la maladie du harcèlement sexuel.
Non, mais attends, mon boss,
mon boss, déjà, il a un nom, il s'appelle Max.
Bon, Max.
Hein ?
Il a fait...
Il a fait...
Voilà, comme dit Couscous.
Mais il n'a pas fait ça dans le but de faire chier...
C'est tout.
Mais je ne t'ai pas dit dans le but de faire chier,
c'est pour soigner la maladie, c'est fait pour ça.
Mais attends, mais ce n'est pas avec la musique
que tu vas te faire harceler, espèce d'abruti.
Mais non, ça guérit du harcèlement,
et c'est pour ça que ça s'appelle...
Ah ouais, tu crois que la musique a guéri le harcèlement sexuel ?
C'est une nouvelle thérapie New Age Goer,
le malade nocturne.
Ouais, une malade nocturne.
Ok, une question IRC.
Oui, il y a Nostradaminus...
Nostradaminus ?
Non, Nostradaminus.
Il te demande s'il existe des traitements
à base de médicalement.
De médicament, non.
Pas de médicament, de médicalement.
Non, pas à ma connaissance.
Normal.
Qu'est-ce que c'est ?
Je t'ai répondu, Gérard.
Non, ce n'est pas toi qui...
Il vient de me répondre, c'est Poupon.
J'ai répondu juste avant que je disais
que ça n'avait aucun rapport.
Bon, ok. Mathieu ?
Moi, je pense que oui, ça peut être une maladie
de harcèler sexuellement.
Ok. Koskos ?
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.
Ouais, d'accord, avec les merguez,
les pois chiches...
Que la semoule. Pourquoi pas avec une carotte ?
Non, mais il la fume, la semoule, ou quoi, lui ?
Non, mais attends, il fait bien
et...
Il habite dans une couscoussière...
Non, non, mais lui...
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'ennuie rien.
Je peux t'en mettre, si tu veux.
Moi, je suis gentil, Gérard.
C'est pas qu'une ambiance.
Poupon ?
Oui, je t'ai déjà répondu, je te dis malade nocturne.
Alors, point noir ?
Moi, je pense pas que ça peut devenir une maladie,
par contre, je pense que ça peut devenir un remède.
Ouais.
Euh, Marmite ?
Non, mais Olivier, c'est pas la peine
de t'amuser, parce que tout à l'heure,
je vais terminer à deux heures et demie, moi, ça va aller vite.
Oh non, oh non, oh non, oh non, oh non.
Marmite ? Oui ?
Oh non, Gérard. Marmite ?
Oh non, oh non. Non, Gérard.
Ah, s'il vous plaît, derrière, vous laissez...
Vous laissez finir
les questions, là. Marmite ?
Moi, ça me rend malade quand je me fais parceler, ouais.
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. Ben, carrément, ouais.
Donc, plus t'en as, plus t'en veux.
Ben, plus j'en ai, plus j'en ai, plus j'en veux, ouais.
Ouais, mais plus t'en... Si t'en as pas,
ça devient grave. C'est comme de la drogue.
Ouais, c'est une drogue, ouais.
Ouais, ben...
Tu la roules, tu la fumes ?
Mais attendez, attendez, il y a une question hier, c'est...
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 ?
C'est clair.
Ç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 oeuf pourri dans le trou
d'épaisse, et vous pouvez
toujours nous appeler au 0803 085000
et toujours le Minitel
et à tout de 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 oeuf
pourri dans le trou d'épaisse
et on va récupérer
Marmite.
Marmite !
Allô ?
Allô ?
Marmite !
Allô ?
Tu me les calmes, j'irai !
Allô ?
Allô ?
Manu ?
On n'entend plus rien.
On n'entend plus rien.
Vous m'entendez, moi, ou pas ?
Allô ? Allô ?
Allô ? Est-ce que vous m'entendez, moi ?
Gérard, essaye de parler pour voir s'il t'entend.
Il y avait un problème de micro.
Marmite !
Allô ?
J'entends rien.
Allô, couscous ?
Allô ?
Allô ?
Il est parti, Gérard ?
Attends, essaye.
Marmite !
Il a quitté le studio, Gérard ?
Bon, Olivier, tu me fais quoi, là ?
Je fais rien.
Et voilà, c'est pour moi.
Allô, Popan ?
Ça marche, là ?
Marmite !
Ah, ben voilà, ça y est, ça marche.
Marmite !
Ah, salut !
Marmite, rebonsoir.
T'étais où ?
J'étais là, mais c'est Olivier qui s'est mis à faire le con.
C'est pas grave.
Marmite, donc, tu es toujours là ?
Toujours là, ouais.
Point noir ?
Ouais, je suis là.
Toujours là.
Allô, Popan ?
Ouais, je suis là, ouais.
Toujours là.
Couscous ?
Toujours, fidèle.
Toujours là.
Mathieu ?
Encore là.
Toujours là.
Et Castoy ?
Salut, Gégé.
Salut, Castoy.
Donc, toujours là.
Donc, huitième question.
Pourquoi les gens ont peur de parler de ce problème ?
Mais de quel problème ?
On a...
Il y a Dark Vader qui vient d'arriver.
Oh là là !
Dark Vader.
Oh, la force de Dieu !
J'ai rien fait, moi.
Petit Jedi.
J'ai rien fait, moi, Gérard.
C'est quoi ?
C'est quoi, cette histoire de merde ?
Bah, allez, on continue, on continue.
Donc, Castoy ?
Oui, oui, oui, je suis là.
Castoy ?
Oui, Gérard.
Donc, pour toi ?
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.
Allô ?
Allô ?
Donc, Mathieu ?
Mathieu ?
Je vais calmer tout le monde.
Je vais calmer tout le monde, Gérard, c'est pour ça, excuse-moi.
Il est en train de me calmer.
Direct, il me calme.
Bon, alors, Mathieu, pourquoi ?
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.
Ouais, bah, ça, c'est un problème qui se passe à l'arrêt de cause, c'est que personne veut en parler.
Ouais, parce que les gens ont peur.
Non, moi, j'en parle.
Non, mais faut en parler, parce que sinon...
Attendez, attendez, attendez.
Attendez, parce que les gens de l'IRC n'ont pas entendu la question.
Alors, pourquoi les gens ont peur de parler de ce problème ?
Ah, ok, merci.
Gérard, c'est Couscous, je peux répondre ?
Ouais, 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.
Non, mais je vois pas, mais si...
Bon, bah, toi, si tu te fais harceler sexuellement...
Mais si j'en parle à une personne, imaginons, j'en parle à Bébert et Rachida, ils vont m'harceler sexuellement.
Bah, non, si tu leur en parles, que t'as déjà eu des problèmes comme ça...
Ah, bah, ça se voit que tu les connais pas, hein.
Ah, non, mais...
Mais ça, je connais pas tes problèmes, moi.
Euh, 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 font une série, des psychologues, des harceleurs sexuels, des marabouts, tout ça.
Non, non, mais attends, là, Poupon, non, mais non, y'a d'autres personnes, bon, d'accord, tu peux aller...
C'est une peur, c'est une peur.
Non, mais si la personne a peur d'aller en parler à un psychologue ou autre, ça, c'est son problème.
Non, mais si c'est une peur, c'est une phobie, c'est un zombie...
C'est sexuel, donc forcément, tu vas voir un sexologue.
Ah, tiens, y'a une question, Colgate, alors là, elle commence à s'amuser.
Gérard, t'es déjà été harcelé dans un couscoussier par les merguez, alors après, t'as Gérard, t'es déjà harcelé...
Allô ? Allô ? Allô ?
Allô ? Allô, Gérard ? Allô, Gérard ?
J'ai rien fait.
Allô, j'entends ?
Est-ce qu'on m'entend, moi ? Allô ?
Allô, le micro, là, celui-là, il marche pas.
Non, non, mais si !
Celui-là, il marche pas.
Mais forcément, c'est toi.
Ben voilà, ben voilà, attends.
Ça va marcher, là.
Attendez, attendez, les auditeurs, ça va marcher, ça va marcher.
Vas-y, parle, Gérard.
Allô ? Allô ? Allô ?
Vous l'entendez, là, vous l'entendez, Gérard.
Ça marche.
Ça marche !
Gérard, t'as vu, toi ?
Si, vous l'entendez.
Ça marche.
Non, j'ai pas les CD, arrête !
Allô, j'ai pas les CD !
J'ai pas les CD, j'ai connu !
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.
C'est toi qui arrête pas de déconner, Gérard !
J'ai rien fait !
On t'entend, même.
Hein ?
On t'entend, Gégé.
Ouais, y'a pas de problème, y'a pas de problème !
Eh, vous l'entendez, vous l'entendez, vous l'entendez.
Non, tout le monde !
Oui, je suis là.
Tout le monde ?
Oui, oui, oui, oui.
Ben, toi ?
Ben, tu peux m'éviter la question, parce qu'avec tout ce bazar,
avec les problèmes techniques, là, ça devient dur, hein.
Pourquoi que les gens ont peur de parler de ce problème ?
Ben, ce que je te disais, si t'as peur, t'as une phobie, ok ?
Ah, ben, ouais, t'avais déjà répondu quand je t'avais dit...
C'est sexuel, voilà, c'est bon.
Ok.
Point noir.
Ben, moi, j'ai pas peur d'en parler, au contraire, c'est Mexique.
Ben...
Non, mais attends...
Ouais, je pense, parce qu'à ton âge,
à ton âge, je pense que j'irais voir quelqu'un pour en parler quand même, hein.
Non, je préfère pas en parler, je préfère le faire.
Oh, là, non, d'accord.
N'importe quoi.
Marmite.
Ouais, ben, moi aussi, j'en parle, hein, je m'en fous, hein.
Oh, les cochons...
Ouais, mais t'en parles dans ton entourage.
Ouais, moi, j'en parle à tout le monde, t'as vu, là, je t'ai appelée pour t'en parler, hein.
Non, mais attends, c'est pas moi qui t'ai appelée, c'est au standard qu'on t'a appelée.
Non, c'est moi qui t'ai appelée.
Ouais, mais après, le standard t'a rappelée pour participer au débat.
On l'a harcelée.
On l'a harcelée.
Ils m'ont un peu harcelée sur la scène.
Non, je l'ai téléphoné uniquement.
Hum-hum.
Tu le disais, Couscous ?
Je disais qu'ils l'ont harcelée téléphoniquement.
Non, mais ça...
Ouais, mais c'est si bon.
On l'a bien fait, là, un peu !
Moi, je voulais juste rajouter que vous avez quand même harcelé le boss, quoi.
Ouais.
Ouais, on a harcelé le boss depuis le radio.
Je vais te dire que le boss, on a été à deux doigts de l'enlever, de le torturer, c'est clair.
C'est clair, c'est clair, quand même.
Ça, il sévire, quand même.
Moi, je l'ai harcelée à coups de saucisse dans le derrière.
Il a bien fait de lâcher... Oh, non !
Bon, on reprend pour ton débat.
Donc, neuvième question.
Devrais-t-on créer une école sur le harcèlement sexuel ?
Oh, oui !
On va demander ça, tiens, point noir, parce qu'à 17 ans...
Point noir, j'ai t'éclaté, ouais.
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.
Moi aussi, hein. Moi, je fais prof.
Qui, qui, qui, qui ?
J'en fais prof, j'harcèle tout le monde, hein.
Moi, je veux bien des cours particuliers, à ce moment-là.
Bah, il n'y a pas de problème.
Ah, moi aussi, hein.
Non, mais attendez, attendez, attendez, attendez, attendez.
Alors, Marmite, toi, t'es d'accord avec point noir, poupon ?
Bah, moi, je dis qu'effectivement, il faut des pédagogues pour faire des écoles, c'est clair.
Des pédologues.
Non, des pédagogues.
Des pédagogues.
Des pédologues.
Mais, d'accord, allez-y, allez-y.
Tu vas du tube.
Jeune Skywalker.
Ah, tu vois ?
Je vais aller voir la Blancie.
Couscous.
Oui, Gérard.
Ouais, moi, je pense que ça serait bien, mais il faudrait que la professeure, elle soit bien roulée, hein.
Ouais, mais ça, c'est...
Ah, parce que sinon, il n'y a pas moyen d'apprendre, hein.
Toi, tu ne peux pas trouver des propres...
Donc, elle écarte bien les cuisses, pour qu'on va bien la foufler, quoi.
Non, bah, t'es vraiment un cochon, toi.
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.
Mathieu ?
Bah, évidemment.
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 mes mises avec des...
D'accord, euh...
Casse-toi.
Bah, écoute, moi, Gérard, je suis tout à fait d'accord.
Elle s'est cassée.
Pourquoi tu l'as dit, casse-toi ?
Je ne sais pas, il l'a pris pour lui, quoi.
Tu lui dis, casse-toi.
Je vais le rappeler, je crois que c'est Couscous, en plus.
Couscous, il l'a mal...
Non, il n'est plus là.
Il l'a mal pris, ce que tu lui as dit.
Bon, bah, il y a une place, hein.
Bon, donc, moi, je peux vous dire une chose.
Moi, je peux vous dire une chose.
Des écoles, je ne voudrais pas que ça existe.
Bah, pourquoi ?
Ouais, non, pas avec les profs, hein.
Eh, l'école, c'est bien, quand même.
Ouais, non, mais peut-être...
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.
Tu m'étonnes, tu m'étonnes.
Non, mais attends, ça...
Non, non, ça, là-dessus, c'est...
Attends, ils feraient des heures supplémentaires en permanence et tout, tout ce que tu veux.
Il y a une question, IRC...
Il y a une bonne question, IRC, de Kevin Klein.
Gérard, comment reconnaître un harceleur potentiel ?
Voilà, euh...
C'est trop compliqué pour lui.
C'est pas les harceleurs potentiels, en plus, c'est les harceleurs sexuels.
Tu dis n'importe quoi, Rigo.
Non, mais même, de toute manière, là-dessus, je peux rien dire.
Non.
Alors, dernière question.
Déjà ?
Eh oui, bah...
Attends, il reste encore 20 minutes.
Bah non, bah...
Après, on verra...
Moi, j'ai plein de questions sur l'IRC, si tu veux, Gérard.
Est-ce que c'est du harcèlement sexuel si on fait l'amour ?
Ouais.
Alors, Marmite ?
Euh... Ouais.
Bon, toi...
De toute manière, toi, t'es...
Ouais, ouais, moi, j'aime tout, quoi.
Toi, t'es carrément branché...
Toi, t'es carrément branché à fond, là-dedans, hein.
Bah, à fond, ouais.
Ah, ça y est, c'est lui qui applaudit.
Donc, euh...
Pour toi, donc, euh...
Ça te dérange pas ?
Oh, non, non, non, rien ne me dérange.
Toi, Noir ?
Oh, bah, moi, tant qu'il y a de la vie, tout va bien.
Oh, bah, toi, à 17 ans...
Oh, non, non, non, alors...
À quel âge que t'as perdu ta...
Ta petite flamme ?
À quel âge que t'as été...
À quel âge que t'as commencé tes relations ?
À 14 ans.
Oh.
Allez-y, j'espère que vous serez demain à la locaux, hein.
À 14 ans ?
14 ans ?
Ouais, 14 ans.
Oh !
On jette rien, tu vois.
On jette rien.
J'ai rien fait, mais...
14 ans que je te balance un micro !
Je suis sûre que je t'en apprendrai des trucs.
Olive ?
OK, OK.
J'ai rien fait.
Non, presque pas.
Euh, Poupon ?
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.
Non, ça, je crois pas.
Non, mais ça...
On va pas parler de vie privée,
mais tu sais très bien de quoi on parle.
Tu crois que Chirac...
Bah, je veux dire, avec la gueule de Bernadette,
moi, je comprendrais qu'il a garcelé ailleurs.
Mathieu ?
Mathieu ?
Il y a quelqu'un qui applaudit, ça me gêne.
Ça commence à me prendre...
Olivier, fais gaffe, parce que tout à l'heure,
je vais te balancer quelque chose, toi.
Tu vas comprendre.
Je vais te balancer la douleur.
Chirac, excusez-moi, on retrouve Couscous.
Ouais, bonsoir, Chirac.
Il l'avait mal pris, mal pris, quand tu lui as dit,
casse-toi, mais je lui ai expliqué que c'était pas lui.
OK.
Voilà, Chirac, en attendant...
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à.
Exact.
Ouais, bah, ça, peut-être.
Donc...
Ah, bah non, sûrement.
Bah, oui.
Mathieu, pour toi ?
Donc, oui, je pense que le harcèlement sexuel,
c'est faire l'amour, c'est sûr.
Ouais, mais casse-toi.
Moi, je crois pas qu'il y ait de l'harcèlement là-dedans,
parce qu'étant donné que je suis une entente
entre les deux, moi, je crois pas, non, franchement.
Et Couscous ?
J'ai pas entendu, parce que tu viens de me rappeler.
Alors, est-ce que c'est du harcèlement sexuel
si on fait l'amour ?
Ah, bah, ça dépend comment tu le prends
et ça dépend comment tu le fais, par derrière.
Comment tu l'apprends ?
En sodomie, moi, j'aime bien.
Non, mais ça, c'est...
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.
Ouais, mais...
Ah, il y a un mec qui est malade.
On coule, les mecs, on coule.
Je suis en évasion dans mes chiottes.
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 ?
Ouais.
Non, non, non, non.
Parce qu'au début, t'insistes.
Si elle veut pas, t'insistes.
Ouais, ça, s'il te plaît.
Non, mais je peux dire que t'as pas besoin d'insister.
Ouais, mais toi, c'est parce que t'es un sex-symbole
que t'as pas besoin d'insister.
Il pense à tous les Tony, Arnett et Goldo comme William Graham.
Non, mais ça, chacun...
Attendez, laissez parler Gérard.
Non, mais chacun voit midi à sa...
Chacun voit midi quoi ?
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...
Confusion !
Bravo.
Bravo.
Conclusion, Marmite ?
Ben, conclusion, vive la bite.
Mais pas déjà, attends, il reste un quart d'heure.
Non, mais c'est pas grave, après, on fait un mini-débat improvisé.
Il reste un quart d'heure, j'ai inventé une question, improvise.
Un débat sur les portes clés, après, ça va être génial.
Allez, on...
Non, non !
Une question sur l'IRC, une question sur l'IRC.
On fait con...
On est bien !
Tu veux du tube ?
Oh, oh, oh !
On dit...
Alors, à la demande des auditeurs,
on a une petite question IRC de Compi Musique.
8ème com, c'est un peu long comme nom.
Le harcèlement donne-t-il la chiasse ?
Si oui, de quel côté ?
Du côté droit.
Ouais, c'est clair.
De la fête droite.
Non, je vois pas du tout le rapport.
C'est connu, pour vrai.
C'est connu, Gérard.
Non, on fait la conclusion sur...
Alors, attends, attends, parce qu'il y a une question.
Vas-y, Gérard.
Vas-y, excuse-moi.
Oh, bon, ben...
Est-ce que, par exemple, la pilule Viagra incite au harcèlement ?
Bon, Manu, ta question retourne en standard.
Tu veux du tube ?
Pas forcément, Manu, parce que moi, je prends pas de Viagra
et j'harcèle, quoi.
Tu vois, c'est une bonne question.
Non, mais ça, c'est le débat de la semaine prochaine.
On est bien, t'as-tu un ?
Eh, dégage, dégage !
Je veux plus te voir, là !
Ah, j'ai pas fait exprès.
Bon, en attendant, j'ai Davy1, Davy1, sur l'IRC,
qui est allé voir la définition du harcèlement sexuel dans le dictionnaire.
Ouais, quand même !
Et on y apprend que le petit Robert a harcelé la rousse.
Ah, ah, ah !
Donc, conclusion marmite, on fait conclusion sur ce débat et c'est terminé, après.
Ouais, ben, vive la vie.
Et puis, prends garde le sourire, Gérard.
Ouais, mais...
C'est important, là.
Il y a certains trucs...
Demain, je viens te harceler dans les chiottes de la loco.
Ouais, ben, t'as raison.
Tu verras comment tu vas être aussi avec moi, demain.
Ben, d'accord.
À demain.
Ouais, ben, on verra.
Dans les toilettes, hein.
Point noir.
Oui, oui.
Ben, écoute-moi, Gérard, honnêtement, t'es devenu ma proie.
Je vais t'harceler, ça va être puissant, quoi.
Tu suis ?
Je dis, ça va être puissant, parce que tu m'as donné l'envie de t'harceler.
Et franchement, tu...
Ouais, non, mais attends, moi, je sors pas avec des mineurs, hein.
Tu vas subir.
Tu vas subir ce que jamais t'as subi, Gérard.
Ouais, ben, moi, je sors pas...
Tu vas pouvoir définir le terme harcèlement.
Ouais, ben, moi, je ne sors pas...
Ah, les mineurs !
D'ici, tu me sauteras, Gérard.
C'est ça, ben, alors, je préfère me mettre une capote avant d'attraper des morpions avec toi.
C'est plutôt l'inverse, je crois.
Poupon !
Il sort pas avec des mineurs, il sort que avec des horreurs.
Alors, Poupon, ta conclusion, je viens de l'entendre.
Terminé pour toi.
Mathieu ?
Ouais, je me suis mis à skier tranquille, donc, Gérard, tes débats, bof.
Et puis, mais par contre, moi aussi, je vais t'harceler, je vais te faire ta fête demain, tu vas voir.
Ouais, ben, on verra.
Je te dis bon.
Ouais, ben, surtout de Toulouse, t'as raison.
Tu crois que...
Attends, tu crois quoi ?
Moi, j'ai une voiture, hein.
Moi, j'ai une voiture, mon pote.
Casse-toi.
Ah, ben, écoute, moi, Gérard, ton débat, il m'a vachement chauffé.
Ouais, casse-toi, mais casse-toi.
Bon.
Bon, ouais, tu me vires la chialose, là.
Ouais, mais bon, tu l'as déçu, quoi.
Et alors, j'en ai rien à foutre.
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.
Ah, ben, c'est bien.
Ouais, Gégé.
Couscous.
Couscous.
Oui.
Il y a de la soule dans les oreilles.
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.
Il y a un accident si vite arrivé, Gérard.
Non, mais t'inquiète pas, j'ai mon cadre du corps.
Moi, je vais te le prendre le derrière comme il faut, tu vas voir.
J'ai rien fait.
Olivier, tu m'éteins ce micro vite fait.
Tu m'éteins ça vite fait.
Ça y est, ça y est.
C'est toi qui joue.
C'est toi qui joue depuis tout à l'heure.
M'éteins ça.
Bon, ça va, Simon, les auditeurs ?
Ouais, ça va, il n'y a pas de problème.
M'éteins, sinon, tu vas le payer dix-cinq.
C'est un petit débat.
Tu es du tube.
Tu es du proche.
C'est bon, Gérard ?
Donc, moi, la conclusion sur le harcèlement sexuel, c'est la dernière fois, Olivier, que tu fais la pro.
Oh non !
Non, mais je peux te le dire, c'est la dernière.
C'est pas une conclusion.
Déjà, tu m'as fait taper ton bordel, donc t'as gagné.
Et voilà, je ne fais jamais rien, c'est toujours ce que j'arrive à faire.
Non, non, là, tu viens d'appeler.
Alors, t'éteins ça, parce que...
Ok, ok, ok.
Tu ne me jettes pas ce laser dans la figure.
Ouais, mais c'est pas le tien, c'est à moi.
Alors, ça te coûte dix-cinq.
Ouais, mais ça peut lui faire mal aussi, quand même.
Tu veux me jeter un laser dessus et tu veux me le faire payer.
C'est un peu de pratique.
Donc, si vous avez des questions à me poser, moi, je peux...
Allez, chacun son tour, chacun son tour, une question.
Alors, on va demander à Marmite.
Vous avez encore dix minutes.
Euh, même pas...
Si, si, si, un quart d'heure, dix minutes.
Non, non, non, non.
Fais tourner, fais tourner.
Marmite !
Ouais, attends, je réfléchis, là.
Non, mais vous, il faut faire vite.
Ouais, ouais, non, mais je réfléchis.
Si un jour, tu travailles,
est-ce que toi,
si tu travailles,
si t'étais patron, tu harcelerais tes secrétaires ?
Non.
Oh.
Pourquoi ?
Je t'ai vu harceler des fois des filles ici.
Oh, mytho, Gérard.
Non, mais attends, toi, Olivier, tu t'écrases,
tu pourrais mieux t'occuper de ton boulot.
Quand Sandi n'est pas là...
Mais attends, attends.
J'ai vu harceler des mecs.
Eh, tu veux qu'on n'en passe des cendres ?
Des chiens, mais...
T'es vraiment un bâtard, hein.
Oh, là, là, là, là, là.
T'es vraiment un bâtard, quoi, de dire des conneries comme ça.
Là, t'es en train de le...
Le harceler, verbalement.
Tu dégages.
Allez, hop.
Tu vires.
On finit.
Tu vires.
Non, non, non, tu vires.
Je veux plus te voir dans les studios, toi, maintenant.
Bonne nuit.
Hop, casse-toi.
On en parle tout à l'heure.
Non, non, non, non.
Ah, OK.
Gérard, sur IRC,
Gérard, sur IRC,
il y a Axel Durot qui dit conclusion
quand tu passes à mon bureau.
Moi, qui veux.
Ça m'étonnerait que ça soit le vrai.
On verra demain.
Un avertissement.
On verra demain.
On voit 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.
Ouais, ben, attends.
Déjà, à 17 ans,
faudrait que tu sais que tu m'attrapes.
Ouais, il faudrait...
Je cours pas super vite, Gérard.
Elle peut te rattraper, hein.
Ouais, non, mais attends.
Je pars du principe
que quand on veut quelque chose, on l'a.
Ouais.
Tu crois que je vais quitter Sandy pour toi ?
Ah, non, absolument pas.
Tu peux la garder.
Moi, ça me dérange pas.
Je préfère être la maîtresse.
Ah, non, ben, alors là,
je vais te dire une chose.
Tu te mets le doigt bien profond, que je pense.
Tu te quittes pas, je basse mon flip et je le mets.
Ouais, ben...
La cochonne, la cochonne.
T'es vraiment une allumeuse, toi.
Salope.
Ah, la salope.
Je sais pas, je voulais pas dire ce mot.
Et tu l'as dit pourtant.
Non, non, c'est pas moi qui te l'ai dit.
Gérard, est-ce que je peux me faire un fist ?
Qui ?
Mermitte.
Moi, je te fais un foot, hein.
Non, 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.
Ben, quand j'en ai les moyens.
Ben, je t'en amènerai un de ces quatre, alors.
D'accord, ben, tu l'envoies à la radio.
Pas de problème, pas de problème.
Et casse-toi.
Mais, Gérard, j'ai pas de questions pour toi, désolée, mais...
Tu veux du tube ?
Arrête, arrête, arrête, arrête.
Mais y a un gamin ou quoi ?
Qui c'est qui vient avec un niard ?
Qui c'est qui a un gamin, Manu ?
Je sais pas, moi, c'était pas...
Non, c'était pas prévu, mais tu prenais mieux de le prévoir.
Ben, tu sais pas, moi, c'était pas...
Tu vois, quand c'est du harcèlement, ça finit par faire des gosses, hein, toi.
Ben, voilà.
Ça fait rire les gamins, le harcèlement.
Non, mais tu es le premier de prévoir.
Ah !
Ça, c'est la génération, le harcèlement.
T'as été le premier de prévoir.
Ben, le gamin, il rigole.
Tu l'amuses, tu l'amuses.
Non, mais attends, parce que...
Casse-toi, j'ai pas compris sa question.
Et couscous, c'est à proposer.
Et poupons non plus.
Quoi ?
Et poupons non plus.
Si, tu l'as déjà posé, toi, ta question.
Non, c'était Mathieu.
Euh, casse-toi.
Ben, donc, Gérard, ça va être difficile de comprendre ma question,
étant donné que j'en ai pas posé.
Oh, pardon.
Olivier !
Je l'ai coupé.
Arrête !
J'ai coupé, c'est ça, exprès.
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.
Cool, cool.
Dans ta tranche.
Alors, casse-toi, donc.
T'as pas de questions ?
Non, j'ai toujours pas de questions.
Eh ben, t'inquiètes pas.
Ben, casse-toi.
Ben, voilà.
Tu peux...
Moi, j'en ai une.
Est-ce que, Sandi, tu la harcèles sexuellement ?
Alors, non, c'est qu'elle a...
Ah, et vice-versa.
On me dit sur IRC.
Tu fais 849, on va lui demander qu'un réagisse.
Ok, ok, ok.
Donc, Couscous...
849 kilos ?
Oh, là, là.
C'est gentil, ça, hein.
Non, mais continue ton débat.
Attends, j'attends que Couscous pose la question.
Et tu éteins ce doublasson !
Oh, Chewbacca.
Oh, oh, oh !
Éteins ça, là.
Quoi ?
Éteins, éteins.
Tu m'excites, Gérard, quand tu cries.
Elle mouille, elle mouille.
Je suis trompée, hein.
Eh ben, eh ben, voilà, Gérard.
Gérard, quand tu veux, hein.
Gérard, elle est là, ta femme.
Donc, la question, c'est quoi ?
Est-ce que Gérard harcèle sexuellement et vice-versa ?
D'accord.
Alors...
Ah, ben, raconte-nous.
Oui, effectivement, il harcèle,
mais c'est uniquement pour lui ramener le café le matin.
Oh, là, là !
Chotte comme la moelle.
Je crois que, là, si je ramène pas le café le matin,
là, il me fait une crise, hein.
Ah, ouais.
Oui, moi, j'étais 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.
Merci.
Où l'homme force sa copine à la cuisine et le ménage.
Ça, c'est du harcèlement ménager et culinaire.
C'est un peu macho, Gérard, en fait.
Ah, Gérard, t'es couscous.
Ouais, couscous.
Pour finir...
Est-ce que tu penses que le harcèlement sexuel est en principe ?
Hein ? Principe ?
Par rapport au site.
Si tu parles de la syntaxe des palmypèdes
dans la pédagogie instinctive, c'est sûr.
Non, mais c'est pas con, ça.
C'est pas con, Gérard.
Qu'est-ce que t'en penses ?
Personnellement, rien du tout.
Ouais, en fait, tout est lié, quoi.
Pourquoi ?
Ça serait pas entre un site par rapport au site du texte.
Non, si tu reviens au concept abstrait de la prévision...
Laissez parler un peu Gérard, aussi.
Non, non, mais moi, de toute manière,
sur la question, je peux pas répondre.
Non, mais c'est du con.
Ça dépend de quelle façon t'interprètes la réponse.
Voilà.
Si uniquement tu vas à la lignée 1, c'est pas possible.
Non, mais là, on va se quitter.
On va se quitter, là-dessus.
6 minutes, encore.
Non, non, 6 minutes.
Non, mais c'est vrai, tu as 10 minutes.
Oh, 6 minutes ?
Jusqu'au bout, ton boulot.
Gérard, c'est Bousco, je peux te poser une question ?
Vas-y.
Est-ce que t'as déjà vu des personnes faire du harcèlement sécuel ?
Euh, jusqu'à maintenant, non, pas encore.
Eh ben, tu vas bientôt pouvoir le voir.
Mais attends, toi, à 17 ans, tu vas pas me prendre la tête.
Elle va te prendre le cul.
Non, mais attends, toi, à 17 ans, déjà,
t'es pas sûr de rentrer à la loco.
À mon avis, t'es une grosse allumeuse.
Toi, t'es une... Ouais, Gérard, encore mieux.
Et je préfère maintenant...
T'es une grosse pétasse, aussi, hein.
Non, mais...
Elle est jalouse.
Oui, elle est jalouse, et elle a très bien...
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.
Attends, je vais te quitter, j'ai un mec.
Non, non, mais attends, eh.
Attends, eh, euh...
Elle, elle va allumer Gégé.
Eh, point noir, point noir.
Pourquoi pas, pourquoi pas.
Eh, point noir.
Bon, l'anniversaire.
Eh, point noir, quand même, tu pourrais te faire plaisir, j'ai...
Eh, point noir, déjà, à 17 ans,
t'es pas sûr de rentrer à la loco, déjà ?
Je la ferai en...
Je peux t'attendre à la sortie.
Ouais, bah, là, là, tu sauras même pas comment que je serai allumé.
Ouais, mais Gérard, j'ai pris selon son nom,
et je l'ai mis plus un sur le liste.
Ouais, bah, dans ce qu'elle a...
Je vais la faire rentrer.
Attends, eh, tiens, point noir.
Je vais la faire rentrer, moi, je vais la faire rentrer.
T'as qu'à allumer le bouboulot standard.
Elle veut pas de moi, elle veut de toi.
Non, mais moi, j'en veux pas, moi, j'ai appris.
Alors, dans ce qu'elle a, tu vois, point noir,
ce que tu viens de dire,
eh ben, tu vas gâcher l'anniversaire à Max,
et que demain, je reste chez moi.
Voilà, bravo, point noir.
Ah, bah, pour une fois, j'étais décidée d'y aller.
Bah, ouais, mais tu diras merci à point noir.
Gérard, c'est pas à cause d'une fille de 17 ans
que tu vas pas venir dans l'anniversaire.
Moi, je réponds pas à des questions d'une petite...
Mais t'es une vraie gonzesse, toi, à 39 ans,
tu perds les pédales pour une fille de 17 ans.
17 ans, tu dis, 17 ans, c'est une anniveuse.
Elle rentrera pas, elle rentrera pas.
Mais c'est quoi, ce délire, là ?
Gérard, si ça peut te rassurer, je travaille le week-end.
Bah, ouais, c'est ça, t'as...
Gérard, tu vas venir vendredi à la loco, puis c'est tout.
Attends, tu vas pas discuter, attends, ça va.
On a besoin de toi, Gégé, on t'aime.
DJ sur N.
Ouais, un couscous.
Oui.
Bah, toi, alors, qu'est-ce que t'as de spécial à poser
comme question ? Parce qu'à force...
Non, ça suffit, derrière, là.
Moi, j'en ai une, Gérard.
Bah, moi, je prends un Mars et ça repart.
Ok, bah, ça, c'est bien comme pub.
Ouais, qui ?
C'est moi, deux trucs, c'est...
Qui, qui, qui, qui ? Marmite !
Non, c'est Marmite, en premier.
Est-ce que tu crois que le thème du...
Arrête, arrête.
Bon, eh, tu me laisses Marmite pour un instant,
tu me coupes les autres parce qu'ils me font chier.
Eh, bah, non, ouais.
Est-ce que tu crois que le thème du...
Oh !
Ah, non !
Eh !
C'est marmite !
Eh bah, ouais, ça y est, j'enlève les autres !
Putain, il m'a mis une claque, j'ai réussi.
Eh, ouais, eh !
Tu vois, tu ne t'y attendais pas.
Ah, ça, c'est éventuellement bien.
Voilà, je réponds. Alors, Marmite !
Eh, Gérard !
Gérard, est-ce que tu crois que le thème du harcèlement...
Oh, les mecs !
...pourrait être porté au cinéma ?
Gérard, tu pourrais te retenir.
Marmite !
Gérard, est-ce que tu crois que le thème du harcèlement
pourrait être porté au cinéma ?
Bah, de toute manière, ça se voit
dans les films.
Harcèlement sexuel.
T'as vu des films de harcèlement ?
Quand tu vois Brigitte Laé ou...
C'est un film de boules, ça.
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.
C'est sifflé. Est-ce que t'as vu le film
Le harcèlement, avec Demi Moore ?
Alors, le film Harcèlement
avec Demi Moore...
Demi Moore !
Oui, c'est vrai que...
Bien sûr, c'est...
Avec Roger Moore.
Avec Demi Moore.
Avec Roger Moore.
De toute manière, tu l'as, la maison.
C'est pas...
Oh !
C'est pas harcèlement, c'est striptease.
C'est striptease.
Il est encore sifflé, ou quoi ?
Non, je sais pas, je crois que c'est en haut,
à l'accueil, ils font la toffe.
Moi, j'ai vu un autre film d'harcèlement,
ça s'appelait Ferme la porte, que j'ai écarté.
Moi, j'ai vu un truc,
c'est que maintenant, je vais vous laisser.
Gérard, c'est Couscous, j'ai une question.
Ouais, vas-y, la dernière.
Est-ce que tu peux me reciter une fable de La Fontaine ?
Le corbeau et le renard, voilà, terminé, point final à la ligne.
Gégé, Gégé, 9.9, ça fait combien ?
9.9, 68.
Non, arrêtez, c'est pas grave.
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.
Non, mais le vieux gras, c'est un truc
que tu mets dans ta bouche et que...
Il est là, le vieux gras.
C'est sûr que c'est pas des suppos de vieux gras ?
Bon, alors, conclusion vite faite, 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.
Donc, tu ne feras pas partie de l'équipe la semaine prochaine.
Pour commencer.
Donc, tu es renvoyé, tu ne fais plus partie de notre équipe le jeudi.
Alors, la conclusion, Gérard, s'il te plaît,
parce que tu t'écares toujours du débat.
C'est toujours aussi mauvais.
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é.
Non, il était bien, il était bien.
Il a quand même foiré, mais je pense que
sur l'IRC...
Ça a répondu présent, c'était parfait.
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.
Je pense que c'est un peu con
ce qui arrive aux gens, maintenant,
quand ils vont voir les patrons.
Voilà.
D'accord.
Quand la nana va voir le patron, si t'es bien,
si t'es canon, comme Marmite a dit, t'es prise.
Si t'es pas bien,
tu retournes chez Noir.
C'est canon, Marmite, tu crois ?
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.
Voilà, exactement.
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.
Assez mouvementés et assez chauds.
Et on va se quitter avec...
Avec Jazz.
Jazz.
C'est pas ça, c'est...
Non, c'est pas ça.
Non, c'est pas celui-là.
Jazz 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.
Nuit à 4h du matin.
Bonne nuit.
== Le débat sur la politique ==
=== Contexte ===
=== Les personnages ===
=== Transcription ===
21 ans de Mazamé
Mérice Pédissoir Gérard
Cassenoisette
19 ans de Niort
Ça va bien ?
Je sais pas, j'ai pas regardé ce matin
Plotte-moi, 20 ans de Gap
Bonsoir Gérard, bonsoir Yargla
Bonsoir Tuiline, je te kiffe bébé
Pas de message
Les messages terminés, c'est bon pour toi
Tony
Et bonsoir, j'adore la politique
20 ans de Paris
C'est tout, on va les rappeler
Non, on va les rappeler, ils sont pas encore là
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
Ce soir faut être sérieux, on va arrêter de déconner
Parce que ça commence à déconner à plat tube
Donc dans un instant, débat de Gérard
Comme chaque jeudi bien sûr, sur la politique
On récupère saucisson à l'ail qu'on a eu tout à l'heure
Bon, rebonsoir
Rebonsoir Gérard
Cassenoisette, rebonsoir
Rebonsoir 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
Rebonsoir Gérard
Plotte-moi 20 ans de gap
Oui bonsoir, je tiens à préciser que je ne foutrai pas le bordel ce soir
Ouais ben j'espère pour toi
Et ceux qui ont des téléphones pourris, vous me le dites
Attends, Manu il va gérer ça
Parce qu'il y en a qui ont un téléphone vraiment pourri, on va le trouver
Tony, rebonsoir
20 ans Paris
Rebonsoir Gérard
Tête bête
Salut Gérard
20 ans de dîner
Et gros string, 23 ans de bourge
On peut écouter Fun Radio sur 96.7
J'ai oublié de préciser les fréquences
Ouais c'est ça, salut Gérard
Bonsoir, donc tête bête c'est
Dîner en 103.5
Tête bête, pas tête bête
Dîner en 103.5
Paris 101.9
Gap 93 FM
New York 93.4
Mazamé 99.4
Celui qui s'amuse avec les sonnettes
Son prier d'arrêter, merci d'avance
C'est chez toi 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
Ma passion
Donc à quoi sert le vote en politique ?
Anthony comme c'est ta passion, vas-y
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'Etat
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
Il n'y a pas qu'un cinquième de notre salaire
Et qui nous prennent quand même plus aussi
Parce qu'il faut dire aussi qu'il y a la
La CPG aussi
Non non il y a un autre truc
La CSG quand même il nous retire pas mal
C'est un syndicat ça
Grosse ring
Grosse ring pour toi
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
Tu votes deux fois dans
Deux fois, tu as deux tours
Faut préciser
Ouais
Non mais toi si tu votes deux fois
C'est ton problème quoi
Non mais il y a deux tours
Faut bien préciser
Si ça t'a plu tu peux y retourner
Je suis d'accord
Non mais attends
Si au premier tour ça passe pas
Tu re-votes une deuxième fois
C'est ça que je veux te dire
Si t'es pas éliminé au premier tour
Non mais attends je sais
Non mais attends
Si j'y avais pas la première fois
Je peux y aller la deuxième
Si je loupe
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 c'est sûrement l'affaire
T'es bête
Ouais ça sert à rien
Pourquoi ?
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
Ah non mais attends
Tu peux pas le savoir dès le premier
Tu peux pas le savoir
Mais non tu peux
Non mais attends
Attends tu peux pas le savoir
Dès le départ
Qui c'est qui va être élu au début
Je crois qu'aux dernières élections
Il y avait les résultats sur internet
Deux jours avant
Bah oui
Ouais mais tu peux pas savoir
Tout de suite au premier tour
Qui c'est qui sera là
Mais si j'arrange un peu
Mais non mais non mais non
Mais non tu connais rien
Quoi j'y connais rien
Attends tu as pas commencé
Parce que sinon toi tu as
Tu as retourné à dix noms
Vite fait toi
D'accord
Hein
Euh
Plote moi
Euh oui
Non non non non non
Pas de ça
Non bah c'est son nom
Il pourrait peut-être trouver
D'autres noms
Des noms comme ça
Excuse-moi c'est pas ma faute
Bon et qui c'est qui s'amuse
Avec les réveils là
Ça commence à me prendre la tête là
Je me réveille tôt demain
Bon alors
Tu peux y aller Jean
Ouais ouais vas-y
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
Eh tu restes poli
S'il te plaît quand même
À 0h42
J'ai pas dit qu'ils nous enculaient
J'ai dit que c'était des gros pédés
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 ?
Bon anniversaire
Ouais d'accord
Alors donc pour toi
Donc plot moi
Donc on continue avec toi
Avant de demander à Casse-Noisette
Et Saucisson à l'Aïr
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
C'est toi qui joues avec un réveil ?
Moi ?
Ouais
Bah non mais tu déconnes
J'ai pas de réveil
Non mais qui c'est qui joue avec un réveil là ?
Ça commence à m'énerver là
Casse-Noisette
Ouais bah moi je trouve que
Ça sert à rien d'aller voter
D'accord
Question réaction
Oui sur IRC
Il y a Snul qui me dit
Que le vote est une chose bien
Surtout pour Miss T-shirt mouillée
Non bah ça
Peut-être pour lui
C'est pas
C'est pas
Il y a pas deux tours là
Il y a qu'un tour de poitrine
Ah ok donc
C'est pas valable
Ouais mais il y a deux seins quand même
Ouais mais c'est pas valable
Ouais mais il y a qu'un tour
Non mais ça y est c'est bon
On va pas s'éterniser sur
Les T-shirts mouillées
Donc Casse-Noisette
Moi j'aime bien toucher les parties
Bon Anthony
Tu t'écrases s'il te plaît un peu maintenant
Casse-Noisette
Ouais bah moi je trouve que
Ça sert à rien d'aller voter quoi
Mais pourquoi toi ?
Pourquoi ?
Bah c'est tout simple
Tu te pointes là-bas
Tu vas voter
Tout est truqué
Tout est déjà fait d'avance
Non non non non non
C'est pas
Non non non non non
Je te dis que non
Non
Non je te dis
Mais si Gérard
Non non mais attends
Moi j'ai insisté à un dépouillement
Dans la région où j'habite
Et j'ai même insisté
Au truc des bottes
Et fais-moi confiance
Que c'est pas truqué
Je peux te le dire tout de suite
Moi je te dis quelque chose Gérard
C'est que je suis très bien placée
Qui ? Qui ? Qui ?
C'est Casse-Noisette
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
Bah peut-être pour toi
Mais moi je te dis tout de suite
Que c'est pas truqué
C'est pas truqué d'entrer c'est tout
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
C'est vrai c'est n'importe quoi
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'entrer
C'est impossible
C'est contrôlé
Donc ça peut pas être truqué tout de suite
Pourquoi ?
Dans quel sens ?
Non non mais y'a pas de dans quel sens
Pourquoi ?
Moi je te dis que ça peut pas être truqué
Oui Rigo
Attendez attendez
Oui y'a
Y'a Goldberg sur IRC
Qui demande c'est quoi un épouillage ?
Un épouillage c'est de retirer le bulletin
Non le sac d'une petite vieille
Dans la rue
Non non non
Attends Fildar
T'écrases s'il te plaît merci
C'est quoi l'épouillage alors ?
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 tailles
Après on les compte pour savoir
Qui passe
Qui sera
Élu ou pas
Voilà c'est tout
Ça sert à quoi de le mettre dans une enveloppe
Si après ils nous le retirent ?
Mais non mais on le retire
Et après ils ont tout ce qu'ils veulent
Ça sert à fabriquer des enveloppes
Voilà
Donc deuxième question
La politique vous rend-elle amoureuse ?
On va demander
Bon celui qui avec son réveil t'arrête
C'est clair et net
Parce que je vais pas chercher
Le midi à 14h tout à l'heure
Je vais en virer
Ouais
Parce qu'il y a d'autres personnes
Qui attendent pour participer
C'est bien clair
Ouais moi je voulais répondre à la question
C'est que
Moi je trouve
Ton nom c'est quoi ?
Tony
Ouais bah précisez vos noms
Quand vous voulez parler
D'accord
Ouais mais on le reconnait quand même
Moi je voulais dire que
Elisabeth Guigou
Je la trouvais bonne
Non mais attends
T'arrêtes de donner des noms
S'il te plaît
Bah écoute c'est son nom
C'est de la politique
Ouais ouais
C'est pas la peine de citer les noms
Des personnes politiques
Gérard
Oui
C'est Grosstring
Moi je voulais
Je voulais dire que
Moi c'était Ségolène Royal
Que je trouvais bonne
Bon et
Grosstring et Tony
Soit que vous vous calmez
Et vous arrêtez de donner des noms
Pas de marge
Soit que vous gerbez
Ça va aller vite vous deux
C'est pas la peine
De sauter de ma gueule derrière
Parce que sinon
Vous allez virer tout de suite
C'est clair et net
Mais pourquoi ?
Non y'a pas de pourquoi
C'est ta question
Excuse-nous
Alors t'es bête
Ouais
Donc toi ?
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
D'accord
Plotte moi
Non
Mais si
Non
Si quand même merde
Un peu
Oh
Oui bah j'y vais
Ah non
Plotte moi
Bon Manu
T'essaies de me choper
Le réveil
Et celui
Qui a du monde chez lui
Parce que ça m'énerve là
Je crois qu'il attend des invités
Ouais mais je sais pas qui c'est
Ouais mais moi je veux pas le savoir
Si il participe au débat
S'il a des invités
Il dégage
Écoute qu'elle est rentrée
Mais elle est dans la cuisine
Et puis on en parle plus
Bon alors
Plotte moi
Il y a peut-être un mec
Qui est un policier
Qui l'attend des gens
Genre le marché
Y'a pas moyen que tu rentres
Ah ça finit
Oui là avec les noms
Ouais arrêtez c'est vrai
Bon merde je peux parler un peu là
Euh comme on dit les autres là
Bon avec les guigous et tout ça
Moi c'est la mère
La mère Tiberie je crois
D'accord
Je pense que
Plotte moi
Et Tony
Et Grossim
Je crois que vous allez pas finir
Le débat
J'ai rien vu
Non non mais vous donner des noms
Comme ça
C'est pas tellement bon
Casse-noisette
Ouais bah moi je pense pas
Que la politique rend amoureuse
Néanmoins
Moi quand je vais voter
Je vote pour celui
Qui a apparemment
La plus grosse queue quoi
D'accord carrément
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
C'est bien
Ah bah c'est pas mal
Moi je peux vous dire une chose
Que moi non plus
Ça me rend pas du tout amoureux
Je croyais que t'étais amoureux
De Jaco pourtant
Non non non
Moi ce que je voulais dire
C'est que les membres
Du parti communiste
Ils sont pas très brandants
Bon Tony
Oui
Encore une connerie comme ça
Et tu t'en vas
Pas de marque Tony
Pas de marque
Ok t'as pas besoin de citer les partis
Pardon la prochaine fois
Je dis que t'es initial
Ah ouais
Gérard j'ai une question
Minitel de Merlot
Du département 44
Qui demande
Enfin il veut revenir
A la question précédente
Très rapidement
Est-ce que Gérard
Mets un timbre à l'enveloppe
Quand il va voter
Je vois pas du tout le rapport
Je vois pas du tout le rapport
Là dessus
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
A destination
C'est quoi l'adresse aussi
Non non non
Attends déjà
C'est pas ça
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
Ah d'accord
Ça c'est une autre question
C'est pas les mêmes enveloppes
Voilà c'est pas du tout pareil
Gérard
Je peux te poser une question
Je voudrais savoir
Si des fois
Tu te grappes les urnes
N'importe quoi toi
Moi par contre
J'avais une question
Comment c'est fait
Un urinoir
Parce que moi je sais pas
Je suis jamais allé voter
Bah c'est simple
C'est une petite cabine
Avec un rideau
C'est tout
Pour pas qu'on voie
Et tu mets 2 francs
Tu mets 2 francs
Pour pas qu'on voie
Pour qui tu votes
Et quand t'as 10 000 votés
Tu tires la chasse
Ils te donnent une petite serviette
Pour t'essuyer
Peut-être
On sait pas
Donc troisième question
Les enfants ont-ils le droit
De faire de la politique
On va demander ça
A Castenoisette
Comme elle est bien placée
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
Castenoisette
Parle plus fort un peu
Castenoisette
Tu parles plus fort
Il y a du monde derrière toi
Oui donc
Ouais bah alors
Tu demandes aux gens
Il y a personne
Il y a personne
Il y a absolument personne
Je suis toute seule
Assise sur ma chaise
Comme une clocharde
Non bah c'est bizarre
On entend du monde
Chez quelqu'un
Mais je voudrais bien savoir
Chez qui
Ah oui mais non
Mais moi c'est pas chez moi
Donc alors
Donc tu disais
Ouais donc je te disais
Bientôt
Il y a un petit jeune
De 14 ans
Qui commence à se mettre
A 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
C'est pas Jordi
Non non mais c'est bon
On a pas besoin
De savoir les noms
D'accord
Je ne donne pas de noms
Oui non mais je sais
Ouais je sais
Casse-moi cette
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
Ah oui
Donc
Moi je voudrais parler
Attends 5 minutes
Oui Gérard
Il y a un certain Max
Sur l'IRC
Qui me demande
Si les animaux
Ont le droit de voter
Je vois pas comment
Qui pourraient voter
Les animaux
Il me dit
Dans la mesure
Où certains hommes politiques
Sont des chiens
Les animaux pourraient voter
Ouais mais ça
Maintenant avec les trucs
Sur les guignols de l'info
Comme ils font pas mal
De conneries
Ils s'amusent
A faire des
Des figurines
Des hommes
Politiques
En tête de chien
Et tout ça
On nous aurait menti
Alors
Saucisson à l'ail
J'étais venu à toi
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
D'accord
Ok
Plotte-moi
Je veux dire
Pardon
Oui
Oh c'est fini
Derrière
Putain ma caisse
Ah il y a un mec
Qui se fait tirer sa caisse
Là on dirait
Bon bah alors
S'il se fait tirer sa bagnole
Je sais pas qui mais
Putain les enculés
Oh tu restes poli
S'il te plaît
Plotte-moi parce que tout à l'heure
Tu vas virer
Je pense qu'il vient de parler là
Elle a ma BM
Alors plotte-moi vas-y
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
Non là
Tu peux
Non c'est 21
Non si je me souviens
Si je me trompe pas
Non non c'est
Non non pour être
Pour machiner
Pour avoir 21 ans
A peu près
Pour voter
Pour se présenter
Aux élections
C'est combien
C'est quel âge
21 ans
Normalement
Je peux rajouter
Juste quelques
Oui oui vas-y
Il faut savoir
Qu'en fait
Cet enfant là
Ce jeune adolescent
Va demander l'anticipation
Ah d'accord
D'accord
Donc c'est pour ça
Que je répondais
A la question
Je ne peux pas dire
Julien
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
C'est ton gosse
Jérôme
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é
Ca c'est vrai
40% des gens
Ont dit
Que les
Que les types
C'étaient des
Petits parasites
Parasites
Que l'éthique
L'éthique
C'étaient des petits parasites
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
Ca pour moi
C'est réel
Donc Tony
Pour toi
J'ai pas suivi la question
Parce qu'avec tes sondages
Là tu m'as perturbé
Alors
Les enfants ont-ils le droit
De faire de la politique
Voilà la question
Bah oui tout à fait
Moi je pense que les enfants
Ca 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 galpée
Qu'Elisabeth Guigou
Bon Tony
Tony c'est la dernière fois
Tu vas retourner
Voir Manu au standard
Ah il est impossible ce Tony
Alors c'est fini
Non non Tony
Je te l'avais dit gentiment
Tout à l'heure
De ne pas citer
Le nom des personnes politiques
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
Et sur IRC
On me dit
Tony tu dégages
Voilà bah ça y est
Il est parti
Donc Tébette
Moi je dis que les gosses
Ils ont rien à faire
Dans la politique
Oui
Il ferait 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
Ouais mais
Comme je disais tout à l'heure
Donc faut bien avoir
La majorité pour y être
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
Ouais mais t'en as beaucoup
Qui veulent se lancer dedans aussi
Mais ouais
Mais c'est des petits cons
Bon ok
Grosse frigne
Bah moi je sais pas
Mais je sais pas
Si tu regardes des fois
Ils invitent des mômes
A l'Assemblée Nationale
Ouais mais ça
Ouais mais ça c'est
Pour faire des séances et tout
Et pour s'intégrer un peu
Ouais non mais attends
Ça
Merde ils posent tous
La même question
Quand est-ce qu'on mange
Ils veulent tous
Aller pisser en même temps
Ouais non mais
Et en plus
Ils dégueulassent
Tous les sièges
Des députés
Ouais mais non mais attends
Attends je parle s'il te plaît
Moi je trouve que
Vraiment
Les mômes
C'est à l'école
A la crèche
Ou à la babysitting
Et tout
Et puis c'est pas
Dans la politique quoi
Ça va
Non mais faut dire
Qu'aussi avec ce qui se passe
A l'heure actuelle
Bon bah
Les étudiants
Les trois quarts
Ont 15, 16
Voire 17 ans
C'est des petits cons
Les étudiants
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
Mais attends
Attendez
Attendez
Attendez
Attendez
Attendez
Attendez
Laissez-moi finir
J'ai entendu dire
Qu'ils étaient jusqu'à
50 personnes
Dans une classe
70 moi j'ai entendu
70
Ouais il y a
J'ai entendu 40
50 et 70
Aussi par là
Oui
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
Ouais non non non
Non non
Attends attends
Attends attends
Gros string
Gros string
Gros string
S'il te plaît
Attends il y a une question
IRC
Oui gros string
Je suis désolé
Il y a Erki sur IRC
Donc qui te demande
Gérard
Combien d'érections
As-tu participé
Non mais ça
J'y répondrai pas
Parce que c'est pas le thème
Du débat politique
Et Gérard
Ah si en politique
Les élections c'est normal
A la place
Les clochettes c'est bon
A la place de Tony
On accueille Kyra
Qui appelle de Sarcelles
101.9
Bonsoir Laska
Allo
Bonsoir Laska
Non tu parles comme Hippo
Je suis Kyra
Moi je voulais dire
Que je vote
Je vote et
Voilà
Tu votes pour qui toi
Moi je vote pour
Pour ceux qui
Légaliseront le vol
De
Des mobilettes
Voilà
D'accord
Ok
D'accord
Tu peux répondre
A la question
J'ai pas entendu
Il était au standard
Alors les enfants
Ont-ils le droit
De faire de la politique
Tout à fait
Moi je suis
Tout à fait d'accord
Que pourquoi
Il y aurait
Des discriminations
Comme ça
Dès le plus jeune âge
Non mais
Pourquoi
Qu'est-ce qu'il y a
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
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
Non non mais ça
Moi c'est un truc
Qui me branche pas
Et quand j'entends parler
De ce qu'il parle
A la télé
Même sur les radios
Fais-moi confiance
Que c'est une prise de tête
Pas possible
C'est-à-dire
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 malheur 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
C'est dégueulasse
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
En attendant Gérard
Gérard président
Gérard président
A ce propos
Y'a Yankee sur IRC
Qui me dit
Si Gérard était président
C'est l'état qui se fera enculer
Bon bah ça
Il se démerde
Donc
Quatrième question
Oh ça suffit
Avec les sonnettes
Oh ça suffit
Merci
Pensez-vous
Que l'on parle
Bon Manu
Tu me le gères s'il te plaît
Parce que ça me prend la tête
Ou sinon
Je gère la sonnette
La sonnette tu dégages
Alors pensez-vous
Que l'on parle trop de politique
Putain
J'ai dit tu dégages
Ça commence à me prendre
Ça commence à me prendre la tête là
Euh
Caria
Caillera
Caillera
Moi je suis d'accord
Avec toi Gérard
Parce que
Moi y'a
Dans la PC
Il tourne
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êter de fumer des tarpés
Trouver un diable
Tout ça
Mais non on s'en fout
Non on s'en fout
Parce que
On casse des trucs
Ok
Grosse ligne
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
Non mais attends
Eh
Toh
Oh grosse ligne
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
A 23h10
Attends
Tu te fous de moi là
J'ai jamais de l'avis
Dans le juste prix
T'es fou
Non non mais attends
Dans ce cas là
Si tu regardes le juste prix
C'est pas la peine de participer
Au débat sur la politique
Quand au journal télévisé
Là tout à l'heure
Ils ont pas vendu
Tout ce qu'ils ont montré
C'est la fusée qui les colle
Bah ouais mais ils ont quand même
Parlé de la politique
Je suis désolé
Ils ont parlé de politique
Les astronautes
Quand ils décollaient
J'en sais rien mais
Non non mais ils en ont quand même
Parlé à 20h
Je suis désolé
À 20h
Moi j'allume à 20h02
Ils n'en parlaient plus déjà
Alors
Non non mais attends
T'es bête
T'es bête
Toupé
Toupé à Québec
Vas-y Toupé
Oh
Tu te réveilles
Allez hop
Bonne nuit pour lui
Allez hop
Celui-là c'est
Comme ça il se réveillera
Oui Rigo
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
Non n'importe quoi
N'importe quoi
Plote moi
Ouais moi je pense que
Non
Il y a trop de
Il y a trop de
Il y a trop de politiques
D'ailleurs on devrait directement
Passer au deuxième débat
Non mais alors
Pour l'instant c'est pas
Toi tu n'as qu'à acheter toi
Non mais attends
Toi si t'es pas content
Tu vas faire comme Tony
T'es 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
Je veux bien faire comme Tony
Parce que mon nom
Il me plaît pas trop là
Eh ben alors
C'est bien alors
Pareil
Allez salut
Salut à toi
Salut
C'est bien il ne nous reste plus
Qu'un, deux, trois, quatre
Il nous en reste plus que quatre
Alors casse-moi Z
On accueille
Attends excuse-moi Gérard
On accueille quand même Citrouille
Eh salut Gérard
Salut Citrouille
On t'appelle d'où ?
J'appelle de Paris
Ok
Alors donc je répète la question
Comme tu viens d'arriver
Oui s'il te plaît
Alors pensez-vous
Qu'on parle trop de politique
On va demander à casse-moi Z
Comme j'étais sur elle en premier
Ouais ben on en parle beaucoup
Oh le porc là
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
Non mais justement
J'en ai parlé aussi moi
Donc
Bon je vais t'expliquer en gros
Moi j'ai dû partir là-bas
J'ai dû partir aux Etats-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
Ouais mais on ne va pas s'éterniser là-dessus
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
Elle était consentante
Elle était tout à fait consentante
Elle adorait le sucer
Elle ravalait tout
Elle était contente
Et puis voilà quoi
D'accord
Attendez attendez
Il y a une question IRC
Oui enfin c'est une réaction
A ce sujet
On te demande Gérard
A ton avis
Est-ce que
Pour qu'un président
Fasse parler de lui
Il faut qu'il se fasse sucer
Non pas spécialement
On va peut-être pas revenir
Sur l'affaire Bill Clinton
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 casse-couille
Ouais mais Gérard
Il faut reconnaître
Que ça aide quand même
Ouais mais ça
Je vois pas où ça fait du bien
S'il y avait un président
Par exemple
Un président bulgare
Ou un truc comme ça
Un mec
On n'en entend jamais parler
Il se faisait pomper un bon coup
Je suis sûr que dès demain
On en entendrait parler quoi
C'est clair
Non mais ça
T'as vu l'accueil des
Attendez attendez
Cueil gras
Cueil gras 5 minutes oui
On accueille casse-couille
Bonsoir
Bonsoir à tous
Bonsoir aux 20 millions d'auditeurs
Qui nous écoutent quand même
Eh celui qui s'amuse
A
A faire ça
Là il va se calmer
Il est d'où lui ?
Bah écoute
Demande lui
Parce que j'ai pas eu le temps
J'ai 19 ans
Et j'appelle de Mont-de-Marsan
Et la fréquence de Mont-de-Marsan ?
Euh alors ça
Je sais plus moi
Je vais la trouver
Il va nous la donner
Il y en a un qui est malade là
Ouais je crois
La malade c'est le deuxième de bas
Celui qui s'amuse à faire ça
Va se calmer
Parce que sinon
C'est moi qui vais le calmer
Aurentaine
C'est la chiasse
Alors casse-noisette
Oui
Donc pour toi
Non toi tu viens de répondre
Ah oui
Sois-ci son à l'aïe
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
Bah voilà
Donc je suis tout à fait
Euh Citrouille
T'avais pas répondu
Ouais mais alors moi je dis
On parle pas assez de la vie privée
Des hommes politiques
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 reportage
Ils nous ont cassé les burnes
Avec la paire Bill Kington
Pourquoi t'as regardé ?
Non non je vais pas regarder
J'ai zappé parce que ça me prenait la tête
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
Ouais bah c'est bon
On en a rien à foutre
Ouais casse couille
Ouais
Gérard
Ouais c'est qui ?
Ouais c'est gros string
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 moules couilles
Sur la plage
Ouais mais d'accord
Mais ça c'est
Non mais ça c'est leur problème
On a même vu Barthez en jet ski
T'imagines
Casse couille
Tu veux répondre
Avant qu'on pose la cinquième
Ce qu'il y a c'est que moi
J'étais au standard
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
Pas de problème
Il va aller gerber
Il va revenir
Ouais bah il va aller gerber
Il va aller gerber
Chez lui définitivement
Gérard
Ah bon ouais
Calmez-vous s'il vous plaît
Il y a Gognol sur IRC
Qui te demande
Comment tu ferais
Pour boucher le trou de la sécu
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
Bah apparemment non
Ouais mais attends
C'est bien aux hommes politiques
De s'occuper du trou de la sécu
Manu tu me le calmes
S'il te plaît
Parce que sinon
Ça va chauffer pour toi
Alors casse-couille pour toi
Oui au fait
Alors pensez-vous
Que l'on parle trop de politique
Donc c'était la question
Comme tu étais au standard
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
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
A l'heure actuelle
Avec l'affaire Big Clinton
Et l'affaire
Les visqués
Avec les visqués
Ouais mais je croyais
Que tu voulais pas en parler
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
Mais ils en parlent pas assez
Bah ouais mais on en a ras-le-bol
D'entendre parler de ça sans arrêt
Mais non
Donc alors vous allez réfléchir
A 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 puchent
Et on se retrouve tout de suite après
T'appeler au 0800 308 5000
Et 0870 5000
Toujours le 36 15 4
Fun Radio
Rubrique directe
Et lire c'est
www.fr
Fun
Euh
Fun Radio
Flash Fun Radio
On a 921 connectés quand même
Gérard ce qui est énorme
Ouais
J'en veux 1000
J'en veux 1000 avant
Avant une heure et demie
Ça arrive
Ça arrive
Et alors on va
T'as trouvé là
Qui c'est qui
Ça y est
Il est allé
Il est allé aux toilettes
Il a fait ses besoins
Il est revenu
Il est en pleine forme
Super
Ok
Donc on récupère
Saucisson à l'ail
Toujours là Gérard
Casse-noisette
Ouais je suis là
Gros string
Ouais
Euh
Queyra
Soir non
Citrouille
Ouais salut
Et casse-couille
Oui si tu pouvais donner
Le label
La maison d'édition
Des disques que tu mets
Ça m'aiderait
Bon alors là
Faut demander ça
A Filda
C'est le label rouge
C'est approuvé
D'accord merci
Je connais
Je connais
Tu es pas people
Ouais
Bon c'est bien
C'est bien comme ça
Donc vous avez eu le temps
De réfléchir
A la question
On va demander
Bah tiens casse-couille
Moi non
J'ai pas de
J'ai pas de membre
Ni de ma famille
Ni de mon corps
Qui participe
A la politique
Ouais
Voilà
Ok
Je suis désolé
D'accord
Citrouille
Ouais moi j'ai un oncle
Mais bon c'est l'athéon
Il est communiste
Alors on lui parle plus
Non non non
Non non mais ça
On fait pas de politique
Ah ok ouais
Bon bah on lui parle plus
Quand même
Parce que c'est un gros con
Ok
Ah bah c'est bien
Alors Keira
Ouais moi je
Mais nous
Ils veulent pas de nous
Parce qu'on a
Avec des tepeaux
On a voulu faire
Un parti politique
Ouais
Et on est allé
A la mairie
Et ils ont pas voulu
De nous
Ces messieurs
D'accord
Grosse ring
Bah moi j'ai un cousin
Ouais qui fait de la politique
Ouais
Et il colle des affiches
Hum
Et bah voilà quoi
Un jour il était dans la merde
Parce que
Il avait emmené
Qu'un tube de colle
Et il a pu en coller
Que trois quoi
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
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 tout le monde
Non mais attends
Tu demanderas
A ceux qui
Quand ils les colleront
Pour les élections
Tu leur demanderas
Excuse moi
J'ai beaucoup de respect pour toi
Bon alors celui-là
Ça commence à m'énerver
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
Non non non
Si si si
Casse-moi Z
Ouais bah moi
J'ai pas sa amie
Qui travaille là-dedans
Mais bon moi
Je suis dans le milieu
Je travaille pour le parti
De Jean-Marie Le Pen
Bon bah alors
Casse-moi Z
C'est bon là pour toi
C'est terminé
Elle a le droit de parler
Non non non
J'avais précisé
De pas donner de
Pas de FN
Allez hop
Terminé c'est bon
Allez hop
Hop
Oh non non non
Alors
Je m'en fous de celui
Qui s'amuse à faire ça
De tout à l'heure
Ça va mal
C'est terminé pour lui
Saucisson à l'ail
Bah écoute Gérard
Moi chez moi
Tout le monde est contre
Oh non non non
Oh
Oh si
Bah qu'est-ce que j'ai dit
Saucisson à l'ail
Continue
Non non mais j'arrête
Celui qui s'amuse là
Ah ok excuse-moi
Moi je t'ai dit
Mais chez moi
Tout le monde est contre
Oh non non non
Mais quoi
Et ça commence à bien faire là
Un fil d'art
Non c'est pas moi
Non c'est pas toi
Qui t'amuses avec
Un petit bouton là
Non
Non non
Toi tu es en train
De me percer les miens
Mais ça c'est
T'en regardes pas
Oui oui oui
Mais t'es en train
De t'amuser là-bas
Ok
C'est vu
Donc Saucisson à l'ail
Toi pourquoi
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
Moi j'en pense
Rien du tout de ça
Mais est-ce que tu trouves
Que en fait
Justement en ce moment
On parle du PAX
Je sais pas si tu
Non non mais ça
C'est pas
Ça rien
J'en parle pas
Pour le mariage
Des homosexuels
Qui font de la politique
J'en parle pas là-dedans
Ce soir
Pourquoi
Parce que ça m'intéresse pas
C'est tout
Mais c'est intéressant
Les gens ils aimeraient savoir
Ouais bah peut-être
Mais moi
Gérard
Excuse-moi
Excuse-moi gros string là
T'aimerais pas
De faire introduire
Dans le milieu
Non non non
On va faire sur le côté
On accueille X
S'il vous plaît
Oui bonsoir Gérard
X bonsoir
Oh elle est bien elle
T'appelles d'où
Bah j'appelle de chez moi apparemment
Un appartement très bien d'ailleurs
Manu Manu
Quel fréquent
S'il te plaît
Non mais je te dis
J'appelle de mon appartement
Donc région parisienne
Région parisienne
Le truc que tu paies 900 balles là
Région parisienne
90 mètres carrés là
Région parisienne
Bah oui région parisienne
Ok 101.9
Merci d'apprécier
Ainsi de suivre
Donc à toi X
Alors de répondre
Bah si tu peux me répéter la question
Avez-vous un membre
Avez-vous un membre de votre famille
Qui fait de la politique
Non malheureusement
J'ai pas
J'ai pas quelqu'un
Qui fait de la politique
Dans mon entourage
Ni dans ma famille
Non
C'est la vie des mystères ça
Non
D'accord
Donc moi je peux vous dire
Que moi non plus
Comme j'ai pratiquement personne
Que de son entourage
Moi là-bas
Je suis tranquille
Oui c'est qui
C'est gros string
Ton membre
Il fait pas de politique
Bah en gros string
Tu veux parler de quel membre
Alors vas-y
Ton membre
A toi
Tu nous demandes
Nos membres à nous
Maintenant
De la famille s'il vous plaît
Que je demande
Ah ouais d'accord
Faut pas confondre
Les torchons et les serviettes
D'accord
Et alors ta femme
Ma femme à temps merde
Ma femme
Ma femme à temps merde
Tu sais ce qu'il dit
Le vieux porc
Exactement
Alors
Sixième question
Déjà ça passe tellement vite
Bah oui
Doit-on voter
Pour
Peut-être une question
Hier c'est avant
J'en aurai une
J'en aurai une
Vas-y
Vas-y
Fildar
Ok donc c'est Paul Ethic
Qui te demande
Gérard as-tu un membre actif
Dans les parties
Non
Donc il reste serré
Sur IRC
Pardon
Il y a SNUL
Qui te demande
Si tu connais le parti
GNB
Non plus
On est combien là maintenant
On est
On est 7 ou 8 dans le studio
Non non mais ça
Je m'en fous
Je veux savoir
Sur l'IRC
Si on va dépasser
Les milles ce soir
986
On y arrive bientôt
Putain t'es 12
Alors c'est bon
Merci le pape
Alors on continue
Donc sixième question
Doit-on voter
Pour avoir une copine
On va demander ça
A Grossring
Comme il n'arrête pas
De jacter sans arrêt
Est-ce que tu peux répéter
J'ai mal compris
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
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
Elisabeth Kikou
Alors
Alors
C'est Kaira
C'est Kaira
Oui Kaira
Elisabeth Kikou
Alors c'est bon Kaira
Tu peux partir
Et Grossring avec
Tous les deux
Tu peux partir
Allez viens avec moi
Viens
Tu rentres chez toi
Et c'est bon
Voilà alors
Je t'aide un peu
Je t'aide un peu
Parce que t'as du mal
Fais gaffe
Fais gaffe
Donc
On a plus Kaira
On a Grossring
Non plus
On va demander
Sa saucisson à laïc
Bah écoute
Moi franchement
Je dis que non
Ça dépend
Mais franchement
Je dis que non
D'accord
Je vois
Bien ce que tu veux dire
Citrouille
Ouais moi je me suis jamais
Fait de meuf
Alors je suis pas
Non mais doit-on voter
Pour avoir une copine
Ou un copain
Si tu veux
Dans l'ensemble
Bah moi j'ai plein de copines
Non mais
Putain mais
T'es bouchée ou quoi
Toi ce soir
Non pourquoi
T'as mangé quoi là
T'as mangé
Du poulet
Du poulet enragé
On dirait
Non il était pas enragé
Bah dis donc
On le dirait
Parce que je crois
Je crois que tu comprends pas
Ce que je veux dire
Peut-être les champignons
Ils vont pas être frais alors
Ouais d'accord
Gérard il y a Turpentine
Sur IRC
Qui te demande
Si tu as voté
Pour trouver Sandy
Personnellement
Non je l'ai
Il a voté nul ouais
Attends je l'ai voté
Par pochette surprise
Dans
IP Magazine
Ça va lui faire plaisir
C'est pas un truc
De homo ça ?
Non non
C'est un magazine
Comme ça
Donc
Qui c'est qui nous reste
Cascouille
Oui bah moi
J'ai très bien entendu
Ta question
Mais je la comprends
Pas très bien quoi
Alors doit-on
J'ai compris
J'ai très bien compris
Doit-on voter
Pour avoir
Une copine
Ou un copain
Bah je comprends pas
Le rapport là
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
Bah logiquement
Quand tu votes
C'est pour
Pour élire quelqu'un
Bah oui
Bah dans
Dans la politique
Y'a bien des nanas
Qui font de la politique
Donc si tu veux
Être copine avec elle
Faut bien que tu votes
Pour elle voyons
Ah ouais mais faut avoir
Des business
Quoi qui c'est
Qui dit n'importe quoi
Qui c'est qui vient de dire
N'importe quoi
Je crois que c'est X
Oh X
Eh toi la grosse
Déboue espèce de filiasse là
Eh ça va toi là-bas
Elle a dit
Calme ta joie toi
Eh tu vas te calmer
Ta joie là ou quoi là
Eh toi la grosse
Déboue espèce de filiasse là
Oh ça suffit là
Pile d'art
Ou sinon je t'en vois
Je sais pas ce quoi là
Euh bah
Bah X
Eh toi la grosse
Déboue espèce de filiasse là
Ils sont trop
Non mais attends
Je crois que ce soir
Ils ont fumé la moquette
Ou ils ont fumé
Ils ont bouffé
Je sais pas quoi
Y'a pas de moquette à fun
Merde
Ouais alors
Donc on accueille Téton
Et on accueille aussi
Bulldog Mystère
Oui bonsoir
Bulldog Mystère
Bonsoir Gérard
Bonsoir tout le monde
C'est ce qu'il m'a donné
Comme nom Gérard
Me regarde pas comme ça
Alors lui tu peux
Tu peux lui dire
Qu'il prenne un autre nom
Non mais je restais
Je restais dans l'anonymat
Qu'est-ce que c'est encore
Ce travlot là
Eh bah écoute
Je vote
Eh c'est pas un débat
Sur les travlots
C'est un débat sur la politique
Je vote aussi bien que toi
Ouais bah moi je tombe
Donc
Mystère Bulldog
Bulldog Mystère
Ouais si je veux
Les fréquences là
S'il vous plaît
96.10
Pour qui ?
Pour Bulldog Mystère
Ouais 96.10
96.10 ?
Oui
Et Téton ?
Bah moi j'appelle Delil
Fréquences ?
J'ai pas encore
96.8
J'ai pas encore de Téton moi
96.8
Ok
Et alors X ?
Ouais bah je pense
Qu'il faudrait
Oh tu mettais en la musique là
Non non mais c'est pas moi
Non non mais il y a
J'ai de la musique là
Oh une collègue
Moi j'ai rien
Là tu sais rien moi
Bon X ?
Non je pense qu'on devrait
Créer des écoles
Pour voter
Pour essayer d'avoir
Une copine ou quoi
Ah fil d'art
T'arrêtes avec cette
Cette chanson là
Parce que ça me prend
Ça me prend la tête
C'est la fête
C'est la fête
Ouais ouais bah c'est bon
On l'a fait assez hier la fête
Ça c'est la fête
Euh
Téton ?
Oui bah si tu voudrais
Répéter la question
Parce que j'étais au standard
Il a dit qu'il la répétait pas
Alors doit
Ça commence à bien faire
Faudrait peut-être écouter
Quand je leur parle
Quand je leur parle
Ils peuvent pas t'entendre Gérard
Donc euh
Gérard il y a une bonne question
De Toons sur l'IRC
Est-ce qu'il est normal
Que tout le monde
Aie le droit de voter ?
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
Et on est mille sur l'IRC ça y est
Ah ça y est
On a atteint les mille hein
Ouais
On a atteint les mille quand même
Il est normal
20h20
J'avais dit avant 1h30
C'est bien
Continuez
Moi Gérard en tant que Travlo
J'estime que tout le monde
A le droit de voter
Non mais attends
Pour l'instant je demande à Téton
Je demande pas au Bulldog
Tu m'as toujours pas répété la question
Alors doit-on voter pour
Pour choisir une copine
Ou un copain ?
Doit-on voter pour choisir
Un copain ou une copine ?
Voilà
Euh ouais peut-être
Pourquoi pas ouais
Ouais
Ouais mais c'est pas mal
Là ta réponse
Ah qu'est-ce que t'en penses ?
Ouais bah elle est nulle à chiquer
Bah ouais
Missère
Bulldog missère là
Comme la question
Attends si t'es pas contente
Tu raccroches
Et tu vas faire dodo
Écoute
Moi je vote
Mais c'est pas pour trouver une copine
Parce que je suis hermaphrodite
Donc
Pas d'insulte
Pardon
Bon et les autres derrière
Vous le laissez parler
On vous a laissé parler
Alors vous le laissez parler
Un petit peu de respect quand même
Je suis différent de vous
Mais je suis quand même
J'estime
T'as le droit de t'exprimer
Bah oui
T'inquiète pas
Merci Sildar
De rien
Tu connais ce problème en plus
Ouais non mais vas-y
Accouche là
On va pas
Bah oui bah je te dis
Moi j'ai pas besoin de voter
Pour
Pour trouver un copain
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
C'est pas le terme du débat
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
Rigaud
Oui il y a Le Chiant sur IRC
Qui te demande
Si on peut voter
Dans tous les pays
Euh
Très bonne question
Je vais y réfléchir
Je vous donnerai les réponses
Tout à l'heure
Ok
Alors
La septième
Peut-on faire de la politique
Pour être une star
On va demander ça
A
Bulldog Mystère
Apparemment
Tu m'aimes bien
Ouais bah
Tu vas parler
Comme c'est toi
Le dernier arrivé
Donc tu parles un peu
Euh
Alors peut-on faire de la politique
Pour être une star
Ouais
Bah oui
Bah tu vois bien
Qu'on a parlé
De l'habit à Clinton
Assez souvent
Que maintenant
Je pense qu'il peut faire
Un film de boule
Sans problème
L'habit à Clinton
Est connu
Du monde entier
Bah ouais
Non mais
Sur internet
Ouais bah ça
Je sais pas
Sur internet
Si c'est vraiment vrai
Écoute
J'ai cliqué dessus
Hier
Toute l'après-midi
Je peux te dire
Que sa bite
Est sur le net
Si si c'est vrai
Ouais je sais
Il paraît qu'ils veulent
Qu'ils font des photos dessus
Euh
Tétons
Bah moi je suis d'accord
Avec ce que tu dis Gérard
Bah mais
C'est à dire
Bah c'est à dire
Que je suis d'accord
Non mais
C'est pas la peine de dire
Que t'es d'accord avec moi
Mais tu précises
Ta réponse
Bah je pense
Exactement comme toi
Alors
C'est à dire
Bah c'est à dire
Que oui
Je pense que oui
Ouais effectivement
Vu les circonstances
Ouais je pense
Euh
X
Bah écoute
Une collègue
Oh
Bouledogue Missaire
Je suis pas du tout
Un collègue à toi
T'inquiète pas
Hé Bouledogue Missaire
Tu t'as mis un petit peu en veilleuse
T'es jalouse parce que j'ai une vie
Tu t'as mis 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
Alors peut-on faire de la politique
Pour être une star
Non je pense pas
Qu'on peut faire de la politique
Pour être une star
Parce que toi t'es déjà une star
Non mais attends
J'ai pas
T'as pourtant pas fait de politique
N'importe quoi
Qui c'est qui dit n'importe quoi ?
Bah non
Bah pourquoi tu dis n'importe quoi ?
Il est vrai ce qu'il dit
N'importe quoi
Hé celle qui est pas contente
Alors tu rentres chez toi
Et tu t'écrases d'accord ?
T'as des meilleures réponses toi ?
Euh casse couille
Non tu m'as pas répondu
Connerie à la radio
Casse couille
Moi tout d'abord un truc
Que je comprends pas là
Euh
Bouledogue Missaire et X
C'est pas la même personne ?
Non
Non c'est ma soeur
Ouais c'est ta soeur
À Balbeur entre les cuisses
D'un catcheur
Ouais
Ouais
Alors 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
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à
On atteint bientôt les 1200
Et là on va arriver
On va arriver sur
1200 connectés
D'ici deux heures
Ouais mais
Ouais mais Gérard
Oui
Imagine
T'es 15 millions là
15 millions d'auditeurs
Imagine ils votaient pour toi
Et tu serais président quand même
Ouais mais ça on verra
Bah faudrait que
Tu vois faudrait que tu réfléchisses
À ce genre d'hypothèse
Non faut pas que tu réfléchisses
Non mais
Celle qui dit
Faut pas que je réfléchisse
Je fais ce que je veux
T'es méchant
Comme ça vous êtes en train de feu
Euh Citrouille
Oui
Donc toi
Moi je dis qu'il faut être une star
Pour faire la politique
Et pas le contraire
Non mais doit-on
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
Bon ok
C'est ton opinion
Mais moi personnellement
Non je te dis tout de suite
Bah tu la partages pas
C'est pas tant pis pour toi
Mais moi je te dis que c'est ça
Ok
Tu verras on en reparlera
On en reparlera
Ceux-ci sont à l'aïe
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
Hum
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
C'est quoi ça ?
Allo ?
Ceux-ci sont à l'aïe
Je crois que c'est X
Qui a raccroché
Non non je suis là moi
Merde
Merde, merde, merde, merde, merde
Euh
Bulldog mystère
Tu dis encore une seule fois
Un gros mot
Tu gerbes
Merde
Alors tu dégages
Bonne nuit
Non c'est pas moi
C'est pas moi
Non c'est pas toi
C'est ma soeur
Ceux-ci sont à l'aïe
Donc t'as peut-être pas fini
Si si j'ai fini Gérard
C'est bon ?
Gérard
Oui
Il y a Serval qui me demande
Enfin qui te demande
S'il y a être une star politique
S'il vous plaît
S'il y a être une star politique
Dans les Mercedes
C'est dangereux
Non
Je vois le rapport
Qui veut en venir
Mais
Moi je vois pas
Je le vois pas Gérard
Si si
Non mais moi je vois
Hey Bulldog mystère
Là tu t'écrases
Ça commence à bien faire
Bulldog mystère
Quoi il y a histoire d'un pont
Dans la
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
Ok
Voilà
Donc
Huitième question
Les extras
Les extras
Les extra-intérêts
Doivent-ils faire
De la politique
On va demander ça
Attends Manu
Oui oui oui
A la place de X
Qui est raccroché
On ne sait pas pourquoi
On accueille Jean-Pitivier
Ben X
C'est plus là
Non elle est raccrochée
Alors donc
Ben faudra la rappeler
Jean-Pitivier
On n'a plus de ligne
Pour l'instant Gérard
Jean-Pitivier
Tu me refais
Une fiche
Je veux qu'on rappelle
Ma sœur
Oh toi
Bulldog mystère
Tout à l'heure
C'est toi
Qui m'a rappelé
Tu m'as dégagé
Oui ça va me faire
Une ligne de libre
Oui bonsoir Jean-Pitivier
Oui bonsoir
Bonsoir
Alors je travaille
Je suis
Maire, sénateur, député
De l'Aviron
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
Là où sont les extra-intérêts
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 peau 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
C'est bidon
C'est admissible
Bon alors Bulldog Milster
Tu dégages pour deux
Bon ce coup là
Allez hop
Ça t'apprendra à couper
La parole Jean
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
On va faire des débats
Sur la politique
Oui la sodomie
La sodomie ça c'est bien ça
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
Non mais dans ces cas-là
Monsieur vous assumez
Vos responsabilités
Bon alors dans ces cas-là
Si c'est pour réagir comme ça
C'est pas la peine d'appeler
Ok ?
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
Non mais moi je fais les débats
Qu'on me dit de faire
Parce que vous avez l'air
Aussi débile qu'un homme politique
Ouais bah alors si ça vous plaît pas
Bah dans ces cas-là
Vous restez chez vous
Moi ça me plaît
Mais c'est sûr que je voterai pas
Pour votre gueule
Bah tant mieux
Bah moi non plus
Et moi je voulais dire
Que j'avais la Gérardo Zablak
Bon allez
Celui-là tu me le vire là
Le bulldog mystère
J'avais pas entendu
Hop terminé pour lui
Monsieur Gérard
Est-ce que vous avez voté
Dernièrement pour les cantonales ?
Ça ça vous regarde pas
Voilà
D'accord ?
Est-ce que toi t'as déjà été voté ?
C'est une bonne question ça
On parle de politique
Bah de toute manière
J'ai déjà été voté
C'est tout
Pourquoi vous êtes de droite RPR ?
Non non mais ça c'est pas
Ça je vous dirai pas mon parti
Parce qu'on parlait tout à l'heure
De Jean-Marie Guigou
Un homme politique
Que j'aime beaucoup
Demeurent
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 ?
Non non mais ça
On en a rien à foutre
J'ai dit que
Je voulais pas parler des partis
Alors vous n'en avez rien à foutre
Et dès qu'il faut parler de politique
Vous quand même parlez des partis
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
Non mais c'est débile
De parler de politique
Avec des extraterrestres
Bon c'est bon
Ça y est ça y est
On a compris
Merci
Vous êtes cons alors
A la place de Bulldog Mystère
On accueille Pitbull secret
Bonsoir
Gérard vite fait
Sur IRC
Y'a ce nul
Qui te demande
Si tu connaîtrais
Un président idéal
Non
Alors donc
On va poser la
Il répond à aucune question
Il est con comme ça
Bon alors
Jean-Petit
Viens vous dégagez
Ça vous apprendra
De m'insulter
Hop
Tu peux le dire
Attendez monsieur
Insulter
Allez allez
C'est bon c'est bon
C'est bon c'est bon
Insulter ça fait partie
Du milieu politique
C'est normal
C'est ça c'est ça
Allez restez chez vous
On insulte
Allez allez
C'est bon c'est bon
C'est bon
Allez allez
Alors les extraterrestres
Doivent-ils perdre la politique
On se retrouve tout de suite après
Vous allez y réfléchir
Et on va s'écouter
Gilles Duboudin
Avec mes
Des baskets
Pour manger
Du pâté
Et on se retrouve tout de suite après
On va saluer à tout le monde
Voilà je voulais saluer
Tous les gens de l'IRC
A savoir
On est quand même
1350,2
Mais ça je suis perso
On s'en fout
Ce qui est pas mal
Je voulais saluer
Est-ce que je les cite tous
Non non non
C'est bon
C'est bon
Salut le pop
Avant de
Jérin
Avant de reprendre
On accueille
Jean Cotivier
Bonsoir
Bonsoir
Bonsoir
Ça s'appelle un blanc
Merci Gérard
Bonsoir
Donc
On va parler
On va
Je vais vous donner
Un petit sondage là quand même
Parce que
Rapidement
Allo
Rapidement
Oui
Donc qu'est-ce qu'il nous fait lui là ?
Gère-le
Gère-le là
Parce que ça va pas
Donc tout le monde
A la question
Tout le monde
Peut-il faire de la politique
Allo
Bon tu te tais s'il te plaît
Merci
A 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
Allo
Et moi j'entends plus Gérard
Il y a un problème au standard ou quoi ?
Allo
Allo
Qu'est-ce qu'il se passe là Mani ?
Bah non il y a rien
Il y a rien
Allo
Et là c'est bon ?
Allo
Vous nous entendez là ?
Bah non
On t'entend plus Gérard mais
Vous m'entendez ?
Vous m'entendez ? Allo
Allo
Allo
J'entends Mani ouais
Gérard parle un coup
Allo
Allo
On n'entend plus Gérard
Ouais mais qu'est-ce que tu me fais toi là ?
Fildar
Fildar merde
C'est toi qui fais des conneries encore
Mais non j'ai bien fait
Allo
On t'entend pas Gérard
Assuré RC ils t'entendent plus non plus
Qu'est-ce qu'il se passe là Fildar ?
Qu'est-ce que t'es en train de déconner là ?
J'ai vu une claque
J'attends Fildar
Le bouton là Fildar
Lequel ?
Celui-là le petit blanc là
Désenclenche-le
Voilà
Voilà j'ai bon
Voilà on t'entend là
Voilà Fildar
T'arrêtes de faire tes conneries oui
Allo moi j'entends rien
Allo
Wow
Ah ça a coupé encore
Allo
Fildar merde
Bon voilà la question
Tout le monde peut-il faire de la politique
Allo
Oh t'arrêtes avec tes allos toi
Monsieur vous m'entendez ?
Est-ce que vous nous entendez là ?
Gérard est-ce que tu...
Allo
Oh Fildar merde
Mais j'ai rien fait
Mais lui de droite
Mais y'a rien là
Y'a rien
Y'a rien
Y'a rien
Y'a rien là
Mais c'est encore coupé là
Mais Fildar je suis fait là
Fildar il se fout de toi
Mais lui de droite
Gérard on n'entend plus ta grosse gamelle
Oh c'est quoi ce bordel là ?
Mais non mais moi je continue pas comme ça
Allo les auditeurs
Les auditeurs vous m'entendez ?
Attends je vais laisser ce bouton là
Et là ça va mieux ?
Mais non n'insistez pas
On n'entend pas on vous dit
Et là ?
Et là vous vous entendez ?
Non on n'entend pas
N'insistez pas
On n'entend pas
On n'entend pas le gros con là
Le gros con il t'emmerde toi pédé
Mais d'où ce con là ?
Je comprends pas
Manu c'est du standard
C'est pas possible
Ça vient pas de moi
Ça vient pas de moi
Ah ça y est on entend
Allo ?
Ouais
Ouais bah c'est bon allo
Ah bah voilà
Ah oui voilà c'est bon
Donc y'a la question
Tout le monde peut-il perdre la politique ?
Celui qui m'a traité de gros con
Je te préviens que je t'emmerde
Toi gros pédé d'accord ?
Oh Gérard
Pas de vulgarité
Je te préviens
Tu restes poli ok ?
C'est bon c'est bon Gérard
On y va
Alors donc 50% des gens ont répondu
Qu'il faut obligatoirement procéder
Oh putain Manu
C'est bien tu me sacs
Tu me sacs celui de Allo
C'est pas de sa faute
C'est nous
Non non mais il va pas me percher
Toute la soirée avec
Allo allo allo
Qu'est-ce qu'il se passe Manu ?
On entend plus Gérard là
Bon qu'est-ce que t'as fait Gérard ?
Tout marchait bien là
T'arrêtes de déconner ou quoi ?
Ouais bah je vous entends moi aussi
Mais vous entendez plus Gérard
Bah je sais pas ce qu'il se passe
Il est parti là ?
Gérard t'es là ?
Non non il est là mais
Je pense que le débat il va s'arrêter
N'invitez pas on vous entend pas
Non mais attends il déconne depuis tout à l'heure lui
Y'a rien là
Ah mais ouais mais c'est normal
Faut appuyer là t'appuyez là
Voilà c'est bon vous m'entendez là ?
Ouais impeccable
Ohlala t'es vraiment un cave
Impeccable Gérard
Bah je le savais pas
Ouais non mais tu vas le savoir
Tout à l'heure tu vas te prendre une gaufre
Ils ont changé
Bah au chocolat
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 2 mois
Je vois pas ce que ça veut
Si c'est plus ça va mieux
Quand t'as un chromosome de 2 mois
T'as moins de chance
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
Non Olivier Delapro
Et voilà ça m'étonne pas lui
10% des gens qui ont répondu merde
Ah bah c'est bien
Si c'est Olivier Delapro
Qui s'amuse à faire des sondages comme ça
Le deuxième il passe le carré au cul
C'est quoi ce chromosome ?
J'en sais rien
Sinon sur l'ERC
Y'a un 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
Alors saucisson à laïc t'es toujours là ?
Oui oui je suis toujours là
Casse couille
Pas de problème je suis là
Toujours là
Cétrouille
Ouais je suis là
Téton
Bah ouais
Pic boule
Pic bulle
Pic bulle secret
Pic bulle
Bonsoir
Bonsoir et...
Jean
Jean Cotivier
Jean Cotivier
Oui
Oh tu te réveilles hein ?
Allo
Oh tu te réveilles ?
Allo
Oui
Allo
On entend une barbe
Merde
C'est trop facile
Non fais gaffe
Parce que tu as retourné chez toi tout à l'heure
Je le sens hein
Dans ta voiture caca
Ouais
Dans sa merde
Bon la question Gérard
Alors donc
Vous avez
Bon s'il vous plaît vous vous calmez
Merci
Pour les écologistes dans 15 jours
Pour les élections
Je voudrais parler du pétard à Guigou
Bon toi ta gueule
D'accord
Donc vous avez
On a dit qu'on allait changer la question
Sans écologie
Extraterrestre
Et qu'on allait parler du président de l'Allemagne
Ouais donc qui s'appelle ?
Gérald Krafner
Voilà
Donc vous en avez entendu
Gérald Roswell
Putain tu vas fermer ta gueule toi
Tu vas la fermer ta gueule quand je parle ?
C'est quoi l'histoire de l'Allemagne ?
C'est quoi ?
J'ai pas compris
Non c'est un pays qui était
Qui était machiné par un autre chancelier
Et maintenant ça a changé
Non un chandelier
Un chandelier
Un chancelier
Non on me confirme c'est chandelier
Non c'est chanc...
Chancelier vous savez rien du tout
Alors taisez-vous
Chancouille
C'est les bougies là
Mais vous allez vous chalmer ou quoi là ?
Gérald ça se trouve où l'Allemagne ?
L'Allemagne ça se trouve du côté de
Du Pakistan un peu ou pas ?
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
Dans la banlieue ?
Il y a une île pas loin non ?
Non il n'y a pas d'île
Parce que toi tu viens d'une île toi ?
Bah ouais Tahiti excuse-moi
Ouais tu viens d'une île des cacahuètes
Donc alors je pense que vous en avez tout le temps
Je voulais savoir juste l'Allemagne
C'est bien là où il y avait eu Marguerite
Non c'est pas du tout là
Ça c'est en Angleterre
On va peut-être pas confondre l'Angleterre et l'Allemagne
Bon alors c'est quoi la question ?
Donc vous en avez entendu parler
Donc qu'est-ce que vous pensez qu'il va faire lui maintenant ?
Ben Edmund Cole je pense que c'est bien qu'il soit passé au pouvoir
Non mais il a été viré
Il a été remplacé à Brouty
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 Marguerite Thatcher
Non mais écoute
Écoute bien ce qu'on vient de te dire
Qui n'est plus
Président de l'Allemagne
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
Non mais Bucarest c'est pas la capitale de l'Allemagne à Brouty
C'est la préfecture
C'est la préfecture
C'est en Suisse Bucarest
Ah ouais c'est une ville jumelée
Je pense qu'on va pas s'éterniser trop
Sur cette question là
Justement si il y a un mec qui veut répondre à cette question
C'est ça qu'a merde
Il dit qu'il va faire comme Clinton
Il va sauter sa secrétaire
C'est bien il fait ce qu'il veut
Il fait ce qu'il veut de son cul
Juste c'est dire que l'Allemagne c'est quand même la plus belle ville fleurie
C'est tout
Avec Strasbourg derrière
Le secrétaire allemand démangeait de la bière
Et puis il buvait des patates
Tu te calmes un petit peu toi
J'étais trop bonne
Mais ta question c'est quoi ?
Ma question je vais vous la poser
Parce que c'était pas du tout prévu dans ce truc là
Il y a eu une question avant sur IRC
Une question de Turpentine qui te demande Gérard
Où est-ce que tu es ?
Est-ce qu'on peut apprendre à voter ?
Où on peut apprendre à voter ?
Il n'y a pas besoin d'apprendre
Non pas du tout
Alors toi tu as commencé par fermer ton clapet
Parce que tu as viré toi
Tu as déjà voté Gérard ?
Tu commences à être vulgaire encore toi
Une dédiffune à Elisabeth Guigou
Ça nous écoute
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 revenu sous d'autres noms
Non à peine
Parce que pas
On va peut-être revenir
Gérard il a décidé de s'arrêter de voter
Le jour au Krasniki il a décidé d'arrêter la politique
Et ta connerie elle a arrêté de voter quand toi ?
Gérard c'est Krasniki
Avec 15 000 millions d'auditeurs
15 000 millions
1 million
15 000 millions d'auditeurs
Reprends la question
Tu te calmes
Je vais les calmer mais reprends
15 000 millions d'auditeurs
Reprends le débat Gérard
Reprends la question on y va
Alors donc il y a une question que je voulais poser
Parce que tout le monde...
15 000 millions d'auditeurs
15 000 millions
Putain je t'entends plus Gérard encore
Putain merde
Manu s'il te plaît
Vous l'entendez Gérard là ?
Fildar qu'est-ce que tu t'amuses là ?
Je cherche un disque
Fildar !
Quoi ?
Max il t'a dit d'aider alors tu remets les auditeurs
Regarde tu lui mets des bâtons dans les crouilles
Vous avez entendu parler des grèves en ce moment
Je pense que vous en avez tous ras le bol
Ah bon il y a des grèves ?
Oui il y a des grèves
Il y a des grèves encore
Où ça ?
Bah la grève du coeur
Non il n'y a pas des grèves
Ça c'est la grève à Brouty
Les routiers sont en grève
Non non vous avez...
Les routiers c'est des feignants
Oh ta gueule toi
Là comme ça t'es tranquille toi
Au moins je vais t'avoir répondu tout de suite toi
Il y a la grève des...
Il n'y a que de kilomètres qui parcourent
Il y a la grève des porcs là
Des trucs de porcs en ce moment
Ouais il y a ça
Il y a aussi...
Demain il y a la RATP je crois
Demain...
Ah s'il vous plaît vous fermez vos gueules quand je parle
Merci
C'est la grève des porcs
C'est-à-dire que ta femme elle est en grève en ce moment
Tu sais qu'il vient de dire ça
Ça te rend le kilo de Sandy là
Alors tu me viens...
Je ne sais pas qui c'est
Tu gères Manu parce que là on n'en a pas le bol
Je sais je sais je vais essayer
C'est impossible de faire un débat potable
Non non non moi je n'ai rien fait moi
Non non c'est pas...
On ne peut pas faire un débat potable
Donc vous avez entendu ?
Moi je me casse, salut
Salut
Au revoir
C'est un con Svab
C'est qui ?
C'est Jean Cotivier
Il n'est pas content comme ça il...
Gérard
Pour revenir sur le débat
Sur IRC on me demande si un bulletin blanc est réutilisable
Non
Non un bulletin blanc ne peut...
Un bulletin blanc de toute manière ne servira à rien
Parce que c'est un bulletin qu'il n'y a rien à écrire
Non non non
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
Re-vote blanc
Non non non il ne la garde pas
Ils n'ont pas le droit
Mais est-ce qu'ils gardent le même...
Est-ce qu'ils gardent le même ticket ou...
Non non non
Bah si on peut réécrire dessus
Mais c'est une technique écrécrable
Non non mais attendez
Moi je trouve ça lamentable
C'est bon
Non mais moi je peux vous dire une chose
Que les papiers une fois qu'ils sont servis
Sont détruits ou même brûlés
Mais c'est n'importe quoi
Non mais attend c'est ce que je parle
Mais ils en font du PQ après
Mais oui c'est ça
Non parce que je suis désolé
Parce que les billets ce n'est pas combustible
Non non mais attend
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é
Il n'y a pas de rapport
Donc alors moi je peux vous dire qu'en ce moment
Vas-y vas-y
Non non vas-y
Alors oui bon vite fait
Il y a Turpentine
Qui te demande si tu as déjà voté par procuration
Justement c'est la question
On allait en venir
On accueille Vaseline
A la place de Cotivier
Salut Vaseline
Salut Vaseline
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 qu'ils sont encore étudiants je pense
J'ai une question de
J'ai pété
Gérard est-ce que c'est vrai que les électeurs
Pour voter doivent glisser leurs enveloppes
Dans ton urne à caca
Alors là tu peux dire à ce petit con
C'est qui
C'est Pitbull
Non mais il est là
Non mais il n'y en a pas qu'un Pitbull en France
Non mais je vais dire que celui-là
Je l'emmerde sur Minitel d'accord
Fildar je t'ai prévenu de ne pas me couper
Sur des questions con Minitel
Au lieu de te marrer parce que tout à l'heure
Je vais me lever et tu vas te foutre une gaufre
De toute manière au deuxième débat
C'est là ta place
Ouais je vais l'arrêter
Voilà
Tu te trompes
Non mais c'est bon c'est bon
Tu calmes tes nerfs Manu
Mais 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
Non pas du tout
Oui moi je fais des études en sorcellerie
Et j'ai pris option en chaudronnerie
N'importe quoi
Citrouille
Non moi je ne suis pas étudiante je ne suis pas une saignante
D'accord Teton
Ouais moi je suis étudiante
Pitbull
Moi je suis Alénal Clodo
Bon toi tu vas te calmer parce que tout à l'heure tu as viré
Hein Tony ?
Hein Tony ?
De quoi tu parles là genre ?
Tony il est parti tout à l'heure
Vaseline donc toi ?
Bah moi je suis dans la vie rétroactive
Non mais est-ce que t'es étudiant ou pas ?
Bah non je suis dans la vie rétroactive
T'es dans un tube aussi
Bah en tube ou en comprimé
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
Vous avez bien que vous vous attendez
Je pense que vous voulez bien que ça se termine
Et qu'ils trouvent un moyen
Pour que ça cesse
Le nombre d'élèves dans les classes
Ah bah tu m'étonnes on a envie de bosser nous
En plus ils peuvent même pas aller faire la grève
Parce qu'il y a les grèves des métros
Non non non
Si demain ?
Non
Je te jure que si
Moi je te dis que non
Alors là tu te mets bien profond dans le cul toi
Mais attends
C'est pas imaginable
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
Face à ce qu'il a promis
Parce que sa confiance
A devenir chiant pour vous
Vous pouvez pas suivre vos études
Voilà bravo
On va pas s'éterniser sur cette question
C'est un petit point
Que je voulais faire parce que Maxime en a parlé
Donc on a fait le tour à peu près de la question
Donc maintenant je vais vous demander
Est-ce qu'il y en a parmi vous
Qui ont déjà voté par correspondance ?
Ouais moi
Non mais parmi les auditeurs
Ah non moi j'étais abonné à J'aime lire c'est tout
Non mais attends toi tu vas répondre correctement
A 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'entrer
Alors Vaseline
Par correspondance
Tu peux préciser un petit peu
Qu'est-ce que tu veux dire
C'est-à-dire que t'envoies ton bulletin de vote à de la famille
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
Si j'étais moins con il serait pas des élections
Pendant les vacances
Non mais regarde quand il y a des ponts
Par exemple comme au mois de mai
Comme ça s'est passé là
Au mois de mai abruti
Non mais on parle pas du pont de l'Allemagne
C'était pas au mois de mai c'était au mois d'août en plus
C'est quoi une procuration ?
Une procuration c'est que tu donnes l'autorisation par exemple
A quelqu'un de ta famille pour aller voter pour toi
Et comment on fait pour donner l'autorisation ?
Comment ?
Et comment on fait pour donner l'autorisation ?
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 ?
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
Non mais à une condition que moi je signe
Parce qu'il faut que la personne intéressée signe aussi
Mais comment peux-tu être sûr
Que la personne va voter ce que tu veux ?
Ah non mais ça c'est sûr ça là-dessus
Je suis d'accord avec toi
Mais ça c'est
C'est pour 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
Ouais mais je crois que c'était personnel
Que t'avais le droit de le dire à personne
Ouais mais si tu veux voter blanc, tu votes blanc c'est tout
Gérard il fait caca partout mais il vote écologiste
Ouais moi je t'emmerde toi
J'ai vraiment pique-bulle
Oui Régo
Sur IRC il y a Pingouin qui te demande s'il faut un isoloir
Pour voter par correspondance
Non pas spécialement
Est-ce qu'il faut un abonnement ?
Non plus
Est-ce qu'on peut voter dans le noir ?
En principe quand tu tires le rideau
Bien sûr tu peux voter dans le noir
Comment ça ?
Normalement t'es une voiture, moi je regarde l'émission tous les soirs
Non t'es toi toi
Et il y a Le Chien aussi qui te demande si on peut continuer à voter
Quand le vote est fini
Non je pense pas, une fois que c'est terminé à partir de 8h
A partir de 20h ils peuvent plus voter
Mais alors pourquoi les résultats ils arrivent après 8h ?
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 à Régo
Donc déjà à 8h ils commencent déjà à faire un sondage
BBVA pour te dire à peu près
Le nombre
Si ça s'appelle comme ça
Il y a le BBVB aussi
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
Une estimation
Une estimation voilà
Quand tu parles de dépouillage ça veut dire qu'en fait
Ils se bourrent la gueule juste avant quoi
Non mais attends c'est qui là qui parle ?
C'est qui qui vient de poser là ?
C'était ton ?
Ouais c'est moi ouais
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 vas ramener
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 ?
Mais non c'est de retirer les papiers qui sont dans les enveloppes
Voilà tu vois que t'es capable de répondre quand tu veux
Il y a longtemps que j'avais répondu déjà
Fallait te réveiller un peu
A ce sujet Gérard il y a Turpentine qui me demande si c'est des facteurs qui dépouillent les enveloppes
Non c'est des gens comme nous
Des toxicomanes ?
Non non ça peut être des gens comme nous
Pas comme toi quand même
Moi si je l'ai déjà fait
Il l'a fait ?
Ah oui il s'est déjà dépouillé
Tu l'as fait ?
Oui oui ça y est
Ça m'étonne pas que la droite est passée
Doit-on parler de politique en cours ?
Ça va concerner ceux qui font
Attends doit-on parler de quoi ?
De politique en cours
En cours voilà
En cours de quoi ?
En cours quand t'es à l'école
Quand tu cours ?
En cours
Quand on fait du jogage ?
Non non non
C'est toi qui me parle en même temps
Je croyais que c'était l'autre dindon là-bas
Donc saucisson à l'ail
Bah écoute moi ça fait longtemps que je suis plus à l'école
Parle un peu plus fort
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
Ouais bah de toute manière
Tu peux enculer à partir du moment où tu parles de politique
Non mais t'en as beaucoup qui essayent d'en parler
Oui qui essayent mais enfin ils se font vite
Vite casser en général
Ouais mais dans les lycées je pense que
S'ils sont pas pronds ils peuvent en discuter entre eux
Ah ouais non mais là y'a pas de problème c'est sûr
Ok
Casse-couille
Ouais non en cours non on parle pas de politique
A part des fois d'Elisabeth Guigou mais sinon
Bon alors casse-couille là tu te casses
Comme ça tu me les casseras plus
Allez c'est terminé pour lui
Ça a commencé à me les gonfler
Qu'on arrête pas de parler d'elle
Alors ce coup là terminé
C'est trouille
Ouais alors moi une fois y'a un prof qu'on a parlé
Il a pas le droit
J'ai porté plainte
Et le mec il est radié d'éducation nationale
Non mais attends parce que souvent
Ah attendez s'il vous plaît
Je vais répondre quand même à cette rouille
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
Ils ont pas le droit
C'est pour essayer de machiner un peu l'atmosphère
Mais je pense que c'est sûr
Ils ont pas le droit
Mais oui je sais
Donc t'es ton ?
Non ils ont pas le droit d'en parler c'est interdit par la loi
D'accord
Pic Bull
Bah moi j'échangerais jamais un cours de politique
Contre le cours de bio
La reproduction des bonus colantartiques
Ouais c'est ça t'as raison toi
Gérard excuse moi à la place de caisse
Couille on accueille Pé de Burne
Bonsoir Gérard bonsoir à tous
Salut Pé de Burne
Vas-y Gérard je crois que tu peux parler maintenant
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
Bah je pense que les élèves quand ils sont en cours
Ils ont d'autres trucs à faire
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
C'est des feignants
Mais ouais mais c'est des feignants
Non c'est pas des feignants
C'est les profs qui sont des feignants
Parce qu'ils veulent pas
Comme les routiers c'est des feignants
Oh ta gueule toi
C'est des alcooliques
Bon alors toi ces trucs tu dégages
C'est pas moi
Non mais t'es pas visé qu'on dit alcoolique
Non mais t'es ton pour toi
Oui
Donc toi
Oh vous vous réveillez là
Vous répondez aux questions
Mais je t'entends pas Gérard
Alors peut-on
Doit-on parler de politique en cours
Allo
C'est interdit
C'est quoi
Ah ça c'est Fildar ça
Ah là là
Mais lui une droite
Tu me fais pas gueule ou quoi toi là
Bah j'ai rien fait
Non tu me coupes les auditeurs
Ça va pas non
Bah oui j'ai guéri dans la gueule
Donc t'es ton
Ouais bah je t'ai répondu il y a deux minutes Gérard
Donc Pic Bull
Bah moi aussi
Ok
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
Bon d'accord je vois pas du tout le rapport
Bah doit-on tu dis doit-on
Bah si elles se touchent c'est pas bien
Bon alors les sondages
Avant de faire la conclusion
Je vais donner les
Un petit sondage rapide ouais
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 dessins é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
Non non t'as rien fait
Tu me prends pour un con toi
Tu me prends pour un con non ?
Termine Gérard termine
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
Donc pour terminer
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
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
Une Twingo
Ouais une Twingo
Une Kangoo tiens
Ouais pourquoi pas s'il veut
Donc on va perdre la conclusion du débat
Ouais
Donc il est 57
Donc saucisson à la gueule
Bah écoute
Laisse passer les autres
Après je répondrai
Bon ok
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 au revoir pour ton débat
Bon allez ça commence à devenir l'autre
Ta conclusion c'était ça pour me dire ?
C'était bidon
Bon alors pig bull
Pig bull une fois
Ouais ouais c'est moi
Alors
Donc moi je fais toujours ma dédicienne
A Elisabeth Guigou si tu m'écoutes
Alors allez hop c'est bien
Tu peux rentrer chez toi
Maintenant t'as la conclusion à la fête
Voilà
Alors Vaseline
Vaseline
C'est la fête
Déjà fait
Déjà fait ?
Non parce que j'ai pas
Si si
Non t'es ton parton
Bah moi je dirais que la politique
C'est comme toi Gérard
C'est catastrophique quand on en parle
Eh bah c'est bien
Si c'est pour ça que t'as voulu participer au débat
C'est bien
Bah ouais je fais ce que je veux
Je suis assez grande
Bah de toute manière tu fais ce que tu veux
Moi aussi je fais ce que je veux
Bah moi aussi je fais ce que je veux
Je suis majeur à vacciner
J'ai pas besoin de
Pourquoi tu me parles d'abord ?
Bon bah alors je te demande la conclusion
Donc tu réponds et c'est tout
Eh bah donc la conclusion
C'est la politique
C'est comme toi
C'est catastrophique quand on en parle
Point barre
Eh bah alors ok bah salut
Allez bonne nuit
Citrouille
Ouais
Moi je dis
Des poivrons
Hein ?
Je dis les politiciens
C'est comme les routiers
C'est des poivrons
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
Petite Burne
Pet Burne
Pet Burne
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
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
Ouais mais t'as quand même parlé
Des extraterrestres
Bon
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
Ouais mais tu l'as cité quand même
Ouais non non
Mais on l'a pas faite
Donc nuance
Faut pas confondre
Entre citer et l'avoir fait
Ok ?
Euh oui
Pour finir Hugo alors
Oui donc une conclusion
Hier c'est de Daube
Avant de voter
Mettez une capote
C'est important
Contre le cancer du sida
Surtout si vous êtes
Homosexuel
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
Saut s'ils sont à l'aïe
Pour terminer la conclusion
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
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
Non c'était bien
C'était bien
Ouais ouais
Non non mais quand j'ai
Un abruti de câble
Qui me fait que des conneries
Je vais faire la vraie
Un fil d'art
Donc moi je peux vous dire
Une chose
Que c'est dommage
Qu'on a pas trop de temps
Pour continuer
Parce qu'on a
C'est vrai que t'as tellement
De trucs à dire sur la politique
On est tellement pris
Par le temps
Donc moi je peux vous dire
Une chose
C'est qu'à l'heure actuelle
C'est vrai
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 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 ?
Non parce qu'il y a
Certaines questions
Qu'on aurait pu plus approfondir
C'est à dire sur les grèves
Il devrait y avoir la suite
Dans les mois à venir
Ouais bah ça
On verra
On attendra le sondage
Du premier
On attend de voir
Si Bill Clinton est encore
Au président
Soit é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à
Donc on va se quitter
Et on va se quitter pour
Pour mieux se retrouver tout à l'heure
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 0803
5 000
Toujours 36 15
Camphone Radio
Rubrique directe
Et l'IRCD
On était combien ?
On est actuellement
1428,6
C'est bien
On continue
On continue
Allez à tout de suite
== Le débat sur les maladies ==
=== Contexte ===
=== Les personnages ===
=== Transcription ===
C'était bien ça, c'est quoi ?
C'était Marie-Josée Perrecq avec les capards C'est Meilleur Chez Soi
Donc vous pouvez toujours nous appeler au 0803 08 5000 08 175 000
Toujours 36 15 4 Fun Radio rubrique directe et sur l'internet de Rigaud qui y est toujours
Donc www.frfunradio je sais plus quoi
Slash Fun Radio
Ouais Slash Fun Radio on était 1400 je sais plus combien
On a dépassé, on arrive à 1584,1
Oh là là là, bravo Gérard
Combien j'ai cru mal entendre là ?
1584,1
Ah d'accord, c'est pas mal
Alors on va accueillir Potchambe, 21 ans de Montluçon
On écoute Fun Radio sur 92.1
Bonsoir
Bonsoir
Jamal, 24 ans de Brest, 103.2
Ouais salut
Girose, 20 ans
Cirose
Cirose, du foie
20 ans Paris, 101.9
Bonsoir
Bonsoir, je sens pas bon je sais pas ce que c'est encore
Ouais non
C'est quand le matin tu t'habilles et que tu sors directement
Quoi ?
Hé, à 2h du matin il est pas encore couché lui là ?
Il a quel âge ?
12 ans
Hé non non
Salut, salut
Non non, ça va pas non ?
Bah quoi ?
Ouais bah j'ai le droit quand même, j'ai pas le cours, je suis en vacances
C'est les vacances Gérard
C'est les vacances on peut
On écoute Fun Radio Gap 90.7
On écoute, t'as pas de problème
S'il te plaît, 22 ans de Dieppe, on écoute Fun Radio 100.1
S'il te plaît, 22 ans de Dieppe, on écoute Fun Radio 100.1
S'il te plaît, 22 ans de Dieppe, on écoute Fun Radio 100.1
Salut Gérard
Salut, répondez bien quand je parle hein, surtout
Dites pas bonsoir quand on vous parle hein, surtout
Bonsoir Gérard
Oui, bonsoir de 17 ans, on écoute Fun Radio
J'habite en Belgique
A Bourbon ?
A Bourbon
A Bourbon ?
A Bourlon
A Bourlon, pas Bourbon, à Brouty
Oh là là, fil d'art
Oh là là
Et on écoute Fun Radio Belgique 100.9, c'est ça ?
Euh ouais, c'est ça
Ok
Ok
Donc alors, le débat c'est sur la maladie
Les maladies
Les maladies
Les petites maladies
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, ah oui
De Bourlon
Tu peux remettre s'il te plaît ?
Oh non ouais, ça va pas commencer hein
J'ai pas entendu, j'ai pas entendu la fin de ta putain de question
Ma putain de question
Attends, merde, si t'es pas contente ma petite
Tu vas perdre ton nom
Tu vas aller au standard, je vous ai dit
Je vais pas me prendre la tête là-dessus
Alors, la grippe s'attrape-t-elle sur le menton ?
Bah moi je trouve que la grippe s'attrape partout
J'en ai attrapé sur la plante de pied, ça me fait prendre du mal
D'accord
Ok, s'il te plaît, va, s'il te plaît
Bah t'es poli, c'est bon
Donc toi ?
Dans le métro
D'accord, je pense que vous êtes vachement bien réveillé pour le deuxième débat, ça fait peur
Merci pour le Larsen
De rien
Dans le TGV aussi
Alors, je sens pas bon
Bah moi, j'ai pas de
J'ai pas de grave maladie
Mais bon, je suis jeune, mais je suis déjà très précise quand même
Mais la grippe, je sais pas
La grippe s'attrape-t-elle sur le menton ?
C'est la question, c'est pas une autre question que je te pose
Bah moi, les maladies, on m'a pas encore pu
Expliquer encore, moi j'ai rien eu au menton
Non mais attends
En 12 ans, t'as pas eu de maladie, tu me prends pour un con là ?
Ouais, j'ai eu la coqueluche, mais c'est tout quoi
Ouais, la coqueluche
T'as pas un petit problème de voix là ?
Si, si, un petit peu, ouais
Il a pas encore muté, c'est pour ça
Bah ouais, à 12 ans, dis donc, ça fait bien
Cirrhose, du foie
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
Ouais, mais de toute manière, la grippe
Elle peut s'attraper sur les
La grippe peut s'attraper partout
Sur les parties les plus sensibles du codor
C'est-à-dire celles du milieu
Et à 12 ans, tu
L'achète, l'achète
Ouais, bah, oh sinon
Hey, gamin, là, tu vas te calmer
Parce que tout à l'heure, tu es allé voir Fildar au standard
Excuse-moi, papa
Ouais, bah, si tu veux pas choper la grippe sur le menton
Tu mets une écharpe, simplement
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é endormi là-dessus
Ouais, on a peur de la personne
Ils sont reculés un peu de la radio
Pour essayer de choper un truc
Attends, qu'est-ce que tu viens de dire ?
Je sens pas bon, là
Je sens pas bon, qu'est-ce que tu viens de dire ?
On a pas envie d'avoir une femme
Parce que je suis, voilà
Ouais, t'es puceau, mais attends
Ça va venir
Ça va venir, Gérard, il l'a encore
Rigo
Oui ?
Ouais, je suis malade
Salut
Non, non, mais
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
Non, mais ça, le problème sur l'acné
On va en parler aussi
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 ?
Ah, non
Non, c'est Gérard
Excuse-moi, j'avais pas lu
C'est Gérard, il y traîne, ouais
Tu sais qui vient de dire ça ?
C'est le petit, mais il s'est pas au courant
Non, non, non, ça, c'est une bonne nana
Donc, pot de chambre ?
Ouais, bah moi, je pense que
En fait, ça s'attrape par les cheveux
Hein ?
Par les cheveux, peut-être
Par ?
Les cheveux
Par les cheveux ?
Les tifs
Ouais, bah, je vois pas du tout le rapport
Les poils, les poils
Si tu mets pas de bonnet, ça va pas après
Moi, Gérard
Moi, Gérard
Je voulais dire que
J'avais aussi attrapé un truc, là
Chez le Tobib
C'est la Gérardite aiguë
Et je peux forniquer qu'avec des boudins
Ouais, ouais, je sens pas bon
Je sens pas bon
Tu vois ce que tu as fait ?
Tu vas aller faire dodo
Au revoir
Sois tolérant
Allez, hop
Bonne nuit pour lui
Gérard
Oui ?
J'aimerais te poser une question
Est-ce que tu crois qu'on peut attraper
Les maladies par téléphone ?
Euh, non, pas spécialement
Pourquoi ?
Heureusement
Bah, je pense que
Je sais pas
On sait jamais, hein
Bon, ok
Gérard
Oui ?
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
Non, bah, lui
C'est quoi un hémorroïde ?
C'est beau un hémorroïde
Bah, je sais pas
C'est pour ça que je demande à Gérard
Des hémorroïdes
Ça s'attrape
Aux couilles
Non, non, non
C'est dans le derrière
Ouais, bah, ouais
Ça y est
À force de mettre du coton-tige
Non, mais c'est que
Souvent, Gérard
Il a des couilles très proches du derrière
C'est peut-être pour ça
Alors, là, j'en connais
J'en connais
Qui parle de coton-tige
Si tu continues
Je vais pas chercher midi à 14h
Je vais en saquer un au hasard
Ouais, c'est pas mal
Dans ton cul
Alors, oui, tu dégages
Allez
Vous avez dit un dit ?
Non, non, c'est personne
Je sens pas bon
Et je viens de le virer
Non, non, mais lui
Tu le vires complètement
Non, mais ça y est, ça y est
Putain, attends, Gérard
Je dis rien, tu veux me virer ?
Non, non, non, ça y est, ça y est
On a trouvé qui c'était
C'est bon
Oui, Rigaud, il y avait une question
Non, qui a passé trop vite
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
Non, ben, je vois pas
Parce que si t'es mort
Tu peux pas avoir de séquelles
Bravo
C'est la première fois
Donc, la diarrhée s'attrape-t-elle ?
Par contre, moi, je peux vous dire une chose
Que la grippe
Je l'ai jamais attrapée
Sous le menton, en principe
Tu l'as attrapée où ?
Tu l'as attrapée où ?
Je l'ai attrapée dans la gorge
C'est tout
À force de gueuler
Elle vient de sortir
Souvent, t'as plus de voix
Non, mais gorge profonde ou pas ?
Ben, ça dépend
Des maladies
Je pense que t'es plutôt gorge profonde
Ouais, gorge profonde à fond
Bon, alors, la diarrhée
Elle est bien pleine aussi, quand même
Tu sais qui parle, là, comme ça ?
Ah, c'est pas drôle
C'est oui
Oui, oui
Oui, alors ?
Tu disais ?
Ah, non, mais attends
C'est pas moi, j'ai rien dit
S'il te plaît, tu disais ?
Moi, je disais rien
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
Non, celui-là, il est officiel
C'est moi qui l'ai récupéré
Hop
Hop
Bon, excuse-moi, Gérard
Je sens pas bon
On a Viagra
27 ans
De Boulogne
Alors, Viagra, bonsoir
Bonsoir
Il est au travail
Ouais
Salut, Viagra
Donc, moi, je voudrais témoigner
En expérience
Non, mais tu retires
Tu retires tes lois de thé d'arrêt
Donc, je te donnerai mieux
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à
Pauline Viagra
Vient d'être introduite en France
Non, non, mais attends
Attends, pour l'instant
Tu vois, c'est pas
Je suis pas encore arrivé
A cette question-là
Alors, tu commences pas
A jouer les gros caïds
Ok, pas de problème
Ok
Alors, maintenant
Je vais faire le petit sondage
Là, qu'on m'a donné
Ouais
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
Non, mais c'est important
De demander ça aux auditeurs
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
Alors, ça
Fille d'or, tu vois
Ton sondage comme ça
Tu peux te carrer dans le cul
Et te torcher avec
C'est pas moi
On a fait un sondage
Sur les auditeurs
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à
Bonjour
Allez
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
Ben, c'est plus en été
Parce qu'il fait chaud
Donc, on transpire
Ouais
Donc, parce qu'en fait
En hiver
Le caca a tendance
A se solidifier
Ouais
Donc, ça fait
Qu'on chie des pavés de merde
D'accord
Euh, oui
Pour toi
Ben, moi, c'est ni en hiver
Ni en été
C'est en automne
D'accord
Ben, c'est bien
Ben, pourquoi
C'est la saison des feuilles
Ah ouais, d'accord
C'est pas mal
Tu vois quoi
Ah non, non, mais c'est pas mal
Ouais, c'est bien
S'il te plaît
Ouais, moi, j'ai la diarrhée
Quand j'ai la chiasse
La chiasse, c'est quoi ?
La chiasse, c'est la diarrhée
Gérard, est-ce que tu pourrais
S'il y a une différence
Expliquer
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
Tu peux la récupérer
Pour la boire, alors ?
Non, non, je pense pas
Parce que c'est dégueulasse
Pourquoi c'est sans bulle ?
Elle recycle tout, l'écologie
Euh, c'est plus le thème
Sur la politique, bien grave
Ok
Euh, cirrhose
Du foie
Alors, tu peux avoir
La diarrhée à tout moment
Et à toute saison
J'en ai rien à foutre
Mais alors ?
Donc, à toute saison
Tu peux avoir la diarrhée
À n'importe quel moment
Voilà, ça c'est
C'est une bonne question
Ce que je voulais dire
Mais c'est bien
On me retire les parles de
On me retire les verres du nez
J'avale
Les verres du cul, c'est la diarrhée
Ta gueule, toi
J'avale
Ouais, ben écoute
Plutôt, plutôt en hiver
Parce que moi, dans la fois
Que j'ai eu la diarrhée
J'avais chopé une hépatite G
Et j'avais eu
Et en plein hiver
Et j'avais une chiasse
Mais l'enfermé
D'accord
Un moustache
Euh
Non mais euh
C'est bien
Que j'ai ton micro
Quand on
Là, c'est pareil
Alors, euh
Donc, euh
Peau de chambre
Ouais, ben moi
Je pense que c'est en automne
Puisque je l'ai eu
Il y a deux jours
Ben, euh
Pour un
Non, tu l'as eu
Il y a deux jours ?
Ouais
Ah ben d'accord
Donc, euh
Tu pourrais préciser ?
Prouve-le
La chiasse, c'est tout
Qu'est-ce que tu veux que je fasse ?
Prouve-le, pétaco
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
Ouais, non
Toi, c'est toi la diarrhée
Heureusement
Parce que ça sera
Un sacré bordel chez toi
Alors, euh
T'es tout petit
Tu en dis encore
Un mot de travers
Je me lève
Et je ne mets plus ma main
Dans ta gueule
C'est pas ta directe
Que de la gueule
Ok
Alors
Doit-on
Troisième question
Doit-on trouver un vaccin
Contre le Viagra ?
On va demander ça
Peau de chambre
Ouais, je pense, ouais
Ben, allô ?
Oh, là, là, là, là, là
J'arrête d'être marreuse
Sans colline, toi
Gérard, ton débat
Assieds-toi
Fais ton débat
Alors, euh
Peau de chambre
Ouais, j'ai dit ouais
Dans quelle phase ?
Ben, je dis oui
Que je suis d'accord, quoi
Mais putain
Mais tu vas laisser ton micro
Éteint
Tu vas faire ton boulot
Comme il faut
Au standard
Ou tu finis le truc de classe
Regarde des connards
Là, qui font le bordel
Tu gères rien
Fille d'art
C'est une honte
Putain, mais
Mais quoi
Ah, putain
Putain, t'es péché, Fille d'art
Ouais, ça y est, ça y est
La droite, elle est partie, ça y est
Ouais, j'ai un coup de tête
Un coup de tête
Putain, Fille d'art
Tu as bossé un peu, là
Parce que ça devient
Rangaine avec toi, hein
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 ?
Alors, ça, le Viagra
C'est...
Je peux témoigner
Moi, je pensais
Qu'on l'attrapait au lasso
Moi, je peux témoigner
C'est Viagra
Donc, moi, ce que j'ai fait
J'ai un peu décollé, 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
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
C'est pas un médecin agréé
Donc, il va prescrire
Attends, ce qui dit n'importe quoi
Tu commences à me casser les couilles, toi
Non, mais c'est bon
On m'a fait un vaccin
Une picousse dans la bite
Et maintenant, c'est encore pire
Parce que c'était de l'adrénaline
Bon, ça y est
Toi, t'as rappelé
Le tour de la question
Gérard, c'est quoi le Viagra ?
Le Viagra, c'est une pilule
Pour ceux qui sont impuissants
Bah, c'est quoi, impuissants ?
C'est pas une maladie ?
Impuissants ?
Non, non, les impuissants
C'est quelqu'un comme Gérard
Ouais, mais attends
Moi, je t'emmerde, toi, connard
Hé, Gérard
Oui ?
Est-ce que tu prends du Viagra, toi ?
Non
Et toi, quoi ?
Non, il a déjà du gras à la maison
Il a déjà du gras à la maison
Il n'y a pas ta gueule, toi
Je ne vais pas te louper, tout à l'heure
Si tu veux saccager le boulot
Tu le saccages
Et tu dégages
Ça va chier pour toi, Filder
Alors, on va demander à...
Oui ?
Salut, ça va ?
Ouais, et toi ?
Tranquille ?
Oui
Allô ?
Oui
Allô ?
Gérard, Gérard, Gérard
Tu as géré les auditeurs
Ta mère !
Oh, la vache, Fildar, il est par terre
Il vient de se prendre un coup de feuille
Un coup de savate
Tu viens de me faire gosser, ou quoi ?
Tu vas se faire gosser
Les gladiateurs
Bon, on va reprendre le thème
Ouais
Allez
T'as l'état de ton micro ?
Arrête, c'est bon
Gérard, assieds-toi, vas-y
Pousse le bout, merde
Il tape Fildar avec des bouts de cadeaux
Vous ne pourriez plus rien gagner dans la journée
Gérard
Arrête, Filipe
Mais tout à l'heure, je l'ai éclaté pour de bon
Je vais laisser le débat terminé
Je vais laisser Rousseau maintenant
Je crois qu'on avait prévenu
Toi, ça avait prévenu avant
Je me perds un boulot comme Hippo
Alors tu vas chercher le connard
Mais vite fait
Salut, ça va ?
Et alors, troisième question, on va demander à Potchambe
Arrête de me barrer, fais le boulot, putain
On va demander à Potchambe
Doit-on trouver un vaccin contre le Viagra ?
Mais je t'ai dit oui tout à l'heure
Tu m'as posé la question en premier
Ouais, d'accord
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
Bah écoute, y'a pas de problème, j'ai acheté une cartouche de vin
Non, non, non, mais
J'avais le Viagra, là
Vous verrez ça pendant la pause publicitaire
Moi, j'aimerais bien me faire mettre une cartouche
En parlant de ça
Gérard, ton débat
T'as dit que t'avais des auditeurs ou c'était quoi ?
Comment ça me fait chier, là ?
Salut, ça va ?
Bon, envoie un disque
Non, non, on peut pas, on peut pas tout de suite
Non, non, c'est moi, t'envoie
On va reprendre dans le calme
Sur l'IRC, y'a au moins 200 personnes qui sont parties
Suite au débordement de Fildar
Merci Fildar
Et on est plus que 2 sur Minitel aussi
Un broutille, va
Combien c'est ?
Plus que 2 ?
Eh ben c'est bien
Tu gères un peu, Phil
Si Rose
Donc toi, pour toi
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
Contre l'obésité, y'a un truc ou pas ?
Contre la connerie
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
J'ai fait ça, regarde, j'ai appuyé là
Ça fait quoi ?
Y'a pas de son
Donc, s'il te plaît
Ne me marre pas, toi, parce que tout à l'heure
Ça va te faire tout drôle, toi
S'il te plaît
S'il te plaît, tu réponds
Oui, je réponds
Moi, je dis que le Viagra,
c'est bien, mais il faut pas en abuser
D'accord, et oui ?
Bah, écoute, Fildar vient juste me remettre
à l'antenne à l'instant, donc j'ai pas entendu la question
Bon, alors, Fildar
C'est pas vrai, je te jure, j'ai pas touché aux touches
Fildar, tu vas dégager pour de bon, toi
Mais non, mais oui, réponds, c'est faux
T'es plus dans l'équipe
Tu vires, tu peux rester chez toi
Non, mais Fildar, arrête de nous couper
Oui, donc, toi
Si tu pourrais me répéter la question, je suis désolée, mais c'est Fildar
Doit-on trouver
un vaccin contre le Viagra ?
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
D'accord, donc Viagra, t'avais répondu, toi
Non, mais répondez pas
Non, non, il est là, il est là
Ouais, je suis là, je suis là
Donc, pour toi ?
Bah, ouais, tout à fait
D'accord, alors, quatrième question
Je pense qu'on va arrêter avant 3h
à cause de Fildar
Non, c'est vachement intéressant
Tu vas pas arrêter à cause de Fildar
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, Fildar, de tes conneries
On est quand même plus de 1000, ce qui est déjà très bien, Gérard
Non, mais tout à l'heure, on était à 1400
S'il n'avait pas déconné, on aurait été à plus de 1600
Là, Gérard, sur le 3615 Fun Radio
ça remonte, vu qu'on est quand même à 47
Ouais, bah, d'accord
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 ?
Non, bah, ça, c'est
je ne vois pas du tout le rapport avec le vaccin
contre le vieux gras
Donc, avoir la cangrène
est-elle une maladie ?
C'est quoi la cangrène ?
Alors, j'explique tout de suite
le truc
C'est un ongle qui est incarné
Je croyais que
Gérard, excuse-moi, je croyais que la réincarnation
c'était dans le bouddhisme
Non, non, la cangrè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 famille
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
T'as vu sa vie ?
Non, non, qui avait eu la cangrène
Elle n'a pas voulu se faire soigner
Oh, s'il vous plaît, vous me laissez parler, merci
Elle n'a pas voulu se faire soigner à temps
et elle a perdu carrément une jambe
Mais bon, ça, c'est une maladie grave
On ne va pas en parler
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
2h32, donc vous pouvez toujours nous appeler
au 0800 308
0875000
et 0875000
Toujours le 3615, Capone Radio, rubrique directe
et toujours l'IRC qui doit revenir normalement
Oui, on remonte d'ailleurs, on a redépassé
quand ils ont entendu que tu virais Fildar du Standard
Ils sont revenus et il y a 1685 personnes
Virgule 4
Fildar, je t'ai dit dehors
Alors, tu vois ?
Attends, attends
Tu me retires le casque, je ne t'ai pas demandé
de le remplacer pour foutre ta merde non plus
Pardon
Alors, on récupère pas de chambre
Bonsoir
Bonsoir
Jamal, rebonsoir
Jamal Doudou
Zirose, pardon
Bonsoir
S'il te plaît
Rebonsoir, oui
Oui, s'il te plaît
Je suis là, mais Manu vient de me rebalancer maintenant
Non, c'est pas Manu
Excusez-moi, je suis à l'arrière
Manu, il m'a mis tout le monde
Là, ça doit être Olivier qui doit s'amuser
Ah bah c'est Olivier, alors c'est un des deux
Viagra, donc, qui est toujours parmi nous
Putain, j'ai la gaule
Bon bah, tu restes poli, s'il te plaît
Donc, alors, la question...
La question, vous l'avez compris ?
Non
Ouais, tranquille, ouais
Mais faudrait que tu la répètes, en fait, ouais
Alors, avoir la gangrène est-elle une maladie ?
Donc, on m'a demandé ça, bah, à Viagra
Bah, oui, bah, si tu le dis que c'est une maladie
Je pense que c'est une maladie, mais moi, je...
Bah, si t'arrives pas à comprendre
C'est pas la peine de continuer le débat comme ça, toi
C'est sûr, avec une bite dans l'oreille, quand même
Allez, hop, s'il vous plaît, là
Vous me virez à Viagra, parce que j'aime pas ça
Gérard
Oui
Merci, il y a Davy One
Oui
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 ?
Bah, en principe, oui, hein
Et il me demande aussi combien ça fait en euros
Ah, ça, je sais pas
Voilà
Donc, on va demander à Oui
C'est pas une maladie, en fait
Non, c'est quoi, alors ?
Bah, c'est toi qui la provoque
Une grippe, ça s'attrape, tu...
Olivier, s'il te plaît
Je peux parler, Gérard ?
Oui
Ouais, donc, je disais
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
C'est ce que j'ai dit
C'est ce que j'ai précisé
Bien avant le disque
Eh ben, c'est pour ça que je t'ai dit
Que c'est pas une maladie
Bah, si, ça peut être une maladie, quand même
C'est pas une maladie, quand même
Ça s'attrape pas
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
Eh ben, moi, je te dis non
Parce qu'une maladie, ça s'attrape
Et la gangrène, ça s'attrape pas
D'accord
Ok, alors, s'il te plaît
Oui
Oui
Oui, ben, je t'écoute
Oui
C'est une maladie, oui
Ah ben, c'est tout ce que tu me réponds ?
Bah oui, c'est une maladie
Bah oui
Bon, alors, Olivier
Tu retournes
Allez, retourne
Non, mais je me suis trompé
Non, mais retourne d'où tu viens
Non, je voulais juste te dire
Parce qu'en fait, à la place de Viagra
On accueille Syphilis
Voilà
Bonjour
Comment ?
Je suis Jean-Louis Connard
Salut, Connard
Salut, Connard
Salut, Jean-Louis
Je suis pas rien
Connard
Donc, on va préciser Jean-Louis
Parce que...
Ouais, non, mais non
T'as pas compris
Non, Jean-Louis Syphilis
Mais c'est Syphilis son prénom
Mais il se l'appelait Connard
Je suis grec
Alors, si...
Ben, tiens, Jean-Louis
Jean-Louis, la gangrène est une maladie
Ok
Ça, c'est sûr
Non, mais tu peux préciser ?
Précise
Jean-Louis, Jean-Louis
Oh, tu précises ?
Oui, c'est Jean-Louis
Salut, Connard
Connard, voilà
Bon, allez, gros
Tous les deux, là
Vous me gérez, là
Parce qu'il comprend rien, là
Je comprend rien
C'est Jean-Louis ou Syphilis ?
Non, c'est Jean-Louis Syphilis
C'est mon prénom et mon nom
Mais tu peux l'appeler Connard
Non, c'est Syphilis
Il t'a dit que oui, c'était une maladie
Donc c'est bon, il t'a répondu
Il est où, Michel ?
Syrose
Oui, ben moi, je suis pas d'accord
Avec lui qui disait que la gangrène
C'est pas une maladie
Moi, je pense que c'est une maladie
Parce que si tu peux la raper, la gangrène...
Bon, elle est celle qui dit n'importe quoi
Tu as commencé par te la fermer
Ouais, tu la vires, tu la vires
Mais par contre, si tu attrapes la gangrène
Est-ce qu'on peut te couper tous les membres ?
N'importe quoi
J'ai le droit de répondre aussi
J'ai le droit de l'exprimer
Sur Yancy, on me demande
Quelle est la personne pas intelligente
Qui essaye de s'exprimer ?
Je suis sûre, ça doit être toi
C'est peut-être une bouffonne, je sais pas
Bon, alors, tu me gères...
Attends, attends, je vire la bouffonne
Non, non, tu la laisses, la bouffonne
Non, mais j'ai viré la bouffonne
Syrose, donc, toi
T'as répondu ?
Oui, c'est une maladie, la gangrène
Mais tais-toi
J'ai le droit de répondre, hein
Non, Gérard, passe aux autres auditeurs, c'est bon
Je crois que tu vas me prendre un peu
Sur les nanas, là
Parce que ça commence à me prendre la tête, là
Javal
Ouais, mais on parlait de petites graines
Moi, je suis donneur, et quand tu veux...
De la gangrène, abruti !
Quand tu veux, les petites graines dans ta turbine à chocolat
Bon, alors, Javal, tu dégages, bonne nuit
Allez, hop, celui-là, on l'envoie se coucher
Il aura tout compris
Il est où, Michel ?
Pot de chambre
Oui, qui c'est qui veut réagir ?
Pot de chambre
Ouais, je t'appellerai, c'est le lit, tout ça, je connais
Donc, ouais, non, ça le saoule, cette question
Non, alors, elle te saoule ?
Tu veux continuer le débat, ou pas ?
Ouais, c'est pour ça, il vaut mieux qu'on passe à une autre question, c'est mieux
Non, mais attends, je fais ce que je veux
Non, elle est nulle, la question
Bon, Olivier, si t'es pas content, tu retournes de l'autre côté
Non, mais non, je suis pas content, mais elle est nulle
Moi, je fais ce que je veux, d'accord ?
Il a raison, Olivier
Moi, je fais ce que je veux
Bon, alors, pot de chambre, tu dégages, bonne nuit pour toi
Allez, hop
Il n'y a plus personne
Non, non, mais vous m'avez récupéré d'autres personnes, vite fait
Sur les 24 lignes, on y va
Alors, les piqûres d'insectes...
D'insectes ?
Les piqûres d'insectes, rendent-ils malades ?
On va demander ça à Jean-Louis
Les piqûres d'insectes ?
Oui
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
D'accord
Donc, je l'ai attrapé aussi
D'accord, Jean-Louis, pour l'instant, j'ai pas envie de parler de sida de ça, ce soir
Ah ouais, tu parles de la gangrène, mais tu parles pas de sida
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
Ah, ok, excuse-moi
Ok
Je suis désolé
Euh, oui, pour toi
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
Ouais, mais dans ce cas-là, t'as qu'à aller voir un médecin
Bah ouais, mais tu sais, le médecin, tu sais ce qu'il va...
En fait, non, je vais t'expliquer, Gérard
Moi, j'ai un antidote, c'est ma salive
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 temps, 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 ?
Ouais, mais ça y est, ça y est, on a compris, on a compris
Non, c'est pas fini !
Ouais, mais maintenant, dépêche-toi, parce qu'il y a d'autres personnes
Et puis il y a une question IRC
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
Bon, ça y est ?
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 ?
Euh, ça, je pense pas, mais...
Je t'en dis, ouais
Alors toi, je t'emmerde, toi, oui
D'accord ?
Bah non
Voilà, comme on sait que c'est elle qui s'amuse depuis tout à l'heure
Bon, j'ai rien, j'ai rien
Et la question, alors, tu penses quoi ?
Donc, bah, attends, tout le monde n'a pas répondu
Non, mais pour l'insecte malade, là, parce que t'as répondu
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
On a qu'une cuvette à la place de...
Je sais pas
À la place de peau de chambre
Salut, Gégé
On accueille Chippo à la place de Javal
Salut, ça glisse ?
Ok
Alors, s'il te plaît
Ouais
Donc, pour toi, la question
Les piqûres d'insectes rendent-ils malades ?
Bah, moi, ça m'a rendu pas mal malade
Il y a une fourmi qui m'a piqué entre les deux seins
Et maintenant, j'en ai trois
Non, mais attends, c'est des fourmis rouges
Ouais, je suis allée en Amazonie intérieure
Et...
Je me suis fait piquer par une fourmi rouge
Bah, maintenant, j'ai dit
Bah, toi, il est soutif, quoi
Non, mais t'as pas...
Tu t'es pas fait vacciner pour aller là-bas ?
Pas contre les fourmis rouges, j'ai pas pensé
Non, mais il y a...
Attendez, s'il vous plaît
Il y a quand même des vaccins
Il faut quand même se faire vacciner
Avant de partir dans certains pays
Oui, mais...
Lesquels, Gérard ?
Non, mais...
Il y a plusieurs pays comme...
Surène
Surène
Ouais, bah, c'est ça
Alors, fermez vos gueules
Si le prochain que j'entends dire Surène, il va dégager
Je vais pas chercher qui c'est maintenant
Non, mais la personne qui a trois seins
Comment elle s'appelle ?
Elle s'appelle...
S'il te plaît, merci pour l'arsène
Parce que même avec trois ou quatre seins
Moi, je m'en fiche
Bon, ok, bah, c'est bon
Alors, vous allez vous calmer
S'il vous plaît, merci
Elle a parlé qu'elle veut vite
Oh !
Regonne, la cuvette est suppos, là
J'ai rien dit
Ouais, on a rien dit
Bon, bah, vous vous calmez, merci
Je veux être calme
Si rose
Oui, je pense que les insectes, ils peuvent...
Elle est encore là, elle est...
Hé, je vous en avoue, je vous emmerde, elle est OK
Non, mais j'ai le droit d'exprimer, quand même
Non, t'as pas le droit
Non, t'as pas le droit
Tu me vires tous les autres
Et tu gardes si rose
Et tu me prends d'autres personnes
Je reprends pas le...
Je continue pas le débat comme ça
C'est bon, c'est bon, j'ai viré si rose
Et j'ai gardé tous les autres
C'est bon, c'est bon, c'est bon
Je vire si rose
Bonjour, c'est l'inverse
Ah, merde
Gérard
Voilà
Alors, tu vires tous les autres
Et je continue pas
Je t'en fais une fiche, Gérard
Alors, donc, ouais
Pourquoi tu connais pas la mouche testée
Qui donne la maladie du sommeil ?
C'est qui ?
Bah, c'est...
C'est si rose
Ouais
Non, mais attends
Mais moi, je te parle
Les piqûres d'insectes
Rendent-ils malades ?
C'est ça, la question
C'est pas...
Justement, il y a la mouche testée
Qui donne la maladie du sommeil
Ah, d'accord
Parce que t'as déjà testé une mouche
Toi, qui rendait malade
Bah, oui, j'ai...
On fait une épidémie
Sur une ville
Que je dirais...
Attends, c'est ce que tu fais, toi
Attends, parce que là
Gérard, il t'écoute plus
Gérard, écoute au moins les auditeurs
C'est ça, mais j'ai entendu ce qu'elle disait
Donc, c'est bon
Donc, alors, maintenant
On va...
On va attendre un petit peu
Que Fildar me retrouve
Des auditeurs potables
Et qu'ils arrêtent de...
Il n'y a plus d'appel
Il n'y a plus un seul appel
Moi, j'ai plein de questions, hier
Ah, oui, connard
Celui qui s'amuse à ça
Va se calmer, Manu, d'accord ?
Sinon, tu vas faire un standard
Ouais, bah...
Alors, il y a...
En attendant
Alors, il y a Turpentine
Qui te demande
Si un lépreux peut attraper la gangrène
Un lépreux, bah, de toute manière
C'est un peu...
Ça vient de chez eux
Ils sont déjà souvent en train
De la gangrène, aussi, là-bas
Chez eux, hein
D'accord
Ouais
Et...
Dub, tu te demandes...
Excuse-moi, quand tu dis chez eux
C'est le pays, ou c'est le...
Ouais, ouais, ouais
Dans leur pays
Non, parce qu'il y a...
Bah, il y a la gangrène
Et la hougraine, aussi
Non, non, non
J'ai oublié d'en parler tout à l'heure
Toi...
C'est peut-être ta réa, tranquille
Non, mais voilà
Fais du bon boulot
Et tu resteras dans l'équipe
Sinon, tu retournes au standard
Avant la fin de l'émission
Oui, chef !
Alors, il y a...
Serval qui me dit
La mouche de la cirrhose
Elle donne la maladie de Parkinson
Non, je comprends rien
Ouais
Est-ce que quand on perd ses doigts
On peut les remplacer ?
De quoi ?
De quoi ?
De quoi ?
De quoi ?
Est-ce que quand on perd ses doigts...
Attends, attends
C'est Baby One qui me dit
Est-ce que quand on perd ses doigts
On peut les remplacer par des Twix ?
Euh, non
Non, parce que quand tu perds tes doigts
Tu peux pas les remplacer, en principe
Ça, c'est pas mal
Et on me demande aussi
Si cirrhose pique quand elle se rince, pas ?
Non, c'est pas les femmes qui piquent
C'est les hommes qui piquent
Quand ils se rasent pas comme moi
Voilà, donc, alors...
Alors, à la place de cuvette
On accueille cuvette numéro 2
Ouais, bien sûr
On accueille suppo 2
Bien sûr, et tu reprends toujours les mêmes espèces de connards
Non, c'est pas vrai
Syphilis 2
Vous vous êtes pas pris la tête
Soutif et pâté de flotte
Non, mais vous avez...
Alors, par contre, il y a cirrhose qui s'en va
Non, cirrhose, elle s'en va
Allez, hop, allez
Ah, on fait une bonne nouvelle
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
Non, mais cirrhose, remplace-la par boulimie
Quand je t'appellerai peau de chambre, tu sortiras de sous le...
Toi, tu fermes ta gueule
Maintenant qu'on a des nouveaux auditeurs
On va reprendre le débat et on se calme
Ouais, on se calme, tout de suite
Donc, alors, il y a un sondage, déjà, je vais le faire
Oh, là, là, là
À la question, être malade peut provoquer des maladies
Alors, ça, c'est même pas la peine que je dirais
Qu'on a ça
Non, non, ça, c'est des conneries
Non, non, non
Les oreillons vont-ils malades ?
On va demander à cuvette 2
Ouais, alors, les oreillons, non, ça rend pas malade
Ça fait juste mal aux oreilles, en fait
Ouais, mais ça peut rendre malade
Oh, non, non
D'accord, suppos ?
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
Non, je vois pas du tout ce que tu veux dire
Fais-moi un...
Ok, cirrhose ?
Oui, les oreillons peuvent être une maladie
Mais ça, c'est surtout pour les garçons
C'est pas pour les filles
Oui, ça paraît que ça fait gonfler les couilles
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
Ça, ça serait bien
Alors là, faudrait peut-être vous calmer un peu
Non, mais ce qu'il faudrait, c'est que tu leur expliques
Non, non, mais attends, au standard, vous êtes pas fait chier
Non, non, non
Moi, perso, ils m'ont dit qu'ils s'emmerdaient grave, ce soir
C'est nul, ton truc, là
Ils sont nuls, toi, tu dégages
Dégage, maintenant
Non, mais non, c'est bon
Je gère
Non, non, tu dégages
Tu dégages
Je vais voir
Donc, euh...
Syphilis ?
Oui
D'accord, et toi ?
Les oreillons, je les ai eus quand j'étais petit
D'accord
Et ça m'a laissé des séquelles
Ouais, bah, je pense pas
Soutif ?
Oui
Donc, toi ?
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
Non, mais attends, les oreillons, ça donne pas la gangrène, hein
Ah si, je te jure, hein
Ah ouais, bah, tu me diras...
Je travaille dans le milieu hospitalier
Je peux te dire que ça arrive
D'accord
Une question...
Oui, il y a Serval qui te demande
Si on attrape les oreillons en écoutant trop fort son Walkman
Euh, non, pas spécialement
Pas telle fois
Oui, bah, tout d'abord, bonsoir, Gérard
Bonsoir
Donc, je viens d'arriver
Oui, bonsoir
Salut
Donc, bah, ouais, il paraît, il paraît, ouais
C'est quoi ta maladie ?
C'est une maladie sexuellement transmissible, en plus
C'est quoi ta maladie, à toi ?
Non, mais les oreillons, bon, je peux...
Bon, qui c'est qui veut poser la question, là, vite fait ?
Voilà, vous répondez, là ?
C'est moi, c'est moi, c'est Syphilis
Je voulais lui demander quelle était sa maladie
À celle qui vient d'arriver, pas telle fois
Bah, pas telle fois, vas-y, pas telle fois, on te pose la question
Bah, moi, j'ai attrapé l'oreillon d'une seule oreille
Suite à un rapport sexuel
Un dérapage de coton-tige
Mais t'es toujours baisable ?
Euh, ouais, je suis toujours baisable
Alors, Syphilis, tu vas te calmer
Comment tu l'as appelé ?
Tu fais quoi, toi ?
Et celui qui vient de dire, en parlant des coton-tiges
Toi, ça va être la dernière fois parce que tu as dégagé
Hé, ça va, tous les deux, là ?
Ça va, là, je vous emmerde trop
Gérard, Gérard
Reviens au débat
Sur Minital, on nous demande si t'as eu la congraine du cerveau
Tellement t'es con
Non, c'est plutôt lui qui a eu la congraine
C'est qui qui dit ça ?
C'est Bibitte
Bibitte, il a quel âge ?
Il a 112 ans
Ouais, c'est ça, j'ai mon cul avec l'orage
Je crois que ça s'attrape dans les toilettes, surtout
Bon, toi, tu fermes ta gueule
Bon, alors, encore une fois
Cette 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 une fois
Ces deux connards
Après, c'est qui qui paye ? C'est les auditeurs
C'est pas de ma faute, dans ces cas, vous avez qu'à vous apprendre
Après, Olivier et Fildar
C'est pas de notre faute si t'es une équipe de merde
Pour l'instant, il y en a deux qui font du bon boulot
C'est Manu et Fildar
Et Rigaud
C'est Manu et Rigaud qui font du bon boulot
Les deux autres, c'est deux cons
Alors, l'éthique
C'est des faillots
L'éthique, sont-ils des maladies
Qu'on peut avoir en
automne ?
Qui c'est qui pose et qui répond
comme ça ?
Non mais donnez pas vos noms, s'il vous plaît
C'est Pedro
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
J'aimerais bien que vous
réfléchissez 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
C'est facile, ça
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
Il faut qu'il nous cite
Celui qui a voulu répondre
répond maintenant
Tu donnes ton nom et tu réponds
Gérard, il se casse le cul une semaine pour faire un débat
Putain, mais c'est quoi cet auditeur
qui a voulu répondre et qui ne veut plus répondre maintenant ?
C'est qui, encore ?
Moi, je vais répondre
C'est Philippe, dégage, on va terminer pour toi
Mais c'est pas moi
Celui qui se marre va dégager aussi
Oh là là
Celui-là, je crois que ça commence à bien faire
Je leur ai dit ce qu'il fallait qu'il fasse
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 Crico qui va, c'est Manu
Ouais, ouais, ouais
Attendez, après le débat, on va discuter la semaine prochaine
Oh, j'ai rien fait, Gérard
Non, non, je veux pas le savoir, vous faites du boulot de merde
Alors, pas cette fois pour toi
Tu peux répéter la question, s'il te plaît ?
L'éthique
De quoi ?
L'éthique, sont-ils des maladies qu'on peut avoir en automne ?
Non, c'est des petites bêtes que les chiens attrapent
Voilà, d'accord
C'est ce que je voulais t'entendre dire
Soutif
Allô ?
Oh, Gérard, Gérard, Gérard
Arrête de t'en faire sur tout le monde, Gérard
Plus jamais, merde
Non, c'est ma faute, c'est ma faute
C'est ma faute, excuse-moi
Non, non, oui, tu dégages
Gérard, pour revenir au débat
Attendez, les auditeurs, attendez
Pour revenir au débat
Enfin, on va faire un vrai débat
Il y a un petit débat
Merde, là
Et toi, t'arrêtes de bosser comme il faut
Sinon, t'en prends autant
D'accord
Bon, ben voilà
Ben non, je l'ai raté
Ben, le...
Bravo, le fil d'art
Merci, merci, fil d'art
L'auditeur qui a voulu poser la question, celui-là
C'est, s'il te plaît, tu peux revenir
Je te remercie
C'était Oxyd, Oxyd, tu peux répéter
Reviens, tu connais l'adresse
Je l'ai, je l'ai
Alors, la politique des maladies gêne-t-elle les camionneurs qui jouent du synthé ?
Ça, je vois pas du tout le rapport avec les maladies
C'est pas grave
Donc, à la place de Syphilippe, tu me prends quelqu'un d'autre
Ben, si, Jean-Pierre, là
Fais gaffe, fil d'art
Parce que tu vas t'en prendre autant qu'Olivier
Je vais trouver un truc
Si, Rose
Oui, ben, comme elle disait, paté de foie
Les tiques, ça s'attrape
C'est dans les animaux, quoi
C'est dans leur poil, quoi
D'accord
Suppos de...
Quoi ?
Ouais, ben...
C'est dans leur poil
Ouais, c'est dans les...
Mais non, un tique, c'est genre quand tu clignes de l'œil
C'est un tique
Il y en a, mais il y a...
Ouais, mais il y a...
Attendez, paté de foie
Bon, mon tique, c'est le prout
Oh, ta gueule, toi
Bon, alors, suppos, tu dégages
C'est pas grave, réponds, vas-y, vas-y, vas-y
Réponds, parce que moi, ça m'intéresse, ça
Non, parce que les tiques, il y a certaines personnes
Qui ont des tiques qui n'arrêtent pas de bouger les épaules
Ou de se gratter la moustache
Ouais, comme moi
Moi, c'est un tique de me gratter la moustache
Voilà, c'est ça que je voulais dire
Donc, c'est pas du tout dans les bêtes, paté de foie
Ah, ouais, non, mais enfin, moi, tu me parles de tiques
Moi, tout de suite, je...
Non, mais des tiques, t'as certaines personnes
Qui ont des tiques sans arrêt
Non, mais tu comprends bien
Oui, mais, ouais, bien sûr
Ça peut aussi aller dans les animaux
Je suis d'accord avec Siron
Donc, suppos, t'as répondu
Alors, réponds
Les tiques en automne, ouais, les taques en hiver
Les tiques en été et les toques au printemps
D'accord, ben...
Gérard, on me demande si les tiques sont politiques
Non, non, je vois pas
Merci, merci
Je vois pas du tout le truc
Excuse-moi, Gérard
C'est drôle
C'est galéré
Donc, en fait, c'est un prénom composé
C'est Marc, Serge, Thierry, mais tu peux l'appeler MST
Bonsoir
Salut
Salut
C'est Cuvette, j'ai pas répondu à la question
Vas-y
Je pense que c'est des petites bêtes qui mangent les caniches
Mais je viens de te dire
Que ça servait
C'est aussi sur les humains, mais
Je suis sûr que les chiens aussi, quand même
D'accord, donc, MST
Oui, alors, les tiques, ben oui, comme disait la génération
Demoiselle, qui est toujours baisable
J'ai bien repéré son nom
C'est qui, alors, vas-y ?
Celle qui a trois seins
Alors, moi, je dirais
Elle est plus là, celle qui a trois seins, je te signale
Dommage, dommage
Elle est morte, elle avait quoi comme maladie ?
Non, mais je vais te dire, depuis tout à l'heure
C'est l'autre auditeur qu'on a
Ah, Syrose, il y aurait Syrose
Ouais, ben, Syrose, elle vous emmerde
D'accord, bon, que moi, les tiques, ouais, c'est comme disait la personne
C'est pour les chiens, c'est une maladie des chiens
Non, mais, on vient de dire tout
MST, t'as pas encore
Euh, pâte-toi, tu te calmes, s'il te plaît
C'est un espèce de
Non, mais, les tiques, c'est un espèce de morpion canin
Qu'il y a sur les tresses
Quoi ?
C'est un espèce de morpion canin qu'il y a sur les tresses
C'était tout, en fait
Ah, mais je te jure
Bon, de toute manière, il est 50-30
De toute manière, je pense qu'on n'ira pas jusqu'au 10
Bonjour, c'est un message qui s'adresse
Au connard qui habite à côté de chez moi
C'est moi
Euh, ça y est, pour celui qui s'amuse à ça
Gérard ?
Je peux te répondre ?
Ouais, sous-type
Moi, j'ai des tiques, mais la décence m'interdit de le dire au téléphone
Je te mets des doigts
D'accord
Peut-être une voix qui m'excite pas du tout, je te l'aide, je le dis
Bah, toi-même
S'il vous plaît, ça va, de faire votre propre
On va peut-être revenir dans le débat
De toute manière, c'est la dernière question
Mais non
J'en ai plein pour toi
Si c'est tout, là, si tu dégages, MST, d'accord ?
Allez, allez, la question
Alors, à l'heure des coups de soleil, vous rendent-ils
malades ? On va demander à
Cubette
Ouais, ouais, moi, ça me rend vraiment malade
Bah, t'en as déjà eu ?
Euh, non
Non, bah, alors, comment tu peux...
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
D'accord
C'est pas con, ça, hein
Je suis courageux, mais pas téméraire
D'accord, ok, suppos
Ouais, non, les coups de soleil, moi, ça me dérange pas
Les coups de victoire non plus
Non, mais attends, tu réponds correctement à la question
Pas à côté, s'il te plaît
Les coups de soleil, ça me dérange pas
Et les coups de victoire non plus
Les coups de...
Victoire
D'accord, mais non, mais je crois que, toi, tu comprends
Pourquoi ?
Non, mais je crois que t'as un peu bouché des oreilles
Ouais, ouais, bah, j'ai...
C'est une maladie
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 ?
Mais là, tu penses que t'es un solotone ?
Ouais
Alors, Siroze ?
Non, moi, les coups de soleil ne me font pas attraper de maladie, c'est que...
On en a déjà
Non, non, c'est pas ça, mais c'est que moi, je brosse facilement, j'ai une peau...
C'est black ?
Non, elle est pas black
Ah non, tu la connais ?
Non, non, elle a une jolie peau, elle est belle, tout ça
Elle est pas black, elle est sale
Oh, s'il vous plaît, là, vous la laissez parler, merci
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
Gérard ?
Ouais, de la crème sur le chapeau
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
Non
Ils nous disent que c'est un super remède
Non, pas du tout
MST ?
Bah oui, c'est comme l'invité mystère, moi, c'est... je mets de la crème, mais pas sur le chapeau, je suis pas débile
Non, mais attends, toi, t'es un peu...
Non, mais je crois que MST, il est un peu con, lui
Non, non, mais attends, elle a dit qu'elle mettait de la crème sur le chapeau, ça sert à rien
Mais non, je mets de la crème sur le corps
Oh, encore pire
Tu veux me faire vomir ou quoi ?
Non, mais attendez, il y a des...
Oh, je vous signale qu'il y a des crèmes solaires pour...
Pour le corps, hein, au corps, vous le saurez pas
On appelle ça de la vaseline
Ouais, c'est ça, et ta connerie, on appelle ça de la merde
Ah, si tu veux
Ok, alors Soutif
Oui ?
Donc, pour toi ?
Bah moi, quand j'ai des coups de soleil, c'est un foulard carré
Ah bon, d'accord, carrément, toi ?
Bah carrément, j'évite de me faire bronzer le derrière, puisque à chaque fois, ça le fait, alors...
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
Au hasard
Ok
Discrimination, c'est pas du tout
Alors, Soutif
Oui ?
Donc, si tu me disais...
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
Ouais, mais en Normandie, je pense qu'il y a quand même pas mal de soleil
Je suis allée un an en Normandie, il y a eu 15 jours de pluie, et les 15 autres jours, il a plu
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
Oh, bah, t'as tout compris
Ah, d'accord
Oui, j'ai pas trouvé, donc j'ai pas eu la diarrhée
Ça te sert d'aller au restaurant, hein ?
Euh, oui
Avant qu'on n'ait pas t'étoie
Voilà, 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
Non, dans la lune
Non, mais, alors là, je vais te dire une chose
Chiant, c'est même pas la peine que je réponde à ta question
C'est Le Chiant
Le Chiant, t'as même pas compris la question
Non, mais ça existe, les coups de lune
Euh, pâté de foie
Les coups de dent, la lune
Ouais, bah...
Non, mais il comprend rien
Ouais, c'est...
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 abronzée
Comme ça, au moins, je suis sûre de pas attraper de coups de soleil
Donc, tu reviens à ce que je te disais, qu'il y avait des crèmes solaires pour éviter d'attraper des coups de soleil
Ah, c'est l'huile solaire
Voilà, mais il y a bien de...
Avec un indice, zéro
Ok
Au moins, tu comprends
Euh, qui c'est qui vient s'amuser à dire ça ?
Mais c'est une vieille chanson
C'est sympa, cette chanson
C'est la fête, fête, la fête
Ouais, bah, je pense pas
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
Parce que les écrans totales, ça fait bronzer, hein, Gérard
Comment ?
Les écrans totales, ça fait attraper des coups de soleil
Euh...
L'huile
Ouais, mais t'as certains trucs, comment qu'on appelle ?
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
Non, mais il y a aussi les...
Manu, si tu pouvais m'aider, là, tu sais ?
Oui, les gens, là, au...
Ah, sur les sonos...
Ah, je peux t'aider, Gérard ?
Les UV
Non, mais quoi ?
Les crans anales
Non, non, toi, tu m'as fait du mauvais boulot
L'autobronzant
Ouais, il y a les...
Les trucs où tu te mets dans une machine, là, et ça te...
C'est des sonars, ou sinon, il y a...
Un bronzé
Il y a aussi...
Là, il y a un problème
Il y a des néons aussi, je sais plus comment qu'on...
Les UV
Ah, ouais, les UV
C'est moi qui t'ai aidé
Non, mais toi, tu fermes...
Toi, je t'ai dit de la fermer, je veux que tu m'entendes
Je t'ai fait du boulot de merde
Allez, hop, dégage
Alors, tu t'es...
Gérard, c'est pas le thème du débat
Au standard
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
Euh, non
Et pendant une éclipse de lune, demande Turpentine
Putain, mais c'est bidon, l'Internet, c'est pas les maladies, ça
Bah si, on parle des coups de soleil dans cette question
Mais attends, ils sont moins cons que toi
J'aimerais bien faire un débat un peu potable
Ouais, mais attends, c'est...
T'as déjà foutu ta merde, alors ça suffit comme ça
Franchement, t'as fait des trucs trop inconcevables ce soir
Alors, dernière question, parce que...
Ouais, mais il a été avec ses crabes
Il est inconvenable
Oh là là
C'est horrible
C'est lamentable
Oula
Je sens que Fildar, tu vas t'en prendre une, hein
Mais c'est un débat constructible
Alors, l'acné, euh...
Tu te calmes, toi, parce que avant que tu gerbes...
Je vais t'emmener mon rib
Je sens que tout à l'heure, on va finir à trois que six
À trois que six ?
À trois auditeurs au lieu de six
Attention, parce que je vais pas chercher tout à l'heure
Je vais se virer au hasard
Bah non, il est là
Alors, l'acné, est-elle une maladie qui s'a...
L'acné
L'acné ?
La quenée
La quenée ?
La quenelle
L'apostrophe A-C-N-E
Bon, tu me dégages, je vais m'ester, allez hop
J'ai pas le vaccin
L'acné, L'apostrophe A-C-N-E
Dans la queue au bout du nez, on dit
Euh...
C'est toi qui viens de dire ça, là-bas ?
Non, j'ai rien dit, moi, par contre
Alors, donc, on va demander à Cubette
Ouais, bah moi, je pense que c'est pas...
Je sais pas ce que c'est comme maladie, en fait
Bah, tu sais pas que t'as jamais eu de l'acné ?
Bah, si, peut-être, mais je connaissais pas, en fait
Je savais pas que ça existait
Bah, si, ça existe, hein
Ça existe
Et c'est quoi, comme truc ?
Bah, je te le dirai tout à l'heure
Suppos
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
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 ?
Ouais, toi, on devait t'appeler le trou noir, à l'école, avec ton petit truc
Et toi, on t'a jamais appelé tête de con ?
On met une cliquette dedans, elle disparaît, hein, hop
Allez, hop, suppos de la bonne nuit pour lui
Je voulais dire que j'avais fait de l'acné
Mais ce qui me dérangeait, c'était les méduses
C'est qui qui vient de répondre ?
Qui c'est qui vient de répondre, là ?
Je sais pas, moi
MST, t'as un nom de maladie ?
MST, je te l'avais dit de dégager, Fildar
Alors, il dégage
Gérard, mais t'es nul
Gérard, il y a TomJPSG qui me demande
Si l'acné sur le sexe existe
Ouais
Attends, il rajoute
Surtout suite à la sodomie dans les chiottes de la...
Ah, excuse-moi
Ouais, d'accord, lui, il peut garder ses réflexions
Siroge
Oui, l'acné
C'est quoi, c'est...
L'acné, tu ne peux être une maladie
On n'écoute même pas la question
Oh, tu t'écrases, tu vas être, s'il te plaît, merci
Si j'essayais de parler tous en même temps, je pourrais répondre
Mais qu'est-ce que c'est ?
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
D'accord
Soutif ?
Oui
Donc, pour toi ?
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
Ouais, mais...
Grèves de peau, des choses comme ça
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
Bon, alors, on a un petit secret qu'on ne dit pas, en fait
Parce que, bon, on n'a pas envie de faire notre business
Mais la masturbation enlève les boutons
Ah, d'accord
Ben, ça, c'est la première fois que j'en sens ça
Gérard, sur Minitel, on nous demande
Si toi, plus jeune, tu as eu de l'acné, justement
Attends, laisse-moi finir avec pâté de foie
Sur IRC, on me demande combien de temps
T'arrives à tenir en acné
Bon, ben ça, je ne répondrai même pas à cette question
Excuse-moi, Gérard, à la place d'émission, on accueille Petit Quiste
Non, mais, hé, ce n'est pas la peine
Je suis dans le cours
Je suis dans le cours
Non, mais, t'es vraiment une pute
T'es vraiment une pute
Je t'ai dit que ce n'était plus la peine de prendre d'auditeur
J'ai arrêté
Je suis dans le cours
Je suis dans le cours
Et à la place de suppôt 2, on a suppôt 3
Non, non, non, c'est pas la peine
Non, non, mais c'est terminé, là, le débat
Bon, arrête, on fait la conclusion, au moins
Non, non, non, vous avez été trop cons
Grâce à Fildar
On a perdu près de 200 personnes sur l'IRC
Merci, Fildar
Ils sont revenus, on est presque 2000
Grâce à lui, on avait perdu
Quand même 200 personnes
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à
Pâté de foie pour la dernière question
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
N'importe quoi
Bon, allez, tu me dégages ces trois caves
Elle a raison
Tu me viens de suppôt 2
Et le dernier est arrivé
Terminé, terminé, terminé
Terminé, terminé, terminé
J'en ai ras-le-bol
À chaque fois que les naines apparlent, on leur coupe les paroles
Alors, maintenant, c'est terminé, tu me les vires
Hop, bah, ça
Ça va aller plus vite, on termine le débat
Avec trois...
Ça sera évident, quand même
Non, non, pareil
Non, petit quiste, il a rien dit, tu vois, c'est bon, quoi
Alors, cuvette, j'en veux plus
Ouais, c'est bon, cuvette, il est viré
Et, euh, voilà
Alors, donc, pâté de foie pour toi
Donc, tu me disais
Pâté de foie, s'il te plaî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é
D'accord
Alors, l'acné au visage, l'acné sur les bras
L'acné sur le bout des seins
Dans le dos
Dans le dos, c'est dégueulasse
Ouais, dans le dos, aussi, ouais
Donc, Rigaud, comme je vois qu'il y a des questions, je pense
Bah, ouais, il y a dévi1 qui te demande où t'as mis l'acné de chez lui
Parce qu'il est dehors et il sait pas
Non, non, mais on s'est même pas dit
Donc, Manu, tout à l'heure, tu m'avais posé une question, toi, sur l'acné
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
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
T'as dû bouffer du saucisson, quand même
Non, non, mais ça, attends, laisse-moi finir
Ou en pétant avec une trouille
Oh, ta gueule, toi, petit kiste
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...
Pas de marque
Non, mais il y a des savons spécialisés
Des savons spécialisés, et puis des trucs comme du pouce-mousse-mousse
Du quoi, du quoi, du quoi ?
Pas de marque
Des gens de pouce-pouce, là, pour se laver les mains
C'est un produit spécial, donc...
Du directol
Alors, dernière question pour finir le débat
On remercie en pile d'art du bordel qu'il a fait jusqu'à maintenant
Alors...
Qui c'est qui parle, là ?
Petit kiste
Alors, petit kiste, ça, ouais, tiens, je...
Je l'avais pas vu, lui
Tiens, réponds, toi
Ah, bah, je suis là, regarde
Bah, réponds
Ouais, bah, oui, l'acné, moi, j'en ai jamais eu
Mais j'espère que j'en aurai jamais
Non, mais...
T'en as jamais eu, d'accord ?
Mais si un jour, t'en attrapes, tu te demanderas pourquoi
Je te le refile
Ouais, non, mais je te demande si c'est une maladie
Bah, ouais, c'est une maladie, hein
Bon, bah, alors...
Il y a des personnes qui ont...
Mais il y a des personnes aussi, c'est tout concentré
Dans une partie du corps
Mais si je dis le coup, ça va te vexer, donc je le dis pas
Moi-même, de toute manière, je le sais
Mais moi, c'est pas de l'acné que j'ai dans le cou, tu vois
Oh, pourtant, il y a du pus dedans, c'est pareil
Non, non, non, c'est pas du tout, c'est pas...
D'ailleurs, Gérard, il y a un seigneur qui demande
Si on peut se nourrir du pus de l'acné
Ah, non, là, je vais te dire une chose
Le mec, voilà, c'est une question
C'est seigneur, quand même
Ça donne faim, toi
Arrête, Gérard, assis-toi
Gérard, Gérard
Ah, ouais, non, mais Gérard, c'est pas de ta faute
Alors, pour terminer la dernière question
Donc, tout le monde a répondu
Comme il ne reste plus que Syros, Petit Kist, Soutif et Paté Toit
Donc, dernière question
Non, suppos, j'ai dit que c'était terminé pour toi
Non, mais deux, on a trois, il est là
Non, mais attends, parce que
On a peut-être que vous passiez votre boulot correctement
Ce temps-là
Au premier débat, Manu l'a fait
Manu l'a fait super bien
Toi, c'est de la merde
Écoute, Gérard, on a réussi à envoyer deux suppos
On peut en envoyer un troisième, quand même
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
C'est faux
Toi, à part
Chercher une voiture caca, c'est tout ce que tu sais faire
Qu'on vire ta merde
Ok, dernière question
Petit Kist, deux
Ouais, c'est ça, bien sûr
Gégé, écoute-moi, la famille suppos
On est trois frères, c'est comme les Hansons
Parce que nous, c'est les suppos, c'est tout
Bon, c'est bon, arrêtez vos conneries, parce que vous commencez à me les gonfler
Allez, Gérard, dernière question
Allez, allez, on y va
Il est 3h10, donc le débat
Le dépistage peut-il vous rendre malade ?
Ouais, je pense que ouais
Ouais, alors vas-y
Je pense que ça peut te rendre malade
Ça s'arrête là
Non mais attends, dans quel sens
Que ça peut te rendre malade ?
Allô ?
Allô, Gérard ?
Non, mais Gérard, j'ai été coupé par Phil là encore
A tous les coups
Non, je disais donc que ça peut rendre malade
Dans le sens où ça peut rendre malade
D'accord, c'est bien
Petit Kist, tu vois bien que le dépistage
Ça rend malade, je sais pas si t'as vu
Quand Chomara, elle a fait une queue de poisson à Jacques Villeneuve
Il a eu la chiasse, Chomara
Et ta connerie, elle a eu la chiasse ?
Non mais tu parles de ça, du dépistage, moi je te réponds
Il a dépisté, voilà
Non mais attends, le dépistage, tu sais ce que c'est ?
Bah oui, c'est quand il sort de la piste, voilà
N'importe quoi, enfin bref
C'est quoi le dépistage, Gérard ?
Non mais je vais laisser tout le monde parler, après je...
Non mais comme ça tu diras pas, bien sûr
Le dépistage sur IRC...
Attends, toi tu m'éteins le micro et tu t'écrases maintenant
Je peux t'entendre jusqu'à la fin, ok ?
Sur IRC, on me dit, le dépistage, c'est quand tu...
Quand tu coupes tes pistaches en D
Non plus
Alors, Sirose
C'est le dépistage, quoi ?
Bah le dépistage, peut-il vous rendre mal...
Eh, qu'est-ce qu'elle éconne, à ton mère, toi pétasse, là
T'as compris ?
Ah mais pourquoi ils sont méchants avec moi, je comprends
Non mais attends, celle-là, je vais la calmer
Parce qu'elle va répondre tout de suite
Soutif ou peut-être moi, maintenant vous répondez toutes les deux
Oui, Gérard
Alors vas-y
Alors tu réponds
Vas-y Soutif
Vas-y Soutif, je te laisse la parole
Euh, le dépistage...
Ouais, ouais
Regarde Richard Virac
Bon d'accord, toi...
Pas de marque, pas de marque
On l'a dopé à la suite de son plein gré, maintenant il est malade
Donc on le soigne en lui faisant des piqûres
Mais je vois pas du tout le rapport
Je te dis qu'il est malade, donc il a été dépisté gravement même
N'importe quoi, toi tu comprends
Je crois que t'as été...
Je me demande si t'es vraiment une infirmière
Gérard
Gérard, c'est moi
Ouais, sur Minitain, on...
On nous demande si chez toi aussi, ta pisse, elle tâche
Ah, exactement
Alors, qui c'est qui pose cette question con ?
Euh...
Question con
Sur IRC, c'est pour continuer
Bah, question con, bah c'est un con
Voilà, c'est tout
Est-ce que la piste tâche ?
Ouais, pareil
Ce serait pareil sur l'IRC
Pas tête-poids pour finir ?
Euh, non, non, le dépistage, au contraire, c'est fait justement pour éviter les maladies
Et voilà, quoi, point barre
D'accord, bah, c'est bien
Gérard, il y a Yankee qui te conseille d'aller faire un dépistage de trisomie
Bon, bah, lui, il ferait mieux de faire...
De se taire un petit peu pour dire des conneries
Cyrus, pour finir ?
Bah, non, le dépistage peut pas être une maladie
Dépose, dépose, dépose
Merci
Allez, faites la fête
Gérard, la conclusion aussi
Non, non, mais vous laissez Cyrus finir, s'il vous plaît, merci
Allez, la grosse, là, dépose, espèce de fainéance
Alors, petit kiss, tu dégages
Allez, hop
Tu viens dans le coup, hein
Allez, hop, dans le coup
Un coup de calpe
Pas dans le cul, parce que je suis poli
Quelqu'un a dit comment vous voulez, hein ?
Non, moi, je veux m'appeler...
Bon !
Et on n'a que une chaude pisse
Et vous êtes vraiment des fils de putes, hein ?
Vous êtes vraiment des fils de putes de faire chier les gens comme ça
Oh, là, là, moi, je suis outrée, là
Ouais, salut, c'est Blénoragie
Je peux répondre, Gégé ?
Vas-y
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
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 que j'ai pas parlé
J'ai pas voulu parler non plus du sida
Parce que c'était un problème trop important
Et ça, je ferais un débat dessus avec le cancer du sein
Je ne sais pas quand
Je vais voir ça avec le chef
Mais sans fil d'art au standard
Faut vraiment qu'on le travaille, ce débat
C'est le débat
2012, le débat, hein ?
Là, ça peut être joli
Ça peut être votre dernier
Non mais attends, c'est un point
On va voir, mais je pense qu'on l'est pas du tout
On le fait, on le rejette, on l'envoie à la CLT, à la CIA
On l'envoie à la CSA, à tout le monde
Ils valident
Qui serait qui reste, là, maintenant ?
Alors, on va demander à la cuvette
3h12, hein, Gérard
On fait conclusion, hein ?
Donc, conclusion, cuvette ?
Ouais, bah, ton débat, il y a mieux
Parce que, enfin bon, c'était un peu trop compliqué pour moi, je pense
Non, bah, t'avais qu'à comprendre un peu
T'avais qu'à comprendre, t'avais qu'à mieux dire
T'avais qu'à mieux t'exprimer, surtout, en fait
Ouais, non, mais vous avez qu'à vous adresser à Pildar
Non, non, non, c'est tout
Tu fais mal ton boulot
Non, non, mais c'est Pildar qui a foutu sa merde
C'est Pildar qui a foutu sa merde, cuvette, d'accord ?
Alors, tu le remercieras en lui disant au revoir
Suppos
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
Alors, toi, mon pote, c'est la dernière fois
que tu passeras dans mes débats, d'accord ?
Ok
Petit quiste
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
Bah, si, parce que c'est grâce à Pildar
si c'est un merdé
Non, mais non, mais non
C'est la cause
La cause, c'est Pildar
Parce que, maintenant, Rigaud, avant que tu termines
On va essayer d'avoir...
On demandera le chiffre après
Après, après
Donc, pour toi, alors
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 ?
Bah, ouais, mais dans ce cas-là
Quand je vous pose des questions
Si vous voulez pas répondre dans ce cas-là
Ça sert à rien qu'on vous sélectionne pour faire les débats
Si vous ne voulez pas répondre
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
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
Bon, d'accord, je suis d'accord avec toi
Voilà
Je te souhaite une bonne soirée
Ok, bah, moi aussi
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 j'ai Fildar
Ouais, bah, c'est bien
Tu peux retourner le voir, alors
Voilà
Donc, pas tête-fois pour toi
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 à Fildar
Si tu sais pas gérer toi-même ton équipe
Ouais, bah, dans ce cas-là
Fildar, 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
Ouais, mais enfin, c'est quand même grâce à lui
Que t'as des auditeurs, quoi
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
Ouais, enfin, Gérard
Si t'es pas capable de gérer
C'est ton problème
De toute manière, dans l'équipe
Y'en a que deux qui font bien leur boulot
Et c'est tout
Les autres
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
Eh bah, si t'es pas content
Tu as bouffé ton pâté de foie
Ok, salut
Oh, joli
Cirrhose, pour finir
Cirrhose
T'es vraiment une tue, toi
Mais c'est pas moi
Mais c'est pas moi
Mais c'est pas moi
Je crois que, voilà
Tu peux arrêter la sonnerie, finalement
Voilà
Attends, toi, je te jure
C'est la dernière fois
Donc, conclusion
Ouais, 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 fils de pute
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 sec
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
Non, mais pas du tout
Pas du tout
Mais bon, y'a quand même combien de connectés ?
Y'en a eu
On a fait 1995
Ah bah
Bravo Gérard
C'est l'exploit
C'est le record
Je crois que c'est un record mondial, alors même
Bravo
Non, non, mais toi
Toi, tu m'en as fait virer quand même 200
Il a eu du mal à les récupérer
Ouais, beaucoup de mal
Mais t'avais perdu les numéros, aussi
Ouais, mais
En plus
Quand tu as une personne
Qui n'a pas fait sa conclusion
Tu l'as carrément raccroché au nez
Non, c'est elle qui a coupé
Non, non, non
Non, non, non
Non, parce que je vais l'appeler
Je vais demander
Ah, tu la connais ?
Bien sûr
Ah bon
C'est qui ?
Non, à ton avis
Ah, c'est Sandy
Ouais, bah bravo
Bravo Gérard
Alors, fais-moi confiance
C'était qui ?
C'était Sandy
Non, mais
De quoi ?
Personne n'a reconnu
Mais qui ? C'était quoi son nom ?
Cirrhose
Oh
T'as déguisé bien sa voix
C'est pour ça qu'on entendait
Vas-y, là
Ah, non
De quoi ?
Je comprends mieux
Non, mais je comprends mieux
Je comprends mieux
Ouais, ça m'étonne pas de Manu
Bah, conclusion
C'est dommage que Fildar
Il a foutu sa merde
Ah, oui, je sais
C'est une belle conclusion
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
À moins qu'il travaille
À moins qu'il travaille
Non, non, bah, il va travailler
Déjà, il va essayer
Je vais essayer de rattraper des points
Je vais faire un stage
J'ai entendu ce soir
Qu'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
Bah, on va le mettre
Avec Bébé Rose, ouais
Voilà
Avec la catastrophe
Donc, moi, je peux
Comment ça, la catastrophe ?
Moi, je peux dire quand même
Merci à Manu
Des deux débats
Parce que c'est la première fois
En je sais pas combien de temps
Que tu me remercies, Gérard
Donc, et puis, surtout
Merci, Rigo
D'avoir fait ton boulot
Correctement
De rien, Gérard
Fildar, je te remercie pas
Parce que tu m'as fait de la merde
Je te sers pas la main
Donc, voilà
Donc, on s'écoute
Ah, je sais pas
Le disque
Bah, moi, je sais plus
Je sais pas
Allez, file le dernier titre
Je suis parti de l'équipe
Mais moi, je te réintègre
Allez, vas-y
Non, non, c'est pas lui
Qui commande
Dans les débats
Le jeudi, c'est moi
Je crois que c'est
Technolab avec Fusion
Voilà
Et demain
Ben, le droit de l'impro
Y'a pas de problème
Là, vous allez retrouver
Rigo pour la nuit sans pub
Ouais, je vais faire
La nuit sans pub, ouais
Vous allez retrouver
Rousseau pour la nuit sans pub
Et dès demain matin
6h, Barthe
Avec des scooters à gagner
Et bien sûr, demain soir
Dès 22h
On se retrouve
Le Star System
Yes
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
Par le guet
Par les guets, ouais
Voilà
Il y en aura plein, t'inquiète pas
Bonne nuit à tous
Et à la semaine prochaine
Ouais
À la semaine prochaine
== Le débat sur l'armée ==
=== Contexte ===
=== Les personnages ===
=== Transcription ===
Et on est déjà 1664 !
Ah bah d'accord, on commence déjà fort !
1664 !
On commence déjà fort, il est 0h19, on accueille Canif... Caniche...
On fait quel débat là Gérard ?
Sur l'armée !
Voilà, donc on accueille les auditeurs.
Canis !
Canif !
On peut écouter FN Radio sur 94.5
Bonsoir Gérard !
Bonsoir, Tagada 21 ans, Paris 101.9
Salut !
Salut !
Ah, Tagada !
Andouille, 20 ans de chinois, on peut écouter FN Radio sur 100.2
Salut Gérard !
Salut !
Croupion, 22 ans, Verdun, 93.9, FN Radio
Bonsoir Gérard !
Bonsoir, Tony !
Bonsoir Gérard, bonsoir toute l'équipe !
Bonsoir !
Paris, FN Radio 101.9
Yes !
Et... Prothèse, 21 ans, Royan, 99 FM
Bonsoir Gérard, bonsoir à tous !
Bonsoir !
Donc, première...
Comment ?
Big up !
Merci pour Rigaud, donc...
Merci pour Rigaud, 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.
De toute façon, Darty s'est fermé à ce temps-là.
Non, mais dans ce cas-là, s'il a un téléphone pourri, dans ce cas-là, il va avoir Manu au standard, ça ira plus vite tout de suite.
Je vais le trouver.
Donc, alors, première question, avez-vous fait déjà l'armée ?
Si oui, dans quelle arme ? On va demander à...
Andouille !
Bah, écoute, moi, je suis désolée, mais j'ai jamais fait l'armée.
D'accord.
Canis ?
Bah, moi, écoute, Gérard, en tant que fille, j'ai jamais fait l'armée, mais j'aurais aimé, franchement.
D'accord.
De toute manière, ça, c'est des questions qu'on va aborder lors du sujet aussi, hein.
Ouais, ouais, ok.
Donc, Tagada ?
Moi, oui.
Dans quelle arme ?
L'armée de terre.
À 21 ans, t'as déjà fait l'armée, donc t'as devancé l'appel, alors ?
Bah, non.
Bah, si.
Bah, non, ils sont venus me chercher.
Non, non, non, non, non, attends.
Commence pas à dire des conneries, toi, parce que...
Je te dis tout de suite que...
T'as eu des mises ?
Ouais, ouais, non, non, mais Tagada...
Oh, oh, Tagada, Tagada, Tagada.
Oui.
Soin de toi.
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.
Ça dépend si vous voulez s'engager.
Tu voulais t'engager, Tagada, ou pas ?
Bah, oui.
Non, mais attends, ça, les trucs sur l'engagement, c'est moi qui les pose, les questions, c'est pas toi, d'accord ?
Non, mais tu dis que c'est pas possible.
Non, mais tu as pas commencé déjà le premier débat comme ça.
D'accord, je voulais poser une question, je suis désolé.
Euh, Andouille, toi-même.
Oui, bah moi, j'ai déjà répondu, j'ai déjà répondu.
Ah, t'as déjà répondu, c'est vrai, je t'ai passé en premier.
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.
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 ?
Moi, je suis pro-militariste, mais je me suis fait réformer.
D'accord. À 20 ans, t'en es sûr de ce que tu me dis, là ?
Ah, sûr et certain, ouais.
Ouais. Je pense pas à moi, à mon avis.
Et je te jure, et puis je te raconterai même l'histoire, si tu veux.
Ouais, non, non, mais j'ai pas besoin de savoir toute l'histoire complète.
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.
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.
Tu m'as dit tout à fait, les cons, de toute façon, ils sont chefs.
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 ?
Sur IRC, y a Zioui qui te demande si tu aimes ramer.
Je vois pas du tout le rapport avec le débat, hein.
Bah, pourtant...
Donc, moi, je peux vous dire que j'ai fait l'armée, dans quelle arme...
Eh, en fait, personne m'a dit dans quelle arme...
Ouais, dans quelle arme, Gérard, au fait ?
Non, mais...
Au fait, Gérard, dans quelle arme ?
Prothèse, ouais, pour l'instant, c'est moi qui pose les questions.
Ouais, mais dans quelle arme, au fait, Gérard ?
C'est moi qui pose les questions, c'est pas vous.
Oui, mais dans quelle arme ?
C'est pas... C'est moi qui pose les questions, toi, Prothèse.
Au fait, ouais.
Dans quelle arme, toi ?
Bah, j'ai été réformé, je t'ai dit.
Eh, c'est le qui dit au fait, tout à l'heure, tu vas te calmer, toi.
Je voulais m'engager dans les RIMA, Régiment d'Infanterie, Marie.
Ouais, dans l'infanterie.
Ouais, j'suis en ligne.
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.
Ouais.
Andouille ?
Moi, je serais plutôt partie dans l'arme blanche.
C'est-à-dire, chasseur alpin ?
C'est du ninja.
Tu m'as outé les mots de la bouche.
Bah, c'est chasseur alpin, hein, les plus blanches, ouais.
Les samouraïs.
Euh, Tagada ?
C'est quoi, la question ?
Non, mais je te demande dans quelle arme, abruti, parce que tout à l'heure, tu as dégagé, ça va aller vite.
Abruti, toi, si tu commences.
Dans quelle arme, quoi ?
J'ai fait l'armée ?
Ouais.
Bah, je te l'ai dit tout à l'heure, dans l'armée de terre.
Ah, non, tu ne l'as pas dit, nuance.
Je l'ai dit, je l'ai dit, j'ai...
Euh, Canis ?
Bah, moi, j'ai rien fait.
Canif ?
Canif, ouais.
Bah, j'ai rien fait, mais ouais, dans l'armée de terre, j'aurais aimé.
Bah, moi, j'ai...
Tu verras, il y a des mâles dans l'armée de terre.
Ouais, bah, oh, tu te calmes, toi, parce que tout à l'heure, tu as fait comme la semaine dernière, Tony.
Attends, Gérard, toi, tu l'as fait dans quelle armée, alors ?
C'est... Moi, c'est... J'étais dans l'infanterie, dans le 110e R.I. en Allemagne.
Et t'inventais quoi ?
T'inventais quoi ?
Non, mais c'est le 110e Régiment d'Infanterie, Abruti.
Ah, Infanterie, j'ai compris.
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 stand-up, il attend 11h à nuit.
Il y a un petit sondage qui nous a été communiqué, donc, à la question, pour ou contre l'armée,
20% des gens...
Non, mais c'est important de savoir, Gérard.
Ouais, mais ça, on n'en a rien à foutre des pour ou contre, parce que c'est pas...
C'est un débat, on en parle, vas-y, 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.
Bon, alors, déjà, les deux premières questions, je ne vois pas ce que ça vient tout là-dedans.
Les gens ont répondu ça, ils sont...
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.
Pardon ?
Tagada.
À se faire des mecs ?
Putain, mais, hé, hé, hé, non, mais t'es vraiment con, toi !
Il y a eu le sergent du mec, après, il y a eu l'infirmier, je m'en rappelle...
À quoi sert l'armée de nos jours, aujourd'hui, Tagada ?
Tu réponds comme rectement, ou sinon, tu gerbes.
Bon.
Euh...
À former des hommes, des vrais, des mâles, hein.
Bon, maintenant...
Tu me prends Tagada, tu lui expliques comment que ça se passe, un débat.
Ouais, mais peut-être que pour lui, justement, l'armée...
C'est mon point de vue, hein.
Ouais, non, mais...
Non, mais explique-lui quand même comment que ça se passe, un débat, parce que...
Toi, tu poses une question, il doit répondre.
Ouais, ben, pour l'instant, s'il répond à côté de la plaque, c'est pas la peine de...
Non, il répond ce qu'il veut.
Il répond au mot de l'acteur.
Euh, Rigaud, attendez, c'est vous, ok ?
Rigaud, il y a une question, non ?
Euh, ça va très vite, vu qu'on est en train de dépasser les 1800 connectés.
Oh, lol, lol, lol, lol.
Alors, l'armée sert à se mettre des cotons-tiges dans le cul ?
Non, non, ça c'est bon, ça va trop vite, j'ai pas trop le temps.
C'est qui qui s'amuse à dire ça ?
Ben, c'était un certain Gérard que...
Ah bon, d'accord, ouais, ok.
Euh, Andouille ?
Ouais, ben, l'armée, ça sert à se battre.
Ah bon, pour toi, l'armée, on se bat ?
Ouais, ouais, c'est une école de bagarre.
Ah bon ?
Ah, ok, attends, attends, on va...
C'est excellent.
Ah ouais, d'accord.
Alors, tu crois que c'est l'armée qui fout le bordel dans les rues ?
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.
Ah bon, c'est nouveau, ça ?
Ouais, vive la guerre.
Ah ouais, ouais, c'est nouveau, ça, ça vient de sortir.
Tiens, il faudrait que je réfléchisse à cette question.
Euh, Canip ?
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.
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.
Ouais, mais maintenant...
Non, non, mais attends, j'ai pas fini avec tout le monde, là, on va demander à tout le monde.
Andouille, elle a répondu.
Croupion ?
Ouais ?
Donc, toi ?
L'armée, ça sert à faire chier les gens, à faire chier les Parisiens tous les 14 juillets pour voir défiler 5 000...
Bon, ben, ça...
Bon, là, merci pour le Larsen.
Y a pas de quoi.
Euh, Tony ?
À se faire sodom.
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 ?
Tu me poses une question, je te réponds.
Non, non, mais je te demande, sois un peu moins con, hein, que tu l'aies.
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.
Je suis désolé.
Gérard, sur IRC, il y a Le Chiant qui te demande s'il faut savoir faire du rouille.
Du windsurf pour faire l'armée de l'air.
Oh, non, c'est quoi, ça ?
C'est quoi, du windsurf ?
Si quelqu'un pouvait me le dire, c'est quand tu sautes en parachute avec ton tank.
Ah, d'accord.
Non, non, non, tu sautes, alors tu vois, t'as un petit string rose.
Qui, qui, qui, qui, qui c'est ?
Ah, c'est Tagada.
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 code.
Alors, le code, tu le décides.
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...
Ouais, bah, l'armée, je dirais que ça sert à apprécier le kaki et les corvées de chiotte.
Bon, bah, ça, donc, moi, je...
Comment ?
Ouais.
Non, mais rien.
Qui c'est qui a voulu rajouter quelque chose ?
Tagada.
Tagada ?
Non, c'est pas moi.
C'est pas moi.
Bon, alors...
Non, mais c'est pas grave, vas-y.
Donc, c'est pas...
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 collections 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 Fildar ou Grégoire pourront me confirmer,
je crois que, normalement, c'est un mois, un mois, normalement.
Par contre, Gérard, c'est Manu, là.
Ouais, l'armée, ça sert pas, tu peux pas passer ton permis gratuitement, tout ça, des trucs comme ça ?
Mais, justement, mais attends...
Mais, c'est pas les bonnes questions, Manu, que tu poses.
Je savais pas, je savais pas.
Justement, celle-là, celle-là, on va la poser, mais c'est la toute dernière.
Je savais pas, je suis désolé, Gérard.
Vu qu'on a commencé plus tôt...
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 ?
Ben, ça, s'ils en ont pas, ils pourront pas en retrouver derrière.
Donc, c'est l'arnaque.
S'ils en avaient pas au départ, ils en auront pas à la sortie.
Ouais, mais ça, c'est regrettable.
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, à la sortie, si vous avez été compétent pendant les 12 mois qu'on...
10 mois.
Est-ce que tu peux avoir un petit pot ?
Non, non, mais ça, les...
Un dipôme.
Est-ce qu'il peut avoir un dipôme à l'armée, ou pas ?
Non, non, non.
Non, c'est impossible.
Déjà, c'est tout juste s'il y en a un qui arrive à récupérer leur permis de conduire, à la fin.
Ils savent même pas lire.
Mais s'ils ont pas son permis à l'armée, est-ce que c'est envisageable d'avoir dans le civil ?
C'est qui, ça, qui me pose ça ?
Oui, mais attends, Tony, c'est la 11e question.
C'est la dernière question, Tony.
Ah, pardon, excusez-moi.
Donc, si vous voulez commencer par la 11e, on va le faire tout de suite, et...
Non, ben non, on va...
Non, mais si, on va...
Ben si, comme t'en parles.
Bon, ben allez, on fait la 11e, ça va.
Donc, Tony, comme t'en parles, on fait la 11e.
Après, je veux la 8 et la 6, si c'est possible.
Bon, ça y est.
A la bouche.
Donc, alors, avez-vous eu l'occasion de percer votre permis de conduire, donc, à l'armée ?
Non, qu'on m'a demandé la prothèse ?
Non.
Non.
Je voulais, mais c'est justement pour ça que je voulais m'engager.
C'est pour passer tous mes permis, puis après, tu verras quoi.
Mais j'ai pas pu.
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.
Ah ouais, justement.
Et si tu t'engages, normalement, c'est pour 2 ou 3 ans, ça dépend du temps que tu veux faire.
Ça dépend de l'armée aussi.
Moi, on m'a dit que les épreuves de conduite, elles étaient, à l'armée, elles étaient redoutables.
C'est vrai.
C'est Tony, ça ?
Oui.
Ouais, non, mais ça, je vais te dire...
Attends, Tony, je te prends tout de suite, oui ?
Ouais, prends.
Oui, tu me rends compte que t'en as de la chance.
Merci, 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 ?
Euh, non, maître chien, je pense pas que...
Et pourquoi t'as tué le chien aussi ?
Euh, Tony ?
Oui ?
Je t'ai dit, tu arrêtes tes conneries, sinon tu vas dégager avant 1h du matin, toi.
Mais ça, c'est pas envisageable.
Ouais, c'est envisageable, alors fais bien gaffe.
C'est inadmissible.
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.
Hein ?
Bon, d'accord, Tony, je crois que...
Ah, non, non, non, c'est pas moi qui ai parlé, là.
Non, mais...
T'avais une question tout à l'heure, Tony, à poser, vas-y.
T'avais une question.
Ça se finissait par B, c'est ça ?
Bon, d'accord.
Tony, ça commence à bien faire pour toi.
Non, mais c'est quoi, la question ?
Croupion, Croupion.
Non, non, ça y est, ça y est, ça y est, ça y est, ça y est, Tony.
Ça y est, Tony.
Croupion, Croupion.
Ouais ?
Donc, toi ?
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.
Mais ouais, non, mais c'est la condition sine qua non, si tu veux rentrer.
Oh, là, là !
Hé, Croupion !
Oui ?
Attendez, s'il vous plaît, Croupion !
Oui ?
T'as pas un téléphone pourri ?
Non, non.
Ça, c'est...
Ça fait drôle, hein.
Mais il est possible.
J'ai l'impression que c'est elle, hein.
Je vais voir, je vais voir.
Un portable, ça, hein.
Andouille.
Oui ?
Bah, moi, comme je t'ai dit, donc, j'ai pas fait l'armée.
Hum ?
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 en réunion.
Ouais, mais ça, c'est un peu dégueulasse, n'empêche.
Ouais, mais enfin, chacun vit sa vie comme il veut.
Ouais, c'est vrai.
OK.
Est-ce que tu le payes, le permis à l'armée, ou pas ?
Non, mais attends, justement, je vais répondre après à la question.
Ah, d'accord.
Euh, Tagada.
Eh, on m'a fait un au revoir.
Oh, Tagada, tu réponds correctement, parce que tout à l'heure, ça m'a...
La bouche pleine.
Ça m'a gerbé, toi.
Déjà, quand je te parle, t'évites de manger, t'évites de faire comme Fildar.
Non, il mange pas, là.
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.
Oh là là !
Et je voulais saluer Yannick, qui nous écoute en direct du Canada.
Ils sont beaucoup à nous écouter, on t'écoute à travers le monde.
Ouais, bah, c'est bien.
C'est pas mal, ouais.
Et beaucoup de militaires, aussi.
Je crois qu'on va battre les records, encore.
Ah, c'est déjà fait.
Euh, Canif.
Ouais, bah, non, écoute, Ira.
Moi, j'ai pas passé mon permis à l'armée, non.
D'accord.
Donc, alors, tu voulais me poser une question ?
Ouais, tu t'en rappelles plus ?
Non.
Bah, maintenant, tu vas la répéter.
Est-ce qu'on paye le permis de conduire à l'armée ?
Non.
Pourquoi ?
Ça, c'est...
Tu le payes pas, parce que c'est toi qui demandes à passer ton permis,
donc c'est gratuit.
Et combien coûte ?
Zéro point, de toute manière.
Ça dépend du contingent, dans quel contingent tu te situes pour passer ton permis.
C'est quoi, un contingent, Gérard ?
Par exemple, on est en combien, là ?
C'est comme un compte en banque ?
Novembre ?
Non, non, non, c'est pas du tout pareil.
Contingent, c'est par exemple du...
C'est peut-être des naissances.
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.
Ah, d'accord.
C'est ça qu'on appelle des contingents.
Ouais, c'est l'année plus le mois.
Voilà.
98-12, c'est quelle ville, ça ?
Oh, t'as gueule, toi.
Donc, voilà, comme ça, t'es servi.
Et tu peux passer tous les permis ?
Bateau, tout ça ?
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.
Il est valable ou pas ?
Disons non, il ne sert à rien.
On a 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 sirous,
comme les gendarmes mobiles qu'ils ont, là, en ce moment.
Ah, comme dans la 7e compagnie ?
Ouais, voilà, grosso modo.
Non, mais ça, c'est avec des chenilles, c'est pas pareil.
Ah, d'accord.
Gérard ?
Oui ?
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%, ils sont allés avec leurs enfants.
Et 40% ont demandé l'arme et qu'elle a.
Qu'est-ce que t'en penses ?
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.
On peut visiter, non ?
Ça ne se visite pas ?
C'est pas un parc ?
C'est pas comme la tour Eiffel ?
Non, non, non.
Il n'y a pas de...
Je crois que c'est la garde républicaine, si je me souviens bien,
qui s'amuse à faire des trucs porte ouverte pour...
C'est con.
Pour simplement voir des chevaux.
C'est tout.
Gérard, il y a vomi de porc sur l'IRC
qui te demande si tu as fait la Deuxième Guerre mondiale.
Non.
Il te demande pourquoi.
Et la Troisième ?
Il n'y en a pas trois.
Il y en a eu deux, donc je n'ai jamais fait ça.
La Guerre du Golfe ?
Non, mais ça, ça n'a rien à voir.
Ça, c'est des questions...
Il te demande pourquoi tu ne l'as pas faite.
Je ne l'ai pas faite, c'est tout.
Il n'était pas engagé, il n'a pas gagné.
Tu étais réformé ?
Non, non, j'ai fait mon armée normalement comme tout le monde.
Donc, j'ai fait douze mois.
Ils t'ont accepté, toi, là-bas ?
Ben oui.
Pourquoi ?
Oui.
Je voulais savoir, est-ce que tu avais participé au défilé du 14 juillet ?
En Allemagne, oui.
Mais pas sur Paris.
Tu as défilé ?
Ben, en Allemagne, oui, à moins 17 degrés.
Où ça ?
Et tu as défilé en quelle tenue ?
En treillis, avec les chevaux.
Non, non.
Il avait un petit string à dentelles roses.
Bon, ta gueule, tu t'écrases parce que tout à l'heure, tu as dégagé, 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.
Ouais, on est en train d'atteindre les 2300, là.
Ça va arriver bientôt.
Gérard, ce soir, tu cartonnes.
Mais ça, c'était prévu qu'il fallait qu'on cartonne ce soir, donc...
Allô ?
Allô, Gérard ?
Canis.
Allô ?
Allô ?
Allô ?
On n'entend plus rien.
Et Gérard ?
Ça y est, pile d'art.
Tu n'as rien fait, Gérard.
Ça y est, ça commence.
Les auditeurs, vous entendez, là ?
C'est imperceptible.
On n'entend rien.
Attends, je vais toucher un bouton.
Je vais toucher un bouton.
Allô ?
Allô ?
Allô, vous l'entendez, là ?
Allô ?
C'est mieux, là.
C'est mieux.
C'est pas 30 secondes, on l'entend pas.
Canis !
Vous l'entendez, Gérard, là ?
Oui, on l'entend.
Vas-y, parle.
Parle, Gérard, parle.
Canis !
On t'entend, impeccable.
C'est bon, c'est bon, c'est bon.
On récupère Canis.
Oh !
Merci, quand je parle.
OK.
Canis, le jour-là.
Tagada.
Oui.
Andouille.
Oui.
Croupion.
Je suis d'Andouille.
Oh, tu t'écrases, toi.
Tony.
Bonsoir.
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.
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.
Pas chaud.
Mais la Légion, il parle.
Il paraît qu'on peut faire carrière.
De toute manière, quand tu fais l'armée dans la Légion, de toute manière, tu t'engages un peu.
Ouais, ouais.
Non, mais il y a des débouchés en tant que, je crois, on m'a dit, un gardien de chef dans l'Atlas.
Ouais, c'est ça.
Alors, Tony.
Qu'est-ce qu'il y a ?
Tony, tu réponds correctement à la question, parce que sinon, ça va mal se terminer pour toi.
Tu vas retourner chez toi.
Écoute, c'est ce qu'on m'a dit.
Je sais pas, moi.
Ouais, ouais, ouais.
C'est ce qu'on t'a dit.
Depuis tout à l'heure, tu m'assumes que moi, je reste imperturbable.
Ouais, ouais, tu restes imperturbable, mais tu réponds la moitié à côté des questions.
Bah non.
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 ?
Je me drogue.
OK, bah si tu te drogues, tout à l'heure, tu vas retourner écouter la radio tranquillement.
C'est tourné, Tony.
Prothèse.
Ouais, je pense que c'est possible, ouais.
Ouais, mais dans quel sens ?
Pour toi, ça peut être possible.
Toi, ça m'étonnerait, parce que c'est lui que tu t'es fait réformer, donc...
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.
D'accord, on verra ça après.
Rigo, t'avais peut-être une question ?
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.
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 ?
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 ?
Ouais, ça, je vois pas du tout.
C'est incompréhensible.
Ouais, c'est incompréhensible.
Prothèse, toi ?
J'ai déjà répondu, genre.
Donc, t'as répondu, croupion.
Ouais.
Donc, pour toi ?
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.
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.
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.
Ouais, non, mais en général, ceux qui font carrière, ils font pas carrière dans la police.
Non, mais ceux qui veulent passer, ceux qui veulent être gendarmes ou policiers,
peuvent le faire en faisant leurs 12 mois.
Ouais, c'est parce qu'ils ont raté leur concours.
Non, non, non, non, non.
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.
Ou coiffeur.
Ou même, ça, cuisinier.
Ouais, t'as plusieurs trucs, t'as cuisinier, t'as un permis, coiffeur,
on va passer, on va pas s'éterniser sur tout ça.
Andouille.
Parce que généralement, comme Tagada, les gens, si Tagada avait fait l'armée,
il aurait fait coiffeur.
Non, mais attends, on va demander à Andouille.
Et pas le mitrailleur.
Andouille.
Oui, bah, écoute, moi, je pense qu'effectivement, c'est possible.
Oh là là, mais qui c'est qui a un téléphone pourri, là ?
C'est pas moi.
C'est un portable.
Donc, toi, alors ?
C'est quelqu'un qui a un portable.
Non, mais c'est tout à fait 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.
Ouais.
Et puis, il y en a qui...
Oh, on laisse parler les gens, s'il vous plaît, merci.
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 boucher le cul, quoi.
Ouais, mais...
Non, mais ça...
Bon, ça, Andouille, je vais te dire une chose, que la personne qui veut s'engager...
Euh, Fildar, s'il te plaît, merci.
Y a rien, Gérard.
Ceux qui veulent s'engager, c'est leur problème, hein.
Oh, t'arrêtes de s'y plaître, 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à.
T'es gada ?
T'es engagé à quoi ?
Dans l'armée.
Ah, d'accord.
Et faire, en fait, leur métier de l'armée.
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.
Mais c'est quoi, le métier de l'armée ?
Ça consiste en quoi, faire l'armée comme métier ?
Ben, c'est obligatoire, hein.
Maintenant, tu peux pas y échapper, hein.
Sauf si t'es père de famille ou si t'es...
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 ?
Ben, pendant 3 ans, tu peux monter de grade et tu peux commander ceux qui vont à l'heure actuelle.
Mais faire quoi ?
Ben, j'ai commandé à faire quoi ?
Faire leur lieu au carré, à éplucher des patates ?
Ben ouais, ça, éplucher des patates.
Maintenant, à l'armée, faut dire une chose qu'ils ont...
Non, non, il y a des mixeurs.
Non, non, ils ont des trucs exprès.
Tagada.
Ah, non, attends.
Oui, il y a INT qui te demande si t'as appris à lire à l'armée.
De toute manière, t'as pas besoin d'apprendre à lire à l'armée, tu...
Ça se saurait, sinon.
T'as pas besoin de savoir lire pour faire l'armée ?
Pas besoin, hein.
Il suffit de savoir te torcher, c'est tout.
Voilà.
Tagada.
Tang, T-A-N-K.
Tagada !
Oui ?
Alors, moi, je pense que...
Franchement, non.
Alors, tu peux préciser ?
Euh... Non.
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 admissible.
C'est clair ?
Ok.
Ok ?
C'est net.
Alors, je te préviens, c'est le dernier avertissement que je te donne depuis tout à l'heure.
Merci.
Au prochain, tu dégages.
Hein ?
Ou sinon, tu vas passer voir Manu, il va te mettre les points sur les îles et barres sur l'été, comme je dis souvent.
Tu sais qu'il va mettre les barres ?
Ouais, ouais, tu vas voir.
Alors, Tagada, tu vas voir Manu, s'il te plaît.
Allez, hop.
Euh...
Canis...
Canis...
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.
Oh là là, elle est où, elle ?
Elle est où, elle ?
Elle est où ?
Si tu t'amuses à faire des conneries, tout à l'heure, je vais me lever, je vais te massacrer.
Ah ouais ?
Ok.
Tu vas pas commencer le premier débat ?
Tu vas me faire des tortures indiennes et tout ?
Ah ouais, tu vas voir.
Pulgure au poing !
Ouais, t'as l'air pulgure au poing.
Flak au gire !
Donc, Canif, pour terminer.
Ben, je pense que Gérard, moi, je pense qu'on peut...
Oui, on peut s'engager dedans, ouais.
Non, mais est-ce qu'on peut faire carrière ?
Ben oui, c'est ce que je te dis, on peut faire carrière dedans, ouais.
D'accord.
Gérard, t'es prothèse ?
Ouais, prothèse.
Je voulais savoir, parce que comme toi, t'as fait ton service, t'es un peu enseigné sur le tout, quoi.
Je voulais savoir si on pouvait faire un animateur radio à leur maison.
Non, pas du tout, tu vois.
Tu peux inventer une radio, Radio Kaki, par exemple ?
Non, parce qu'ils ont leur système de radio à eux, donc c'est pas...
C'est de la Cibi qui font ça, Gérard ?
Non, non, non, non, non, non.
Ils font quoi ?
Euh, oui.
Il y a Cyber Ticket...
Titi sur l'IRC qui dit que la fanfare de la caserne de Surenge ou Terremix pour motiver les troupes de Corvée de Chiotte, c'est vrai ?
N'importe quoi, lui.
Bon, t'arrêtes, Fildar, avec ça.
Ça, on le sait, hein.
Donc, quatrième question, ça, ça va intéresser Canif, Andouille et Croupion.
Ah, c'est une question pour des meufs.
Peut-il supprimer l'armée aux femmes de nos jours ?
Alors, on va demander à Canif, parce qu'apparemment, vous êtes vachement bien réveillé, ça fait peur.
Ben écoute, Gérard, on attend que tu nous cites, quand même.
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, quand j'ai pas besoin de préciser, donc...
Bah, tu vas pas te plaindre !
Bon, écoute, Gérard, on va pas te plaindre.
Oh, tu te calmes, toi !
Comment elle parle, là ?
C'est laquelle, là, qui s'énerve, là ?
Oh, tu parles à Gérard, là, ou...
C'est quoi, c'est quoi, cette bouffonne ?
C'est laquelle, là, qui s'énerve ?
Ben, mais j'ai lu une !
Andouille !
Oh, pisseuse, va !
Et Andouille !
Andouille !
Va m'emmener au standard, si j'y suis !
Allez !
Allez, Gérard !
Allez, Gérard !
Allez !
De voir !
Canip !
Bon, écoute...
Moi, je veux ce numéro, parce que j'adore les dominants.
Non, non, non, c'est bon, c'est bon !
Canip !
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.
Ouais, non, mais, je te demande, faut-il supprimer...
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.
Ouais, mais, de toute manière, toi, à 19 ans, je pense que c'est un peu...
C'est un peu jeune, encore, hein ?
Ah, mais, de toute façon, je les ai fait tomber, hein, donc...
Ouais, non, non, mais, même, de toute manière, faut que tu te fasses recenser d'être la majorité, hein, donc...
Ouais, ils en parlent...
Oh, là, qui c'est qui s'amuse, là ?
Ça commence à bien faire !
Tagada !
Chier, hein !
Et je peux répondre à la question, Gérard ?
Non, mais, à la minute, toi !
Vas-y, 5 minutes !
Tagada !
Oui, moi, j'étais avec Manu, tu peux me répéter la question ?
Alors, faut-il supprimer l'armée aux femmes ?
Ah, oui !
C'est pour toi, ça, Tagada !
Alors, moi, tu vois, je me l'ai pas fait écouter assez tôt, donc j'ai dû la faire.
Ouais.
J'étais dégoûté. Bon, maintenant, ça va mieux.
C'est propre, hein, tu me diras.
Non, mais, Tagada, tu prends ta voix normale, tu prends pas la voix d'un travelo, d'accord ?
Parce que, tout à l'heure, tu as dégagé, ç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.
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 ?
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.
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 ?
Euh, oui.
C'est-à-dire ?
Ben, ils sont obligés de faire...
Elles font pipi debout, tout ça ?
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 corbets...
Les pompes, tout ça ?
Ouais, mais ça, c'est obligé.
Attendez, s'il vous plaît, merci.
Attendez, parce qu'il y a Sexe 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.
Bon, ça, je vais même pas y répondre.
Je réponds pas aux conneries comme ça sur l'IRC.
Est-ce que je peux répondre ?
Euh, Andouille.
C'est pas grave.
Donc, je te mets à préciser que Manu m'a repris à l'antenne,
et qu'il m'a calmée.
Ouais, bah, t'as intérêt de te calmer, sinon tu vas faire comme ta gada,
tu vas avoir...
Pisseuse.
Bah, tu te calmes, hein.
Ouais, bah, c'est toi qui vas te calmer,
parce que tout à l'heure, je vais passer à croupion tout de suite.
Alors, fais gaffe.
Ouais, passe à moi.
Moi, je suis à ton numéro, parce que t'es une dominante, toi.
C'est bon, je peux parler ?
Vas-y, alors, dépêche-toi.
Toi, tu m'excites.
Oh, Tony, tu t'écrases, s'il te plaît.
T'aurais été sergent-chef ?
Alors, bah, moi, non, moi, je suis contre.
Parce qu'en fait, si les ananas, elles ont envie de s'engager,
bah, elles ont bien raison.
Et moi, personnellement, j'irais quand je serais plus défait au mec.
Mais pour l'instant, ça va, donc j'irais pas.
Bah, de toute manière, tu serais obligé d'y aller, hein.
Faut pas l'oublier.
Gérard, à la place...
Pardon, à la place de ta gada, on a que je m'en fous.
Ouais, c'est léger.
Je m'en fous.
Moi, Génie, 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...
Eh, tu peux préciser ton nom quand tu parles ?
C'est Tony.
C'est Tony, bonsoir.
Ouais, bah, pour l'instant, je vais demander à Croupion, tu vois.
Toi, t'es un peu trop pressé.
Toi, tu m'aimes pas, je sais pas pourquoi tu m'aimes pas.
Ouais, bah, tu vas te calmer, s'il te plaît.
Moi, je t'aime bien, Tony.
Ah, merci.
En plus, toi, t'es une dominante.
Moi, tu m'écoutes, y a de la meuf.
Oh, ça supplie, là !
Allez, on revient au débat.
Croupion.
Oui.
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...
Non, mais...
C'est pas gênant pour la société qu'elles soient là-dedans, quoi.
Eh, Croupion !
Oui ?
Croupion, t'évites un peu trop les vulgarités, quand même.
Il est 0h54, on va pas commencer à jouer sur des saloperies, hein.
Mais non, je dis pas des saloperies.
Les femmes dans l'armée, c'est des saloperies.
Oh, Tony, s'il te plaît, merci.
Eh, Croupion, vous vous calmez.
Rigo, pour l'IRC.
Sur l'IRC, on me demande si, en fait, c'est l'armée du salut que t'as fait.
Non.
Euh, Tony, maintenant.
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, des mimours,
G.I. Jane, tout ça.
T'as des copains, toi ?
Parce que...
Ouais, ouais, j'ai des copains et des copines, aussi.
Oh, on se calme, là, derrière, quand y en a qui parlent.
Parce que ça, tout à l'heure, ça m'a chauffé.
Un petit peu de respect, quand même, merde.
Tony !
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.
Bah, oui.
Là, je vais te dire...
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.
Elles ont toujours leurs règles.
Enfin, bon, c'est chiant.
Oh, mais ça, euh...
Ça, c'est...
Ça, c'est leur problème.
Oh !
On meurt, les meufs, là.
Eh, oh, on se calme.
Vas-y, je t'en prie.
On se calme un peu, là, derrière, s'il vous plaît.
Merci.
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.
Non, mais attends, Prothèse, je vais te le dire, maintenant, ça va devenir...
Ça devient obligatoire, hein.
C'est inadmissible.
Ouais, mais ça devient obligatoire, hein, maintenant.
C'est obligatoire, maintenant, hein.
Oh, mais ça y est, là !
Celui qui n'arrête pas de jacter, là, ça commence à bien faire.
Euh, Rigo ?
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.
Mais lui, il a pas fait l'armée des cons, lui, ça vaudra mieux.
Je m'en fous, maintenant, pour finir.
Euh, bah, moi, personnellement, les meufs, elles font ce qu'elles veulent, quoi.
C'est tout ce que tu peux préciser ?
Bah, je suis pas une meuf, alors je m'en fous, quoi.
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.
Bah, franchement, je sais pas.
Hé, hé, hé !
Hé, avant qu'on t'appelle, t'aurais pas fumé la moquette, toi ?
Mais t'es pas le tabou, là ?
Parce que, dis donc, apparemment, vous avez l'air de répondre la moitié des...
à côté des questions, hein.
Mais c'est toi qui mets pas le feu, Gérard.
Non, mais attends, je mets pas le feu.
Je disais mieux, les gars, vous répondez à côté.
Franchement, hier, c'était plus...
Enfin, je sais pas, ça pulsait, quoi.
Là, c'est...
T'as pas le droit, t'as pas le droit.
C'est tout, tout je m'endors et tout.
Non, je critique pas ton débat, GG1, je constate, simplement.
Et alors, mais de toute manière, le premier débat, il se passe toujours...
Ah, d'accord, excuse-moi, je vais attendre le deuxième.
Non, non, mais de toute manière, au deuxième, c'est pas sûr qu'on reprenne les mêmes, hein, pour s'y déconner, hein.
C'est la première fois que je passe à l'émission de Gérard.
Stop !
Pour reprendre un peu le thème du débat et parler de l'armée un peu...
Fais-nous un petit sondage.
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.
40% donneraient leurs 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 ?
N'importe quoi !
Rigo, sur IRC ?
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 agibles avec une femme depuis son adolescence ?
Ça sert à rien, quoi.
Non, mais ça, c'est pas du tout...
Ah, on te demande si tu connais Rambo.
Non.
C'est ça.
J'ai un peu, peut-être.
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.
On a déjà fait l'armée.
Oui, mais plus que 3 minutes, GG.
Alors, quels sont les inconvénients de...
Ça va suffire, Manu.
Quels sont les inconvénients ou les avantages de l'armée ?
On va demander ça, ben, je m'en fous.
Franchement, tu vois, les inconvénients...
Ben, je sais pas, quoi.
Je l'ai pas fait, moi, l'armée.
L'auditeur qui siffle, il faut qu'il arrête, hein.
Ouais, franchement, ouais.
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.
D'accord, tu t'en fous complètement.
Non, je te dis, je l'ai pas fait, donc je peux pas te répondre, quoi.
Prothèse.
C'est logique.
Ok, 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.
Elles sont où, les meufs ?
Et les avantages, je sais pas, j'en vois pas trop.
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.
Alors, attends, tu peux préciser, là, parce que je vois pas du tout le...
Tu veux que je précise ?
Ton nom.
Non, mais tu précises la pensée que t'as.
C'est qu'on peut pas se baisser, mais je peux pas le dire, ça passe pas.
Ouais, d'accord. Alors, Tony, ça commence à bien faire, hein, toi.
Non, il faut analyser la chose.
Groupion ! Groupion !
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.
Tu peux préciser le...
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.
Non, mais attends, parce que...
Oh, Tony, ça commence à bien faire, toi, là, maintenant.
C'est pas moi, là, là.
Ouais, bah, tu vas te calmer, parce que tout à l'heure, ça va être...
Arrête de t'en prendre toujours à Tony.
Oh, Andouille, tu te la permes !
Maintenant, tu vas répondre !
Oh, Andouille, je vais te parler à...
Eh, ta gueule, Andouille !
Bon, alors...
Tu sais pas, là, bordel !
Eh, eh, tu mets Tony et Andouille ensemble, là, qu'ils arrangent leur salade, quand ils auront terminé...
Nous, dimanche aussi, on va se marier.
Ouais, ça suffit !
Tu mets Tony et Groupion, là, en rentonne, ils vont faire leur petite popote ensemble, parce que c'est pas dans le débat qu'on fait leur popote.
Euh, Canif ?
Bah, écoute...
Écoute, tu peux me répéter la question, s'il te plaît, Gégé ?
Alors, quels sont les inconvénients ou les avantages de l'armée ?
Bah, écoute, pour moi, les inconvénients, c'est l'uniforme.
Ouais.
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.
Ouais, mais, euh...
Comment ça, euh...
Bah, je veux dire, si t'es infirmière, là-dedans, je veux dire...
Bah, c'est un ken, quoi.
Tu peux y aller, hein.
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.
Ouais, non, mais pour moi, c'est ça, les avantages, hein.
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.
Ouais, ouais, c'est vrai.
Euh, Rigo ?
Oui, il y a Davy1 sur IRC qui te demande si tu connais le...
Enfin, si tu as connu le soldat inconnu.
Non.
Non, ok.
Et Ryan, non, tu ne connais pas Ryan ?
Bah, enfin, sur IRC, on m'a dit que Gérard, c'était le soldat Ryan qu'on n'a pas retrouvé.
Euh, est-ce qu'on va le sauver, au moins ?
Ça y est, ils ont...
Bah, il n'a pas été sauvé, ouais.
Toi, fais gaffe, parce que tout à l'heure, je vais te sauver ma main sur ta gueule, quand même.
Oh, oui, c'est calme, là.
Ouais, c'est bon, c'est bon, c'est bon.
Alors, ennui, maintenant.
Ouais, alors, l'inconvénient, c'est qu'on a l'impression de perdre son temps là-bas.
Ouais.
Et l'avantage, c'est que, justement, on ne perd pas son temps là-bas.
Alors, tu peux préciser le fond ?
Bah, oui, donc, l'inconvénient, c'est que tu perds ton temps quand tu es là-bas.
Ouais.
Et l'avantage, c'est que tu ne perds pas ton temps quand tu es là-bas.
Ok.
Ouais, d'accord, je vois à peu près.
C'est logique.
Ouais, c'est logique.
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...
De toute façon, tu es obligé de la faire, donc...
Voilà.
Et en plus, t'es payé.
Ouais, t'es payé.
T'es payé combien, Gérard, à l'armée, justement ?
Je crois que c'est 4 euros.
Non, non, non, attends, normalement, si je me...
Oh, on se...
Bon, ça y est, oui.
Je les ai coupés, je les ai coupés.
Exprès.
Normalement, je pense que ça ne te fait même pas la moitié de ton salaire.
Tu dois toucher à peu près 1 500 balles...
C'est le SMAC ou pas, la main ?
Non, même pas.
Même pas ?
T'as le droit à une cartouche de cigarette par mois et tout.
Gérard ?
Oui ?
Ouais, c'est prothèse.
On a parlé ce soir, je voulais savoir si t'avais fait le parcours du con en te battant.
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.
Ouais, bravo, Gégé.
Bravo.
Il y a de l'air, alors ?
Donc, la sixième question...
C'est plus fort.
C'est la sixième question, là ?
Ouais.
Déjà ?
Ouais !
Vous allez réfléchir et on va s'écouter un petit morceau, à moins qu'il y ait une question IRC...
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é.
Bon, ça, je ne vois pas du tout le rapport.
Gégé ?
Ouais ?
C'est qui ?
Je m'en fous, là.
Tu peux te mettre en antenne avec Andoï, là, il y a moyen de moyenner.
Ben, rien.
Vous allez aller tous en antenne, maintenant ?
Je vais vous poser la sixième question.
La sixième question, là ?
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 old dog.
On se retrouve tout de suite après.
Donc, un petit point sur l'IRC, on a dépassé les 2500, on en est à 2684, moins 3.
Pourquoi moins 3 ?
Parce qu'il y en a 3 qui viennent de partir.
Ah bon, alors donc, on récupère Canif.
Oui, c'est vrai.
Oui, c'est vrai, je suis toujours là.
Bonsoir, Andoï, j'espère que tu t'es calmée depuis tout à l'heure.
Non, pas vraiment.
Pas vraiment, mais tu vas te calmer.
Non, je suis déjà pisseuse.
Croupion ?
Oui.
Croupion ?
Oui, oui.
Tony ?
Oui.
Prothèse ?
Salut, les loulous.
Eh, je m'en fous.
Ouais, je m'en fous.
Donc, t'as pu discuter avec Andoï ?
Non, j'ai pas pu, personne me...
Non, n'importe quoi, on m'a filé un disque, là.
Elle est où, la fameuse ?
La fameuse, ben, tu as...
Comment il parle de...
Tu vas la récupérer tout à l'heure en rentonne,
vous allez gérer votre petite salade, à l'instant.
Non, mais j'ai...
C'est ma miche, moi, c'est ma miche.
Oh, ça y est, vous, merci.
Donc, alors, on va demander à Canif si elle a compris la question.
Ben, écoute, je m'en rappelle plus, j'ai rien.
Ah, non, mais faudrait peut-être écouter quand je pose des questions.
Je peux la remonter après le disque ?
Je pense aux auditeurs qui viennent seulement de nous rejoindre.
Alors, peut-on s'engager dans l'armée si on n'a pas de boudreaux ?
Donc, Canif ?
Ben, ouais, je pense, ouais.
Mais tu fais quoi ?
Tu fais quoi, toi, au fait, comme boudreau ?
Moi, je suis secrétaire.
Secrétaire ?
Secrétaire comptable.
T'es en tailleur ?
Oh, hé, vous me tchonnez derrière, là !
Et vos commentaires, moi, je vous emmerde.
Voilà.
Comme ça, c'est bien répondu, tout ça.
Moi, j'aime les femmes qui ont du caractère.
Oh, tu t'écrases, toi !
Ça, tout à l'heure, tu as dégagé, toi, maintenant.
Je vous préviens que, là, à 1h10, je vais gerber, hein.
Ça va gerber sec.
Non, gerbe pas.
Voilà, c'est pas mal.
C'est qui ?
Ah, c'est une... parce que...
C'est, ouais, c'est Prothès, c'était une cabine, je vais le rappeler.
D'habiter mystère.
OK.
Donc, Canif a répondu.
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.
Voilà.
Bon, alors, Andouille, c'est la dernière, c'est simple.
Soit que tu réponds correctement, soit que tu gerbes tout de suite.
C'est pas simple.
Tu choisis.
Non, non, non, elle passe à moi, avant.
Hein ?
Alors, Croupion ?
Ouais.
Donc, pour toi ?
Bah, ça sert justement, quand t'as pas de boulot, à t'engager, ouais.
Ouais, mais ça, c'est...
Je pense qu'il y a beaucoup de personnes qui vont me répondre ça.
Et quand ils arrêtent l'école, aussi, les gamins, ils vont à l'armée, non ?
Non, non, non, non, ça...
Non, mais attends, parce que l'armée...
Faut que tu te fasses recenser à 18 ans.
C'est une poubelle, l'armée, on dirait.
Bah non, mais...
Oui, oui, oui, c'est qui, c'est qui, là ?
Canif, on peut ajouter quelque chose ?
Oui ?
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.
Euh, non, je pense pas, parce que ça, j'en ai pas entendu parler, à mon avis.
Non, non, attends, Tony, il y a une question, hier.
Oui, il y a un Réa qui te demande si tu as rencontré Sandy à l'armée.
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.
Non, mais Sandy, elle a fait l'armée, par contre.
C'est pas le débat sur les pouces qu'il fait.
Elle réparait les tanks.
D'accord, Tony ?
Quoi ?
C'est toi qui viens de répondre les tanks ?
Pas du tout, pas du tout.
Non, c'est moi, c'est moi, j'ai dit.
Non, elle bosse à la banque.
Donc, Tony ?
Ouais.
Donc, pour toi ?
Ouais, bah, c'est sur l'engagement, c'est ça ?
Hein ?
Ouais.
Peut-on s'engager dans l'armée si on n'a pas de boulot ?
Peut-on s'engager dans l'armée si on n'a pas de boulot ?
Bah oui, parce qu'on fout rien, on peut y aller.
Non, je dirais...
Hé, Tony !
Non, mais non.
Attends, attends, j'essaye de réfléchir, là.
Non, non, mais tu réfléchis vite, puis...
Non, mais non, Gérard, ils te prennent pas à l'armée si t'as pas de boulot ?
Bah, de toute manière, tu peux t'engager si t'as pas de boulot, hein.
Pourquoi tu t'engages pas, toi, Gérard ?
Eh, qu'est-ce que ça...
Pourquoi que...
Je t'emmerde, toi.
Oh, oh !
Oh, oh, oh !
Non, mais moi, par contre...
Eh, Tony, tu réponds, s'il te plaît.
Ouais, bah, ouais, mais je suis tout à fait d'accord avec ce qu'a dit Rigaud, là.
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é.
Mais attends, t'as pas besoin d'avoir un bac pour aller à l'armée ?
Non, non, mais...
T'as pas le droit à l'armée d'avoir un bac.
Faut complètement instarber.
Euh, Tony !
Pourquoi ?
Tu réponds ?
J'ai répondu, j'ai répondu.
Attends, c'est bizarre, j'ai pas entendu ta réponse.
C'est pas grave.
Ouais, bah, Tony, je pense que...
Non, mais non, mais vas-y, continue, continue.
Y a pas que moi, allez, vas-y.
Non, non, mais tu réponds !
Non, mais...
Ça y est, l'engagement, il faut se faire en sensé.
D'accord, voilà.
Eh ben, enfin, dis-donc, t'es lourd à la détente, toi.
C'est clair.
Gérard, par rapport à l'armée, y a des V1 qui disent
« Les fusils servent à fusiller, et les tanks, ils servent à t'enculer. »
Ouais, bah, ça, je l'emmerde, lui.
Euh, Manu ?
Encore un petit sondage.
La seule dernière, j'espère.
L'avant-dernière.
À la question « Combien donneriez-vous à une armée ? »
32% ont dit qu'ils donneraient 2 euros.
Mais ça y est, tu l'as déjà fait, alors...
Excuse-moi, il y en a une autre, il y en a une autre, il y en a une autre.
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.
Ça...
Toi, toi, toi, toi, tu vois, Pildar, tes conneries, ça, c'est tes conneries, ça.
Non, c'est pas mes conneries.
C'est tes conneries.
On va demander la prothèse.
Si...
Oui, je suis là, ouais.
C'est quoi, ça ?
C'est Noël ou quoi ?
Pildar, tu m'éteins ça tout de suite !
Ça me l'a dit.
Pildar, t'éteins ça tout de suite !
Ouais, Gérard, c'est prothèse.
Prothèse ?
Ouais.
Je pense qu'il est préférable de s'engager contre...
Bon, t'arrêtes, Pildar, ou quoi, là ?
Allô ?
Allô, Gérard ?
Allô ?
Gérard, souris...
Allô ?
Vous entendez, Gérard, là ?
Allô ?
Qu'est-ce qu'il se passe ?
Il a failli balancer le disque d'origo, 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 froté par tes caquilles, et j'aime bien les trahis.
D'accord. Et je m'en fous, pour finir ?
Bah, franchement...
Il s'en fout ?
Bah non, ouais, je sais pas.
Oh là là, Doc Gynéco.
Toi, tu vas gerber, toi.
Ah ouais ?
Ils sont pas réveillés, les auditeurs ?
Je m'en fous, tu te réveilles, s'il te plaît, ou tu dégages !
Bah, je sais pas, franchement, si j'ai pas de ta faute...
Mais il sait jamais rien, lui, pourquoi il vient !
Fume trop, lui !
Eh, tu reprends, je m'en fous, au standard, là, ça va pas.
Ça va pas, là.
Fume trop, là, ce gars.
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.
Quoi ?
Même pas.
Non, plus.
Ok, alors voilà.
Et toi, Gérard, alors, qu'est-ce que t'en penses de cette question ?
Bah, moi, je viens d'y répondre.
Mais je t'écoute pas.
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.
Ça va mieux pour lui.
Ouais, j'espère.
Alors, je m'en fous.
Bah, à la télé, ouais, on voit des émissions, quoi.
Non, mais je pense qu'on t'a demandé de te réveiller, là.
Apparemment...
Je réponds à ta question, là.
Bon, alors, vas-y.
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.
Ok. 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.
Mais non, mais de toute manière, c'est ce qu'ils font, là, avec les...
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...
Eh, moi, je suis étudiant.
Qui ?
Moi.
Qui ?
Moi, je m'en fous.
Eh, t'appelles d'où, toi ?
Je fais une thèse sur le shit, de Nantes.
De Nantes ?
Ouais.
Et donc, à ton avis, ils en parlent, là ?
Mais t'es étudiant en armée, toi.
Non, mais est-ce qu'ils en parlent, là ?
Est-ce qu'ils en parlent, là ?
Bah ouais, il y a plein de pubs partout.
Ah bon ?
Il fait une thèse sur le shit, là, sur les tableaux.
Une thèse sur le shit.
D'accord.
Je pense qu'à mon avis, je crois que t'es en train de me dire des conneries.
Tony !
Ouais, il y a trop de pubs.
L'autre fois, j'entendais, même sur Fun Radio, j'entendais une pub...
L'armée de terre.
Ouais, l'armée de terre occulte un mec avec une clé de 13 pour réparer les tanks.
Donc, je trouve ça inadmissible.
Tony !
C'est de la propagande.
Tony, t'es sûr de ce que t'inventes, là ?
Non, mais je te jure que ça passait.
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.
Ouais.
Ils ne veulent plus y aller, donc ils font des pubs.
Le pire, c'est qu'ils te mettent ça entre deux tubes.
Ah, d'accord, entre deux tubes, t'as raison.
Croupion.
Ouais ?
Bien tenu.
Moi, je dis que non, il ne faut surtout pas en parler.
Ça pourrait inciter les gens à le faire.
Non, mais ça va, là...
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 ?
Bon, Croupion.
Oui, je te dis qu'il ne faut surtout pas en parler.
Ça pourrait inciter les gens à le faire.
De toute manière, pourquoi...
S'ils en parlent, c'est pour inciter les jeunes à y aller, hein ?
Oui, ben justement.
Ok. Andouille ?
Ouais, ben je suis désolée, moi, Fildar vient de me prendre en rentaine,
donc je n'ai pas entendu la question.
Non, attends, Fildar vient de te prendre en rentaine.
Non, mais attends, Fildar, il est à l'arrière.
Attends, attends, attends, Gégé, deux secondes.
Hé, Fildar, tu te calmes, là ?
Non, mais attends, c'est qui qui parle, là ?
Comment tu parles à Fildar ?
Qui c'est qui parle, là ?
C'est mon père, non ?
Non, mais attends, pour l'instant,
ce n'est pas Fildar qui commande, c'est moi, c'est Médéba.
Non, non, c'est pas toi.
Non, non, je suis d'accord, Gégé, mais voilà, quoi.
C'est Fildar qui commande.
Non, non, c'est pas Fildar, non, Médéba, c'est moi.
Alors, Andouille ?
Fildar, c'est un petit teigneux, mais je l'aime bien, quand même.
Bon, je m'en fous, tu te calmes, toi.
Hé, Andouille, t'es blonde ou brune, concrètement, là ?
Bon, je m'en fous, t'arrêtes ou tu dégages ?
Andouille, elle est pour moi.
C'est un boulot de merde, Manu, ça, je suis d'accord avec toi.
Non, non, non, c'est pas Manu.
Je m'en fous, t'arrêtes 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.
Alors, faut-il parler de l'armée en cours ou à la télé ?
Moi, je trouve qu'il faut pas en parler parce qu'on fait pas de politique à l'école.
Non, mais attends, on parle de l'armée, on parle pas de la politique.
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.
Tony, si t'es pas content, tu dégages, OK ?
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.
Ouais, ben attends, pour l'instant, toi, t'as...
Parce que depuis 10 ans, c'est les mêmes débats et tu ranges...
Bon, alors, Tony, tu dégages, allez, hop, t'es ennumé !
Hop, au revoir, Tony !
Non, je pense pas que t'es ennumé, hein !
Toi, Andouille, c'est pareil, au revoir, Andouille !
Allez, dégage, Andouille, allez !
Bah, si Andouille part, je pars.
Ouais, ben, c'est bien, aussi, je m'en fous.
Allez, dégage, je m'en fous.
C'est bien, récupère...
On est dans la merde, on n'a plus qu'à...
Tu récupères 3 éditeurs, Manu, s'il te plaît.
J'y vais, j'y vais, je les récupère, je vais les chercher, là, devant l'avenue, là.
Alors, Canip ?
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.
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 perdre de l'armée.
Comme Andouille a voulu.
Comme Andouille a voulu les 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...
Bah, ça va m'intéresser certains, de toute façon.
Ouais, mais ça, ça va être la dernière question qu'on va poser.
C'est rare, moi.
Oui ?
Tes prothèses, je voulais savoir, si, quand tu te mettais au garde-à-vous devant le général, t'avais la gaule ?
Pas obligatoirement, non. Pourquoi ? Parce que ça t'est déjà arrivé, toi ?
Bah, non, mais je te posais la question.
Incroupion !
Oui ?
Si on te gêne, tu nous le dis, hein.
Ah, non, mais je vous écoute.
Non, mais tu peux quand même parler, hein, parce que, pour l'instant...
Le problème, c'est que, quand je parle, tu me dis de me taire, donc...
Non, non, non, attends, pour l'instant, je t'ai rien dit, donc je te demande de réagir.
Oui, bah, c'est...
Parce que vous êtes plus que 3 sur 7... 6, hein.
D'accord.
Donc, tout le monde a fait le tour de la question.
Ouais, ouais.
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.
C'est laquelle question, Gérard ? C'est la numéro combien ?
C'est la 8.
Encore ? 2, putain.
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.
Aïe.
Hé, Rigo, c'est pas à toi que je m'adresse.
Putain, maintenant, je barre aussi.
Alors, pourquoi faut-il faire 10 mois au lieu de 12, maintenant ?
Alors, on m'a demandé à Canif.
Bah, là, là, j'en ai vraiment aucune idée, Gégé.
Non, mais, avant, c'était 12 mois, maintenant, c'est passé à 10, donc, le pourquoi ?
Ah, mais, c'est ce que je te dis, je ne sais absolument pas.
Hum, d'accord.
Et toi, croupion ?
Euh, c'est pour des questions de budget.
Comment ça ?
Bah, il gagne 2 mois, il gagne du fric en se vendant que 10 mois.
Bah, non, euh...
C'est parce que ça a trop gueulé, je pense.
Non, mais, je pense...
Non, mais, comme ça, il ne paye pas les mecs pendant 2 mois, il ne les paye plus, quoi.
Ah, ouais, c'est une bonne idée, ça, je crois.
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.
Ah, d'accord.
OK, on est tous 3, là.
Bon, bah, euh...
OK, ça va ?
Bon, on rigole, vous revenez, là.
Donc, prochaine question.
Alors, Prothès, tu peux répondre, s'il te plaît ?
Ouais, ouais, donc, euh...
Bah, tu peux me répéter, j'ai pas bien entendu.
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.
C'est des problèmes de calendrier avec les années bisextiles, non ?
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...
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 !
Tu fais des blancs, Gérard.
Donc, euh... Prothès, toi, alors ?
Ouais, donc, je te disais, je pense que c'était un problème de calendrier, non ?
Bah, non, parce qu'en fin de compte, non, il n'y a pas d'histoire de calendrier, là-dedans, hein.
Ah bon ?
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.
Ils ont raison, finalement, on se fait moins chier à 10 mois que 12 mois.
Ils vont descendre à une semaine, là, ça va être une semaine, après.
On récupère, ok ?
Ouais, alors, on accueille 3 nouveaux auditeurs, on accueille Face de Paix, Petit Fion et Général Moncu.
Bonsoir.
Bonsoir à tous.
On a un Général, ouais, qui vient d'un petit peu de corps d'armée.
De l'armée de l'air.
Général Moncu, ouais.
Apparemment, c'est ce que... Et l'autre ?
Il y a Petit Fion.
Ouais, bah voilà, c'était Petit Fion, pour finir.
Petit Fion, bonjour.
J'ai avec moi le sergent Susmon Gould, si vous voulez.
Ouais, non, mais ça y est, bon, alors, maintenant, on va demander à Face de Paix...
Et Face de Paix, là.
Bon, Face de Paix.
Ouais, salut.
Salut.
Ça va ?
Donc, toi ?
Oui.
Donc, la...
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.
10 mois quoi ?
Bah, 10 mois de l'armée, quoi, c'est mieux que 12, quoi.
De l'armée ?
De l'armée !
De l'armée.
De l'armée.
Bon, euh...
Fildar !
Ouais.
D'accord.
T'écrases.
D'accord.
Donc, euh, vas-y, je t'écoute.
Bah, c'était pas bien.
Je vais t'écraser.
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...
Ouais.
On est d'accord, c'est relou, 10 mois, 12 mois.
Alors, il vaut mieux qu'il en fasse 10, t'as compris ?
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.
Dans quel sens ?
Oh là là !
Manu, ça suffit, toi.
Je demande, parce que je comprends pas.
La semaine dernière, t'as fait du bon boulot, si tu commences à foutre ta merde, ça va...
De toute façon, vous parlez de 10 et 12 mois, mais c'est pas ça, l'armée, c'est une semaine, maintenant.
Non, non, non, non, non, non, non.
Toi, tu l'as même pas faite, alors tu t'écrases.
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 ?
Si, l'armée est toujours obligatoire, encore.
Non, c'est pour devenir un métier.
L'armée est obligatoire.
L'armée est obligatoire.
Non, c'est tout.
Généralement, tu...
En tant que général, je peux témoigner, quand même.
Vas-y.
Parce que, maintenant...
Maintenant, on recrute, surtout dans le civil.
C'est fini, tout ce recrutement administratif.
D'accord.
Petit pion.
Alors, tout d'abord, bonsoir, Gérard.
Bonsoir.
Bonsoir.
Bonsoir.
Ouais, bah, dis-moi...
Ça te dirait de faire l'amour avec un gradé ?
Oh !
Merci.
Bah, écoute, on se retrouvera en peine, alors ?
Pas de problème.
Hé, attends, attends, attends, moi, je suis plus grand des clés.
Hé ! Oh !
On accouche.
On accouche, maintenant, là, sur la question.
On va pas s'éterniser, là-dedans, hein.
Bah, dis-moi, ça fait...
12 mois, c'est trop long, quoi.
Bah, 10 mois, c'est pareil, hein.
Bah, non, c'est 2 mois de moins.
Bah, il y a 2 mois de différence.
Bah, ouais, mais si tu fais le con pendant tes 10 mois,
tu refais un mois de plus, donc ça fait 11 mois.
Ouais, mais Gérard...
Si tu fais le con au bout de 12 mois, tu t'en retapes un de plus.
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.
C'est cumulable.
Ouais, OK.
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...
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.
Et t'avais des permes, ou pas ?
Ouais, mais, je vais te dire, les permes, c'est 48 heures,
et t'as une PLD, une...
PLD, c'est une période de longue durée,
c'est 10 jours.
Dis-moi, Gérard, je peux te poser une question ?
Est-ce que ça t'a plu, l'armée ?
Non, pas du tout, je me suis fait chier, je viens de le dire.
Pourquoi ?
Bah, c'est la question. Est-ce qu'on s'amuse en pesant l'armée ?
Ce sera la dernière question, après, on fera une petite conclusion rapide.
De nos jours. Non, il reste encore...
Non, non, non, on va abréger, on va abréger.
On peut pas. On n'a pas le temps.
Non, je te dis que...
Non, Max, Max, il est venu,
il a dit que tu gérais pas le débat,
c'est à chier, donc on va faire l'autre débat.
C'est toi qui poudre ta merde,
alors toi, tu vas commencer par la permer.
Non, Gérard, continue ton débat, c'est pas du tout la faute de fil.
Alors, est-ce qu'on s'amuse en pesant l'armée
de nos jours ? On va demander ça à Canif.
Bah, écoute, ouais, je pense
qu'il y en a qui s'amusent et d'autres qui s'emmerdent.
Donc, c'est pour toi,
de toute manière,
même en faisant l'armée, on peut s'amuser
avec ses copains, hein ?
Pendant la récré, ils font des jeux, non ?
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.
Ouais, mais ça, de toute manière, tu gardes quand même
à la fin, tu gardes quand même un bon souvenir aussi, non ?
Attends, faut quand même faire quelque chose,
parce que si tu passes 12 mois
à t'emmerder, faut quand même faire quelque chose.
D'accord.
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.
D'accord, je vois pas du tout le...
C'est un sujet, un sujet.
Groubillon ?
Ouais, non, tu te fais chier à l'armée.
Ah bah d'accord, toi, c'est carrément ta réponse.
Bah oui, ça les passionne pas, les naines à l'armée.
Faut abréger, même, toi.
Attends, toi, pour l'instant,
tu vas la fermer !
Ok ? Tu vas fermer ta gueule, maintenant.
Ça va être clair.
Passe de paix.
Bon, on va se polier.
Passe de paix, s'il te plaît.
Je suis dans la hanche, moi.
Passe de paix.
Oui, je suis là.
Gérard, c'est Prothèse, je suis dans la hanche.
Ouais, mais Prothèse, tu t'écrases, maintenant, s'il te plaît.
Merci.
Gérard, assieds-toi bien, parce que là, j'ai un peu de mal.
Bon, allez, Prothèse, tu me dégages.
Hop, terminé pour Prothèse, comme ça, il fera moins le con.
Il fera le con chez lui, à Rouen.
Je suis dans la hanche, Gérard.
Passe de paix.
Hop, on termine.
Ouais, si, c'est cool, l'armée, tu fais le con, quoi.
Ouais, bah, tu t'amuses ou pas ?
Bah ouais, parce que t'as pas envie de faire la reconnerie,
alors que tu fais le con, donc tu t'éclates.
J'ai l'air qu'il va t'éclater, parce que tout le monde
devait se foutre de ta gueule avec ta face de paix.
Non, mais tu peux pas.
Non, non, attends, attends, attends, oh !
Toi, Pildar, tu as...
Ouais, mais tu vas t'écraser un peu, toi.
Tu vas laisser finir les gens parler, OK ?
Trois minutes, trois minutes.
Face de paix, vite paix, vite paix, là, on accouche, là.
Je peux finir, là ?
On accouche.
Bon, alors...
Gérard, je suis dans la hanche.
Ouais, mais je peux finir.
Prothèse, tu dégages !
Je voudrais dire aussi que quand on a les oreilles...
Quand on a les oreilles...
Dégage-moi la prothèse, là.
Aïe !
Est-ce que je peux finir ?
Non.
Non ?
Oui ?
Aïe !
Non, mais aïe !
Arrêtez !
Aïe !
Non, mais aïe !
Vous vous chalmez, là, ou je vous chale, moi, maintenant ?
Oh !
Alors, face de paix, tu réponds correctement.
Ben, moi, ça y est, j'ai répondu.
D'accord, général de mon cul, là.
Ouais, répétez, première classe.
Général de mon cul.
On accouche.
Je suis dans la hanche, répétez.
Ta gueule, prothèse !
Répétez la question, s'il vous plaît.
Bon, allez, vous me faites chier, je répète plus la question.
Allez, conclusion.
Hop, basta.
Conclusion.
Janif.
Fais passer les autres, j'ai l'air.
D'accord, petit pion.
Petit pion.
Petit pion.
Petit pion.
Petit pion, une fois, petit pion, deux fois, petit pion.
Je suis là, je suis là.
Conclusion.
Je suis là.
Mais bouge pas ta hanche.
Prothèse, ta gueule.
Donc, tu veux ma conclusion ?
Ouais.
Ben, écoute.
J'ai écouté ton débat parce qu'en fait, je viens d'arriver sur la chaîne, 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.
Alors, moi, je t'emmerde, petit pion, dégage, bonne nuit, au revoir.
Général, mon cul.
Aïe.
Alors, c'était un très bon débat.
Oui.
Je voulais le dire.
Et j'aimerais dire aussi un petit message pour...
Non, non, il n'y a pas de message.
C'est un dénommé Philippe qui est dans le truc.
Non, non, il n'y a pas de message.
Salut.
Phase de paix.
Je voulais dire.
Phase de paix.
Phase de paix.
Oui, c'est phase de paix.
Général, mon cul, vous voulez dire.
Allez, vous me faire foutre dans son oeuvre.
C'est bon, c'est bon.
Je vous respecte, je te mets au trou.
D'accord, allez, phase de paix.
Oui, phase de paix, là.
Ben, moi, est-ce que ce serait possible d'avoir Troufion, là, en quarantaine ?
Ben, pas de problème.
Bon, alors, tu...
C'est pas la conclusion, ça.
Allez, Gérard.
Conclusion du débat, phase de paix, dernière fois.
La ramée, c'est de la merde.
Bon, alors, ben, d'accord.
Pour toi, c'est la conclusion.
Croupion.
Ouais ?
Ben, débat pourri, et puis regardez la 6, il y a Maxou, quoi.
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'as le cas de ne pas participer au débat.
OK ?
Regarde le chien.
Va bouffer tes croupions.
Mais arrête de bouger de la hanche.
Cani ?
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.
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, pour mieux écouter, regarder M6,
il y a Max qui passe.
Eh, mais, Gérard, t'énerves pas sur moi, j'y suis pour rien.
Non, mais, c'est pour Croupion que je m'adresse spécialement.
Ben, ouais, c'est pas moi qu'il faut engueuler, hein.
Donc, on le sait, on l'a aussi dans les studios, Max.
Alors, donc, voilà.
On en a parlé en début d'émission.
Bon, ça y est, euh...
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.
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 la deuxième.
Moi, j'ai pas appris grand-chose, hein.
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 content de 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é.
Si t'es pas content, je t'emmerde.
Tu prends une chose, tu prends tes clics et tes claques
et tu te taches chez toi.
Comme ça, ça nous prend des vacances.
Donc, conclusion, sinon, c'était pas mal dans l'ensemble.
Je pense qu'on a atteint combien, là ?
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.
Ben, c'est dommage.
C'est dommage que les trois derniers que tu m'as récupérés
ont foutu la merde.
Ils me disent pas que c'est à cause des auditeurs.
Ils me disent que c'est à cause de toi, 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.
Ah, enfin, le débat.
Attends, toi, tu vas rester à l'arrière, tu vas fermer ta gueule.
Ah, non, non.
Si, si, parce que je te bats pas en standard.
Je te bats pas en standard.
Ah, si, si, si, moi j'en ai marre, ça fait depuis 22 que je suis là, Gérard.
Ouais, ben, tant pis.
Donc, on écoute le disque et vous pouvez appeler Manu, bien sûr, les numéros, Gérard, vas-y.
C'est 0803 085000 et toujours le...
www.funradio.
Et on se retrouve tout de suite après.
J'espère qu'il y aura des putes, quand même.
Ben, toi, t'en fais partie.
== Le débat sur la prostitution ==
=== Contexte ===
=== Les personnages ===
=== Transcription ===
C'est le deuxième débat et on salue les gens qui sont sur IRC, on salue un peu tout le monde, on leur fait les coucous, on les remercie d'être là.
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.
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.
Pourquoi ?
Non parce que 13 ans et demi, je ne veux pas.
C'est tout ?
Non, non, non, il est hors de question.
Non mais moi je suis précoce moi.
Non, non, je ne veux pas le savoir, 13 ans et demi, je n'en veux pas dans le débat.
J'ai dit non.
J'ai dit non.
Bon ok, je le jare.
Ce n'est pas croyable.
Voilà, c'est tout, moi je ne prends pas des mineurs dans mes débats.
Et donc le disque, oh ça suffit là.
Le disque qu'on venait d'écouter, c'est Gérard Ducoté avec la boule de travers et donc on va accueillir pour ça Barakouda, 21 ans, de la mode Beuvron.
Oui, mais reste du soir.
On écoute Fun Radio sur 106.4.
Et demi, et demi.
106.4, j'ai moi.
Et demi, ou alors je suis en avant, on ne sait pas.
Oui, ce n'est pas grave.
Grosse Bertha, 22 ans, Bordeaux, 91.8.
Salut.
Salut Grosse Bertha.
Sanisette, 19 ans, Bourricot, c'est la ville ça ?
On appelle de Bourricot.
On écoute Fun Radio 97.3.
Eh oh, il faut peut-être vous réveiller.
Quand je vous parle, vous allez me dire si c'est bien les fréquences.
Je t'ai dit oui.
Ok.
On se réveille.
Bourricot.
Sanisette, on se réveille.
Moi, je te dis réveille-toi, je t'ai déjà répondu.
Ok.
Alors Twingo, 21 ans, Paris, sur 101.9.
Ouais.
Et Petit Suisse, 19 ans, Brest, 98.9.
Ouais, bonsoir Gérard.
Bonsoir.
Donc le débat, ça porte sur...
Les putes.
Comment ?
Les putes.
Les putes.
Sur la prostitution.
Ouais, c'est pareil.
Je tiens à rappeler, Gérard, quand même, qu'on a une prostitue avec nous.
Ouais, je sais, j'ai vu.
Donc tu charges 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 à un petit Suisse ?
Ouais, ouais, j'y vais deux fois par semaine pour me vider les couilles.
Ouais.
Ouais, je ferai un maximum de plaisir à faire ça.
D'accord.
C'est pas mal.
Voilà.
Et donc, Twingo ?
Oui, alors moi, je suis prostituée de profession.
Ouais.
Donc j'ai l'occasion d'en voir pas mal.
Ouais, je vois mes copines qui sont prostituées aussi, quoi.
Uh-huh.
Donc ouais, je vais les voir des fois, on se fait des bouches.
Donc je vais voir des putes.
Uh-huh.
Voilà.
D'accord.
Sanisette ?
Ouais, bah moi, j'exerce occasionnellement pour arrondir mes femmes, moi.
D'accord.
Bah c'est pas mal.
C'est pas mal comme truc, grosse Bertha.
Bah non.
Non, mais tu peux préciser ?
Bah non, parce que j'en suis une.
Non, mais attends, t'as un mec, commence pas à dire des conneries.
C'est un guignol.
Un peu, ouais.
Ouais, bah, et Fildar, quand je t'appellerai potchampe, tu le sortirais dessous le standard.
D'accord, mais des prostituées, mec, ça s'appelle des guignols.
Pour l'instant, tu vas éteindre ton micro et tu vas faire ton boulot comme je te le demande, ok ?
Des guignolos.
Alors, Barakouda ?
Des guignolos, s'il vous plaît, je préfère.
Oh, grosse Bertha, tu te tais, c'est le top, là, merci.
Barakouda ?
Ouais, bah moi, j'y vais comme tout le monde, pour l'hygiène, pour me vidanger, quoi.
D'accord, il n'y a pas d'autre solution que d'aller en voir.
Tu peux me dire, attends, grosse Bertha, Barakouda, tu peux me dire s'il y en a de ton côté, là-bas ?
Bah ouais, c'est quand même assez blindé au niveau pute, ouais, il y a tout ce qu'il faut, quoi, ouais.
C'est abominable.
De quel côté qu'il y en a ? Parce que je connais un peu...
Des gauches.
Tu connais les coins putes ?
Non, mais je connais la mode Beuvron parce que j'y étais, alors donc...
Ouais, mais je ne voudrais pas trop, trop citer parce que je ne voudrais pas qu'on me répète.
Après, du boulevard Jean Jaurès, quand même.
D'accord, mais c'est pas mal, c'est bien précisé, quand même, le...
T'as bien précisé, quand même, le nom de la rue.
Il n'y a pas de problème.
À la place d'Andouillette, on accueille M. Claude.
Bonsoir, je suis Macron.
Salut.
Et je le revendique.
Salut, Macron.
Bonsoir.
C'est Barakouda.
Salut, Macron.
Ouais, ça y est, ça y est, ça y est.
Donc, pour toi, M. Claude ?
Ouais, bah écoute, moi, je mets des putes sur le marché.
Ouais.
Et ce qui se passe, c'est que c'est sur le boulevard Baie.
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.
C'est pas valable.
C'est pas valable ? Attends, toi, tu risques de gerber vite fait, toi.
Je vais pas chercher qui c'est, hein.
C'est horrible.
Ok.
Horrible.
Alors, euh...
C'est trop susceptible.
Oh ! On s'écrase.
Inonible.
On s'écrase.
Donc, M. Claude, pour continuer...
Ouais, donc, excuse-moi, j'étais un peu...
Je voulais faire un peu de débordement.
Ouais.
Je voulais faire un peu de pub pour mon commerce, je suis désolé.
Ouais.
Donc, euh...
Oui, tout à fait.
Mais je respecte ces femmes à leur juste valeur.
De traîner.
D'accord.
S'il vous plaît.
Oui, oui, c'est qui, là ?
Euh, c'est, euh, Twingo.
Ouais.
Je ne supporte pas...
Pas de marque.
Oh !
Pas de marque.
Ouais.
Eh oh ! Le prochain qui ouvre sa gueule !
Quand quelqu'un parle, gerbe !
Ok, ouais.
Ok, ok.
Ok.
Ouais.
Alors, Twingo.
Oui, je vous demande juste d'avoir un langage.
Un langage correct en parlant de nous.
On n'est pas détraînés.
Ouais, mais toi, t'es pas de série déposée, toi.
Ok, salope.
Oh !
Qui c'est qui s'amuse à dire des saloperies, là ?
Allez, hein !
Barakouda.
Barakouda, bonne nuit !
Salut !
Non, c'est pas Barakouda, Gérard.
Gère un peu, je vais essayer de voir qui c'est, mais fais quelque chose, quoi.
Ouais, mais attends.
Toi, je t'ai dit d'éteindre ton micro.
C'est pas moi.
C'est un Gérard.
Bon, Gérard.
C'est une odibe.
Gérard.
Oh !
Gérard, pour reprendre le débat, on a un petit sondage, allez.
Donc, à la question pour ou contre la prostitution, 20% des gens...
Attends, hé, Manu !
Ouais.
Les pour ou contre, ça commence à me casser les...
Non, mais tu vas voir, il est bien, celui-là.
Il est bien, il va avoir des réactions.
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.
Alors, hé, tu vois, Manu ?
Voilà.
Ta réaction, là.
Ouais.
Ça, c'est de la connerie, donc c'est pas la peine d'intervenir pour modérer...
Donner des réactions, puis...
Bah, je sais pas, ça aurait...
Non, parce qu'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 ?
OK, d'accord.
Les routiers, ils ont quand même à voir, hein.
Bon, toi, tu t'écrases pour l'instant, OK ?
Non, mais attends, j'ai été routier, et je me suis arrêté voir des putes dans les
camionnettes, je sais pas de quoi je parle.
Ouais, bah, de toute manière, il y en a un peu partout, hein.
Des camionnettes ou des routiers ?
OK, bon, qui c'est qui veut rajouter quelque chose ?
Il y a une nana qui voulait parler, c'est qui ?
Bon, bien, c'est bien, quand je demande qui veut parler, il n'y a plus personne.
C'est pas mal.
Nous t'écoutons.
Bon, alors...
J'ai des bons de réduction sur les fellations, si ça intéresse quelqu'un.
C'est qui, c'est qui, c'est qui, ça ?
C'est M. Claude.
Ouais.
Les dix premiers, plus un invité, j'ai une réduction sur les fellations.
D'accord, eh ben...
Prisca et Zoubira.
D'accord, OK, on a très bien compris le message, donc...
J'ai pas les manques, j'en ai peur.
J'ai le sucre, je suis trop heureux.
Oh, on se calme un peu, là, ou quoi ?
Donc, alors, moi, je vais répondre quand même à la question.
Il faut.
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.
C'est tout.
Oh, Gérard.
Tu peux nous le dire, tu peux nous le dire, on est entre nous.
Non, non, non, non, mais ça y est, j'ai répondu, donc...
Ils veulent pas de lui.
C'est bon, c'est bon, c'est bon.
C'est qui ?
Ça s'est peut-être arrivé, ça, Gérard, de te faire recaler par une pute, non ?
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...
Ouais, c'est Polo, c'est un menteur.
C'est qui ?
C'est Polo.
Ouais, il n'y a pas de Polo dans le débat.
C'est Polo, et c'est un menteur.
Bon, attends, toi, tu vas commencer à t'écraser.
Hein ?
OK ?
Oui, c'est Pepito, je vous l'ai dit.
Écrase !
Oh, Fildar.
Ah, on sonne à la porte.
Fildar !
Fildar !
Putain, j'ai oublié !
Putain, j'ai oublié !
Oh, s'il vous plaît, vous vous tchalmez !
C'est Lolo Ferrari.
Bon, Fildar !
Oh, quand je te parle, les oreilles, là !
Elle sonne avec son téton.
Putain, c'est pas possible de travailler avec un con comme lui, hein !
Ah, Blinquillon !
Lolo Ferrari, elle est pas baisable.
Elle est pas baisable, cette meuf.
Non, mais quand vous aurez fini vos conneries, on pourra peut-être...
Hé, Fildar, tu gères un peu, là, au lieu de faire le con ?
Mais quoi, je gère ? Je dis rien.
Non, tu gères en rien, pour l'instant.
Tu dis que t'as l'air de t'appeler pour les caméras...
Pour revenir au débat...
Pour revenir au débat, il y a un réa sur IRC
qui te demande si tu connais personnellement une prostituée.
Non, pas du tout.
C'est Sandy ?
Euh, qui c'est qui vient de dire ça ?
Je te préviens, Fildar !
Troisième édition.
Si ça recommence à parler de Sandy,
tu me vires où, où, où, Sanisa Toutingo,
je cherche pas à qui savoir.
Ok, d'accord.
J'ai trop de respect pour cette profession.
Ok, alors, je te signale, t'as intérêt de te réveiller
quand je te parle, parce que tout à l'heure, tu as morflé.
Que pensez-vous des tarifs
selon ce que vous voulez faire ?
On va demander à Barakouda.
Allô ?
Barakouda, vas-y, réponds.
Barakouda !
Il dort.
Il est là, il est là !
Il est où, Michel ?
Il est où, pute ?
Allô, Gérard ?
Barakouda, tu réponds, s'il te plaît.
Ouais, je te disais, moi, j'ai une carte d'abonnement.
J'ai souscrit à la carte Tepu.
J'ai droit à une fédération gratuite
pour 3 sauts demi-achetés.
D'accord.
Ça vaut relativement le coup.
Ça marche aussi à Paris, dans tous les coins.
C'est intéressant.
D'accord. Grosse Berthe ?
Alors, moi, mes tarifs...
Pardon.
Bon, je sens que tout à l'heure,
je vais m'énerver, ça va...
Je vais en saquer, déjà, vite fait.
Je pense que les tarifs varient entre 5 et 10 000 francs
sur l'avenue Foch, de Paris.
Alors,
Grosse Berthe, au revoir.
Ça t'apprendra de préciser.
J'avais bien précisé
de ne plus donner de nom. Grosse Berthe, terminé.
Il n'y a plus de pute à l'avenue Foch.
C'est terminé, ça, Gérard.
Terminé pour Grosse Berthe.
Sanisette.
Oui, en fait,
moi, 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, quoi.
Salope.
Toi, le salaud, tu vas faire mettre ta gueule.
Alors, je t'explique pourquoi
je demande pas mal.
Honnêtement, en toute franchise, moi, j'aime la bite.
Donc, forcément, je me donne à fond.
Et donc, forcément, on revient me voir très souvent.
Et donc, forcément, j'augmente mes tarifs.
D'accord. Gérard,
il y a Yopi sur IRC
qui te demande si tu connais la différence entre une pute
et une pizza. Non, mais
ça, c'est quoi ? La pizza, tu peux l'avoir
sans champignon. D'accord.
Twingo.
Oui, c'est dégueulasse. Pas de marque.
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
à 10 ans de paie.
Mes tarifs commencent à 10 000.
Et en fait, je fais 5-6 passes dans le mois.
D'accord.
Petit Suisse.
Ouais, moi, j'ai des tickets Sodo.
Donc, j'ai des promotions sur les Sodo.
Je rappelle que je ne prends pas les tickets
de la vie. Non, mais attends.
Petit Suisse, je crois qu'il n'a pas
tellement compris la question, lui.
Si, si, j'ai des tickets Sodo pour avoir des réductions
sur les tarifs. Non, mais que pensez-vous des tarifs
selon ce que vous voulez faire, abruti ?
Ah, ben, je pense que c'est excellent, quoi.
C'est bien, hein. D'accord.
On n'a rien à voir des réductions comme ça.
Non, mais je crois que pour l'instant,
je pense que vous
déconnez à ce temps-ci.
Non. Non, presque pas.
C'est pas le genre de la maison. Non, pas du tout.
C'est pas le genre de la maison. Non, presque pas.
Donc, tu as dit qu'on se marrait.
Non, presque pas.
Bon, Jérôme, tais-toi, écoute-moi.
On accueille à la place de...
Attends, tais-toi et tu fermes ta gueule, toi.
On accueille à la place de M. Claude qui est parti se coucher
queue de velours. Et à la place de...
M. Claude. La grosse Bertha,
je cherche encore. Attends, c'est pas évident
à trouver. Qui ? C'est qui ?
Queue de velours. Ok.
Bonsoir. Bonsoir.
Alors, petit Suisse,
t'as répondu, toi.
Alors, donc, queue de velours pour toi.
Excuse-moi, je me faisais une queue.
Ouais, salut. Ah, d'accord.
Je pense que, tout à l'heure, tu as retourné d'où que tu deviens.
Fais gaffe que je te sperme pas dessus, quand même.
Ouais, ben, moi, je te dis fais gaffe parce que, tout à l'heure,
tu as retourné d'où que tu viens.
Bonsoir. Alors,
Sanisette, c'est terminé pour toi. Au revoir.
Hop. Voilà. Bonne nuit pour elle.
Terminé, ça y apprendra de
parler de Sanisette. Ok, je l'en remets.
Une admissible. Je te dis de la gerber.
Et tu fais ton boulot correctement
avant que je t'éclate. Bon.
Ok ? Queue de velours, là, pareil.
Queue de velours pour toi.
Pour moi, quoi ?
Que pensez-vous des tarifs selon ce que
vous voulez faire ? C'est la dernière fois que je répète
la question parce que vous commencez à me les gonfler,
là, sur le deuxième débat.
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 sode de mie plus un breakfast.
Oui.
Tu vois, ça peut rire les autres
abrutis derrière, mais tu veux dire ça pour qui ?
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.
Donc, à mon avis,
à mon avis, t'es...
Non, mais, à mon avis, t'es vachement au courant
de cette publicité, donc je me demande si c'est pas...
Parce que t'en avais pas l'avantage, il y a deux ans, espèce de con.
Espèce de con, je t'emmerde, alors tu dégages
Queue de velours, merci.
Voilà.
J'aurais bien mis un coup de langue à Queue de velours.
Bon, Gérard, on a des nouveaux, on a Kékéthos.
Non, non, mais tu me remplis une fiche...
À chaque fois que tu me fais le coup,
tu sais pas écrire ou quoi ?
Non, non, mais tu te démerdes, tu me...
Bonjour, Guillaume, c'est Kékéthos.
Alors...
Il est où, Michel ?
Je sens que Fildard, tout à l'heure,
avant la troisième question, je vais te mettre
une gaufre, mais tu as ton souvenir, toi.
Chocolat chantilly, pour moi.
Banane, banane, chocolat.
Bon,
une question IRC, non ?
Oui, si tu veux.
Alors, est-ce que la carte ImagineR
peut servir pour les putes ?
Non.
Moi, j'ai une question pour les mecs de l'Internet.
gringo tu peux me trouver un site sur jacques vapeur alors toi je vais dire une chose que
si tu as un truc à demander à rigaud 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'ai ou j'avais oublié de préciser donc allô allô allô allô
bon ça y est vous avez fini la bouconnerie alors croyez vous qu'il faut laisser ouvert les maisons
closes on va demander ça à barakouda sont fermés fils d'art tu cherches des ans et tu fermes ta
gueule pour la deuxième fois ok gérard sur rc on me dit que si une maison est close elle peut pas
être ouverte mais il y en a qui seront ouvertes ou fermées mais je pense que les trois quarts
maintenant sont fermés on va demander à barakouda ouais il a pris le goldorak en plastique et donc à
la place de sa visite on accueille bermuda et je suis en train et à la place de queue de velours on
accueille à nu sans sky
alors salut tous ceux qui viennent de nous récuer que revenir alors barakouda pour toi
pour revenir au débat à turpentine qui te demande gérard vu que tu parles de maisons
closes est ce qu'il y a des immeubles clos non pas ma connaissance ouais ouais je voudrais encore
mon jingle un coup là non tu es tu réponds à la question s'il te plaît bon d'accord que je te
propose c'est un compromis en fait les maisons closes tu les laisses entre ouvertes à l'eau
à l'eau à l'eau à l'eau à l'eau à l'eau et quand vous aurez fini vos conneries vous vous ne direz
alors barakouda ouais tu m'écoutes je t'écoute alors je te disais à l'eau à l'eau à l'eau à l'eau
à l'eau les auditeurs vous m'entendez un bon moment temps manu mais c'est pas moi j'ai rien
fait ils sont là rien et moi vous m'entendez pas moi à kouda vous faites quoi là soir je sais pas
mais là ça vient pas nous allons touche derrière ton micro voilà vous l'entendez là vous l'entendez
gérard maintenant c'est bon barakouda troisième fois barakouda c'est la troisième fois que je
pense de la caisse je te fais appeler donc c'est barakouda de l'agence touriste que je voulais dire
c'est que ben je te propose un compromis donc les maisons closes et bien au lieu de les ouvrir tu
les laisses juste entre ouvertes ça suffira à quoi je pense qu'ils vont s'offiler ouais d'accord
quelques toss ouais bah moi les maisons closes je trouve ça abominable et je trouve qu'on devrait
tous les faire mais c'est horrible d'accord abominable bienvenue à tous les abominables
moi personnellement j'en ai rien à foutre qu'elle soit fermée ou ouverte j'en ai rien à
foutre c'est pas mon problème à ce propos gérard y'a yopi derrière merci yopi sur rc qui demande
s'il faut une clé pour rentrer dans les maisons non maintenant c'est les personnes qui l'utilisent
ont avec l'info une passe fil d'art tout écran s'il te plaît merci on m'a dit que c'était plusieurs euros
tout est une baule il me posait une question qui est bien oui j'aurais voulu savoir si je
travaillais dans une maison close qui serait ce type de passer non parce que je vais j'ai déjà
ce qu'il me faut j'ai trouvé même alors qui c'est qu'il vient d'être c'est pas moi c'est pas moi
j'ai rien dit je crois que c'est un animal c'était moi j'ai pas la zik de m'animal et les obis de lépreux
c'est moi je fais dans la bouche je vais essayer de trouver jean je sens que vous commencez déjà
toute la merde troisième question je sens qu'on va changer les auditeurs j'ai pas répondu moi on va
demander un twingo oui à deux marques oui bah moi j'ai commencé ma carrière dans ce genre de
détachement il y avait c'est mignon il y avait des mains de jardin dans la cour et tout mais
voilà elle a fermé et bon je me suis retrouvé à la rue donc il a fallu que je me brouille par
mes propres moyens donc au début c'était un peu dur j'étais dans une petite chambre de bonne mais
j'avais juste un petit lavabo de merde et puis bon bah là je me suis dit que ça s'emballe et puis je me suis dit mais attends
si tu prennes ta vie en main faut que tu t'assures quoi d'accord twingo twingo oui twingo cinq minutes
celui qui s'amuse à jacter alors que la personne parle va virer mais vite je vais pas chercher
gérard pour revenir dans le thème du débat il y a davy one encore lui non s'il vous plaît 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 qu'est-ce que t'as fait là oh là là il a tout cassé t'as même pas entendu ma
question non parce que j'étais en train de regarder ce qu'il était en train de faire manu à l'arrêt
en train de faire des conneries je répète si t'es pas content tu dégages toi 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 non j'ai
répondrai pas du tout comme ça ça va aller clair et c'est j'essaie d'être répondu à sa question à
celui-là ouais on va demander à anus rancelet rancel pardon ouais concernant les maisons closes
ouais nous on a eu des problèmes c'est qu'on 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 ouais alors non mais on la recherche aujourd'hui on croit qu'elle traîne du
côté de suren alors anus en sky terminé pour toi au revoir terminé pour toi c'est fini elle s'appelait
christine et bah tu dégages allez hop tu me le vire terminé pour lui il a pas dit qu'elle était grosse
petit suisse pour finir ouais donc moi je trouve ça inadmissible carrément les maisons closes
surtout que moi j'ai la pute que je fréquente elle s'appelle pupute et moi j'aimais bien quand
tu avais des journées cuisses ouvertes d'accord c'est pas mal moi je pense que à mon avis comme
vous allez comme vous êtes en train de vous les gens s'il te plaît tu me laisse parler s'il te
plaît comment est un temps merde ma copine tu vois c'est clair net et précis ce coup là tu vois à temps
merde et atchi dans la gueule non non non alors maintenant celui qui s'amuse à déconner avec ça
n'a dégagé tout de suite c'est n'importe quoi alors parce que ça commence à bien faire alors
filard tu vas faire ton boulot correctement et tu as fermé ton micro c'est pas évident de chier
dans la gueule ouais ben toi tu gérard on a on a perdu environ 500 personnes quand tu as parlé
de ce qu'il y a non c'est une honte non mais c'est dégueulasse mais gérard vient t'asseoir il a rien
fait fil d'art lui t'a pas dessus tu as tu as le permis le micro je te préviens toi donc quatrième
question celui que ça plaît pas il peut ranger peut raccrocher on prend d'autres personnes il ya
du monde derrière t'attends allez-y pose la question gérard faut-il se produisait pas et
où il va il va se faire lui là avec ses allô alors faut-il se prostituer pour avoir du boulot et on va
s'écouter avec une scie pour se raser les boules donc on va récupérer pour sa barracuda en espérant
que vous vous êtes calmés durant ce disque ouais je suis là j'aimerais bien un peu mon jingle manu
c'est plus la peine de le passer quand il te le demande parce que sinon il va il va gerber lui
commence à m'énerver à l'opinion qui est aussi tu t'écrases pour un sens je récupère tous ceux
qui étaient là ok animal ok merci bon alors barakouda était toujours là toujours présent
avec mes chiens l'honore qui est quête hausse j'ai la gaule toujours la bernuda ah oui ça chauffe
oh tu te calmes bernuda s'il te plait merci bon fils d'art soit tu me les chagnes ou soit tu me
prends d'autres personnes parce que ça commence à gonfler ça commence à me gonfler c'est pas
dirigeable alors twingo toujours là gérard est-ce que tu peux répéter la question s'il
te plaît mais on va finir tout une pointe go toujours là et petit suisse ouais salut à la
place d'annus en sky on accueille fleur de lotus je te préviens n'essaye pas de les repasser sur
d'autres non je t'ai dit non le fleur de lotus lotus et donc salut à toi alors faut-il se
prostituer pour avoir du boulot voilà la question que l'on me demandait sur l'hier c'est donc on va
demander à barakouda non non ils ont jamais demandé ça je répète la question comme tu
me l'as demandé donc barakouda tu réponds s'il te plaît c'était sur l'armée tout à l'heure tu m'entends
moi je t'écoute ok je te dis objectivement dans la vie tu as une sale gueule et que tu peux rien
faire d'autre moi je crois que ouais vaut mieux ok donc pour toi pour mieux avoir une seule gueule et
puis se prostituer écoute si tu n'as pas le choix et que tu es obligé de vivre à la sueur de tes fesses
écoute faut assumer quoi je pense que d'autres sont passés par là avant n'est ce pas ok t'inquiète
hausse non je pense pas que ce soit un vrai métier quand même mais c'est bien pratique d'accord n'est
ce pas oui je t'écoute non j'ai dit n'est-ce pas d'accord question à toi l'encontre bernuda écoute
moi plus ça chauffe entre mes fesses c'est mieux c'est quoi tu me files ton number ça commence à
bien faire là vous allez vous calmer avec les avec les gens quand ils parlent ok mais c'est que des
cochons pour toi moi c'est un vrai métier donc je peux pas me permettre de dire que que plus ça
chauffe je chauffe c'est vrai j'adore le cul mais bon toi t'es plus trop fou les deux moi je fais
pas très sérieusement très sérieusement d'accord toi tu déclares pas tout exactement je le fais
payer en liquide gg tu fais du black moi je veux bien payer en nature et vous précisez vos noms
quand vous voulez parler
ouais je voulais savoir si c'est un vrai travail et il y a quoi il y a des acédiques pour les
il y a une retraite pour les putes tout ça tu cotises sur tes putes les prostituées payent une
retraite tout à fait c'est à quoi où c'est que tu cotises à la banque du sang en fait non tu as une
assurance personnelle est-ce qu'on touche les sodomisations sociales c'est à 80% est-ce que
t'as un compte épargne à la banque du sperme celui qui s'amuse je vais faire des dépôts
et des retraits assez souvent alors
petit suisse pour toi ouais bah moi j'en profite parce que en tant que client quoi mais bon si elles
veulent faire ça quoi donc c'est tout ce que tu as à dire ouais ok fleur de lotus écoute moi je veux
prostituer 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 sans sans problème sans après qu'il n'y ait aucun on va chez les putes
et au cul au cul ok d'accord et chez le coiffeur on fait quoi voilà ok alors moi je peux vous dire
une chose que celui qui veut faire son boulot son boulot comme ça bah tant pis non personnellement
dans un fil d'art puis là si ça ne dérange pas tu non mais il est parti chercher un truc c'est pas
grave par contre moi j'ai un petit son un petit sondage qui est bien par contre là à la question
n'en rigolez pas à la question êtes vous déjà allé voir une prostituée 25% des gens ils sont
allés avec leurs femmes 35% ils sont avec aller avec leurs enfants et 40% ont demandé mais alain
prostituée qui n'importe quoi ça y est là vous vous calmez un petit peu là on se calme l'ascar
et en mire toi d'accord c'est à moi qui parlais vas-y jara alors cinquième question pourquoi que
les jeunes se mettent à la prostitution on va demander à fleurs de lotus
pourquoi que pourquoi les jeunes se mettent à la prostitution écoute de la prostitution c'est le
chemin le plus facile pour pour gagner de l'argent quand tu vois que j'ai pas il ya des jeunes qui
veulent être cadre c'est pas de +2 alors que tu te fais sur le trottoir des cartes les cuisses
et c'est parti alors je vais dire une chose que plus d'euros et puis dans le but c'est plutôt
bien bien comment je fais maintenant moi il ya
sur irc il ya un réa qui te demande s'il ya des réductions pour les prostituées après 19h comme
france télécom non je vois pas de réduction alors petit suisse à la minute vient de couper petit
suisse tu prends quelqu'un d'autre et c'est tout on va demander à twingo oui pas de marques gérard
faut arrêter la balade qu'elle a qu'à prendre un autre nom qu'une marque de voitures c'est tout un
appel toi qu'ils ont rappelé quito je faisais je voulais dire oui moi j'ai choisi d'être de
prostituées parce que je moi j'avais envie de travailler dans la rue donc c'était ça ou
pervenche donc mettre des pvc pas trop mon truc donc j'ai choisi prostituées et tu préfères te
faire la chance de faire revanche oui j'ai eu de la chance à l'été il y en a sont trop moches pour
faire plus tant qu'ils font elles font pervenche bernuda ben 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 demande ça suffit derrière s'il vous plaît parce que là ça commence à bien perdre maintenant
vous allez vous tenez vous allez éviter de dire des cochonneries comme ça ok sur les putes tu veux
qu'on parle de poésie si ça te plaît pas toi tu peux tu peux raccrocher ton téléphone ça nous prend
des vacances je voudrais te faire un bisou ma pute tu dégages sinon à la place de petit suisse on
accueille plus pute bonsoir gérard salut salut salut ça va c'est ça peut te foutre des médecins
à laquelle vulgarité on va demander à bâtir on va demander on va demander toi pourquoi que les
jeunes se mettent à la prostitution pas que j'en sais moi en tout cas moi j'ai fait la pute un bon
parce que je n'avais pas j'ai pas d'autres moyens de gagner de l'argent et j'adore les grosses textes
excuse moi 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 c'est
faux mais si c'est vrai non pilar tu t'écrases pour l'instant je donnerai mes réactions moi même
je connais jeanette qui est avenue bip et bah un coup d'oeil pour finir ok bon manu ça suffit j'aime
bien ce zik ouais mais moi j'en ai ras le bol hé non mais vous avez vous avez les idées de gâcher
les débats ou quoi là ce soir gérard j'ai un sondage qu'on m'a rapporté sur internet par
kevin klein alors quels moyens de paiement utilisez-vous ouais mais non mais tu gueules tu
dis tu gueules il fait ça il fout sa merde avec la cause de barracuda l'autre qui fait la moitié du
boulot il y a pour l'instant il y a krigo et ouais avec moi c'est abominable oh vous vous fermez vos
gueules maintenant 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 non bah ça normalement les cartes jeunes et cartons routières ça passe pas
vous avez commencé par vous tchalmé maintenant maintenant sa barracuda de réagir ok alors moi
je veux 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 ya beaucoup de vieilles qui se prostituent et je sais pas si tu t'es déjà
fait attend attend excuse moi une seconde barracuda barracuda c'est la dernière fois que tu me met ça
terminé pour lui c'est futé
je sens que tout à l'heure je vais je vais rester avec le twin go et bernuda vous allez dégager
le débat c'est sur les prostituées là j'aimerais bien qu'on suive un peu le débat et qu'on arrête
de délirer ouais bah toi le premier tu fais ton boulot correctement temps je te défends merde
bon non mais tu vas me chercher un autre une autre personne j'arrête pas vite fait tu te démerde ya
ya des lignes qui sonne alors donc il ya comme un gars qui sait qu'elle a pas répondu tout le monde
a répondu non j'ai pas répondu moi j'ai raté non tu as déjà répondu je te fais passer je t'étais
passé d'ailleurs en premier première alors donc je peux vous dire une chose qu'il ya beaucoup de jeunes
qui se mettent à la prostitution maintenant on sait pas pourquoi ça faudrait voir parce que
c'est quand même inadmissible d'avoir des jeunes qui si qui s'y mettent aussi maintenant pas fait
de recherches gérard sur ce sujet tu sais pas pourquoi toi mais c'est une petite idée ça vient
d'où si ils ont envie de se prostituer c'est leur problème c'est pas de mien en personnellement moi
là dessus j'irai pas me foutre à la prostitution comme ça c'est à dire voilà s'habiller comme ça
toi que tu cherches
les gens et tu fais vite fait toi alors les stars d'aujourd'hui ce prostitutel on va demander à quelques
tous tu peux répéter parce que j'ai mal compris les stars d'aujourd'hui ce prostitutel mais n'importe
quoi les stars propres à protéger à la prostitu pas alors tu peux préciser un max de pognon et
voilà donc elles n'ont pas besoin d'argent ben ok mais ailleurs peuvent le faire gratuitement bon ça
ça m'étonnerait moi c'est que la dernière fois je me suis tapé pamela henderson bon le seul truc qui
m'a repoussé ses pieds mais sinon va pas demander d'argent j'ai pas l'air ça malibu comme si non mais
manu tu arrêtes un peu tes conneries s'il te plaît la prochaine fois je m'appelle mitch ouais ben la
prochaine fois tu vas t'appeler ferme ta gueule maintenant pas de problème ok bernuda ouais ben
moi j'ai déjà eu des clients effectivement des stars et des politiciens également c'est jean-marie le pen
bernuda pas de marque tu vas tu vas te calmer avec des conneries comme ça d'accord sinon tu
vas dégager pas d'insultes je dis plus de non alors 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 de des gens de personnalités qui vient vous voir et surtout ce qui vous demande quoi
c'est exact moi je me suis déjà pris entre autres des coton-tiges mais j'ai pas eu que ça quoi je
veux dire c'est quand même affolant les gens de la radio ou pas des gens de la radio on peut pas
donner de nom moi j'ai pas de marque moi je suis sûr que tu t'es déjà tu as tu t'écrases excuse
moi tu dis par exemple le prénom et le nom genre sable z alors quelque chose terminé pour toi au
revoir c'est pas quelque chose je l'avais viré je vais gérer sinon la place de barracuda on
accueille giclette bonsoir là je vais te dire une chose que si c'est les mêmes mais non garat j'ai pris
25 lignes et valide en ligne alors on va demander à pleurs de lotus nantes windows a pas répondu j'ai
pas répondu je suis d'accord avec les stars sont des putes dans le sens où bah oui j'aime pas peut
venir nous voir quoi c'est des gens qui payent et qui paye bien donné quelques exemples vont
s'entretenir de nom mais j'ai dû fouetté
un comique un petit comique sans cheveux tu vois qu'avec une drôle de tête je les fouette et
pendant trois heures d'accord avec fleurs de lotus il me semble que certains stars de la télé se
prostituent certains stars enfin de la télé des animatrices qui couche avec des producteurs et ça
je dirais pas de nom et je le sais mais personne ne me le fera avouer ok c'est qu'il s'est dit c'est
et personne ne me le fera avouer ok c'est qu'il s'est dit c'est
qu'il y avait il ya des stars qui doivent se prostituer oui c'est possible pour se faire
encore plus d'argent mais c'est tout ce que tu peux préciser toi maintenant je suis en train de
pomper j'ai pas que ça sert non bon alors dans ce cas là tu as pas que ça paie va continuer à pomper
en voir allez allez hop et giclette ouais déjà bonsoir j'ai un soir et je vais dire que déjà les
stars ils vont pas voir des plus qui vont voir des gold girls comme on dit et je pense que des
google girls on connaît tu peux préciser on va pas donner de nom gérard non mais tu peux préciser
non mais on va pas parler des stars de cinéma voilà quand même c'est leur vie privée on va
être pas parasites quoi moi je peux vous dire une chose que à ma connaissance personnellement j'ai
jamais vu de stars qui se mettait à la prostitution donc non j'ai jamais vu ça encore ça m'étonnerait
que yann haye qu'il fasse un homme et gérard il ya fait plus de films bien et où elle a pu de
reconnaissance à des plus célèbres elle peut tomber dans la prostitution ça on sait pas 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 ben t'en as certaines qui font tout en faisant des films x donc je pense que si ici
ils choisissent de faire ce boulot là c'est que c'est vraiment eux qu'on choisit c'est pas la
prostitution les films x les deux s'ils se mettent dans le hic s'ils font de la prostitution quand
même donc c'est la même chose voilà donc justement 20
la sixième basse ailleurs on vient de la paire 7e avant avant je voudrais m'adresser aux gens du
standard que c'est possible d'avoir une invitée mystère qu'aurait fait pute alors je préviens
qui s'amuse à demander ça alors pleurs de lotus tu dégages voilà comme ça plus vite alors septième
question il ya plus y at il plus de femmes que d'hommes qui se prostituent on va demander à bernudas
honnêtement j'en sais rien parce que dans le quartier où je bosse ya que des nanas mais je
suis persuadé qu'il ya autant de mecs que non mais je te demande de ce qu'il y en a plus ou moins
d'accord twingo il y en a un peu moins quand il ya un peu moins de mecs au fait de moi dans mon secteur
mais il arrive qu'on fasse des trucs ensemble pour un client c'est lui qui s'amuse à faire
du bordel avec son téléphone est prié d'arrêter tout de suite inadmissible ok qui c'est qui nous
reste quelque chose non je crois que quelque chose je t'avais dit de dégager pas loin si tu veux
répondre ouais je pensais beaucoup plus de filles qui se protégent et qui se prostituent ouais mais
s'il ya plus de femmes que d'hommes et il ya plus de femmes que d'hommes et ceux qui se marrent comme
un boucle avant à se calmer des oreilles oh là là tu vas te calmer parce que tu as dégagé c'est pas
moi allez gérard je peux répondre ouais
c'est ma croix la moutarde non tu sors d'où toi j'ai remplacé pupitre temporairement non
non on l'avait viré j'ai oublié de le dire excuse moi c'est ma croix là mais non mais
attend fil d'art tu es prié de faire ton boulot correctement c'est la dernière semaine que tu
paies les débats j'étais dans les 24 lignes je peux pas tout faire ça y est ça se calme derrière
où je vire tout le monde pour revenir au débat voilà comme allait dire manuel
il ya rocco sur irc qui te demande si le téléphone rose est considéré comme une forme de prostitution
justement on va on va en parler tout à tout à l'heure par contre moi gérard j'ai un j'ai un
petit sondage donc à la question combien donneriez-vous à une pute donc 32% donnerait
2 euros 28 28% dans leurs animaux domestiques et 40% donnera leur approbation et 1% déjà donné
leurs dents et n'ont pas voulu donner leur moustache alors je vais dire une chose soit
tu étais tu étais truc de merde la sondage c'est à peu près le même sondage que le premier c'est
même plus la peine de la marque et non mais pour l'instant tu as moitié bouché aveugle dimanche tu
vas te pliancer passé dix ans tu en train de foutre ta merde aujourd'hui la semaine dernière tu faisais
du bon boulot cette semaine que tu m'aimes tu es comme fil d'art fermez vos gueules bon je sens que
moi je pense qu'il ya autant de putes au féminin qu'au masculin mais des masculins il en faut mais
c'est tout bah ouais j'y clette il ya quand même vachement plus de femmes que d'hommes qui tu tu
as qu'à voir les deux gros salope on a là au téléphone ça explique pas mal de choses quand
même je suis désolé je ne peux pas laisser passer ça gérard vous êtes comme des grosses chiennes les
filles tu vois à l'effort des pierres ça y est vous avez fini le profession mais je ne suis pas
une chienne à moi je suis une chaîne vous savez ce que vous allez faire vous allez régler votre
merde en antenne non ça y est c'est fini on va on va s'écouter roger le peu le pipeau avec du saoul
parce que c'est dur de péter et on se retrouve après en espérant que vous vous êtes calmé et on
récupère quelques tosses en espérant que ça s'est calmé ce coup là pas de problème moi je suis très
calme et je te kiffe et bah moi je t'en moi je te dis merde ça veut dire que je t'aime bien bah moi
aussi mais moi alors ok bernuda dans le bermuda est parti on accueille laura ingalls et laura ingalls
manu s'il te plaît laura ingalls
je vous préviens vous allez vous calmer maintenant donc on a toujours twingo on récupère twingo à la
main macro on l'a il est parti macro on a su son c'est un il a encore plus haut donc il voudra en
parler et savoir à suivre pour le débat bonsoir puceau pardon s'ils sont excuse moi plus on est
des puceaux et on l'athlète dans l'éclaté toujours là et on l'a toujours tu m'aimais tu m'aimes tu m'aimes
il est plus haut et on l'athlète dans l'éclaté toujours là et à la place de fleurs de lotus qui
est parti aussi on a pu le sort ok ouais ben c'est pas mal ok donc on va reprendre oui rigaud alors
pour reprendre le thème du débat il ya access sur rc qui te demande comment on désigne une
plutôt masculin un put ou une pute simplement il n'y a pas de mais quand tu t'en prends un fil
d'art tu lui dis que c'est une pute c'est un rappeur toi toi je vais t'attraper celui qui
s'amuse à dire ça parce qu'elle met tout de suite sinon il va il va retourner au standard et on va
prendre quelqu'un d'autre ok alors je peux bien que celui qui redit des conneries dégage maintenant
je peux pas je vais pas m'emmerder longtemps ouais ouais je vais dire aux clients est
alors que pensez-vous de l'amour par téléphone donc on revient à la question qui avait été
posée sur lire c'est donc voilà alors plus le sort le l'amour au téléphone je suis pas très
je suis pas très friands de ça en fait mais que pensez-vous de l'amour par téléphone oui c'est
ce que je dis l'amour par téléphone moi j'aime pas trop j'aime bien le contact de boîte une peau
sur une peau et les effets les étrances ravageuses des chaussures ouais ok ok j'ai pas fini ouais
bah vas-y
non mais attends je vois pas du tout le rapport avec
d'accord quelques tosses ouais bah moi je trouve ça là vous l'avoir par téléphone
comme le mec avant le sort du sort faut du contact non mais non mais ça suffit toi l'horreur
tous les jours il faut du contact mais non mais ça suffit toi l'horreur non mais ça suffit toi l'horreur
non mais ça suffit toi l'horreur non mais ça suffit toi l'horreur non mais ça suffit toi l'horreur
ou tout le beau, vous allez vous calmer
cigarette ?
non mais ça y est là ?
moi j'en ai plus
moi il m'en reste 10
donc je te disais, il faut du contact
sinon c'est pas bon
je pense que t'es d'accord avec moi Gérard
moi personnellement, j'irais pas m'amuser à faire ça
par téléphone
nuance, Laura
écoute Gérard, moi je suis encore vierge
et je veux faire 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
Manu, tu m'éteins ça s'il te plaît
juste en fond
tu m'éteins ça s'il te plaît
Manu, sérieusement, c'est chiant
on peut pas bosser
Manu, tu m'éteins ça
Manu
Manu
pour ta virginité, si tu veux, je peux te prendre ce service
je voulais lui dire
pour la mort du téléphone
non mais pour l'instant, vous allez vous taire quand Manu
on arrêtera ces conneries avant que je me lève
oui, tu m'arrêtes ça s'il te plaît
ok, ok, ok
d'accord, alors Laura
ouais, donc je te disais, en fait, moi je suis encore vierge
et je voudrais faire ma virginité
avec l'homme de ma vie
je suis l'artiste, c'est bien
oh, derrière, on se calme s'il vous plaît, merci
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 ne l'ai jamais fait
toi t'es chum, toi
ç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 ne l'ai encore jamais fait
et j'attends vraiment le bon moment
donc pour moi, par téléphone, pour l'instant
c'est ce qui me convient le mieux
ok, question
attends, 5 minutes, 5 minutes
oh, s'il te plaît, on se calme
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
de toute manière
la couleur n'a rien à voir
alors pourquoi rose ?
parce que c'est un truc
il y a des téléphones
téléphones roses, c'est des trucs
c'est des magazines
qui peuvent trouver
un téléphone, c'est pas un magazine
dans les magazines, t'as des numéros de téléphone
et tu peux faire ça par téléphone
mais pourquoi Gérard, on appelait ça des téléphones roses ?
eh ben, tu demanderas à ceux
qui s'amusent à en faire
c'est pas les téléphones rouges ou verts
non, il n'y en a pas
Twingo
Laura, tu voulais peut-être rajouter quelque chose avant ?
non, ben non, c'est pas grave
Manu, c'est la dernière
pourquoi tu me mets ça ?
tu mets ta ça, s'il te plaît, tout de suite
Twingo
oui, moi ça m'est arrivé
de me prendre des téléphones
dans des délires sadomaso
mais c'est pas
ce qu'il y a de plus agréable en fait
c'est vrai que la chaleur moite
c'est mieux que la
froideur du plastique
d'accord, Giclette ?
ouais ben
même en par téléphone, là je suis en plein dedans
et je vais t'embêter plein la tronche
bon, alors Giclette, tu dégages comme ça, t'es tranquille
terminé pour Giclette
non, non, non, c'est terminé pour toi
c'est terminé
terminé
sussons
ouais, ouais, donc moi
vu que je suis puceau et que j'ai pas eu le cran
d'aller aux putes, je suis assez friand de ça
d'accord
c'est assez cher, en plus je me suis fait couper la lime
par ma mère, quoi, 223 francs la minute
ça fait un peu cher
c'est excessif, oui
voilà
voilà
je pense que aujourd'hui
vous avez décidé de foutre votre merde
hein, Manu et Puldar
vous avez l'intention de foutre la merde
combien de temps, là, jusqu'à la fin du débat ?
ben je sais pas, ouais, encore une demi-heure
ouais, ben encore une demi-heure, ça se voit que dimanche
tu vas passer au pli en sac parce que
la semaine dernière, t'as fait un boulot correct
cette semaine tu me foutes la merde
parce que t'as Laura, tu t'amuses à me mettre
des jingles pourris, t'as l'autre
qu'on lui demande quelque chose, qu'il veut rien foutre
moi je le fais, hein
ouais, ben attends
t'as intérêt de te réveiller vite fait, toi
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 à poutre en l'air
à propos de téléphone, Gérard, sur IRC
on me demande si avec un portable, c'est possible
euh, mais ça coûte aussi cher
qu'une communication normale
c'est plus cher, en plus
ça dépend des...
et c'est accessible ?
tu peux y avoir accès, facilement, oui
pourquoi pas ?
ok
non mais ce qui est mieux, c'est d'avoir
quand c'est comme ça
quand tu veux faire du temps
avec ton téléphone rose, avec ton portable
c'est d'avoir un forfait
ouais, mais de toute manière, le forfait
tu le vides facilement avec ça
non mais le forfait rose
ouais, le forfait rose
ouais, non mais ça, je sais pas si ça existe encore
Gérard, c'est Lorraine Galf
je peux juste rajouter quelque chose
c'est que moi, en fait
on paye pas 2,23 francs la minute
c'est qu'on m'appelle directement chez moi
sur ma ligne privée
donc si ça intéresse quelqu'un
tu verras ça après en rentonne avec Fildar
ça va pas rester plus tellement
non, non, non
il y a moyen d'aller plus tard
30 minutes
pour l'instant, on continue le débat
et vous gérerez ça
après, hors antenne
alors, que pensez-vous des sex-shop dans toute la France ?
on va demander
à Pulsor
c'est quoi cette question ?
c'est pas sur la prostitution, ça ?
non, les sex-shop, c'est pas sur la prostitution
les sex-shop, non, c'est pas la prostitution
non, ça n'a rien à voir
c'est n'importe quoi
si ça te plaît pas, tu plies le bagage
tu vas voir ta copine
ta copine, ok
on va demander à Pulsor
ouais, les sex-shop, je connais pas trop ce milieu
mais, bon, enfin, j'ai pas trop d'avis, en fait
sur les sex-shop
mais j'aime bien le rap
d'accord, 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 physique
tu te rases
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
ok, Tungo ?
oui
bah moi, j'ai l'occasion, oui, souvent d'y aller
soit pour m'alimenter en film
ou en gadget d'hiver, 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
des cafés de porno
d'accord
ok, euh, Susson ?
Susson !
oui ?
tu te réveilles s'il te plaît
parce que là, vous commencez à dormir, ça m'énerve
ok, donc 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
c'est difficile, là, c'est routier
hé, je vais te dire une chose
que pour l'instant, t'es en train de dire
n'importe quoi
de dire des conneries
donc je pense que pour toi, ça va être terminé
non, c'est vrai
non, c'est des pervers
donc je peux te dire une chose
que c'est beau
là, t'es en train de massacrer
t'es en train de massacrer
le boulot routier
ouais, c'est vrai
donc t'as intérêt de te calmer avant que je te vire
c'est génial, c'est routier
ok
alors, ceux qui sont pas contents
vous allez dégager
parce que je vais pas chercher midi à 14h maintenant
ok ?
ok
alors, tout le monde a répondu
donc, des sex shops, si ça existe
il y en a un peu partout en France
et c'est dommage que ça existe
t'en as plein sur Paris
pourquoi c'est dommage ?
non, parce que je trouve que c'est dégueulasse
parce que c'est dégueulasse
parce que les gens
ouais, mais attends
t'as les mecs qui sont là
et dès qu'ils te voient y passer
ils insistent pour que tu rentres
mais n'importe quoi
ça c'est pas de la prostitution, ça Gérard
non, mais ils insistent pour aller voir
ce que la nana est en train de faire
et les trois quarts du temps
c'est pas une prostituée, elle bosse
tu l'es, ta mère
va te faire chanter, toi, espèce de connard
ta mère, c'est désordre
putain
tu vas te faire mettre la gueule, toi, quand je parle
ou sinon tu gerbes, ok ?
eh, debout, Sandi, debout, espèce de fainéant, toi
viens avec l'où ?
allez hop, dégage-moi celui-là
pourquoi t'es tout mou, toi ?
t'as rien fait, t'as rien fait ?
c'est que...
donc, euh...
alors, on va...
allez, paumez, Gérard, c'est plus bien
non, parce qu'il y en a qui s'amusent à dire des conneries
je sens que le débat, il va être terminé vite fait
Gérard, on est...
pourquoi t'es tout mou, putain ?
depuis minuit, il se passe rien ?
on est presque mille sur l'IRC, là
oh la la, la catastrophe !
on en a perdu énormément
ouais
la catastrophe
bah ouais, mais euh...
tant pis, hein
je veux dire, je suis désolé, on peut plus faire de débats, ça sert à rien, c'est tout
eh bah, dans ce cas-là, on arrête, je pose même pas la dixième question, et puis c'est tout
si, regarde, j'ai un petit sondage, peut-être, ça va t'aider
bah oui
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, fun radio, je comprends pas, non
tu vois, c'est la dernière fois que tu t'amuses à balancer des conneries comme ça
parce que sinon, je vais t'éclater ta gueule à bout
c'est pas moi, c'est toi qui balance des saloperies
mais non !
alors, je te préviens, c'est la dernière fois
la semaine prochaine, tu vas dégager
et je te le dis tout de suite
la semaine prochaine, je veux pas de toi
Maitre Olivier
alors, y a-t-il autant de prostituées et d'homo dans les autres pays que la France ?
on va demander un plus de sort pour terminer le débat
euh... oui, bah, la France n'a pas le... comment dirais-je...
le truc, comment... je trouve pas le mot
l'ethnopole
voilà, bah...
en Allemagne, y avait le Titi récemment
l'ethnopole... la France n'a pas l'ethnopole
et les autres pays, pourquoi pas ?
Manu, c'est la dernière fois que tu dis des conneries aussi, pourquoi ?
c'est que le pote a gégé
et il va en camion, il l'amène en Allemagne, alors un peu de respect, quand même
alors, 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
de toute manière, la question, c'est... y a-t-il autant de prostituées et d'homo ?
dans les autres pays que la France ?
non, je pense pas
je te parle des Philippines
je pense pas
au Philippines...
Pildar, tu fermes ta gueule et c'est tout
ouais, je t'écoute, Laura
il faudrait que Pildar, il la ferme un peu, ça m'énerve
non, mais on t'écoute, vas-y
ouais, donc je te dis, aux Philippines, ç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 grosses
t'as rien, t'as tout, quoi
mais ça, 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
qui les pensent à se prostituer
c'est des pays sous-développés, là-bas
donc en fait, pour eux, y a que le cul
c'est parce que c'est des pays pauvres, en fait
voilà, c'est ça
y a une question, IRC, Rigaud, non ?
non, y a juste Arnett qui demande à Pildar de le rappeler
non, non, c'est plus la peine
le débat, il va être terminé, alors c'est pas la peine
t'as tes mots
alors, Twingo
déjà, je vois pas le rapport avec les homos, excuse-moi
mais y a aucun rapport avec les homos et les prostituées
donc tu pourrais reformuler ta question
ouais
alors, y a-t-il autant de prostituées et d'homos dans les autres pays que la France ?
oui, ben non, je te dis qu'il y a aucun rapport avec les homos, quoi
ça me déplie
ouais, on parle pas des homos, on parle de la prostitution, là
voilà
tu peux être homo sans être prostituée
voilà
donc, c'est ta réponse ?
non, non, moi je te dis que c'est pareil, quoi
y en a partout, hein
et à ton avis, Gérard
dans les pays, y a le plus de prostituées ?
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...
c'est les adultes qui vont chercher les mômes pour les prost...
pour les mettre à la prostitution
connard, on va te faire péter l'anus, du con
ouais, ouais, ça c'est vrai aussi
moi, dans la place
Fildard, tu vas essayer de me choper tout de suite celui-là ?
== Le débat sur les catastrophes naturelles ==
=== Contexte ===
=== Les personnages ===
=== Transcription ===
Et pas d'insultes de Gérard !
Et voilà donc bonsoir à tous, 0h41 donc vous pouvez toujours nous appeler pour les débats du jeudi
donc au 0800 308 5000 et 0870 5000 toujours l'IRC www.funradio.fr
Oui tout à fait 1782,6 connectés quand même
C'est bien
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é à Rigaud qui a été fait
Donc je remercie Tony en passant
Et moi Gérard, s'il te plaît, avant de commencer j'ai une dédicace à faire, dédicace à Sandy
Et toi la grosse, debout espèce de peignasse là !
Tu vois pas que les autres s'amusent là ? Allez debout !
Viens avec nous !
C'est bon Magui, c'est bon ! C'est bon on va commencer, on va accueillir Gemma Lopez, 21 ans de Valence, 98.8 !
Ouais !
Bourdon, 20 ans Paris, 101.9 !
Ouais mais restez du soir Gérard !
Bonsoir !
Bonsoir !
Bonsoir !
Suisse la moi, 23 ans, Damien, on écoute Fun Radio, 91.8 !
Quand tu veux Gérard !
Astico, tu commences pas s'il te plaît, merci !
Astico, 18 ans, Pontiby, on écoute Fun Radio sur 94.1 !
Bonsoir Gérard !
Prout, 25 ans, Toulouse, 105.9 !
Bonsoir Gérard !
Et Tekel, d'Arcachon, 22 ans, on écoute Fun Radio sur 92...
Salut Gégé !
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 à Astico
Tant tu peux passer à quelqu'un d'autre parce que là je suis en train de mettre mon tampon
et puis...
D'accord, alors si ça commence comme ça, ça va pas aller, alors on va prendre Suisse
moi là !
Oui, comment ça commence une tempête ?
Ouais !
Comment se déclenche une tempête ?
Je sais pas, t'appuies sur un interrupteur, ou je sais pas...
Euh non !
Qui c'est qui veut répondre ?
C'est Bourdon, c'est Bourdon !
Ouais bah vas-y !
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 cumulohannus, ok, c'est deux types de nuages bien différents,
et quand t'as le cumulopinus qui rentre dans le cumulohannus, ça fait une différence de
température et ça fait un orage forcément, même une tempête !
D'accord, mais tu...
Oh, Bourdon !
Oui ?
Tu parles bien devant ton micro, tu t'éloignes pas quand tu parles, ok ?
Ouais mais ça c'est à cause des elfes !
J'ai mal aux fesses !
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.
D'accord !
Et parfois ça...
Ouais mais dans ces cas-là tu fermes la fenêtre et puis c'est bon !
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 et ça fait des tempêtes quoi...
Bah fermez les fenêtres alors, fermez les fenêtres !
Ouais il faut fermer les fenêtres en fait quoi !
Un sticot, un sticot c'est le top !
Ça peut être dangereux quoi !
Un sticot !
Ok donc j'ai fini de le mettre, donc la question c'est comment se déclenche une tempête
c'est ça ?
Ouais ! Parce que je ne vais pas m'amuser à les répéter alors vous écoutez bien
quand je pose les questions hein !
D'accord Gérard !
Ouais bah je l'ai bien écouté hein la preuve !
Alors vas-y !
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.
Good !
Moi je crois que c'est par rapport à l'atmosphère quoi !
Eh celui qui s'amuse à faire des conneries derrière va se calmer parce qu'il va pas
rester longtemps celui-là !
Ouais !
Alors Prout pour continuer ?
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 !
D'accord ! T'es quelle ?
Bah moi je pense qu'au contraire une tempête est déclenchée par une voluote !
Oh tu te calmes derrière s'il te plaît merci !
Si tu m'as parlé vous avez déjà parlé donc c'est bon hein !
Eh j'ai mal au peintre, j'ai mal au peintre, j'ai mal au peintre !
Bourdon là vous allez vous calmer s'il vous plaît hein !
Au contraire c'est déclenché par une violente perturbation atmosphérique et le vent peut
souffler à... ce que je veux savoir c'est que le vent il peut souffler de 1802 km/h !
Ok ! Moi j'ai pu voir à peu près sur un dictionnaire donc c'est une violente perturbation atmosphérique
et le vent peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
Et le vent il peut souffler à...
== 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}}
sghxgu5tzm95ge71gvi97w7w1zby60p
Fonctionnement d'un ordinateur/Les processeurs 8 bits et moins
0
82384
765682
762877
2026-05-01T14:20:37Z
Mewtow
31375
/* Les processeurs 8/16 bits à architecture Harvard */
765682
wikitext
text/x-wiki
Nous avons déjà abordé la notion de processeur 8, 16, 32, 64 bits. Elle désigne la taille des registres généraux, ou de l'accumulateur. De nos jours, les processeurs 32 et 64 bits sont la norme, mais les premiers micro-processeurs étaient des processeurs 4 et 8, avant de passer rapidement au 16 bits. La raison est que leur budget en transistor limité faisait qu'on ne pouvait pas utiliser une ALU trop grande : une ALU 8 bit prend deux fois moins de place et de transistors qu'une ALU 16 bits. Cependant, les processeurs 8 bits avaient de sérieuses limitations qui étaient compensées par diverses solutions. Dans ce chapitre, nous allons faire une revue rapide des processeurs 8 bits et de leurs fonctionnalités.
La principale limitation des CPU 8 bits était l'adressage : des registres de 8 bits limitaient l'espace d'adressage à seulement 256 adresses, soit à peine 256 octets ! Intuitivement, on se dit que 256 octets est purement impraticable, on ne peut rien faire d'intéressant avec seulement 256 de RAM + ROM. Et c'est partiellement vrai. L'adage veut que 16 bits est la taille minimale intéressante, la limite à partir de laquelle on a assez de mémoire RAM/ROM pour coder des applications intéressantes. Mais 256 octets de RAM est largement suffisant sur de nombreux systèmes embarqués simples s'en accommodent : des caisses enregistreuses, des systèmes de régulation de feu de circulation, etc.
Pour les applications demandant plus de mémoire RAM, les CPU de l'époque contournaient la limitation de 256 octets de RAM avec de nombreux stratagèmes. Dans ce qui va suivre, nous allons séparer les CPU 8 bits selon qu'ils utilisent une architecture Harvard ou une architecture Von Neumann. La raison est qu'une architecture Harvard permet en soi de contourner partiellement ce problème d'adressage. Les choses sont plus compliquées avec une architecture Von Neumann.
==Les processeurs 8/16 bits à architecture Harvard ==
La première solution est d'utiliser une architecture Harvard. Le processeur 8 bit a alors deux espaces d'adressage : un pour la RAM, un autre pour la ROM. Et les deux utilisent des adresses de taille différente. La ROM est reliée à un bus d'adresse de 16 bits, alors que la RAM est elle connectée à un bus d'adresse de 8 bits. La RAM est donc limitée à 256 octets, alors que la ROM peut monter jusqu'à 64 kibioctets. Mine de rien, faire ainsi est largement suffisant.
Les processeurs de l'époque intégraient parfois les 256 octets de RAM directement dans le processeur. Beaucoup en implémentaient moins, avec par exemple seulement 64 octets de RAM, ou 32 octets, ou 128 octets. L'avantage est que cela éliminait le bus d'adresse des données et ne laissait que le bus d'adresse pour la ROM. On économisait ainsi beaucoup de broches sur le circuit intégré du CPU. Et pour les applications demandant plus de RAM, on pouvait ajouter un circuit séparé qui permettait d'adresser une RAM plus grande. Mais cela sera plus clair avec un exemple.
===Les microcontrôleurs PIC===
Un exemple de système 8 bits est celui des '''microcontrôleurs PIC'''. La gamme des microcontrôleurs PIC est très vaste, et regroupe des microcontrôleurs allant de microcontrôleurs 8 bit aux performances très faible, à des microcontrôleurs 32 bits bien plus puissants. Les microcontrôleurs PIC sont très utilisés dans l'embarqué ou d'informatique industrielle. Ils sont vendu à des volumes assez impressionnants, plusieurs millions par an. Et si vous avez ou êtes en train de faire des études d'électronique, je parie que vous les avez déjà vu en classe, ou que ce ne saurait tarder.
Dans ce qui suit, nous allons nous concentrer sur les microcontrôleurs PIC 8 bits. Ils incorporent une mémoire RAM très petite, ainsi qu'une architecture Harvard, comme dit plus haut. Le processeur de ces microcontrôleurs a un jeu d'instruction propriétaire, le jeu d'instruction PIC. Ce sont des architectures à accumulateur, avec une petite subtilité : le résultat d'une opération arithmétique peut être enregistré ailleurs que dans l'accumulateur. Le résultat peut aussi remplacer la seconde opérande, celle lue en mémoire RAM. Dit autrement, le résultat est enregistré dans l'adresse mémoire source. Les instructions de calcul ont le choix : un bit dans leur encodage précise où enregistrer le résultat.
Outre l'accumulateur, les PIC disposent de registres de contrôle, d'un ''program counter'', d'un registre d'état, et d'un registre séparé pour la retenue de l'addition/soustraction. Ce dernier est très important, vu qu'il est nécessaire pour les additions/soustractions sur des opérandes de 16 bits. Le processeur a beau être un CPU 8 bits, il peut être utilisé pour faire des calculs 16 bits, la performance est alors amoindrie, mais ce n'est pas un problème pour les applications d'un tel microcontroleur.
La mémoire RAM des microcontrôleurs PIC est très petite, elle dépasse rarement la centaine d'adresse. Pour donner un exemple, le PIC16F84 a une RAM composée de 68 "registres" de 8 bits. Le terme "registres" devrait vous faire tiquer, mais il s'agit bien d'une mémoire SRAM séparée. Simplement, la documentation des PIC qualifie cette mémoire SRAM de "registres", et il faut admettre que la différence entre banc de registre et SRAM séparée est un peu flou quand on utilise une architecture à accumulateur.
[[File:DocPIC16F84 all.png|centre|vignette|upright=2|Microarchitecture du PIC16F84.]]
===Le Fairchild F8 et la console de jeu Fairchild Channel F===
Un autre exemple est la Fairchild F8 de la défunte entreprise Fairchild Semiconductor. Il incorpore un processeur 8 bits, c'est à dire que le processeur fait des calculs sur des entiers de 8 bits maximum, une mémoire RAM de 64 octets, ainsi qu'une mémoire ROM de 1 kibioctet. Les 64 octets de RAM sont certes très peu, mais c'est suffisant pour certaines applications simples, comme les caisses automatiques de l'époque, ou des applications embarquées. Et de toute façon, il est possible d'ajouter de la mémoire RAM supplémentaire si les 64 octets de RAM intégrée ne suffisent pas. Le système était donc modulaire, adaptable selon les besoins, peu cher pour son implémentation minimale sans RAM en plus.
Vu qu'il s'agit d'un des tout premiers ordinateurs, il est sorti à une époque où la technologie était rudimentaire. À cette époque, le processeur était composé de pièces détachées qu'il fallait souder ensemble pour obtenir un processeur fonctionnel. Ce n'est que plus tard qu'est apparu le micro-processeur, qui regroupe un processeur complet dans un seul circuit intégré. Le résultat est que le processeur du Fairchild F8 est coupé en deux, l'unité de calcul et l'unité de contrôle sont placés dans des pièces détachées séparés.
Le microcontrôleur est composé de trois à quatre pièces détachées, certaines étant optionnelles. La première est le '''3850 CPU''', qui regroupe l'unité de calcul et la mémoire RAM intégrée. La seconde est le PSU (''3851 Program Storage Unit''), qui regroupe la mémoire ROM et l'unité de contrôle, ''program counter'' inclut. S'il y a besoin d'utiliser plus de RAM, il faut ajouter un circuit d’interface mémoire, qui est au choix le ''3852 Dynamic Memory Interface'' (DMI) ou le ''3853 Static Memory Interface'', le premier étant connecté à une mémoire de type DRAM, l'autre à une SRAM (nous verrons ce que sont les DRAM et les SRAM dans le prochain chapitre).
[[File:Fairchild F8.png|centre|vignette|upright=2|Fairchild F8]]
Le système minimal est composé d'un PSU et d'un 3850, sans les circuits d'interface mémoire. Le tout donne un système avec un processeur 8 bit, 64 octets de RAM et 1 kibioctet de ROM, les deux mémoires étant intégrées dans le "processeur". Le processeur gérait 4 entrées-sorties, chacune étant reliée avec un bus de 8 bit au processeur. Au passage, en 1977, Mostek a créé un microcontrôleur qui regroupe un PSU et un 3850 : le Mostek 3870. Le système minimal n'avait pas de bus d'adresse, vu que la RAM était intégrée au processeur. C'est les 3852 et 3853 qui ajoutaient un bus d'adresse. Ils ajoutent un bus d'adresse de 16 bits, ce qui permet d'adresser 64 kibioctets de RAM.
[[File:Fairchild-Channel-F.jpg|vignette|un Fairchild Channel F]]
Le Fairchild F8 a été utilisé dans la Fairchild Channel F, une des toute première console de seconde génération, à savoir des consoles qui utilisaient des cartouches de jeu. Avant les consoles de seconde génération, les consoles étaient non-programmables. Elles étaient conçues pour faire tourner un jeu précis, aucun autre, le jeu étant implémenté dans leurs circuits.
La Fairchild Channel F est composé du système minimal, auquel on a ajouté une carte son rudimentaire et 2 kibioctets de mémoire vidéo. La mémoire vidéo sert uniquement pour afficher des images à l'écran : on écrit l'image à afficher dedans, un circuit vidéo se charge de l'afficher à l'écran automatiquement. Le processeur ne fait qu'écrire dans cette RAM vidéo, il ne peut pas en lire le contenu. De la RAM supplémentaire peut cependant être ajoutée dans les cartouches de jeu.
===L'usage d'une architecture Harvard modifiée : les consoles 8 bits===
Pour encore améliorer la situation, il est possible d'utiliser une architecture Harvard modifiée, qui permet de lire des données depuis la mémoire ROM. Cela réduit encore plus les besoins en mémoire RAM. Les constantes manipulées par le programme sont mémorisées en ROM, lues depuis la ROM, au lieu d'être chargées en RAM. Les consoles de jeu utilisaient beaucoup de stratagème.
L'exemple type est celui des consoles 8 bits avec des graphismes en 2D. La cartouche de jeu contenait une ROM, qui mémorisait le code du jeu, les niveaux, les sprites et autres données graphiques. Leur carte graphique lisait directement les ''sprites'' depuis la mémoire ROM, sans avoir à les charger en mémoire vidéo. La mémoire vidéo se contentait de mémoriser le reste des informations graphiques, ainsi que des pointeurs vers les ''sprites'' en ROM. En conséquence, les consoles 8 bits n'avaient pas besoin de beaucoup de RAM, vu qu'une grande partie des données utiles étaient dans une ROM directement accessible par le processeur. A l'opposé, les micro-ordinateurs devaient copier les données d'un jeu depuis une disquette dans la mémoire RAM, ce qui demandait d'avoir plus de RAM.
Le passage au support CD sur les consoles 32 bits a eu la même conséquence. Le processeur ne pouvant pas lire directement le CD à sa guise, il fallait copier les données du CD en RAM. D'où l'apparition de temps de chargement assez longs, inexistants sur support cartouche.
Avec ce genre de stratagèmes, 256 octets de RAM est largement suffisant sur de nombreux systèmes, à condition qu'on ait assez de ROM pour coder un programme digne de ce nom. Par exemple, de nombreux systèmes embarqués simples s'en accommodent : des caisses enregistreuses, des systèmes de régulation de feu de circulation, etc.
===Le HP Nanoprocessor : un processeur sans ALU===
Un dernier exemple est celui du processeur HP Nanoprocessor, de l'entreprise HP. Il a été commercialisé en 1974, en même temps que les premiers micro-processeurs d'Intel. Tous les processeurs de l'époque étaient des processeurs 8 bits et le HP Nanoprocessor ne faisait pas exception. Ce n'était pas un processeur haute performance, il était destiné à des applications d'informatique industrielle ou embarquée. D'ailleurs, il utilisait des transistors de type metal-gate, peu performants, là où ses contemporains utilisait des transistors en silicium, plus performants.
Mais une caractéristique qui rend cela encore plus claire est qu'il n'y a pas d'ALU ! En effet, ce processeur est incapable de faire des additions, des soustractions ou autres opérations simples ! Il est cependant capable d'effectuer des incrémentations et décrémentations, des décalages, des opérations logiques comme des ET/OU/NON/XOR et bien d'autres. Il supporte en tout 48 instructions, avec un support limité des modes d'adressage indirects. Les instructions de branchement étaient des instructions SKIP, il n'y avait pas d'instructions de branchement généralistes.
Pour ce qui est des registres, il disposait de 16 registres de 8 bits et d'un accumulateur. Niveau mémoire, il était relié à une mémoire ROM, rien de plus. Il n'avait de RAM supplémentaire qu'on pouvait lui adjoindre, il devait se débrouiller avec seulement ses registres. Et cela ne posait pas de problèmes pour son usage. Seul le mode d'adressage indirect à registre est supporté, il n'y a pas de registres d'indices. Ce mode d'adressage permet de lire des données en mémoire ROM, la ROM pouvant contenir des tableaux de valeurs constantes.
: Il est possible de lui adjoindre de la RAM via les ports d'entrée-sortie, ainsi qu'une ALU, mais RAM et ALU sont traités comme des périphériques avec lesquels on communique, ils ne sont pas intégrés au processeur.
Niveau micro-architecture, il incorporait une unité de calcul logique et un circuit comparateur. Le comparateur était un circuit comparateur série des plus basiques, qui était utilisé pour les instructions de branchement et associées. L'unité de calcul logique gérait des incrémentations/décrémentation, des décalages, les opérations logiques et quelques autres. L'unité de calcul logique était bit-slicée, à savoir conçue en assemblant 8 ALU de 1 bit chacune, enchainées en série. Le tout était combiné à des circuits de ''carry skip''.
[[File:Unité de calcul du HP nanonprocessor.png|centre|vignette|upright=2|Unité de calcul du HP nanoprocessor]]
Son unité de décodage d'instruction était très simple, essentiellement basée sur des portes NOR, grâce à un encodage efficace des instructions machine. Le ''program counter'' fait 11 bits, ce qui permet d'adresser une ROM de 2 kibioctets. Le ''program counter'' était relié à un circuit incrémenteur qui gérait les isntructions SKIP (il pouvait incrémenter le ''program counter'' par pas de 1 ou de 2 en cas de SKIP). Le processeur contient aussi deux registres, qui servent en quelque sorte de pile d'adresse de retour. Un premier registre mémorise l'adresse de retour d'une fonction, l'autre mémorise le ''program counter'' lors d'une interruption, pour savoir où brancher à la fin de l'interruption.
[[File:HP nanoprocessor.png|centre|vignette|upright=2.5|HP nanoprocessor]]
Fait intéressant, le concepteur du processeur a gracieusement donné les masques utilisés pour graver le silicium du processeur au site [https://www.cpushack.com/ CPU Shack]. Les masques en question sont disponibles ici :
* [https://www.cpushack.com/2020/08/20/hp-nanoprocessor-mask-set/ HP NanoProcessor Mask Set]
* [https://www.cpushack.com/2020/08/09/the-forgotten-ones-hp-nanoprocessor/ The Forgotten Ones: HP Nanoprocessor]
Les masques ont été analysés par Ken Shirrif dans cet article de blog :
* [https://www.righto.com/2020/09/hp-nanoprocessor-part-ii-reverse.html HP Nanoprocessor part II: Reverse-engineering the circuits from the masks]
==Les processeurs 8/16 bits à architecture Von Neumann==
L'usage d'une architecture Harvard est une solution pour adresser plus de mémoire avec des CPU 8 bits. Mais plusieurs microprocesseurs commerciaux n'utilisaient pas cette solution. À la place, c'était des architectures Von Neumann, mais qui étaient capables de gérer des adresses de 16 bits. Les données faisaient 8 bits, les registres faisaient 8 bits, mais quelques techniques permettaient de gérer des adresses de 16 bits. Nous parlerons de '''processeurs 8/16 bits''' pour les désigner, et nous allons les étudier à part.
Un point important est que la gestion d'adresses de 16 bits permet d'adresser 64 kibioctets, qui peuvent être remplis avec de la RAM et de la ROM. On a donc le meilleur des mondes : 64 kibioctets de mémoire, mais avec des données de 8 bits et les économies de circuit qui vont avec. L'avantage est que le processeur peut maintenant gérer une vraie pile d'appel, pas seulement une pile d'adresse de retour. Il lui suffit pour cela d'intégrer un pointeur de pile codé sur 16 bits.
===Les modes d'adressage par page des CPU Motorola===
Les processeurs Motorola 8 bits étaient des processeurs 8 bits avec un bus d'adresse de 16 bits. C'était des processeurs à accumulateur incorporant deux registres d'indice, un registre d'état, un pointeur de pile, et un ''program counter''. Tous les registres sont reliés au bus d'adresse, sauf le registre d'état et l’accumulateur. Tous les registres font 8 bits, sauf le ''program counter''. La pile est câblée pour être dans un bloc de 256 octets compris entre l'adresse 1 0000 0000 et l'adresse 1 1111 1111, ce qui fait que son adressage se fait avec un seul octet.
[[File:6502-architecture.svg|centre|vignette|upright=1.5|Architecture simplifiée du 6502.</br> X et Y : registres d'indice ;</br> S : le pointeur de pile ;</br> A : accumulateur ;</br>P : registre d'état.</br>]]
Les processeurs Motorola 8 bits utilisaient une méthode simple pour adresser 64 kibioctets de RAM, avec des registres de 8 bits. Pour cela, ils utilisaient une variante de l'adressage base + décalage. Elle améliore l'adressage absolu, qui intègre l'adresse à lire/écrire dans l'instruction elle-même. L'adresse en question est de 8 bits et n'encode que les 8 bits de poids faible de l'adresse, les 8 bits de poids fort sont dans un '''registre de page''' adressé implicitement. L'adresse finale est obtenue en concaténant ce registre avec l'adresse mémoire intégrée dans l’instruction. Le résultat est que la mémoire était découpée en blocs de 256 consécutifs, chacun pouvant servir de fenêtre de 256 octets. Une page est réservée pour la pile, la seconde, comme dit plus haut.
Formellement, ce mode d'adressage a des ressemblances avec la commutation de banques, une technique qu'on verra dans les chapitres sur l'espace d'adressage et la mémoire virtuelle. Mais ce n'en est pas du tout : le registre de page est utilisé uniquement pour les accès mémoire avec le mode d'adressage base + décalage, mais pas pour les autres accès mémoire, qui gèrent des adresses complètes. Notons que l'usage d'un registre de page dédié fait que celui-ci est adressé implicitement.
Il faut noter que la technique a été utilisée sur des processeurs 16 bits, pour contourner la petite taille des instructions. Un exemple est celui du HP 2100, un processeur 16 bits. Il avait un registre de page de 5 bits et encodait 10 bits d'adresse dans ses instructions. Ses instructions d'accès mémoire disposaient d'un bit qui choisit quel mode d'adressage utiliser. S'il était à 0, l'adressage absolu était utilisé, le registre de page n'était pas utilisé. Mais s'il était à 1, le registre de page était utilisé pour calculer l'adresse.
Une évolution de l'adressage précédent est le '''mode page direct'''. Avec lui, le registre de page est étendu et contient une adresse mémoire complète. L'adresse finale n'est pas obtenue par concaténation, mais en additionnant le registre de page avec l'adresse fournie par adressage absolu + décalage. Un exemple est celui des premiers processeurs Motorola, qui géraient des adresses courtes de 8 bits. L'adresse courte de 8 bits correspondait non pas aux 256 premiers octets de la mémoire, mais à une fenêtre de 256 octets déplaçable en mémoire. La position de la fenêtre de 256 octets était spécifiée par le registre de page de 16 bits, qui précisait l'adresse du début de la fenêtre, celle de sa première donnée.
Il s'agit donc formellement d'adressage base + décalage, à un détail près : il n'y a qu'un seul registre de base. Le fait que ce registre de base soit unique fait qu'il est adressé implicitement, on n'a pas à encoder le numéro/noms de registre dans l'instruction. Le registre de base est utilisé uniquement pour l'adressage absolu, pas pour les autres accès mémoire. S'il y a des ressemblances avec la segmentation, une technique de mémoire virtuelle qu'on abordera dans quelques chapitres, ce n'en est pas vu que le registre de base est utilisé seulement pour un mode d'adressage bien précis.
===Le ''pseudo-aliasing'' des registres des processeurs Intel x86===
Voyons maintenant le cas des anciens processeurs 8 bits d'Intel à savoir l'Intel 4004, 4040, 8008 et 8080. Le Z80, un processeur inspiré des CPU Intel 8 bits, est aussi concerné. Avant de poursuivre, parlons des registres de ces processeurs. Les premiers CPU Intel incorporaient 7 registres de 8 bits nommés A, B, C, D, E, F, H, L, SP. Ils correspondent respectivement à : l'accumulateur A ; six registres nommés B, C, D, E, H et L ; le registre d'état F ; le pointeur de pile SP. Le Z80 ajoute deux registres d'indice X et Y. De plus, le Z80 dispose de registres d'interruption, qui sont en quelque sorte des copies des registres A, B, C, D, E, F, H, L. Le tout est illustré dans le tableau ci-dessous.
{|class="wikitable" style="text-align:center;"
|-
!
! Registres des CPU Intel
! Registres supplémentaires du Z80
|-
! Accumulateur
| A
| A'
|-
! Registre d'état
| F
| F'
|-
! Registres généraux
| B, C, D, E, H, L
| B', C', D', E', H', L'
|-
! Pointeur de pile
| colspan="2" | SP (sauf pour le 8008)
|-
! Registres d'indice
|
| X et Y
|}
Le 8008 incorpore une pile d'appel de 7 adresses, dans le processeur lui-même. Il en est de la même avec le 4004 et le 4040, comme on le verra dans la section sur les processeurs 4 bits. Mais le 8080 et le 8085 ont remplacé le tout par un simple pointeur de pile, afin d'avoir une véritable pile d'appel. Autant c'est impossible d'avoir une pile d'appel avec seulement 256 octets de mémoire, autant on peut se le permettre avec 65 536 adresses.
Pour gérer des adresses de 16 bits, ils auraient pu utiliser des registres d'adresse séparés, mais on préféré un système de '''pseudo-''aliasing'' de registres'''. Formellement, c'est un système qui concatène deux registres 8 bits pour obtenir une adresse de 16 bits. L’appariement a lieu lors de certaines opérations bien précises, qui n'ont de sens que pour les adresses : la lecture/écriture en mémoire, et l'incrémentation.
Il y avait cependant des contraintes quant aux paires de registres possibles, toutes les paires de registres n'étaient pas autorisées. Les CPU concernés sont donc des processeurs hybrides accumulateur-registre généraux. L'accumulateur ne peut pas être appairé, seuls les registres généraux le peuvent. Le Z80 autorise plus de paires que les CPU Intel. Voici les paires de registres qui pouvaient servir d'adresse 16 bits :
* Les CPU 8008 d'Intel autorisait une seule paire formée des registres H et L.
* Les autres processeurs, à savoir le 8080, le 8085 et le Z80, autorisaient : les paires BC, DE et HL.
Le 8008 ne gérait que des opérations sur 8 bits. Mais le 8080 et le 8085 ont ajouté des instructions 16 bits qui agissaient sur des paires de registre, que le Z80 a repris. Une paire de registres est considérée comme un registre unique de 16 bits pour certaines opérations arithmétiques, dont l'incrémentation. Voici la liste des instructions concernées :
* INC et DEC pour l'incrémentation et la décrémentation ;
* DAD : additionne le registre HL avec une autre paire (Hl inclus) ;
* LXI : copie une constante immédiate dans une paire de registres ;
* LHLD : lit 16 depuis la mémoire et l'enregistre dans une paire de registres ;
* SHLD : copie 16 bits depuis une paire de registres et l'enregistre en mémoire ;
* PUSH et POP : empile ou dépilent une paire de registre sur la pile ;
* XTHL : échange la paire HL avec les 16 bits au sommet de la pile d'appel ;
* XCHG : échange le contenu de la paire HL et DE.
Pour résumer, le processeur avait des instructions LOAD, STORE, PUSH et POP adaptées pour gérer des paires de registre. De plus, l'instruction XCHG permettait d’échanger le contenu des paires DE et HL. L'instruction a été étendue sur les processeurs 16 bits pour échanger tous les registres. Mais l'implémentation était alors différente. L'incrémentation sur une paire de 16 bit était très utile, car les adresses sont souvent incrémentées quand on parcours un tableau. Ces instructions nous donnent quelques indices sur ce qu'il y a dans le processeur.
Le système de pseudo-aliasing a un impact sur le banc de registre. Le banc de registre regroupe les registres généraux et le pointeur de pile, mais ne contient pas l'accumulateur. Les contraintes sur les paires de registres possibles ne s'expliquent que d'une seule manière : le banc de registre contient des registres de 16 bits, une paire de registres 8 bits est mémorisée dans un registre unique. Il faut donc faire une différence entre les registres architecturaux de 8 bits, et les registres réels de 16 bits.
Le banc de registre a un port de 8 bits pour les données, qui est fabriqué à partir d'un port 16 bits auquel on a rajouté un multiplexeur pour choisir soit l'octet de poids faible, soit l'octet de poids fort. Le bus de données fait 8 bits, ce qui fait que les instructions LOAD, STORE, PUSH et POP pour paires 16 bits sont réalisées en deux fois : on lit/écrit l'octet de poids faible, puis celui de poids fort. Par contre, le bus d'adresse fait bien 16 bits. Cela suggère que le banc de registre dispose d'un port de 16 bits dédié aux adresses, en plus du port de données 8 bits.
[[File:Architecture d'un CPU 8-16 bits avec un banc de registre double port.png|centre|vignette|upright=2|Architecture d'un CPU 8-16 bits avec un banc de registre double port]]
L'incrémentation d'une paire 16 bits ne coute rien à implémenter, ou presque. En effet, le processeur incorpore un incrémenteur 16 bits pour le ''program counter'', qui est relié au bus d'adresse. L'idée est de rentabiliser cet incrémenteur, en lui permettant d'incrémenter des données/adresses de 16 bits obtenues via pseudo-aliasing. De même, il peut être utilisé pour incrémenter le pointeur de pile, voire un compteur de rafraichissement mémoire (pour rappel, le rafraîchissement mémoire demande de balayer la mémoire d'adresse en adresse et été fait par le CPU à l'époque). Pour cela, il suffit de connecter le ''program counter'', le banc de registre, et l'incrémenteur, via un bus dédié.
[[File:Calcul d'adresse par ALU dédiée avec PC séparé.png|centre|vignette|upright=2|Calcul d'adresse par ALU dédiée avec PC séparé]]
Notez qu'on peut encore simplifier le tout en placant le ''program counter'' dans le banc de registre, ce qui ne gênera pas le travail de l'incrémenteur mais simplifiera le câblage au bus d'adresse. Ce n'était pas systématique, certains processeurs mettaient le ''program counter'' dans le banc de registre, d'autres non.
: Inclure le ''program counter'' dans le banc de registre permet parfois de remplir un vide. Par exemple, sur un processeur avec 12 registres, le banc de registre devrait faire idéalement 16 registres, inclure le ''program counter'' dedans fait monter le tout à 13.
[[File:Architecture d'un CPU 8-16 bits.png|centre|vignette|upright=2|Architecture d'un CPU 8-16 bits]]
Les processeurs Intel 8 bits, à savoir le 8008, le 8080 et le 8085 ; mettaient le ''program counter'' dans le banc de registre. Vous avez donc toutes les armes pour comprendre leur micro-architecture. Par exemple, voici la micro-architecture du processeur 8080. Remarquez le banc de registre, qui contient tous les registres sauf l'accumulateur et le registre. Il a deux ports : un pour les adresses et un pour les données. Notez le dé-multiplexeur sur le port de donnée. Pour le reste, il s'agit d'une architecture à accumulateur hybride des plus classiques.
[[File:Intel 8080 arch.svg|centre|vignette|upright=3|Microarchitecture de l'Intel 8080.]]
Le Z80 est un processeur inspiré du design des processeurs Intel 8 bits, mais avec pas mal d'améliorations. Un point particulier de ce processeur est son banc de registre. Il contient tous les registres du processeur, y compris l'accumulateur et le registre d'état ! Les seuls registres en-dehors du banc de registre sont le ''program counter'' et un compteur de rafraichissement mémoire IR.
Un autre point particulier est que les registres dans le banc de registres avaient une copie séparée accessible uniquement pour les interruptions, via fenêtrage de registres. Et l'accumulateur et le registre d'état étant dans le banc de registre, il y avait deux accumulateurs et deux registres d'état. Les registres A, B, C, D, E et F étaient dupliqués, par le pointeur de pile ni les registres d'indice. Les copies des registres étaient nommées A', B', C', D', E' et F'.
Le Z80 supportait des instructions d'échange de registre en plus des CPU Intel 8 bits. L'instruction EX peut échanger soit le contenu des paires D,E et H,F, soit la paire A,F avec la paire A',F'. L'instruction EXX échange les paires BC, DE, HL avec les paires BC', DE', HL'. En faisant cela, le programmeur pouvait utiliser deux fois plus de registres généraux s'il n'utilisait pas les interruptions. L'échange de paires se fait sans copies de registres, mais simplement en modifiant l'adresse envoyée sur le banc de registre. Pour cela, plusieurs bascules mémorisent des bits qui indiquent si les paires ont été échangées ou non. Il y a une bascule pour les paires DE , HL ; une autre pour les paires A,F et paire A',F', une dernière pour l'instruction EXX. En combinant ces bascules avec les noms de registres envoyés par le séquenceur, on peut échanger les paires de registres.
==Le cas particulier des processeurs 4 bits : le 4004 d'Intel==
L'Intel 4004 était le tout premier micro-processeur. Il s'agissait d'un microprocesseur de 4 bits, basé sur une architecture à accumulateur. Il disposait d'un accumulateur et de 16 registres d'indice, tous de 4 bits. Il faisait des calculs sur des données de 4 bits, appelées des nibbles. Cependant, sur ses 46 instructions machines supportées, 41 agissaient sur des opérandes de 8 bits, les 5 restantes sur des opérandes de 16 bits. Simplement, les calculs se faisaient en deux fois, en échangeant des données entre mémoire RAM et accumulateur.
Le 4004 est un circuit intégré avec peu de broches. Il dispose notamment d'un bus de données/adresse, qui est multiplexé, c’est-à-dire qu'il sert alternativement de bus de données et de bus d'adresse selon les besoins. Le bus de commande mémoire fait 5 bits, dont 4 pour les chips de RAM, un pour la ROM. Les adresses sont codées sur 12 bits, les données sur 4 et les instructions sur 8 bits. L'envoi d'une adresse sur le bus se fait en plusieurs fois, de même que la lecture d'une instruction. Il s'agit là d'une adaptation pour outrepasser les limitations d'un processeur 4 bit.
[[File:Intel 4004 processor pinout.png|centre|vignette|upright=2|Broches de l'Intel 4004. Nous verrons à quoi elles servent plus bas.]]
===L'espace d'adressage de l'Intel 4004===
Les adresses du processeur sont sur 12 bits, ce qui fait 4096 adresses différentes. Elles regroupent à la fois la ROM et la mémoire RAM, vu que l'architecture est une sorte de mélange bizarre entre une architecture Von Neumann et Harvard. Le processeur gère bien deux espaces d'adressage séparés, mais la RAM et la ROM sont reliés au même bus. La sortie CM-ROM du processeur indique si l'adresse envoyée correspond à la RAM ou la ROM. Un circuit de décodage d'adresse active ou désactive la RAM selon la valeur de ce bit, l'inverse pour la ROM, en agissant sur leurs bits Chip Select. Seule la RAM ou la ROM répondent alors à l'adresse.
Pour ce qui est de la RAM, le circuit de décodage d'adresse pouvait gérer au maximum 1024 adresses différentes, chacune contenant un nibble. Pour cela, le CPU 4004 était relié à une ou plusieurs RAM externes, des Intel 4002. Chaque Intel 4002 contenait 64 nibbles de données, plus 16 nibbles de statut qu'on ne détaillera pas ici. Les nibbles de statut étaient accessibles en utilisant des instructions d'entrée-sortie, donc pas avec des lectures/écritures mémoire. Les 64 nibbles de données sont découpés en 4 groupes de 16 nibbles. Le CPU pouvait être relié à maximum 16 Intel 4002, ce qui fait 1024 nibbles de données et 256 nibbles de statut. L'ensemble permet de remplir l'espace d'adressage de 1024 adresses.
===Le registre de page et le pseudo-aliasing des registres===
Sélectionner une adresse mémoire utilisait un mélange entre pseudo-aliasing et registre de page. Pour les données, les 1024 adresses étaient découpées en 4 pages de 256 adresses. Pour la ROM, les 4096 adresses étaient découpées en 16 pages de 256 adresses. Localiser une donnée dans une page ne requiert que 8 bits, 2/4 bits supplémentaires permettent de sélectionner la page voulue. Le registre de page était dans le processeur lui-même, et était relié aux sorties du processeur nommées CM-RAM 0, 1, 2 et 3. Les 4 sorties encodaient un nombre qui permet de sélectionner le numéro de page voulu.
Le registre de page fait 5 bits : un pour distinguer RAM et ROM, 4 bits pour sélectionner la page voulue. L'avantage est que la carte mère gère au maximum 16 chips de RAM, ce qui colle parfaitement avec les 4 utilisés pour sélectionner une page. Un chip de RAM correspond à une page, et chacun est activé ou désactivé suivant la page sélectionnée. Pour cela, il suffit d'ajouter un décodeur sur la carte mère, qui prend les 4 bits du registre de page et fournit les signaux Chip Select aux différents chips de RAM.
Reste alors à utiliser les 8 bits d'adresse à l'intérieur d'un chip de RAM. Le 4004 permettait de concaténer deux registres d'indice de 4 bits pour former une adresse de 8 bits. Les instructions d'accès mémoire pouvaient ainsi préciser une paire de registre d'indice pour préciser quelle adresse lire/écrire. Idem pour les branchements indirects : le processeur supportait une instruction de branchement indirect qui précisait l'adresse dans une paire de registres d'indice. Les registres d'indice sont donc assez mal nommés sur cette architecture, vu qu'ils peuvent servir soit de registre d'indice, soit de demi-registre d'adresse. Il s'agit là du système de pseudo-aliasing des registres, mais appliqué aux registres d'indice.
L'Intel 4004 gérait deux instructions pour gérer les adresses mémoires. La première, l'instruction DCL (''Designate Command Line'') configure le registre de page. Elle prend en entrée un numéro de page et le copie dans le registre de page. L'opérande peut provenir d'un registre d'indice ou de l'accumulateur. La seconde, l'instruction SRC (''Send Register Control'') concatène deux registres d'indice pour obtenir une adresse de 8 bits. Un accès mémoire se fait donc en maximum trois instructions : une qui configure le registre de page si ce n'est pas déjà fait, une instruction SRC pour envoyer l'adresse, et une troisième instruction qui dit s'il faut faire une lecture ou une écriture.
===La microarchitecture de l'Intel 4004===
Il incorporait une pile d'adresse de retour intégrée au processeur. La pile d'adresse acceptait exactement 3 adresses maximum. Elle était regroupée avec le ''program counter'' dans un banc de registre, de 4 registres. Le ''program counter'' et le pointeur de pile faisaient chacun 12 bits, soit trois nibble. Ils étaient incrémentés par un incrémenteur dédié.
SI on omet le registre de page et la pile d'adresse, le 4004 est une architecture à accumulateur des plus classiques, avec un bus interne unique, un banc de registre pour les registres d'indices, un accumulateur relié à une unité de calcul. Les registres d'indice étaient dans un banc de registre séparés, car ils faisaient 4 bits chacun, contrairement au pointeur de pile et le ''program counter''. Un détail important est que les bancs de registres du 4004 étaient implémentés avec de la DRAM, et non des registres usuels fabriqués avec des bascules 1 bit.
[[File:Microarchitecture de l'Intel 4004.png|centre|vignette|upright=2.5|Microarchitecture de l'Intel 4004]]
<noinclude>
{{NavChapitre | book=Fonctionnement d'un ordinateur
| prev=Les architectures à pile et mémoire-mémoire
| prevText=Les architectures à pile et mémoire-mémoire
| next=Les processeurs de traitement du signal
| nextText=Les processeurs de traitement du signal
}}
</noinclude>
3fs29b320ncpxij9xl5epmtvmd6kcuj
765683
765682
2026-05-01T14:23:12Z
Mewtow
31375
/* Les microcontrôleurs PIC */
765683
wikitext
text/x-wiki
Nous avons déjà abordé la notion de processeur 8, 16, 32, 64 bits. Elle désigne la taille des registres généraux, ou de l'accumulateur. De nos jours, les processeurs 32 et 64 bits sont la norme, mais les premiers micro-processeurs étaient des processeurs 4 et 8, avant de passer rapidement au 16 bits. La raison est que leur budget en transistor limité faisait qu'on ne pouvait pas utiliser une ALU trop grande : une ALU 8 bit prend deux fois moins de place et de transistors qu'une ALU 16 bits. Cependant, les processeurs 8 bits avaient de sérieuses limitations qui étaient compensées par diverses solutions. Dans ce chapitre, nous allons faire une revue rapide des processeurs 8 bits et de leurs fonctionnalités.
La principale limitation des CPU 8 bits était l'adressage : des registres de 8 bits limitaient l'espace d'adressage à seulement 256 adresses, soit à peine 256 octets ! Intuitivement, on se dit que 256 octets est purement impraticable, on ne peut rien faire d'intéressant avec seulement 256 de RAM + ROM. Et c'est partiellement vrai. L'adage veut que 16 bits est la taille minimale intéressante, la limite à partir de laquelle on a assez de mémoire RAM/ROM pour coder des applications intéressantes. Mais 256 octets de RAM est largement suffisant sur de nombreux systèmes embarqués simples s'en accommodent : des caisses enregistreuses, des systèmes de régulation de feu de circulation, etc.
Pour les applications demandant plus de mémoire RAM, les CPU de l'époque contournaient la limitation de 256 octets de RAM avec de nombreux stratagèmes. Dans ce qui va suivre, nous allons séparer les CPU 8 bits selon qu'ils utilisent une architecture Harvard ou une architecture Von Neumann. La raison est qu'une architecture Harvard permet en soi de contourner partiellement ce problème d'adressage. Les choses sont plus compliquées avec une architecture Von Neumann.
==Les processeurs 8/16 bits à architecture Harvard ==
La première solution est d'utiliser une architecture Harvard. Le processeur 8 bit a alors deux espaces d'adressage : un pour la RAM, un autre pour la ROM. Et les deux utilisent des adresses de taille différente. La ROM est reliée à un bus d'adresse de 16 bits, alors que la RAM est elle connectée à un bus d'adresse de 8 bits. La RAM est donc limitée à 256 octets, alors que la ROM peut monter jusqu'à 64 kibioctets. Mine de rien, faire ainsi est largement suffisant.
Les processeurs de l'époque intégraient parfois les 256 octets de RAM directement dans le processeur. Beaucoup en implémentaient moins, avec par exemple seulement 64 octets de RAM, ou 32 octets, ou 128 octets. L'avantage est que cela éliminait le bus d'adresse des données et ne laissait que le bus d'adresse pour la ROM. On économisait ainsi beaucoup de broches sur le circuit intégré du CPU. Et pour les applications demandant plus de RAM, on pouvait ajouter un circuit séparé qui permettait d'adresser une RAM plus grande. Mais cela sera plus clair avec un exemple.
===Les microcontrôleurs PIC===
Un exemple de système 8 bits est celui des '''microcontrôleurs PIC'''. La gamme des microcontrôleurs PIC est très vaste, et regroupe des microcontrôleurs allant de microcontrôleurs 8 bit aux performances très faible, à des microcontrôleurs 32 bits bien plus puissants. Les microcontrôleurs PIC sont très utilisés dans l'embarqué ou d'informatique industrielle. Ils sont vendu à des volumes assez impressionnants, plusieurs millions par an. Et si vous avez ou êtes en train de faire des études d'électronique, je parie que vous les avez déjà vu en classe, ou que ce ne saurait tarder.
Dans ce qui suit, nous allons nous concentrer sur les microcontrôleurs PIC 8 bits. Ils incorporent une mémoire RAM très petite, ainsi qu'une architecture Harvard, comme dit plus haut. Le processeur de ces microcontrôleurs a un jeu d'instruction propriétaire, le jeu d'instruction PIC.
Ils intègrent une pile d'appel d'environ 8 adresses de retour.
Ce sont des architectures à accumulateur, avec une petite subtilité : le résultat d'une opération arithmétique peut être enregistré ailleurs que dans l'accumulateur. Le résultat peut aussi remplacer la seconde opérande, celle lue en mémoire RAM. Dit autrement, le résultat est enregistré dans l'adresse mémoire source. Les instructions de calcul ont le choix : un bit dans leur encodage précise où enregistrer le résultat.
Outre l'accumulateur, les PIC disposent de registres de contrôle, d'un ''program counter'', d'un registre d'état, et d'un pointeur de pile. Le registre d'état contient un registre séparé pour la retenue de l'addition/soustraction. Ce dernier est très important, vu qu'il est nécessaire pour les additions/soustractions sur des opérandes de 16 bits. Le processeur a beau être un CPU 8 bits, il peut être utilisé pour faire des calculs 16 bits, la performance est alors amoindrie, mais ce n'est pas un problème pour les applications d'un tel microcontroleur.
[[File:DocPIC16F84.png|centre|vignette|upright=2|DocPIC16F84]]
La mémoire RAM des microcontrôleurs PIC est très petite, elle dépasse rarement la centaine d'adresse. Pour donner un exemple, le PIC16F84 a une RAM composée de 68 "registres" de 8 bits. Le terme "registres" devrait vous faire tiquer, mais il s'agit bien d'une mémoire SRAM séparée. Simplement, la documentation des PIC qualifie cette mémoire SRAM de "registres", et il faut admettre que la différence entre banc de registre et SRAM séparée est un peu flou quand on utilise une architecture à accumulateur.
[[File:DocPIC16F84 all.png|centre|vignette|upright=2.5|Microarchitecture du PIC16F84.]]
===Le Fairchild F8 et la console de jeu Fairchild Channel F===
Un autre exemple est la Fairchild F8 de la défunte entreprise Fairchild Semiconductor. Il incorpore un processeur 8 bits, c'est à dire que le processeur fait des calculs sur des entiers de 8 bits maximum, une mémoire RAM de 64 octets, ainsi qu'une mémoire ROM de 1 kibioctet. Les 64 octets de RAM sont certes très peu, mais c'est suffisant pour certaines applications simples, comme les caisses automatiques de l'époque, ou des applications embarquées. Et de toute façon, il est possible d'ajouter de la mémoire RAM supplémentaire si les 64 octets de RAM intégrée ne suffisent pas. Le système était donc modulaire, adaptable selon les besoins, peu cher pour son implémentation minimale sans RAM en plus.
Vu qu'il s'agit d'un des tout premiers ordinateurs, il est sorti à une époque où la technologie était rudimentaire. À cette époque, le processeur était composé de pièces détachées qu'il fallait souder ensemble pour obtenir un processeur fonctionnel. Ce n'est que plus tard qu'est apparu le micro-processeur, qui regroupe un processeur complet dans un seul circuit intégré. Le résultat est que le processeur du Fairchild F8 est coupé en deux, l'unité de calcul et l'unité de contrôle sont placés dans des pièces détachées séparés.
Le microcontrôleur est composé de trois à quatre pièces détachées, certaines étant optionnelles. La première est le '''3850 CPU''', qui regroupe l'unité de calcul et la mémoire RAM intégrée. La seconde est le PSU (''3851 Program Storage Unit''), qui regroupe la mémoire ROM et l'unité de contrôle, ''program counter'' inclut. S'il y a besoin d'utiliser plus de RAM, il faut ajouter un circuit d’interface mémoire, qui est au choix le ''3852 Dynamic Memory Interface'' (DMI) ou le ''3853 Static Memory Interface'', le premier étant connecté à une mémoire de type DRAM, l'autre à une SRAM (nous verrons ce que sont les DRAM et les SRAM dans le prochain chapitre).
[[File:Fairchild F8.png|centre|vignette|upright=2|Fairchild F8]]
Le système minimal est composé d'un PSU et d'un 3850, sans les circuits d'interface mémoire. Le tout donne un système avec un processeur 8 bit, 64 octets de RAM et 1 kibioctet de ROM, les deux mémoires étant intégrées dans le "processeur". Le processeur gérait 4 entrées-sorties, chacune étant reliée avec un bus de 8 bit au processeur. Au passage, en 1977, Mostek a créé un microcontrôleur qui regroupe un PSU et un 3850 : le Mostek 3870. Le système minimal n'avait pas de bus d'adresse, vu que la RAM était intégrée au processeur. C'est les 3852 et 3853 qui ajoutaient un bus d'adresse. Ils ajoutent un bus d'adresse de 16 bits, ce qui permet d'adresser 64 kibioctets de RAM.
[[File:Fairchild-Channel-F.jpg|vignette|un Fairchild Channel F]]
Le Fairchild F8 a été utilisé dans la Fairchild Channel F, une des toute première console de seconde génération, à savoir des consoles qui utilisaient des cartouches de jeu. Avant les consoles de seconde génération, les consoles étaient non-programmables. Elles étaient conçues pour faire tourner un jeu précis, aucun autre, le jeu étant implémenté dans leurs circuits.
La Fairchild Channel F est composé du système minimal, auquel on a ajouté une carte son rudimentaire et 2 kibioctets de mémoire vidéo. La mémoire vidéo sert uniquement pour afficher des images à l'écran : on écrit l'image à afficher dedans, un circuit vidéo se charge de l'afficher à l'écran automatiquement. Le processeur ne fait qu'écrire dans cette RAM vidéo, il ne peut pas en lire le contenu. De la RAM supplémentaire peut cependant être ajoutée dans les cartouches de jeu.
===L'usage d'une architecture Harvard modifiée : les consoles 8 bits===
Pour encore améliorer la situation, il est possible d'utiliser une architecture Harvard modifiée, qui permet de lire des données depuis la mémoire ROM. Cela réduit encore plus les besoins en mémoire RAM. Les constantes manipulées par le programme sont mémorisées en ROM, lues depuis la ROM, au lieu d'être chargées en RAM. Les consoles de jeu utilisaient beaucoup de stratagème.
L'exemple type est celui des consoles 8 bits avec des graphismes en 2D. La cartouche de jeu contenait une ROM, qui mémorisait le code du jeu, les niveaux, les sprites et autres données graphiques. Leur carte graphique lisait directement les ''sprites'' depuis la mémoire ROM, sans avoir à les charger en mémoire vidéo. La mémoire vidéo se contentait de mémoriser le reste des informations graphiques, ainsi que des pointeurs vers les ''sprites'' en ROM. En conséquence, les consoles 8 bits n'avaient pas besoin de beaucoup de RAM, vu qu'une grande partie des données utiles étaient dans une ROM directement accessible par le processeur. A l'opposé, les micro-ordinateurs devaient copier les données d'un jeu depuis une disquette dans la mémoire RAM, ce qui demandait d'avoir plus de RAM.
Le passage au support CD sur les consoles 32 bits a eu la même conséquence. Le processeur ne pouvant pas lire directement le CD à sa guise, il fallait copier les données du CD en RAM. D'où l'apparition de temps de chargement assez longs, inexistants sur support cartouche.
Avec ce genre de stratagèmes, 256 octets de RAM est largement suffisant sur de nombreux systèmes, à condition qu'on ait assez de ROM pour coder un programme digne de ce nom. Par exemple, de nombreux systèmes embarqués simples s'en accommodent : des caisses enregistreuses, des systèmes de régulation de feu de circulation, etc.
===Le HP Nanoprocessor : un processeur sans ALU===
Un dernier exemple est celui du processeur HP Nanoprocessor, de l'entreprise HP. Il a été commercialisé en 1974, en même temps que les premiers micro-processeurs d'Intel. Tous les processeurs de l'époque étaient des processeurs 8 bits et le HP Nanoprocessor ne faisait pas exception. Ce n'était pas un processeur haute performance, il était destiné à des applications d'informatique industrielle ou embarquée. D'ailleurs, il utilisait des transistors de type metal-gate, peu performants, là où ses contemporains utilisait des transistors en silicium, plus performants.
Mais une caractéristique qui rend cela encore plus claire est qu'il n'y a pas d'ALU ! En effet, ce processeur est incapable de faire des additions, des soustractions ou autres opérations simples ! Il est cependant capable d'effectuer des incrémentations et décrémentations, des décalages, des opérations logiques comme des ET/OU/NON/XOR et bien d'autres. Il supporte en tout 48 instructions, avec un support limité des modes d'adressage indirects. Les instructions de branchement étaient des instructions SKIP, il n'y avait pas d'instructions de branchement généralistes.
Pour ce qui est des registres, il disposait de 16 registres de 8 bits et d'un accumulateur. Niveau mémoire, il était relié à une mémoire ROM, rien de plus. Il n'avait de RAM supplémentaire qu'on pouvait lui adjoindre, il devait se débrouiller avec seulement ses registres. Et cela ne posait pas de problèmes pour son usage. Seul le mode d'adressage indirect à registre est supporté, il n'y a pas de registres d'indices. Ce mode d'adressage permet de lire des données en mémoire ROM, la ROM pouvant contenir des tableaux de valeurs constantes.
: Il est possible de lui adjoindre de la RAM via les ports d'entrée-sortie, ainsi qu'une ALU, mais RAM et ALU sont traités comme des périphériques avec lesquels on communique, ils ne sont pas intégrés au processeur.
Niveau micro-architecture, il incorporait une unité de calcul logique et un circuit comparateur. Le comparateur était un circuit comparateur série des plus basiques, qui était utilisé pour les instructions de branchement et associées. L'unité de calcul logique gérait des incrémentations/décrémentation, des décalages, les opérations logiques et quelques autres. L'unité de calcul logique était bit-slicée, à savoir conçue en assemblant 8 ALU de 1 bit chacune, enchainées en série. Le tout était combiné à des circuits de ''carry skip''.
[[File:Unité de calcul du HP nanonprocessor.png|centre|vignette|upright=2|Unité de calcul du HP nanoprocessor]]
Son unité de décodage d'instruction était très simple, essentiellement basée sur des portes NOR, grâce à un encodage efficace des instructions machine. Le ''program counter'' fait 11 bits, ce qui permet d'adresser une ROM de 2 kibioctets. Le ''program counter'' était relié à un circuit incrémenteur qui gérait les isntructions SKIP (il pouvait incrémenter le ''program counter'' par pas de 1 ou de 2 en cas de SKIP). Le processeur contient aussi deux registres, qui servent en quelque sorte de pile d'adresse de retour. Un premier registre mémorise l'adresse de retour d'une fonction, l'autre mémorise le ''program counter'' lors d'une interruption, pour savoir où brancher à la fin de l'interruption.
[[File:HP nanoprocessor.png|centre|vignette|upright=2.5|HP nanoprocessor]]
Fait intéressant, le concepteur du processeur a gracieusement donné les masques utilisés pour graver le silicium du processeur au site [https://www.cpushack.com/ CPU Shack]. Les masques en question sont disponibles ici :
* [https://www.cpushack.com/2020/08/20/hp-nanoprocessor-mask-set/ HP NanoProcessor Mask Set]
* [https://www.cpushack.com/2020/08/09/the-forgotten-ones-hp-nanoprocessor/ The Forgotten Ones: HP Nanoprocessor]
Les masques ont été analysés par Ken Shirrif dans cet article de blog :
* [https://www.righto.com/2020/09/hp-nanoprocessor-part-ii-reverse.html HP Nanoprocessor part II: Reverse-engineering the circuits from the masks]
==Les processeurs 8/16 bits à architecture Von Neumann==
L'usage d'une architecture Harvard est une solution pour adresser plus de mémoire avec des CPU 8 bits. Mais plusieurs microprocesseurs commerciaux n'utilisaient pas cette solution. À la place, c'était des architectures Von Neumann, mais qui étaient capables de gérer des adresses de 16 bits. Les données faisaient 8 bits, les registres faisaient 8 bits, mais quelques techniques permettaient de gérer des adresses de 16 bits. Nous parlerons de '''processeurs 8/16 bits''' pour les désigner, et nous allons les étudier à part.
Un point important est que la gestion d'adresses de 16 bits permet d'adresser 64 kibioctets, qui peuvent être remplis avec de la RAM et de la ROM. On a donc le meilleur des mondes : 64 kibioctets de mémoire, mais avec des données de 8 bits et les économies de circuit qui vont avec. L'avantage est que le processeur peut maintenant gérer une vraie pile d'appel, pas seulement une pile d'adresse de retour. Il lui suffit pour cela d'intégrer un pointeur de pile codé sur 16 bits.
===Les modes d'adressage par page des CPU Motorola===
Les processeurs Motorola 8 bits étaient des processeurs 8 bits avec un bus d'adresse de 16 bits. C'était des processeurs à accumulateur incorporant deux registres d'indice, un registre d'état, un pointeur de pile, et un ''program counter''. Tous les registres sont reliés au bus d'adresse, sauf le registre d'état et l’accumulateur. Tous les registres font 8 bits, sauf le ''program counter''. La pile est câblée pour être dans un bloc de 256 octets compris entre l'adresse 1 0000 0000 et l'adresse 1 1111 1111, ce qui fait que son adressage se fait avec un seul octet.
[[File:6502-architecture.svg|centre|vignette|upright=1.5|Architecture simplifiée du 6502.</br> X et Y : registres d'indice ;</br> S : le pointeur de pile ;</br> A : accumulateur ;</br>P : registre d'état.</br>]]
Les processeurs Motorola 8 bits utilisaient une méthode simple pour adresser 64 kibioctets de RAM, avec des registres de 8 bits. Pour cela, ils utilisaient une variante de l'adressage base + décalage. Elle améliore l'adressage absolu, qui intègre l'adresse à lire/écrire dans l'instruction elle-même. L'adresse en question est de 8 bits et n'encode que les 8 bits de poids faible de l'adresse, les 8 bits de poids fort sont dans un '''registre de page''' adressé implicitement. L'adresse finale est obtenue en concaténant ce registre avec l'adresse mémoire intégrée dans l’instruction. Le résultat est que la mémoire était découpée en blocs de 256 consécutifs, chacun pouvant servir de fenêtre de 256 octets. Une page est réservée pour la pile, la seconde, comme dit plus haut.
Formellement, ce mode d'adressage a des ressemblances avec la commutation de banques, une technique qu'on verra dans les chapitres sur l'espace d'adressage et la mémoire virtuelle. Mais ce n'en est pas du tout : le registre de page est utilisé uniquement pour les accès mémoire avec le mode d'adressage base + décalage, mais pas pour les autres accès mémoire, qui gèrent des adresses complètes. Notons que l'usage d'un registre de page dédié fait que celui-ci est adressé implicitement.
Il faut noter que la technique a été utilisée sur des processeurs 16 bits, pour contourner la petite taille des instructions. Un exemple est celui du HP 2100, un processeur 16 bits. Il avait un registre de page de 5 bits et encodait 10 bits d'adresse dans ses instructions. Ses instructions d'accès mémoire disposaient d'un bit qui choisit quel mode d'adressage utiliser. S'il était à 0, l'adressage absolu était utilisé, le registre de page n'était pas utilisé. Mais s'il était à 1, le registre de page était utilisé pour calculer l'adresse.
Une évolution de l'adressage précédent est le '''mode page direct'''. Avec lui, le registre de page est étendu et contient une adresse mémoire complète. L'adresse finale n'est pas obtenue par concaténation, mais en additionnant le registre de page avec l'adresse fournie par adressage absolu + décalage. Un exemple est celui des premiers processeurs Motorola, qui géraient des adresses courtes de 8 bits. L'adresse courte de 8 bits correspondait non pas aux 256 premiers octets de la mémoire, mais à une fenêtre de 256 octets déplaçable en mémoire. La position de la fenêtre de 256 octets était spécifiée par le registre de page de 16 bits, qui précisait l'adresse du début de la fenêtre, celle de sa première donnée.
Il s'agit donc formellement d'adressage base + décalage, à un détail près : il n'y a qu'un seul registre de base. Le fait que ce registre de base soit unique fait qu'il est adressé implicitement, on n'a pas à encoder le numéro/noms de registre dans l'instruction. Le registre de base est utilisé uniquement pour l'adressage absolu, pas pour les autres accès mémoire. S'il y a des ressemblances avec la segmentation, une technique de mémoire virtuelle qu'on abordera dans quelques chapitres, ce n'en est pas vu que le registre de base est utilisé seulement pour un mode d'adressage bien précis.
===Le ''pseudo-aliasing'' des registres des processeurs Intel x86===
Voyons maintenant le cas des anciens processeurs 8 bits d'Intel à savoir l'Intel 4004, 4040, 8008 et 8080. Le Z80, un processeur inspiré des CPU Intel 8 bits, est aussi concerné. Avant de poursuivre, parlons des registres de ces processeurs. Les premiers CPU Intel incorporaient 7 registres de 8 bits nommés A, B, C, D, E, F, H, L, SP. Ils correspondent respectivement à : l'accumulateur A ; six registres nommés B, C, D, E, H et L ; le registre d'état F ; le pointeur de pile SP. Le Z80 ajoute deux registres d'indice X et Y. De plus, le Z80 dispose de registres d'interruption, qui sont en quelque sorte des copies des registres A, B, C, D, E, F, H, L. Le tout est illustré dans le tableau ci-dessous.
{|class="wikitable" style="text-align:center;"
|-
!
! Registres des CPU Intel
! Registres supplémentaires du Z80
|-
! Accumulateur
| A
| A'
|-
! Registre d'état
| F
| F'
|-
! Registres généraux
| B, C, D, E, H, L
| B', C', D', E', H', L'
|-
! Pointeur de pile
| colspan="2" | SP (sauf pour le 8008)
|-
! Registres d'indice
|
| X et Y
|}
Le 8008 incorpore une pile d'appel de 7 adresses, dans le processeur lui-même. Il en est de la même avec le 4004 et le 4040, comme on le verra dans la section sur les processeurs 4 bits. Mais le 8080 et le 8085 ont remplacé le tout par un simple pointeur de pile, afin d'avoir une véritable pile d'appel. Autant c'est impossible d'avoir une pile d'appel avec seulement 256 octets de mémoire, autant on peut se le permettre avec 65 536 adresses.
Pour gérer des adresses de 16 bits, ils auraient pu utiliser des registres d'adresse séparés, mais on préféré un système de '''pseudo-''aliasing'' de registres'''. Formellement, c'est un système qui concatène deux registres 8 bits pour obtenir une adresse de 16 bits. L’appariement a lieu lors de certaines opérations bien précises, qui n'ont de sens que pour les adresses : la lecture/écriture en mémoire, et l'incrémentation.
Il y avait cependant des contraintes quant aux paires de registres possibles, toutes les paires de registres n'étaient pas autorisées. Les CPU concernés sont donc des processeurs hybrides accumulateur-registre généraux. L'accumulateur ne peut pas être appairé, seuls les registres généraux le peuvent. Le Z80 autorise plus de paires que les CPU Intel. Voici les paires de registres qui pouvaient servir d'adresse 16 bits :
* Les CPU 8008 d'Intel autorisait une seule paire formée des registres H et L.
* Les autres processeurs, à savoir le 8080, le 8085 et le Z80, autorisaient : les paires BC, DE et HL.
Le 8008 ne gérait que des opérations sur 8 bits. Mais le 8080 et le 8085 ont ajouté des instructions 16 bits qui agissaient sur des paires de registre, que le Z80 a repris. Une paire de registres est considérée comme un registre unique de 16 bits pour certaines opérations arithmétiques, dont l'incrémentation. Voici la liste des instructions concernées :
* INC et DEC pour l'incrémentation et la décrémentation ;
* DAD : additionne le registre HL avec une autre paire (Hl inclus) ;
* LXI : copie une constante immédiate dans une paire de registres ;
* LHLD : lit 16 depuis la mémoire et l'enregistre dans une paire de registres ;
* SHLD : copie 16 bits depuis une paire de registres et l'enregistre en mémoire ;
* PUSH et POP : empile ou dépilent une paire de registre sur la pile ;
* XTHL : échange la paire HL avec les 16 bits au sommet de la pile d'appel ;
* XCHG : échange le contenu de la paire HL et DE.
Pour résumer, le processeur avait des instructions LOAD, STORE, PUSH et POP adaptées pour gérer des paires de registre. De plus, l'instruction XCHG permettait d’échanger le contenu des paires DE et HL. L'instruction a été étendue sur les processeurs 16 bits pour échanger tous les registres. Mais l'implémentation était alors différente. L'incrémentation sur une paire de 16 bit était très utile, car les adresses sont souvent incrémentées quand on parcours un tableau. Ces instructions nous donnent quelques indices sur ce qu'il y a dans le processeur.
Le système de pseudo-aliasing a un impact sur le banc de registre. Le banc de registre regroupe les registres généraux et le pointeur de pile, mais ne contient pas l'accumulateur. Les contraintes sur les paires de registres possibles ne s'expliquent que d'une seule manière : le banc de registre contient des registres de 16 bits, une paire de registres 8 bits est mémorisée dans un registre unique. Il faut donc faire une différence entre les registres architecturaux de 8 bits, et les registres réels de 16 bits.
Le banc de registre a un port de 8 bits pour les données, qui est fabriqué à partir d'un port 16 bits auquel on a rajouté un multiplexeur pour choisir soit l'octet de poids faible, soit l'octet de poids fort. Le bus de données fait 8 bits, ce qui fait que les instructions LOAD, STORE, PUSH et POP pour paires 16 bits sont réalisées en deux fois : on lit/écrit l'octet de poids faible, puis celui de poids fort. Par contre, le bus d'adresse fait bien 16 bits. Cela suggère que le banc de registre dispose d'un port de 16 bits dédié aux adresses, en plus du port de données 8 bits.
[[File:Architecture d'un CPU 8-16 bits avec un banc de registre double port.png|centre|vignette|upright=2|Architecture d'un CPU 8-16 bits avec un banc de registre double port]]
L'incrémentation d'une paire 16 bits ne coute rien à implémenter, ou presque. En effet, le processeur incorpore un incrémenteur 16 bits pour le ''program counter'', qui est relié au bus d'adresse. L'idée est de rentabiliser cet incrémenteur, en lui permettant d'incrémenter des données/adresses de 16 bits obtenues via pseudo-aliasing. De même, il peut être utilisé pour incrémenter le pointeur de pile, voire un compteur de rafraichissement mémoire (pour rappel, le rafraîchissement mémoire demande de balayer la mémoire d'adresse en adresse et été fait par le CPU à l'époque). Pour cela, il suffit de connecter le ''program counter'', le banc de registre, et l'incrémenteur, via un bus dédié.
[[File:Calcul d'adresse par ALU dédiée avec PC séparé.png|centre|vignette|upright=2|Calcul d'adresse par ALU dédiée avec PC séparé]]
Notez qu'on peut encore simplifier le tout en placant le ''program counter'' dans le banc de registre, ce qui ne gênera pas le travail de l'incrémenteur mais simplifiera le câblage au bus d'adresse. Ce n'était pas systématique, certains processeurs mettaient le ''program counter'' dans le banc de registre, d'autres non.
: Inclure le ''program counter'' dans le banc de registre permet parfois de remplir un vide. Par exemple, sur un processeur avec 12 registres, le banc de registre devrait faire idéalement 16 registres, inclure le ''program counter'' dedans fait monter le tout à 13.
[[File:Architecture d'un CPU 8-16 bits.png|centre|vignette|upright=2|Architecture d'un CPU 8-16 bits]]
Les processeurs Intel 8 bits, à savoir le 8008, le 8080 et le 8085 ; mettaient le ''program counter'' dans le banc de registre. Vous avez donc toutes les armes pour comprendre leur micro-architecture. Par exemple, voici la micro-architecture du processeur 8080. Remarquez le banc de registre, qui contient tous les registres sauf l'accumulateur et le registre. Il a deux ports : un pour les adresses et un pour les données. Notez le dé-multiplexeur sur le port de donnée. Pour le reste, il s'agit d'une architecture à accumulateur hybride des plus classiques.
[[File:Intel 8080 arch.svg|centre|vignette|upright=3|Microarchitecture de l'Intel 8080.]]
Le Z80 est un processeur inspiré du design des processeurs Intel 8 bits, mais avec pas mal d'améliorations. Un point particulier de ce processeur est son banc de registre. Il contient tous les registres du processeur, y compris l'accumulateur et le registre d'état ! Les seuls registres en-dehors du banc de registre sont le ''program counter'' et un compteur de rafraichissement mémoire IR.
Un autre point particulier est que les registres dans le banc de registres avaient une copie séparée accessible uniquement pour les interruptions, via fenêtrage de registres. Et l'accumulateur et le registre d'état étant dans le banc de registre, il y avait deux accumulateurs et deux registres d'état. Les registres A, B, C, D, E et F étaient dupliqués, par le pointeur de pile ni les registres d'indice. Les copies des registres étaient nommées A', B', C', D', E' et F'.
Le Z80 supportait des instructions d'échange de registre en plus des CPU Intel 8 bits. L'instruction EX peut échanger soit le contenu des paires D,E et H,F, soit la paire A,F avec la paire A',F'. L'instruction EXX échange les paires BC, DE, HL avec les paires BC', DE', HL'. En faisant cela, le programmeur pouvait utiliser deux fois plus de registres généraux s'il n'utilisait pas les interruptions. L'échange de paires se fait sans copies de registres, mais simplement en modifiant l'adresse envoyée sur le banc de registre. Pour cela, plusieurs bascules mémorisent des bits qui indiquent si les paires ont été échangées ou non. Il y a une bascule pour les paires DE , HL ; une autre pour les paires A,F et paire A',F', une dernière pour l'instruction EXX. En combinant ces bascules avec les noms de registres envoyés par le séquenceur, on peut échanger les paires de registres.
==Le cas particulier des processeurs 4 bits : le 4004 d'Intel==
L'Intel 4004 était le tout premier micro-processeur. Il s'agissait d'un microprocesseur de 4 bits, basé sur une architecture à accumulateur. Il disposait d'un accumulateur et de 16 registres d'indice, tous de 4 bits. Il faisait des calculs sur des données de 4 bits, appelées des nibbles. Cependant, sur ses 46 instructions machines supportées, 41 agissaient sur des opérandes de 8 bits, les 5 restantes sur des opérandes de 16 bits. Simplement, les calculs se faisaient en deux fois, en échangeant des données entre mémoire RAM et accumulateur.
Le 4004 est un circuit intégré avec peu de broches. Il dispose notamment d'un bus de données/adresse, qui est multiplexé, c’est-à-dire qu'il sert alternativement de bus de données et de bus d'adresse selon les besoins. Le bus de commande mémoire fait 5 bits, dont 4 pour les chips de RAM, un pour la ROM. Les adresses sont codées sur 12 bits, les données sur 4 et les instructions sur 8 bits. L'envoi d'une adresse sur le bus se fait en plusieurs fois, de même que la lecture d'une instruction. Il s'agit là d'une adaptation pour outrepasser les limitations d'un processeur 4 bit.
[[File:Intel 4004 processor pinout.png|centre|vignette|upright=2|Broches de l'Intel 4004. Nous verrons à quoi elles servent plus bas.]]
===L'espace d'adressage de l'Intel 4004===
Les adresses du processeur sont sur 12 bits, ce qui fait 4096 adresses différentes. Elles regroupent à la fois la ROM et la mémoire RAM, vu que l'architecture est une sorte de mélange bizarre entre une architecture Von Neumann et Harvard. Le processeur gère bien deux espaces d'adressage séparés, mais la RAM et la ROM sont reliés au même bus. La sortie CM-ROM du processeur indique si l'adresse envoyée correspond à la RAM ou la ROM. Un circuit de décodage d'adresse active ou désactive la RAM selon la valeur de ce bit, l'inverse pour la ROM, en agissant sur leurs bits Chip Select. Seule la RAM ou la ROM répondent alors à l'adresse.
Pour ce qui est de la RAM, le circuit de décodage d'adresse pouvait gérer au maximum 1024 adresses différentes, chacune contenant un nibble. Pour cela, le CPU 4004 était relié à une ou plusieurs RAM externes, des Intel 4002. Chaque Intel 4002 contenait 64 nibbles de données, plus 16 nibbles de statut qu'on ne détaillera pas ici. Les nibbles de statut étaient accessibles en utilisant des instructions d'entrée-sortie, donc pas avec des lectures/écritures mémoire. Les 64 nibbles de données sont découpés en 4 groupes de 16 nibbles. Le CPU pouvait être relié à maximum 16 Intel 4002, ce qui fait 1024 nibbles de données et 256 nibbles de statut. L'ensemble permet de remplir l'espace d'adressage de 1024 adresses.
===Le registre de page et le pseudo-aliasing des registres===
Sélectionner une adresse mémoire utilisait un mélange entre pseudo-aliasing et registre de page. Pour les données, les 1024 adresses étaient découpées en 4 pages de 256 adresses. Pour la ROM, les 4096 adresses étaient découpées en 16 pages de 256 adresses. Localiser une donnée dans une page ne requiert que 8 bits, 2/4 bits supplémentaires permettent de sélectionner la page voulue. Le registre de page était dans le processeur lui-même, et était relié aux sorties du processeur nommées CM-RAM 0, 1, 2 et 3. Les 4 sorties encodaient un nombre qui permet de sélectionner le numéro de page voulu.
Le registre de page fait 5 bits : un pour distinguer RAM et ROM, 4 bits pour sélectionner la page voulue. L'avantage est que la carte mère gère au maximum 16 chips de RAM, ce qui colle parfaitement avec les 4 utilisés pour sélectionner une page. Un chip de RAM correspond à une page, et chacun est activé ou désactivé suivant la page sélectionnée. Pour cela, il suffit d'ajouter un décodeur sur la carte mère, qui prend les 4 bits du registre de page et fournit les signaux Chip Select aux différents chips de RAM.
Reste alors à utiliser les 8 bits d'adresse à l'intérieur d'un chip de RAM. Le 4004 permettait de concaténer deux registres d'indice de 4 bits pour former une adresse de 8 bits. Les instructions d'accès mémoire pouvaient ainsi préciser une paire de registre d'indice pour préciser quelle adresse lire/écrire. Idem pour les branchements indirects : le processeur supportait une instruction de branchement indirect qui précisait l'adresse dans une paire de registres d'indice. Les registres d'indice sont donc assez mal nommés sur cette architecture, vu qu'ils peuvent servir soit de registre d'indice, soit de demi-registre d'adresse. Il s'agit là du système de pseudo-aliasing des registres, mais appliqué aux registres d'indice.
L'Intel 4004 gérait deux instructions pour gérer les adresses mémoires. La première, l'instruction DCL (''Designate Command Line'') configure le registre de page. Elle prend en entrée un numéro de page et le copie dans le registre de page. L'opérande peut provenir d'un registre d'indice ou de l'accumulateur. La seconde, l'instruction SRC (''Send Register Control'') concatène deux registres d'indice pour obtenir une adresse de 8 bits. Un accès mémoire se fait donc en maximum trois instructions : une qui configure le registre de page si ce n'est pas déjà fait, une instruction SRC pour envoyer l'adresse, et une troisième instruction qui dit s'il faut faire une lecture ou une écriture.
===La microarchitecture de l'Intel 4004===
Il incorporait une pile d'adresse de retour intégrée au processeur. La pile d'adresse acceptait exactement 3 adresses maximum. Elle était regroupée avec le ''program counter'' dans un banc de registre, de 4 registres. Le ''program counter'' et le pointeur de pile faisaient chacun 12 bits, soit trois nibble. Ils étaient incrémentés par un incrémenteur dédié.
SI on omet le registre de page et la pile d'adresse, le 4004 est une architecture à accumulateur des plus classiques, avec un bus interne unique, un banc de registre pour les registres d'indices, un accumulateur relié à une unité de calcul. Les registres d'indice étaient dans un banc de registre séparés, car ils faisaient 4 bits chacun, contrairement au pointeur de pile et le ''program counter''. Un détail important est que les bancs de registres du 4004 étaient implémentés avec de la DRAM, et non des registres usuels fabriqués avec des bascules 1 bit.
[[File:Microarchitecture de l'Intel 4004.png|centre|vignette|upright=2.5|Microarchitecture de l'Intel 4004]]
<noinclude>
{{NavChapitre | book=Fonctionnement d'un ordinateur
| prev=Les architectures à pile et mémoire-mémoire
| prevText=Les architectures à pile et mémoire-mémoire
| next=Les processeurs de traitement du signal
| nextText=Les processeurs de traitement du signal
}}
</noinclude>
p5miy2pr498ei2opr9zb0kgzp6re5ji
765684
765683
2026-05-01T14:38:53Z
Mewtow
31375
/* Les microcontrôleurs PIC */
765684
wikitext
text/x-wiki
Nous avons déjà abordé la notion de processeur 8, 16, 32, 64 bits. Elle désigne la taille des registres généraux, ou de l'accumulateur. De nos jours, les processeurs 32 et 64 bits sont la norme, mais les premiers micro-processeurs étaient des processeurs 4 et 8, avant de passer rapidement au 16 bits. La raison est que leur budget en transistor limité faisait qu'on ne pouvait pas utiliser une ALU trop grande : une ALU 8 bit prend deux fois moins de place et de transistors qu'une ALU 16 bits. Cependant, les processeurs 8 bits avaient de sérieuses limitations qui étaient compensées par diverses solutions. Dans ce chapitre, nous allons faire une revue rapide des processeurs 8 bits et de leurs fonctionnalités.
La principale limitation des CPU 8 bits était l'adressage : des registres de 8 bits limitaient l'espace d'adressage à seulement 256 adresses, soit à peine 256 octets ! Intuitivement, on se dit que 256 octets est purement impraticable, on ne peut rien faire d'intéressant avec seulement 256 de RAM + ROM. Et c'est partiellement vrai. L'adage veut que 16 bits est la taille minimale intéressante, la limite à partir de laquelle on a assez de mémoire RAM/ROM pour coder des applications intéressantes. Mais 256 octets de RAM est largement suffisant sur de nombreux systèmes embarqués simples s'en accommodent : des caisses enregistreuses, des systèmes de régulation de feu de circulation, etc.
Pour les applications demandant plus de mémoire RAM, les CPU de l'époque contournaient la limitation de 256 octets de RAM avec de nombreux stratagèmes. Dans ce qui va suivre, nous allons séparer les CPU 8 bits selon qu'ils utilisent une architecture Harvard ou une architecture Von Neumann. La raison est qu'une architecture Harvard permet en soi de contourner partiellement ce problème d'adressage. Les choses sont plus compliquées avec une architecture Von Neumann.
==Les processeurs 8/16 bits à architecture Harvard ==
La première solution est d'utiliser une architecture Harvard. Le processeur 8 bit a alors deux espaces d'adressage : un pour la RAM, un autre pour la ROM. Et les deux utilisent des adresses de taille différente. La ROM est reliée à un bus d'adresse de 16 bits, alors que la RAM est elle connectée à un bus d'adresse de 8 bits. La RAM est donc limitée à 256 octets, alors que la ROM peut monter jusqu'à 64 kibioctets. Mine de rien, faire ainsi est largement suffisant.
Les processeurs de l'époque intégraient parfois les 256 octets de RAM directement dans le processeur. Beaucoup en implémentaient moins, avec par exemple seulement 64 octets de RAM, ou 32 octets, ou 128 octets. L'avantage est que cela éliminait le bus d'adresse des données et ne laissait que le bus d'adresse pour la ROM. On économisait ainsi beaucoup de broches sur le circuit intégré du CPU. Et pour les applications demandant plus de RAM, on pouvait ajouter un circuit séparé qui permettait d'adresser une RAM plus grande. Mais cela sera plus clair avec un exemple.
===Les microcontrôleurs PIC===
Un exemple de système 8 bits est celui des '''microcontrôleurs PIC'''. La gamme des microcontrôleurs PIC est très vaste, et regroupe des microcontrôleurs allant de microcontrôleurs 8 bit aux performances très faible, à des microcontrôleurs 32 bits bien plus puissants. Les microcontrôleurs PIC sont très utilisés dans l'embarqué ou d'informatique industrielle. Ils sont vendu à des volumes assez impressionnants, plusieurs millions par an. Et si vous avez ou êtes en train de faire des études d'électronique, je parie que vous les avez déjà vu en classe, ou que ce ne saurait tarder.
Dans ce qui suit, nous allons nous concentrer sur les microcontrôleurs PIC 8 bits. Ils incorporent une mémoire RAM très petite, ainsi qu'une architecture Harvard, comme dit plus haut. Le processeur de ces microcontrôleurs a un jeu d'instruction propriétaire, le jeu d'instruction PIC.
La mémoire RAM des microcontrôleurs PIC est très petite, elle dépasse rarement la centaine d'adresse. Pour donner un exemple, le PIC16F84 a une RAM composée de 68 "registres" de 8 bits. Le terme "registres" devrait vous faire tiquer, mais il s'agit bien d'une mémoire SRAM séparée. Simplement, la documentation des PIC qualifie cette mémoire SRAM de "registres", et il faut admettre que la différence entre banc de registre et SRAM séparée est un peu flou quand on utilise une architecture à accumulateur.
Ce sont des architectures à accumulateur, avec une petite subtilité : le résultat d'une opération arithmétique peut être enregistré ailleurs que dans l'accumulateur. Le résultat peut aussi remplacer la seconde opérande, celle lue en mémoire RAM. Dit autrement, le résultat est enregistré dans l'adresse mémoire source. Les instructions de calcul ont le choix : un bit dans leur encodage précise où enregistrer le résultat.
Outre l'accumulateur, les PIC disposent de registres de contrôle, d'un ''program counter'', d'un registre d'état, et d'un pointeur de pile. Le registre d'état contient un registre séparé pour la retenue de l'addition/soustraction. Ce dernier est très important, vu qu'il est nécessaire pour les additions/soustractions sur des opérandes de 16 bits. Le processeur a beau être un CPU 8 bits, il peut être utilisé pour faire des calculs 16 bits, la performance est alors amoindrie, mais ce n'est pas un problème pour les applications d'un tel microcontroleur.
Un détail assez original est que tous les registres précédents, sauf l'accumulateur, sont mappés en mémoire ! En clair, on peut y accéder en lisant/écrivant à une adresse mémoire bien précise.
[[File:DocPIC16F84.png|centre|vignette|upright=2|DocPIC16F84]]
Les instructions PIC sont très petites. Les premières versions du jeu d'instruction utilisaient des instructions codées sur 12 bits, dont 5 pour l'adresse mémoire de la seconde opérande. Pour les branchements, 3 bits étaient utilisés pour l'opcode, 9 pour l'adresse de destination. Par la suite, les instructions ont été étendues à 13 bits sur les PIC1670, puis à 14, 15 et 16 bits. Les adresses ont alors été élargies, ce qui permet d'adresser en peu plus de mémoire RAM.
Ils gèrent l'adressage absolu et indirect. L'adressage absolu est celui où l'adresse est intégrée dans l'instruction, et il est très simple à implémenter. Les adresses prennent moins d'un octet, vu que la taille de la RAM est très petite, les adresses sont très courtes. L'adresse est encodée sur 5 à 7 bits, selon le modèle, ce qui permet d'adresser entre 32 et 128 octets.
Pour ce qui est des branchements, les PIC n'ont pas d'instructions de branchement conditionnels, ils font avec une SKIP instruction et des branchements inconditionnels. Par contre, ils ont des branchements pour les appels et retour de fonction. Mieux que ça, ils intègrent une pile d'appel d'environ 8 adresses de retour. Pour donner une idée, l'adresse de retour est encodée sur 10 bits sur les PIC16F84.
Pour le reste, les instructions se limitent à des additions/soustractions, des opérations bit à bit, des instructions MOV, ainsi que des opérations pour tester/masquer un bit dans une opérande. On peut cependant noter la présence d'une instruction pour mettre une adresse à zéro, qui peut aussi mettre à zéro l’accumulateur, ainsi que d'instructions d'incrémentation et de décrémentation. Ces dernières sont au nombre de trois : une décrémentation normale, une décrémentation fusionnée avec une instruction SKIP, et une incrémentation fusionnée avec une instruction SKIP. Les deux dernières incrémentent/décrémentent l'accumulateur et SKIP l'instruction suivante si le résultat est zéro. Elles permettent de fortement simplifier l'implémentation des boucles qui s'exécutent tant que leur compteur atteint zéro.
[[File:DocPIC16F84 all.png|centre|vignette|upright=2.5|Microarchitecture du PIC16F84.]]
===Le Fairchild F8 et la console de jeu Fairchild Channel F===
Un autre exemple est la Fairchild F8 de la défunte entreprise Fairchild Semiconductor. Il incorpore un processeur 8 bits, c'est à dire que le processeur fait des calculs sur des entiers de 8 bits maximum, une mémoire RAM de 64 octets, ainsi qu'une mémoire ROM de 1 kibioctet. Les 64 octets de RAM sont certes très peu, mais c'est suffisant pour certaines applications simples, comme les caisses automatiques de l'époque, ou des applications embarquées. Et de toute façon, il est possible d'ajouter de la mémoire RAM supplémentaire si les 64 octets de RAM intégrée ne suffisent pas. Le système était donc modulaire, adaptable selon les besoins, peu cher pour son implémentation minimale sans RAM en plus.
Vu qu'il s'agit d'un des tout premiers ordinateurs, il est sorti à une époque où la technologie était rudimentaire. À cette époque, le processeur était composé de pièces détachées qu'il fallait souder ensemble pour obtenir un processeur fonctionnel. Ce n'est que plus tard qu'est apparu le micro-processeur, qui regroupe un processeur complet dans un seul circuit intégré. Le résultat est que le processeur du Fairchild F8 est coupé en deux, l'unité de calcul et l'unité de contrôle sont placés dans des pièces détachées séparés.
Le microcontrôleur est composé de trois à quatre pièces détachées, certaines étant optionnelles. La première est le '''3850 CPU''', qui regroupe l'unité de calcul et la mémoire RAM intégrée. La seconde est le PSU (''3851 Program Storage Unit''), qui regroupe la mémoire ROM et l'unité de contrôle, ''program counter'' inclut. S'il y a besoin d'utiliser plus de RAM, il faut ajouter un circuit d’interface mémoire, qui est au choix le ''3852 Dynamic Memory Interface'' (DMI) ou le ''3853 Static Memory Interface'', le premier étant connecté à une mémoire de type DRAM, l'autre à une SRAM (nous verrons ce que sont les DRAM et les SRAM dans le prochain chapitre).
[[File:Fairchild F8.png|centre|vignette|upright=2|Fairchild F8]]
Le système minimal est composé d'un PSU et d'un 3850, sans les circuits d'interface mémoire. Le tout donne un système avec un processeur 8 bit, 64 octets de RAM et 1 kibioctet de ROM, les deux mémoires étant intégrées dans le "processeur". Le processeur gérait 4 entrées-sorties, chacune étant reliée avec un bus de 8 bit au processeur. Au passage, en 1977, Mostek a créé un microcontrôleur qui regroupe un PSU et un 3850 : le Mostek 3870. Le système minimal n'avait pas de bus d'adresse, vu que la RAM était intégrée au processeur. C'est les 3852 et 3853 qui ajoutaient un bus d'adresse. Ils ajoutent un bus d'adresse de 16 bits, ce qui permet d'adresser 64 kibioctets de RAM.
[[File:Fairchild-Channel-F.jpg|vignette|un Fairchild Channel F]]
Le Fairchild F8 a été utilisé dans la Fairchild Channel F, une des toute première console de seconde génération, à savoir des consoles qui utilisaient des cartouches de jeu. Avant les consoles de seconde génération, les consoles étaient non-programmables. Elles étaient conçues pour faire tourner un jeu précis, aucun autre, le jeu étant implémenté dans leurs circuits.
La Fairchild Channel F est composé du système minimal, auquel on a ajouté une carte son rudimentaire et 2 kibioctets de mémoire vidéo. La mémoire vidéo sert uniquement pour afficher des images à l'écran : on écrit l'image à afficher dedans, un circuit vidéo se charge de l'afficher à l'écran automatiquement. Le processeur ne fait qu'écrire dans cette RAM vidéo, il ne peut pas en lire le contenu. De la RAM supplémentaire peut cependant être ajoutée dans les cartouches de jeu.
===L'usage d'une architecture Harvard modifiée : les consoles 8 bits===
Pour encore améliorer la situation, il est possible d'utiliser une architecture Harvard modifiée, qui permet de lire des données depuis la mémoire ROM. Cela réduit encore plus les besoins en mémoire RAM. Les constantes manipulées par le programme sont mémorisées en ROM, lues depuis la ROM, au lieu d'être chargées en RAM. Les consoles de jeu utilisaient beaucoup de stratagème.
L'exemple type est celui des consoles 8 bits avec des graphismes en 2D. La cartouche de jeu contenait une ROM, qui mémorisait le code du jeu, les niveaux, les sprites et autres données graphiques. Leur carte graphique lisait directement les ''sprites'' depuis la mémoire ROM, sans avoir à les charger en mémoire vidéo. La mémoire vidéo se contentait de mémoriser le reste des informations graphiques, ainsi que des pointeurs vers les ''sprites'' en ROM. En conséquence, les consoles 8 bits n'avaient pas besoin de beaucoup de RAM, vu qu'une grande partie des données utiles étaient dans une ROM directement accessible par le processeur. A l'opposé, les micro-ordinateurs devaient copier les données d'un jeu depuis une disquette dans la mémoire RAM, ce qui demandait d'avoir plus de RAM.
Le passage au support CD sur les consoles 32 bits a eu la même conséquence. Le processeur ne pouvant pas lire directement le CD à sa guise, il fallait copier les données du CD en RAM. D'où l'apparition de temps de chargement assez longs, inexistants sur support cartouche.
Avec ce genre de stratagèmes, 256 octets de RAM est largement suffisant sur de nombreux systèmes, à condition qu'on ait assez de ROM pour coder un programme digne de ce nom. Par exemple, de nombreux systèmes embarqués simples s'en accommodent : des caisses enregistreuses, des systèmes de régulation de feu de circulation, etc.
===Le HP Nanoprocessor : un processeur sans ALU===
Un dernier exemple est celui du processeur HP Nanoprocessor, de l'entreprise HP. Il a été commercialisé en 1974, en même temps que les premiers micro-processeurs d'Intel. Tous les processeurs de l'époque étaient des processeurs 8 bits et le HP Nanoprocessor ne faisait pas exception. Ce n'était pas un processeur haute performance, il était destiné à des applications d'informatique industrielle ou embarquée. D'ailleurs, il utilisait des transistors de type metal-gate, peu performants, là où ses contemporains utilisait des transistors en silicium, plus performants.
Mais une caractéristique qui rend cela encore plus claire est qu'il n'y a pas d'ALU ! En effet, ce processeur est incapable de faire des additions, des soustractions ou autres opérations simples ! Il est cependant capable d'effectuer des incrémentations et décrémentations, des décalages, des opérations logiques comme des ET/OU/NON/XOR et bien d'autres. Il supporte en tout 48 instructions, avec un support limité des modes d'adressage indirects. Les instructions de branchement étaient des instructions SKIP, il n'y avait pas d'instructions de branchement généralistes.
Pour ce qui est des registres, il disposait de 16 registres de 8 bits et d'un accumulateur. Niveau mémoire, il était relié à une mémoire ROM, rien de plus. Il n'avait de RAM supplémentaire qu'on pouvait lui adjoindre, il devait se débrouiller avec seulement ses registres. Et cela ne posait pas de problèmes pour son usage. Seul le mode d'adressage indirect à registre est supporté, il n'y a pas de registres d'indices. Ce mode d'adressage permet de lire des données en mémoire ROM, la ROM pouvant contenir des tableaux de valeurs constantes.
: Il est possible de lui adjoindre de la RAM via les ports d'entrée-sortie, ainsi qu'une ALU, mais RAM et ALU sont traités comme des périphériques avec lesquels on communique, ils ne sont pas intégrés au processeur.
Niveau micro-architecture, il incorporait une unité de calcul logique et un circuit comparateur. Le comparateur était un circuit comparateur série des plus basiques, qui était utilisé pour les instructions de branchement et associées. L'unité de calcul logique gérait des incrémentations/décrémentation, des décalages, les opérations logiques et quelques autres. L'unité de calcul logique était bit-slicée, à savoir conçue en assemblant 8 ALU de 1 bit chacune, enchainées en série. Le tout était combiné à des circuits de ''carry skip''.
[[File:Unité de calcul du HP nanonprocessor.png|centre|vignette|upright=2|Unité de calcul du HP nanoprocessor]]
Son unité de décodage d'instruction était très simple, essentiellement basée sur des portes NOR, grâce à un encodage efficace des instructions machine. Le ''program counter'' fait 11 bits, ce qui permet d'adresser une ROM de 2 kibioctets. Le ''program counter'' était relié à un circuit incrémenteur qui gérait les isntructions SKIP (il pouvait incrémenter le ''program counter'' par pas de 1 ou de 2 en cas de SKIP). Le processeur contient aussi deux registres, qui servent en quelque sorte de pile d'adresse de retour. Un premier registre mémorise l'adresse de retour d'une fonction, l'autre mémorise le ''program counter'' lors d'une interruption, pour savoir où brancher à la fin de l'interruption.
[[File:HP nanoprocessor.png|centre|vignette|upright=2.5|HP nanoprocessor]]
Fait intéressant, le concepteur du processeur a gracieusement donné les masques utilisés pour graver le silicium du processeur au site [https://www.cpushack.com/ CPU Shack]. Les masques en question sont disponibles ici :
* [https://www.cpushack.com/2020/08/20/hp-nanoprocessor-mask-set/ HP NanoProcessor Mask Set]
* [https://www.cpushack.com/2020/08/09/the-forgotten-ones-hp-nanoprocessor/ The Forgotten Ones: HP Nanoprocessor]
Les masques ont été analysés par Ken Shirrif dans cet article de blog :
* [https://www.righto.com/2020/09/hp-nanoprocessor-part-ii-reverse.html HP Nanoprocessor part II: Reverse-engineering the circuits from the masks]
==Les processeurs 8/16 bits à architecture Von Neumann==
L'usage d'une architecture Harvard est une solution pour adresser plus de mémoire avec des CPU 8 bits. Mais plusieurs microprocesseurs commerciaux n'utilisaient pas cette solution. À la place, c'était des architectures Von Neumann, mais qui étaient capables de gérer des adresses de 16 bits. Les données faisaient 8 bits, les registres faisaient 8 bits, mais quelques techniques permettaient de gérer des adresses de 16 bits. Nous parlerons de '''processeurs 8/16 bits''' pour les désigner, et nous allons les étudier à part.
Un point important est que la gestion d'adresses de 16 bits permet d'adresser 64 kibioctets, qui peuvent être remplis avec de la RAM et de la ROM. On a donc le meilleur des mondes : 64 kibioctets de mémoire, mais avec des données de 8 bits et les économies de circuit qui vont avec. L'avantage est que le processeur peut maintenant gérer une vraie pile d'appel, pas seulement une pile d'adresse de retour. Il lui suffit pour cela d'intégrer un pointeur de pile codé sur 16 bits.
===Les modes d'adressage par page des CPU Motorola===
Les processeurs Motorola 8 bits étaient des processeurs 8 bits avec un bus d'adresse de 16 bits. C'était des processeurs à accumulateur incorporant deux registres d'indice, un registre d'état, un pointeur de pile, et un ''program counter''. Tous les registres sont reliés au bus d'adresse, sauf le registre d'état et l’accumulateur. Tous les registres font 8 bits, sauf le ''program counter''. La pile est câblée pour être dans un bloc de 256 octets compris entre l'adresse 1 0000 0000 et l'adresse 1 1111 1111, ce qui fait que son adressage se fait avec un seul octet.
[[File:6502-architecture.svg|centre|vignette|upright=1.5|Architecture simplifiée du 6502.</br> X et Y : registres d'indice ;</br> S : le pointeur de pile ;</br> A : accumulateur ;</br>P : registre d'état.</br>]]
Les processeurs Motorola 8 bits utilisaient une méthode simple pour adresser 64 kibioctets de RAM, avec des registres de 8 bits. Pour cela, ils utilisaient une variante de l'adressage base + décalage. Elle améliore l'adressage absolu, qui intègre l'adresse à lire/écrire dans l'instruction elle-même. L'adresse en question est de 8 bits et n'encode que les 8 bits de poids faible de l'adresse, les 8 bits de poids fort sont dans un '''registre de page''' adressé implicitement. L'adresse finale est obtenue en concaténant ce registre avec l'adresse mémoire intégrée dans l’instruction. Le résultat est que la mémoire était découpée en blocs de 256 consécutifs, chacun pouvant servir de fenêtre de 256 octets. Une page est réservée pour la pile, la seconde, comme dit plus haut.
Formellement, ce mode d'adressage a des ressemblances avec la commutation de banques, une technique qu'on verra dans les chapitres sur l'espace d'adressage et la mémoire virtuelle. Mais ce n'en est pas du tout : le registre de page est utilisé uniquement pour les accès mémoire avec le mode d'adressage base + décalage, mais pas pour les autres accès mémoire, qui gèrent des adresses complètes. Notons que l'usage d'un registre de page dédié fait que celui-ci est adressé implicitement.
Il faut noter que la technique a été utilisée sur des processeurs 16 bits, pour contourner la petite taille des instructions. Un exemple est celui du HP 2100, un processeur 16 bits. Il avait un registre de page de 5 bits et encodait 10 bits d'adresse dans ses instructions. Ses instructions d'accès mémoire disposaient d'un bit qui choisit quel mode d'adressage utiliser. S'il était à 0, l'adressage absolu était utilisé, le registre de page n'était pas utilisé. Mais s'il était à 1, le registre de page était utilisé pour calculer l'adresse.
Une évolution de l'adressage précédent est le '''mode page direct'''. Avec lui, le registre de page est étendu et contient une adresse mémoire complète. L'adresse finale n'est pas obtenue par concaténation, mais en additionnant le registre de page avec l'adresse fournie par adressage absolu + décalage. Un exemple est celui des premiers processeurs Motorola, qui géraient des adresses courtes de 8 bits. L'adresse courte de 8 bits correspondait non pas aux 256 premiers octets de la mémoire, mais à une fenêtre de 256 octets déplaçable en mémoire. La position de la fenêtre de 256 octets était spécifiée par le registre de page de 16 bits, qui précisait l'adresse du début de la fenêtre, celle de sa première donnée.
Il s'agit donc formellement d'adressage base + décalage, à un détail près : il n'y a qu'un seul registre de base. Le fait que ce registre de base soit unique fait qu'il est adressé implicitement, on n'a pas à encoder le numéro/noms de registre dans l'instruction. Le registre de base est utilisé uniquement pour l'adressage absolu, pas pour les autres accès mémoire. S'il y a des ressemblances avec la segmentation, une technique de mémoire virtuelle qu'on abordera dans quelques chapitres, ce n'en est pas vu que le registre de base est utilisé seulement pour un mode d'adressage bien précis.
===Le ''pseudo-aliasing'' des registres des processeurs Intel x86===
Voyons maintenant le cas des anciens processeurs 8 bits d'Intel à savoir l'Intel 4004, 4040, 8008 et 8080. Le Z80, un processeur inspiré des CPU Intel 8 bits, est aussi concerné. Avant de poursuivre, parlons des registres de ces processeurs. Les premiers CPU Intel incorporaient 7 registres de 8 bits nommés A, B, C, D, E, F, H, L, SP. Ils correspondent respectivement à : l'accumulateur A ; six registres nommés B, C, D, E, H et L ; le registre d'état F ; le pointeur de pile SP. Le Z80 ajoute deux registres d'indice X et Y. De plus, le Z80 dispose de registres d'interruption, qui sont en quelque sorte des copies des registres A, B, C, D, E, F, H, L. Le tout est illustré dans le tableau ci-dessous.
{|class="wikitable" style="text-align:center;"
|-
!
! Registres des CPU Intel
! Registres supplémentaires du Z80
|-
! Accumulateur
| A
| A'
|-
! Registre d'état
| F
| F'
|-
! Registres généraux
| B, C, D, E, H, L
| B', C', D', E', H', L'
|-
! Pointeur de pile
| colspan="2" | SP (sauf pour le 8008)
|-
! Registres d'indice
|
| X et Y
|}
Le 8008 incorpore une pile d'appel de 7 adresses, dans le processeur lui-même. Il en est de la même avec le 4004 et le 4040, comme on le verra dans la section sur les processeurs 4 bits. Mais le 8080 et le 8085 ont remplacé le tout par un simple pointeur de pile, afin d'avoir une véritable pile d'appel. Autant c'est impossible d'avoir une pile d'appel avec seulement 256 octets de mémoire, autant on peut se le permettre avec 65 536 adresses.
Pour gérer des adresses de 16 bits, ils auraient pu utiliser des registres d'adresse séparés, mais on préféré un système de '''pseudo-''aliasing'' de registres'''. Formellement, c'est un système qui concatène deux registres 8 bits pour obtenir une adresse de 16 bits. L’appariement a lieu lors de certaines opérations bien précises, qui n'ont de sens que pour les adresses : la lecture/écriture en mémoire, et l'incrémentation.
Il y avait cependant des contraintes quant aux paires de registres possibles, toutes les paires de registres n'étaient pas autorisées. Les CPU concernés sont donc des processeurs hybrides accumulateur-registre généraux. L'accumulateur ne peut pas être appairé, seuls les registres généraux le peuvent. Le Z80 autorise plus de paires que les CPU Intel. Voici les paires de registres qui pouvaient servir d'adresse 16 bits :
* Les CPU 8008 d'Intel autorisait une seule paire formée des registres H et L.
* Les autres processeurs, à savoir le 8080, le 8085 et le Z80, autorisaient : les paires BC, DE et HL.
Le 8008 ne gérait que des opérations sur 8 bits. Mais le 8080 et le 8085 ont ajouté des instructions 16 bits qui agissaient sur des paires de registre, que le Z80 a repris. Une paire de registres est considérée comme un registre unique de 16 bits pour certaines opérations arithmétiques, dont l'incrémentation. Voici la liste des instructions concernées :
* INC et DEC pour l'incrémentation et la décrémentation ;
* DAD : additionne le registre HL avec une autre paire (Hl inclus) ;
* LXI : copie une constante immédiate dans une paire de registres ;
* LHLD : lit 16 depuis la mémoire et l'enregistre dans une paire de registres ;
* SHLD : copie 16 bits depuis une paire de registres et l'enregistre en mémoire ;
* PUSH et POP : empile ou dépilent une paire de registre sur la pile ;
* XTHL : échange la paire HL avec les 16 bits au sommet de la pile d'appel ;
* XCHG : échange le contenu de la paire HL et DE.
Pour résumer, le processeur avait des instructions LOAD, STORE, PUSH et POP adaptées pour gérer des paires de registre. De plus, l'instruction XCHG permettait d’échanger le contenu des paires DE et HL. L'instruction a été étendue sur les processeurs 16 bits pour échanger tous les registres. Mais l'implémentation était alors différente. L'incrémentation sur une paire de 16 bit était très utile, car les adresses sont souvent incrémentées quand on parcours un tableau. Ces instructions nous donnent quelques indices sur ce qu'il y a dans le processeur.
Le système de pseudo-aliasing a un impact sur le banc de registre. Le banc de registre regroupe les registres généraux et le pointeur de pile, mais ne contient pas l'accumulateur. Les contraintes sur les paires de registres possibles ne s'expliquent que d'une seule manière : le banc de registre contient des registres de 16 bits, une paire de registres 8 bits est mémorisée dans un registre unique. Il faut donc faire une différence entre les registres architecturaux de 8 bits, et les registres réels de 16 bits.
Le banc de registre a un port de 8 bits pour les données, qui est fabriqué à partir d'un port 16 bits auquel on a rajouté un multiplexeur pour choisir soit l'octet de poids faible, soit l'octet de poids fort. Le bus de données fait 8 bits, ce qui fait que les instructions LOAD, STORE, PUSH et POP pour paires 16 bits sont réalisées en deux fois : on lit/écrit l'octet de poids faible, puis celui de poids fort. Par contre, le bus d'adresse fait bien 16 bits. Cela suggère que le banc de registre dispose d'un port de 16 bits dédié aux adresses, en plus du port de données 8 bits.
[[File:Architecture d'un CPU 8-16 bits avec un banc de registre double port.png|centre|vignette|upright=2|Architecture d'un CPU 8-16 bits avec un banc de registre double port]]
L'incrémentation d'une paire 16 bits ne coute rien à implémenter, ou presque. En effet, le processeur incorpore un incrémenteur 16 bits pour le ''program counter'', qui est relié au bus d'adresse. L'idée est de rentabiliser cet incrémenteur, en lui permettant d'incrémenter des données/adresses de 16 bits obtenues via pseudo-aliasing. De même, il peut être utilisé pour incrémenter le pointeur de pile, voire un compteur de rafraichissement mémoire (pour rappel, le rafraîchissement mémoire demande de balayer la mémoire d'adresse en adresse et été fait par le CPU à l'époque). Pour cela, il suffit de connecter le ''program counter'', le banc de registre, et l'incrémenteur, via un bus dédié.
[[File:Calcul d'adresse par ALU dédiée avec PC séparé.png|centre|vignette|upright=2|Calcul d'adresse par ALU dédiée avec PC séparé]]
Notez qu'on peut encore simplifier le tout en placant le ''program counter'' dans le banc de registre, ce qui ne gênera pas le travail de l'incrémenteur mais simplifiera le câblage au bus d'adresse. Ce n'était pas systématique, certains processeurs mettaient le ''program counter'' dans le banc de registre, d'autres non.
: Inclure le ''program counter'' dans le banc de registre permet parfois de remplir un vide. Par exemple, sur un processeur avec 12 registres, le banc de registre devrait faire idéalement 16 registres, inclure le ''program counter'' dedans fait monter le tout à 13.
[[File:Architecture d'un CPU 8-16 bits.png|centre|vignette|upright=2|Architecture d'un CPU 8-16 bits]]
Les processeurs Intel 8 bits, à savoir le 8008, le 8080 et le 8085 ; mettaient le ''program counter'' dans le banc de registre. Vous avez donc toutes les armes pour comprendre leur micro-architecture. Par exemple, voici la micro-architecture du processeur 8080. Remarquez le banc de registre, qui contient tous les registres sauf l'accumulateur et le registre. Il a deux ports : un pour les adresses et un pour les données. Notez le dé-multiplexeur sur le port de donnée. Pour le reste, il s'agit d'une architecture à accumulateur hybride des plus classiques.
[[File:Intel 8080 arch.svg|centre|vignette|upright=3|Microarchitecture de l'Intel 8080.]]
Le Z80 est un processeur inspiré du design des processeurs Intel 8 bits, mais avec pas mal d'améliorations. Un point particulier de ce processeur est son banc de registre. Il contient tous les registres du processeur, y compris l'accumulateur et le registre d'état ! Les seuls registres en-dehors du banc de registre sont le ''program counter'' et un compteur de rafraichissement mémoire IR.
Un autre point particulier est que les registres dans le banc de registres avaient une copie séparée accessible uniquement pour les interruptions, via fenêtrage de registres. Et l'accumulateur et le registre d'état étant dans le banc de registre, il y avait deux accumulateurs et deux registres d'état. Les registres A, B, C, D, E et F étaient dupliqués, par le pointeur de pile ni les registres d'indice. Les copies des registres étaient nommées A', B', C', D', E' et F'.
Le Z80 supportait des instructions d'échange de registre en plus des CPU Intel 8 bits. L'instruction EX peut échanger soit le contenu des paires D,E et H,F, soit la paire A,F avec la paire A',F'. L'instruction EXX échange les paires BC, DE, HL avec les paires BC', DE', HL'. En faisant cela, le programmeur pouvait utiliser deux fois plus de registres généraux s'il n'utilisait pas les interruptions. L'échange de paires se fait sans copies de registres, mais simplement en modifiant l'adresse envoyée sur le banc de registre. Pour cela, plusieurs bascules mémorisent des bits qui indiquent si les paires ont été échangées ou non. Il y a une bascule pour les paires DE , HL ; une autre pour les paires A,F et paire A',F', une dernière pour l'instruction EXX. En combinant ces bascules avec les noms de registres envoyés par le séquenceur, on peut échanger les paires de registres.
==Le cas particulier des processeurs 4 bits : le 4004 d'Intel==
L'Intel 4004 était le tout premier micro-processeur. Il s'agissait d'un microprocesseur de 4 bits, basé sur une architecture à accumulateur. Il disposait d'un accumulateur et de 16 registres d'indice, tous de 4 bits. Il faisait des calculs sur des données de 4 bits, appelées des nibbles. Cependant, sur ses 46 instructions machines supportées, 41 agissaient sur des opérandes de 8 bits, les 5 restantes sur des opérandes de 16 bits. Simplement, les calculs se faisaient en deux fois, en échangeant des données entre mémoire RAM et accumulateur.
Le 4004 est un circuit intégré avec peu de broches. Il dispose notamment d'un bus de données/adresse, qui est multiplexé, c’est-à-dire qu'il sert alternativement de bus de données et de bus d'adresse selon les besoins. Le bus de commande mémoire fait 5 bits, dont 4 pour les chips de RAM, un pour la ROM. Les adresses sont codées sur 12 bits, les données sur 4 et les instructions sur 8 bits. L'envoi d'une adresse sur le bus se fait en plusieurs fois, de même que la lecture d'une instruction. Il s'agit là d'une adaptation pour outrepasser les limitations d'un processeur 4 bit.
[[File:Intel 4004 processor pinout.png|centre|vignette|upright=2|Broches de l'Intel 4004. Nous verrons à quoi elles servent plus bas.]]
===L'espace d'adressage de l'Intel 4004===
Les adresses du processeur sont sur 12 bits, ce qui fait 4096 adresses différentes. Elles regroupent à la fois la ROM et la mémoire RAM, vu que l'architecture est une sorte de mélange bizarre entre une architecture Von Neumann et Harvard. Le processeur gère bien deux espaces d'adressage séparés, mais la RAM et la ROM sont reliés au même bus. La sortie CM-ROM du processeur indique si l'adresse envoyée correspond à la RAM ou la ROM. Un circuit de décodage d'adresse active ou désactive la RAM selon la valeur de ce bit, l'inverse pour la ROM, en agissant sur leurs bits Chip Select. Seule la RAM ou la ROM répondent alors à l'adresse.
Pour ce qui est de la RAM, le circuit de décodage d'adresse pouvait gérer au maximum 1024 adresses différentes, chacune contenant un nibble. Pour cela, le CPU 4004 était relié à une ou plusieurs RAM externes, des Intel 4002. Chaque Intel 4002 contenait 64 nibbles de données, plus 16 nibbles de statut qu'on ne détaillera pas ici. Les nibbles de statut étaient accessibles en utilisant des instructions d'entrée-sortie, donc pas avec des lectures/écritures mémoire. Les 64 nibbles de données sont découpés en 4 groupes de 16 nibbles. Le CPU pouvait être relié à maximum 16 Intel 4002, ce qui fait 1024 nibbles de données et 256 nibbles de statut. L'ensemble permet de remplir l'espace d'adressage de 1024 adresses.
===Le registre de page et le pseudo-aliasing des registres===
Sélectionner une adresse mémoire utilisait un mélange entre pseudo-aliasing et registre de page. Pour les données, les 1024 adresses étaient découpées en 4 pages de 256 adresses. Pour la ROM, les 4096 adresses étaient découpées en 16 pages de 256 adresses. Localiser une donnée dans une page ne requiert que 8 bits, 2/4 bits supplémentaires permettent de sélectionner la page voulue. Le registre de page était dans le processeur lui-même, et était relié aux sorties du processeur nommées CM-RAM 0, 1, 2 et 3. Les 4 sorties encodaient un nombre qui permet de sélectionner le numéro de page voulu.
Le registre de page fait 5 bits : un pour distinguer RAM et ROM, 4 bits pour sélectionner la page voulue. L'avantage est que la carte mère gère au maximum 16 chips de RAM, ce qui colle parfaitement avec les 4 utilisés pour sélectionner une page. Un chip de RAM correspond à une page, et chacun est activé ou désactivé suivant la page sélectionnée. Pour cela, il suffit d'ajouter un décodeur sur la carte mère, qui prend les 4 bits du registre de page et fournit les signaux Chip Select aux différents chips de RAM.
Reste alors à utiliser les 8 bits d'adresse à l'intérieur d'un chip de RAM. Le 4004 permettait de concaténer deux registres d'indice de 4 bits pour former une adresse de 8 bits. Les instructions d'accès mémoire pouvaient ainsi préciser une paire de registre d'indice pour préciser quelle adresse lire/écrire. Idem pour les branchements indirects : le processeur supportait une instruction de branchement indirect qui précisait l'adresse dans une paire de registres d'indice. Les registres d'indice sont donc assez mal nommés sur cette architecture, vu qu'ils peuvent servir soit de registre d'indice, soit de demi-registre d'adresse. Il s'agit là du système de pseudo-aliasing des registres, mais appliqué aux registres d'indice.
L'Intel 4004 gérait deux instructions pour gérer les adresses mémoires. La première, l'instruction DCL (''Designate Command Line'') configure le registre de page. Elle prend en entrée un numéro de page et le copie dans le registre de page. L'opérande peut provenir d'un registre d'indice ou de l'accumulateur. La seconde, l'instruction SRC (''Send Register Control'') concatène deux registres d'indice pour obtenir une adresse de 8 bits. Un accès mémoire se fait donc en maximum trois instructions : une qui configure le registre de page si ce n'est pas déjà fait, une instruction SRC pour envoyer l'adresse, et une troisième instruction qui dit s'il faut faire une lecture ou une écriture.
===La microarchitecture de l'Intel 4004===
Il incorporait une pile d'adresse de retour intégrée au processeur. La pile d'adresse acceptait exactement 3 adresses maximum. Elle était regroupée avec le ''program counter'' dans un banc de registre, de 4 registres. Le ''program counter'' et le pointeur de pile faisaient chacun 12 bits, soit trois nibble. Ils étaient incrémentés par un incrémenteur dédié.
SI on omet le registre de page et la pile d'adresse, le 4004 est une architecture à accumulateur des plus classiques, avec un bus interne unique, un banc de registre pour les registres d'indices, un accumulateur relié à une unité de calcul. Les registres d'indice étaient dans un banc de registre séparés, car ils faisaient 4 bits chacun, contrairement au pointeur de pile et le ''program counter''. Un détail important est que les bancs de registres du 4004 étaient implémentés avec de la DRAM, et non des registres usuels fabriqués avec des bascules 1 bit.
[[File:Microarchitecture de l'Intel 4004.png|centre|vignette|upright=2.5|Microarchitecture de l'Intel 4004]]
<noinclude>
{{NavChapitre | book=Fonctionnement d'un ordinateur
| prev=Les architectures à pile et mémoire-mémoire
| prevText=Les architectures à pile et mémoire-mémoire
| next=Les processeurs de traitement du signal
| nextText=Les processeurs de traitement du signal
}}
</noinclude>
1llgnyu5md76qdtw4u60hkbq3tw2lnx
765685
765684
2026-05-01T14:44:04Z
Mewtow
31375
/* Les microcontrôleurs PIC */
765685
wikitext
text/x-wiki
Nous avons déjà abordé la notion de processeur 8, 16, 32, 64 bits. Elle désigne la taille des registres généraux, ou de l'accumulateur. De nos jours, les processeurs 32 et 64 bits sont la norme, mais les premiers micro-processeurs étaient des processeurs 4 et 8, avant de passer rapidement au 16 bits. La raison est que leur budget en transistor limité faisait qu'on ne pouvait pas utiliser une ALU trop grande : une ALU 8 bit prend deux fois moins de place et de transistors qu'une ALU 16 bits. Cependant, les processeurs 8 bits avaient de sérieuses limitations qui étaient compensées par diverses solutions. Dans ce chapitre, nous allons faire une revue rapide des processeurs 8 bits et de leurs fonctionnalités.
La principale limitation des CPU 8 bits était l'adressage : des registres de 8 bits limitaient l'espace d'adressage à seulement 256 adresses, soit à peine 256 octets ! Intuitivement, on se dit que 256 octets est purement impraticable, on ne peut rien faire d'intéressant avec seulement 256 de RAM + ROM. Et c'est partiellement vrai. L'adage veut que 16 bits est la taille minimale intéressante, la limite à partir de laquelle on a assez de mémoire RAM/ROM pour coder des applications intéressantes. Mais 256 octets de RAM est largement suffisant sur de nombreux systèmes embarqués simples s'en accommodent : des caisses enregistreuses, des systèmes de régulation de feu de circulation, etc.
Pour les applications demandant plus de mémoire RAM, les CPU de l'époque contournaient la limitation de 256 octets de RAM avec de nombreux stratagèmes. Dans ce qui va suivre, nous allons séparer les CPU 8 bits selon qu'ils utilisent une architecture Harvard ou une architecture Von Neumann. La raison est qu'une architecture Harvard permet en soi de contourner partiellement ce problème d'adressage. Les choses sont plus compliquées avec une architecture Von Neumann.
==Les processeurs 8/16 bits à architecture Harvard ==
La première solution est d'utiliser une architecture Harvard. Le processeur 8 bit a alors deux espaces d'adressage : un pour la RAM, un autre pour la ROM. Et les deux utilisent des adresses de taille différente. La ROM est reliée à un bus d'adresse de 16 bits, alors que la RAM est elle connectée à un bus d'adresse de 8 bits. La RAM est donc limitée à 256 octets, alors que la ROM peut monter jusqu'à 64 kibioctets. Mine de rien, faire ainsi est largement suffisant.
Les processeurs de l'époque intégraient parfois les 256 octets de RAM directement dans le processeur. Beaucoup en implémentaient moins, avec par exemple seulement 64 octets de RAM, ou 32 octets, ou 128 octets. L'avantage est que cela éliminait le bus d'adresse des données et ne laissait que le bus d'adresse pour la ROM. On économisait ainsi beaucoup de broches sur le circuit intégré du CPU. Et pour les applications demandant plus de RAM, on pouvait ajouter un circuit séparé qui permettait d'adresser une RAM plus grande. Mais cela sera plus clair avec un exemple.
===Les microcontrôleurs PIC===
Un exemple de système 8 bits est celui des '''microcontrôleurs PIC'''. La gamme des microcontrôleurs PIC est très vaste, et regroupe des microcontrôleurs allant de microcontrôleurs 8 bit aux performances très faible, à des microcontrôleurs 32 bits bien plus puissants. Les microcontrôleurs PIC sont très utilisés dans l'embarqué ou d'informatique industrielle. Ils sont vendu à des volumes assez impressionnants, plusieurs millions par an. Et si vous avez ou êtes en train de faire des études d'électronique, je parie que vous les avez déjà vu en classe, ou que ce ne saurait tarder.
Dans ce qui suit, nous allons nous concentrer sur les microcontrôleurs PIC 8 bits. Ils incorporent une mémoire RAM très petite, ainsi qu'une architecture Harvard, comme dit plus haut. Le processeur de ces microcontrôleurs a un jeu d'instruction propriétaire, le jeu d'instruction PIC.
La mémoire RAM des microcontrôleurs PIC est très petite, elle dépasse rarement la centaine d'adresse. Pour donner un exemple, le PIC16F84 a une RAM composée de 68 "registres" de 8 bits. Le terme "registres" devrait vous faire tiquer, mais il s'agit bien d'une mémoire SRAM séparée. Simplement, la documentation des PIC qualifie cette mémoire SRAM de "registres", et il faut admettre que la différence entre banc de registre et SRAM séparée est un peu flou quand on utilise une architecture à accumulateur.
Ce sont des architectures à accumulateur, avec une petite subtilité : le résultat d'une opération arithmétique peut être enregistré ailleurs que dans l'accumulateur. Le résultat peut aussi remplacer la seconde opérande, celle lue en mémoire RAM. Dit autrement, le résultat est enregistré dans l'adresse mémoire source. Les instructions de calcul ont le choix : un bit dans leur encodage précise où enregistrer le résultat.
Outre l'accumulateur, les PIC disposent de registres de contrôle, d'un ''program counter'', d'un registre d'état, et d'un pointeur de pile. Le registre d'état contient un registre séparé pour la retenue de l'addition/soustraction. Ce dernier est très important, vu qu'il est nécessaire pour les additions/soustractions sur des opérandes de 16 bits. Le processeur a beau être un CPU 8 bits, il peut être utilisé pour faire des calculs 16 bits, la performance est alors amoindrie, mais ce n'est pas un problème pour les applications d'un tel microcontroleur.
Un détail assez original est que tous les registres précédents, sauf l'accumulateur, sont mappés en mémoire ! En clair, on peut y accéder en lisant/écrivant à une adresse mémoire bien précise.
[[File:DocPIC16F84.png|centre|vignette|upright=2|DocPIC16F84]]
Les instructions PIC sont très petites. Les premières versions du jeu d'instruction utilisaient des instructions codées sur 12 bits, dont 5 pour l'adresse mémoire de la seconde opérande. Pour les branchements, 3 bits étaient utilisés pour l'opcode, 9 pour l'adresse de destination. Par la suite, les instructions ont été étendues à 13 bits sur les PIC1670, puis à 14, 15 et 16 bits. Les adresses ont alors été élargies, ce qui permet d'adresser en peu plus de mémoire RAM.
Les instructions se limitent à des additions/soustractions, des opérations bit à bit,des branchements, des instructions LOAD/STORE, ainsi que des opérations de manipulation de bit. Il y a une instruction pour mettre une adresse à zéro, qui peut aussi mettre à zéro l’accumulateur. Les PIC gèrent l'adressage absolu et indirect. L'adressage absolu, celui où l'adresse est intégrée dans l'instruction, est très simple à implémenter. Les adresses prennent moins d'un octet, vu que la taille de la RAM est très petite, les adresses sont très courtes, les intégrer dans des instructions elles-mêmes courtes n'est pas un problème. L'adresse est encodée sur 5 à 7 bits, selon le modèle, ce qui permet d'adresser entre 32 et 128 octets.
Pour ce qui est des branchements, les PIC n'ont pas d'instructions de branchement conditionnels, ils font avec une SKIP instruction et des branchements inconditionnels. Par contre, ils ont des branchements pour les appels et retour de fonction. Mieux que ça, ils intègrent une pile d'appel d'environ 8 adresses de retour. Pour donner une idée, l'adresse de retour est encodée sur 10 bits sur les PIC16F84.
Pour les instructions de manipulation de bit, il y a des instructions pour tester/masquer un bit dans une opérande, 4 en tout ( mettre à 0, mettre à 1, tester si bit = 1, tester si bit = 0). Les instructions qui testent un bit prennent leur opérande dans l'accumulateur. Il y a aussi deux instructions de rotation à gauche et droite, qui tiennent compte de la retenue mémorisée dans le registre d'état. Mentionnons aussi une instruction pour inverser deux ''nibbles'' dans un octet.
Les PIC ont aussi des instructions d'incrémentation et de décrémentation, un peu spéciales. Ces dernières sont au nombre de trois : une décrémentation normale, une décrémentation fusionnée avec une instruction SKIP, et une incrémentation fusionnée avec une instruction SKIP. Les deux dernières incrémentent/décrémentent l'accumulateur et SKIP l'instruction suivante si le résultat est zéro. Elles permettent de fortement simplifier l'implémentation des boucles qui s'exécutent tant que leur compteur atteint zéro.
[[File:DocPIC16F84 all.png|centre|vignette|upright=2.5|Microarchitecture du PIC16F84.]]
===Le Fairchild F8 et la console de jeu Fairchild Channel F===
Un autre exemple est la Fairchild F8 de la défunte entreprise Fairchild Semiconductor. Il incorpore un processeur 8 bits, c'est à dire que le processeur fait des calculs sur des entiers de 8 bits maximum, une mémoire RAM de 64 octets, ainsi qu'une mémoire ROM de 1 kibioctet. Les 64 octets de RAM sont certes très peu, mais c'est suffisant pour certaines applications simples, comme les caisses automatiques de l'époque, ou des applications embarquées. Et de toute façon, il est possible d'ajouter de la mémoire RAM supplémentaire si les 64 octets de RAM intégrée ne suffisent pas. Le système était donc modulaire, adaptable selon les besoins, peu cher pour son implémentation minimale sans RAM en plus.
Vu qu'il s'agit d'un des tout premiers ordinateurs, il est sorti à une époque où la technologie était rudimentaire. À cette époque, le processeur était composé de pièces détachées qu'il fallait souder ensemble pour obtenir un processeur fonctionnel. Ce n'est que plus tard qu'est apparu le micro-processeur, qui regroupe un processeur complet dans un seul circuit intégré. Le résultat est que le processeur du Fairchild F8 est coupé en deux, l'unité de calcul et l'unité de contrôle sont placés dans des pièces détachées séparés.
Le microcontrôleur est composé de trois à quatre pièces détachées, certaines étant optionnelles. La première est le '''3850 CPU''', qui regroupe l'unité de calcul et la mémoire RAM intégrée. La seconde est le PSU (''3851 Program Storage Unit''), qui regroupe la mémoire ROM et l'unité de contrôle, ''program counter'' inclut. S'il y a besoin d'utiliser plus de RAM, il faut ajouter un circuit d’interface mémoire, qui est au choix le ''3852 Dynamic Memory Interface'' (DMI) ou le ''3853 Static Memory Interface'', le premier étant connecté à une mémoire de type DRAM, l'autre à une SRAM (nous verrons ce que sont les DRAM et les SRAM dans le prochain chapitre).
[[File:Fairchild F8.png|centre|vignette|upright=2|Fairchild F8]]
Le système minimal est composé d'un PSU et d'un 3850, sans les circuits d'interface mémoire. Le tout donne un système avec un processeur 8 bit, 64 octets de RAM et 1 kibioctet de ROM, les deux mémoires étant intégrées dans le "processeur". Le processeur gérait 4 entrées-sorties, chacune étant reliée avec un bus de 8 bit au processeur. Au passage, en 1977, Mostek a créé un microcontrôleur qui regroupe un PSU et un 3850 : le Mostek 3870. Le système minimal n'avait pas de bus d'adresse, vu que la RAM était intégrée au processeur. C'est les 3852 et 3853 qui ajoutaient un bus d'adresse. Ils ajoutent un bus d'adresse de 16 bits, ce qui permet d'adresser 64 kibioctets de RAM.
[[File:Fairchild-Channel-F.jpg|vignette|un Fairchild Channel F]]
Le Fairchild F8 a été utilisé dans la Fairchild Channel F, une des toute première console de seconde génération, à savoir des consoles qui utilisaient des cartouches de jeu. Avant les consoles de seconde génération, les consoles étaient non-programmables. Elles étaient conçues pour faire tourner un jeu précis, aucun autre, le jeu étant implémenté dans leurs circuits.
La Fairchild Channel F est composé du système minimal, auquel on a ajouté une carte son rudimentaire et 2 kibioctets de mémoire vidéo. La mémoire vidéo sert uniquement pour afficher des images à l'écran : on écrit l'image à afficher dedans, un circuit vidéo se charge de l'afficher à l'écran automatiquement. Le processeur ne fait qu'écrire dans cette RAM vidéo, il ne peut pas en lire le contenu. De la RAM supplémentaire peut cependant être ajoutée dans les cartouches de jeu.
===L'usage d'une architecture Harvard modifiée : les consoles 8 bits===
Pour encore améliorer la situation, il est possible d'utiliser une architecture Harvard modifiée, qui permet de lire des données depuis la mémoire ROM. Cela réduit encore plus les besoins en mémoire RAM. Les constantes manipulées par le programme sont mémorisées en ROM, lues depuis la ROM, au lieu d'être chargées en RAM. Les consoles de jeu utilisaient beaucoup de stratagème.
L'exemple type est celui des consoles 8 bits avec des graphismes en 2D. La cartouche de jeu contenait une ROM, qui mémorisait le code du jeu, les niveaux, les sprites et autres données graphiques. Leur carte graphique lisait directement les ''sprites'' depuis la mémoire ROM, sans avoir à les charger en mémoire vidéo. La mémoire vidéo se contentait de mémoriser le reste des informations graphiques, ainsi que des pointeurs vers les ''sprites'' en ROM. En conséquence, les consoles 8 bits n'avaient pas besoin de beaucoup de RAM, vu qu'une grande partie des données utiles étaient dans une ROM directement accessible par le processeur. A l'opposé, les micro-ordinateurs devaient copier les données d'un jeu depuis une disquette dans la mémoire RAM, ce qui demandait d'avoir plus de RAM.
Le passage au support CD sur les consoles 32 bits a eu la même conséquence. Le processeur ne pouvant pas lire directement le CD à sa guise, il fallait copier les données du CD en RAM. D'où l'apparition de temps de chargement assez longs, inexistants sur support cartouche.
Avec ce genre de stratagèmes, 256 octets de RAM est largement suffisant sur de nombreux systèmes, à condition qu'on ait assez de ROM pour coder un programme digne de ce nom. Par exemple, de nombreux systèmes embarqués simples s'en accommodent : des caisses enregistreuses, des systèmes de régulation de feu de circulation, etc.
===Le HP Nanoprocessor : un processeur sans ALU===
Un dernier exemple est celui du processeur HP Nanoprocessor, de l'entreprise HP. Il a été commercialisé en 1974, en même temps que les premiers micro-processeurs d'Intel. Tous les processeurs de l'époque étaient des processeurs 8 bits et le HP Nanoprocessor ne faisait pas exception. Ce n'était pas un processeur haute performance, il était destiné à des applications d'informatique industrielle ou embarquée. D'ailleurs, il utilisait des transistors de type metal-gate, peu performants, là où ses contemporains utilisait des transistors en silicium, plus performants.
Mais une caractéristique qui rend cela encore plus claire est qu'il n'y a pas d'ALU ! En effet, ce processeur est incapable de faire des additions, des soustractions ou autres opérations simples ! Il est cependant capable d'effectuer des incrémentations et décrémentations, des décalages, des opérations logiques comme des ET/OU/NON/XOR et bien d'autres. Il supporte en tout 48 instructions, avec un support limité des modes d'adressage indirects. Les instructions de branchement étaient des instructions SKIP, il n'y avait pas d'instructions de branchement généralistes.
Pour ce qui est des registres, il disposait de 16 registres de 8 bits et d'un accumulateur. Niveau mémoire, il était relié à une mémoire ROM, rien de plus. Il n'avait de RAM supplémentaire qu'on pouvait lui adjoindre, il devait se débrouiller avec seulement ses registres. Et cela ne posait pas de problèmes pour son usage. Seul le mode d'adressage indirect à registre est supporté, il n'y a pas de registres d'indices. Ce mode d'adressage permet de lire des données en mémoire ROM, la ROM pouvant contenir des tableaux de valeurs constantes.
: Il est possible de lui adjoindre de la RAM via les ports d'entrée-sortie, ainsi qu'une ALU, mais RAM et ALU sont traités comme des périphériques avec lesquels on communique, ils ne sont pas intégrés au processeur.
Niveau micro-architecture, il incorporait une unité de calcul logique et un circuit comparateur. Le comparateur était un circuit comparateur série des plus basiques, qui était utilisé pour les instructions de branchement et associées. L'unité de calcul logique gérait des incrémentations/décrémentation, des décalages, les opérations logiques et quelques autres. L'unité de calcul logique était bit-slicée, à savoir conçue en assemblant 8 ALU de 1 bit chacune, enchainées en série. Le tout était combiné à des circuits de ''carry skip''.
[[File:Unité de calcul du HP nanonprocessor.png|centre|vignette|upright=2|Unité de calcul du HP nanoprocessor]]
Son unité de décodage d'instruction était très simple, essentiellement basée sur des portes NOR, grâce à un encodage efficace des instructions machine. Le ''program counter'' fait 11 bits, ce qui permet d'adresser une ROM de 2 kibioctets. Le ''program counter'' était relié à un circuit incrémenteur qui gérait les isntructions SKIP (il pouvait incrémenter le ''program counter'' par pas de 1 ou de 2 en cas de SKIP). Le processeur contient aussi deux registres, qui servent en quelque sorte de pile d'adresse de retour. Un premier registre mémorise l'adresse de retour d'une fonction, l'autre mémorise le ''program counter'' lors d'une interruption, pour savoir où brancher à la fin de l'interruption.
[[File:HP nanoprocessor.png|centre|vignette|upright=2.5|HP nanoprocessor]]
Fait intéressant, le concepteur du processeur a gracieusement donné les masques utilisés pour graver le silicium du processeur au site [https://www.cpushack.com/ CPU Shack]. Les masques en question sont disponibles ici :
* [https://www.cpushack.com/2020/08/20/hp-nanoprocessor-mask-set/ HP NanoProcessor Mask Set]
* [https://www.cpushack.com/2020/08/09/the-forgotten-ones-hp-nanoprocessor/ The Forgotten Ones: HP Nanoprocessor]
Les masques ont été analysés par Ken Shirrif dans cet article de blog :
* [https://www.righto.com/2020/09/hp-nanoprocessor-part-ii-reverse.html HP Nanoprocessor part II: Reverse-engineering the circuits from the masks]
==Les processeurs 8/16 bits à architecture Von Neumann==
L'usage d'une architecture Harvard est une solution pour adresser plus de mémoire avec des CPU 8 bits. Mais plusieurs microprocesseurs commerciaux n'utilisaient pas cette solution. À la place, c'était des architectures Von Neumann, mais qui étaient capables de gérer des adresses de 16 bits. Les données faisaient 8 bits, les registres faisaient 8 bits, mais quelques techniques permettaient de gérer des adresses de 16 bits. Nous parlerons de '''processeurs 8/16 bits''' pour les désigner, et nous allons les étudier à part.
Un point important est que la gestion d'adresses de 16 bits permet d'adresser 64 kibioctets, qui peuvent être remplis avec de la RAM et de la ROM. On a donc le meilleur des mondes : 64 kibioctets de mémoire, mais avec des données de 8 bits et les économies de circuit qui vont avec. L'avantage est que le processeur peut maintenant gérer une vraie pile d'appel, pas seulement une pile d'adresse de retour. Il lui suffit pour cela d'intégrer un pointeur de pile codé sur 16 bits.
===Les modes d'adressage par page des CPU Motorola===
Les processeurs Motorola 8 bits étaient des processeurs 8 bits avec un bus d'adresse de 16 bits. C'était des processeurs à accumulateur incorporant deux registres d'indice, un registre d'état, un pointeur de pile, et un ''program counter''. Tous les registres sont reliés au bus d'adresse, sauf le registre d'état et l’accumulateur. Tous les registres font 8 bits, sauf le ''program counter''. La pile est câblée pour être dans un bloc de 256 octets compris entre l'adresse 1 0000 0000 et l'adresse 1 1111 1111, ce qui fait que son adressage se fait avec un seul octet.
[[File:6502-architecture.svg|centre|vignette|upright=1.5|Architecture simplifiée du 6502.</br> X et Y : registres d'indice ;</br> S : le pointeur de pile ;</br> A : accumulateur ;</br>P : registre d'état.</br>]]
Les processeurs Motorola 8 bits utilisaient une méthode simple pour adresser 64 kibioctets de RAM, avec des registres de 8 bits. Pour cela, ils utilisaient une variante de l'adressage base + décalage. Elle améliore l'adressage absolu, qui intègre l'adresse à lire/écrire dans l'instruction elle-même. L'adresse en question est de 8 bits et n'encode que les 8 bits de poids faible de l'adresse, les 8 bits de poids fort sont dans un '''registre de page''' adressé implicitement. L'adresse finale est obtenue en concaténant ce registre avec l'adresse mémoire intégrée dans l’instruction. Le résultat est que la mémoire était découpée en blocs de 256 consécutifs, chacun pouvant servir de fenêtre de 256 octets. Une page est réservée pour la pile, la seconde, comme dit plus haut.
Formellement, ce mode d'adressage a des ressemblances avec la commutation de banques, une technique qu'on verra dans les chapitres sur l'espace d'adressage et la mémoire virtuelle. Mais ce n'en est pas du tout : le registre de page est utilisé uniquement pour les accès mémoire avec le mode d'adressage base + décalage, mais pas pour les autres accès mémoire, qui gèrent des adresses complètes. Notons que l'usage d'un registre de page dédié fait que celui-ci est adressé implicitement.
Il faut noter que la technique a été utilisée sur des processeurs 16 bits, pour contourner la petite taille des instructions. Un exemple est celui du HP 2100, un processeur 16 bits. Il avait un registre de page de 5 bits et encodait 10 bits d'adresse dans ses instructions. Ses instructions d'accès mémoire disposaient d'un bit qui choisit quel mode d'adressage utiliser. S'il était à 0, l'adressage absolu était utilisé, le registre de page n'était pas utilisé. Mais s'il était à 1, le registre de page était utilisé pour calculer l'adresse.
Une évolution de l'adressage précédent est le '''mode page direct'''. Avec lui, le registre de page est étendu et contient une adresse mémoire complète. L'adresse finale n'est pas obtenue par concaténation, mais en additionnant le registre de page avec l'adresse fournie par adressage absolu + décalage. Un exemple est celui des premiers processeurs Motorola, qui géraient des adresses courtes de 8 bits. L'adresse courte de 8 bits correspondait non pas aux 256 premiers octets de la mémoire, mais à une fenêtre de 256 octets déplaçable en mémoire. La position de la fenêtre de 256 octets était spécifiée par le registre de page de 16 bits, qui précisait l'adresse du début de la fenêtre, celle de sa première donnée.
Il s'agit donc formellement d'adressage base + décalage, à un détail près : il n'y a qu'un seul registre de base. Le fait que ce registre de base soit unique fait qu'il est adressé implicitement, on n'a pas à encoder le numéro/noms de registre dans l'instruction. Le registre de base est utilisé uniquement pour l'adressage absolu, pas pour les autres accès mémoire. S'il y a des ressemblances avec la segmentation, une technique de mémoire virtuelle qu'on abordera dans quelques chapitres, ce n'en est pas vu que le registre de base est utilisé seulement pour un mode d'adressage bien précis.
===Le ''pseudo-aliasing'' des registres des processeurs Intel x86===
Voyons maintenant le cas des anciens processeurs 8 bits d'Intel à savoir l'Intel 4004, 4040, 8008 et 8080. Le Z80, un processeur inspiré des CPU Intel 8 bits, est aussi concerné. Avant de poursuivre, parlons des registres de ces processeurs. Les premiers CPU Intel incorporaient 7 registres de 8 bits nommés A, B, C, D, E, F, H, L, SP. Ils correspondent respectivement à : l'accumulateur A ; six registres nommés B, C, D, E, H et L ; le registre d'état F ; le pointeur de pile SP. Le Z80 ajoute deux registres d'indice X et Y. De plus, le Z80 dispose de registres d'interruption, qui sont en quelque sorte des copies des registres A, B, C, D, E, F, H, L. Le tout est illustré dans le tableau ci-dessous.
{|class="wikitable" style="text-align:center;"
|-
!
! Registres des CPU Intel
! Registres supplémentaires du Z80
|-
! Accumulateur
| A
| A'
|-
! Registre d'état
| F
| F'
|-
! Registres généraux
| B, C, D, E, H, L
| B', C', D', E', H', L'
|-
! Pointeur de pile
| colspan="2" | SP (sauf pour le 8008)
|-
! Registres d'indice
|
| X et Y
|}
Le 8008 incorpore une pile d'appel de 7 adresses, dans le processeur lui-même. Il en est de la même avec le 4004 et le 4040, comme on le verra dans la section sur les processeurs 4 bits. Mais le 8080 et le 8085 ont remplacé le tout par un simple pointeur de pile, afin d'avoir une véritable pile d'appel. Autant c'est impossible d'avoir une pile d'appel avec seulement 256 octets de mémoire, autant on peut se le permettre avec 65 536 adresses.
Pour gérer des adresses de 16 bits, ils auraient pu utiliser des registres d'adresse séparés, mais on préféré un système de '''pseudo-''aliasing'' de registres'''. Formellement, c'est un système qui concatène deux registres 8 bits pour obtenir une adresse de 16 bits. L’appariement a lieu lors de certaines opérations bien précises, qui n'ont de sens que pour les adresses : la lecture/écriture en mémoire, et l'incrémentation.
Il y avait cependant des contraintes quant aux paires de registres possibles, toutes les paires de registres n'étaient pas autorisées. Les CPU concernés sont donc des processeurs hybrides accumulateur-registre généraux. L'accumulateur ne peut pas être appairé, seuls les registres généraux le peuvent. Le Z80 autorise plus de paires que les CPU Intel. Voici les paires de registres qui pouvaient servir d'adresse 16 bits :
* Les CPU 8008 d'Intel autorisait une seule paire formée des registres H et L.
* Les autres processeurs, à savoir le 8080, le 8085 et le Z80, autorisaient : les paires BC, DE et HL.
Le 8008 ne gérait que des opérations sur 8 bits. Mais le 8080 et le 8085 ont ajouté des instructions 16 bits qui agissaient sur des paires de registre, que le Z80 a repris. Une paire de registres est considérée comme un registre unique de 16 bits pour certaines opérations arithmétiques, dont l'incrémentation. Voici la liste des instructions concernées :
* INC et DEC pour l'incrémentation et la décrémentation ;
* DAD : additionne le registre HL avec une autre paire (Hl inclus) ;
* LXI : copie une constante immédiate dans une paire de registres ;
* LHLD : lit 16 depuis la mémoire et l'enregistre dans une paire de registres ;
* SHLD : copie 16 bits depuis une paire de registres et l'enregistre en mémoire ;
* PUSH et POP : empile ou dépilent une paire de registre sur la pile ;
* XTHL : échange la paire HL avec les 16 bits au sommet de la pile d'appel ;
* XCHG : échange le contenu de la paire HL et DE.
Pour résumer, le processeur avait des instructions LOAD, STORE, PUSH et POP adaptées pour gérer des paires de registre. De plus, l'instruction XCHG permettait d’échanger le contenu des paires DE et HL. L'instruction a été étendue sur les processeurs 16 bits pour échanger tous les registres. Mais l'implémentation était alors différente. L'incrémentation sur une paire de 16 bit était très utile, car les adresses sont souvent incrémentées quand on parcours un tableau. Ces instructions nous donnent quelques indices sur ce qu'il y a dans le processeur.
Le système de pseudo-aliasing a un impact sur le banc de registre. Le banc de registre regroupe les registres généraux et le pointeur de pile, mais ne contient pas l'accumulateur. Les contraintes sur les paires de registres possibles ne s'expliquent que d'une seule manière : le banc de registre contient des registres de 16 bits, une paire de registres 8 bits est mémorisée dans un registre unique. Il faut donc faire une différence entre les registres architecturaux de 8 bits, et les registres réels de 16 bits.
Le banc de registre a un port de 8 bits pour les données, qui est fabriqué à partir d'un port 16 bits auquel on a rajouté un multiplexeur pour choisir soit l'octet de poids faible, soit l'octet de poids fort. Le bus de données fait 8 bits, ce qui fait que les instructions LOAD, STORE, PUSH et POP pour paires 16 bits sont réalisées en deux fois : on lit/écrit l'octet de poids faible, puis celui de poids fort. Par contre, le bus d'adresse fait bien 16 bits. Cela suggère que le banc de registre dispose d'un port de 16 bits dédié aux adresses, en plus du port de données 8 bits.
[[File:Architecture d'un CPU 8-16 bits avec un banc de registre double port.png|centre|vignette|upright=2|Architecture d'un CPU 8-16 bits avec un banc de registre double port]]
L'incrémentation d'une paire 16 bits ne coute rien à implémenter, ou presque. En effet, le processeur incorpore un incrémenteur 16 bits pour le ''program counter'', qui est relié au bus d'adresse. L'idée est de rentabiliser cet incrémenteur, en lui permettant d'incrémenter des données/adresses de 16 bits obtenues via pseudo-aliasing. De même, il peut être utilisé pour incrémenter le pointeur de pile, voire un compteur de rafraichissement mémoire (pour rappel, le rafraîchissement mémoire demande de balayer la mémoire d'adresse en adresse et été fait par le CPU à l'époque). Pour cela, il suffit de connecter le ''program counter'', le banc de registre, et l'incrémenteur, via un bus dédié.
[[File:Calcul d'adresse par ALU dédiée avec PC séparé.png|centre|vignette|upright=2|Calcul d'adresse par ALU dédiée avec PC séparé]]
Notez qu'on peut encore simplifier le tout en placant le ''program counter'' dans le banc de registre, ce qui ne gênera pas le travail de l'incrémenteur mais simplifiera le câblage au bus d'adresse. Ce n'était pas systématique, certains processeurs mettaient le ''program counter'' dans le banc de registre, d'autres non.
: Inclure le ''program counter'' dans le banc de registre permet parfois de remplir un vide. Par exemple, sur un processeur avec 12 registres, le banc de registre devrait faire idéalement 16 registres, inclure le ''program counter'' dedans fait monter le tout à 13.
[[File:Architecture d'un CPU 8-16 bits.png|centre|vignette|upright=2|Architecture d'un CPU 8-16 bits]]
Les processeurs Intel 8 bits, à savoir le 8008, le 8080 et le 8085 ; mettaient le ''program counter'' dans le banc de registre. Vous avez donc toutes les armes pour comprendre leur micro-architecture. Par exemple, voici la micro-architecture du processeur 8080. Remarquez le banc de registre, qui contient tous les registres sauf l'accumulateur et le registre. Il a deux ports : un pour les adresses et un pour les données. Notez le dé-multiplexeur sur le port de donnée. Pour le reste, il s'agit d'une architecture à accumulateur hybride des plus classiques.
[[File:Intel 8080 arch.svg|centre|vignette|upright=3|Microarchitecture de l'Intel 8080.]]
Le Z80 est un processeur inspiré du design des processeurs Intel 8 bits, mais avec pas mal d'améliorations. Un point particulier de ce processeur est son banc de registre. Il contient tous les registres du processeur, y compris l'accumulateur et le registre d'état ! Les seuls registres en-dehors du banc de registre sont le ''program counter'' et un compteur de rafraichissement mémoire IR.
Un autre point particulier est que les registres dans le banc de registres avaient une copie séparée accessible uniquement pour les interruptions, via fenêtrage de registres. Et l'accumulateur et le registre d'état étant dans le banc de registre, il y avait deux accumulateurs et deux registres d'état. Les registres A, B, C, D, E et F étaient dupliqués, par le pointeur de pile ni les registres d'indice. Les copies des registres étaient nommées A', B', C', D', E' et F'.
Le Z80 supportait des instructions d'échange de registre en plus des CPU Intel 8 bits. L'instruction EX peut échanger soit le contenu des paires D,E et H,F, soit la paire A,F avec la paire A',F'. L'instruction EXX échange les paires BC, DE, HL avec les paires BC', DE', HL'. En faisant cela, le programmeur pouvait utiliser deux fois plus de registres généraux s'il n'utilisait pas les interruptions. L'échange de paires se fait sans copies de registres, mais simplement en modifiant l'adresse envoyée sur le banc de registre. Pour cela, plusieurs bascules mémorisent des bits qui indiquent si les paires ont été échangées ou non. Il y a une bascule pour les paires DE , HL ; une autre pour les paires A,F et paire A',F', une dernière pour l'instruction EXX. En combinant ces bascules avec les noms de registres envoyés par le séquenceur, on peut échanger les paires de registres.
==Le cas particulier des processeurs 4 bits : le 4004 d'Intel==
L'Intel 4004 était le tout premier micro-processeur. Il s'agissait d'un microprocesseur de 4 bits, basé sur une architecture à accumulateur. Il disposait d'un accumulateur et de 16 registres d'indice, tous de 4 bits. Il faisait des calculs sur des données de 4 bits, appelées des nibbles. Cependant, sur ses 46 instructions machines supportées, 41 agissaient sur des opérandes de 8 bits, les 5 restantes sur des opérandes de 16 bits. Simplement, les calculs se faisaient en deux fois, en échangeant des données entre mémoire RAM et accumulateur.
Le 4004 est un circuit intégré avec peu de broches. Il dispose notamment d'un bus de données/adresse, qui est multiplexé, c’est-à-dire qu'il sert alternativement de bus de données et de bus d'adresse selon les besoins. Le bus de commande mémoire fait 5 bits, dont 4 pour les chips de RAM, un pour la ROM. Les adresses sont codées sur 12 bits, les données sur 4 et les instructions sur 8 bits. L'envoi d'une adresse sur le bus se fait en plusieurs fois, de même que la lecture d'une instruction. Il s'agit là d'une adaptation pour outrepasser les limitations d'un processeur 4 bit.
[[File:Intel 4004 processor pinout.png|centre|vignette|upright=2|Broches de l'Intel 4004. Nous verrons à quoi elles servent plus bas.]]
===L'espace d'adressage de l'Intel 4004===
Les adresses du processeur sont sur 12 bits, ce qui fait 4096 adresses différentes. Elles regroupent à la fois la ROM et la mémoire RAM, vu que l'architecture est une sorte de mélange bizarre entre une architecture Von Neumann et Harvard. Le processeur gère bien deux espaces d'adressage séparés, mais la RAM et la ROM sont reliés au même bus. La sortie CM-ROM du processeur indique si l'adresse envoyée correspond à la RAM ou la ROM. Un circuit de décodage d'adresse active ou désactive la RAM selon la valeur de ce bit, l'inverse pour la ROM, en agissant sur leurs bits Chip Select. Seule la RAM ou la ROM répondent alors à l'adresse.
Pour ce qui est de la RAM, le circuit de décodage d'adresse pouvait gérer au maximum 1024 adresses différentes, chacune contenant un nibble. Pour cela, le CPU 4004 était relié à une ou plusieurs RAM externes, des Intel 4002. Chaque Intel 4002 contenait 64 nibbles de données, plus 16 nibbles de statut qu'on ne détaillera pas ici. Les nibbles de statut étaient accessibles en utilisant des instructions d'entrée-sortie, donc pas avec des lectures/écritures mémoire. Les 64 nibbles de données sont découpés en 4 groupes de 16 nibbles. Le CPU pouvait être relié à maximum 16 Intel 4002, ce qui fait 1024 nibbles de données et 256 nibbles de statut. L'ensemble permet de remplir l'espace d'adressage de 1024 adresses.
===Le registre de page et le pseudo-aliasing des registres===
Sélectionner une adresse mémoire utilisait un mélange entre pseudo-aliasing et registre de page. Pour les données, les 1024 adresses étaient découpées en 4 pages de 256 adresses. Pour la ROM, les 4096 adresses étaient découpées en 16 pages de 256 adresses. Localiser une donnée dans une page ne requiert que 8 bits, 2/4 bits supplémentaires permettent de sélectionner la page voulue. Le registre de page était dans le processeur lui-même, et était relié aux sorties du processeur nommées CM-RAM 0, 1, 2 et 3. Les 4 sorties encodaient un nombre qui permet de sélectionner le numéro de page voulu.
Le registre de page fait 5 bits : un pour distinguer RAM et ROM, 4 bits pour sélectionner la page voulue. L'avantage est que la carte mère gère au maximum 16 chips de RAM, ce qui colle parfaitement avec les 4 utilisés pour sélectionner une page. Un chip de RAM correspond à une page, et chacun est activé ou désactivé suivant la page sélectionnée. Pour cela, il suffit d'ajouter un décodeur sur la carte mère, qui prend les 4 bits du registre de page et fournit les signaux Chip Select aux différents chips de RAM.
Reste alors à utiliser les 8 bits d'adresse à l'intérieur d'un chip de RAM. Le 4004 permettait de concaténer deux registres d'indice de 4 bits pour former une adresse de 8 bits. Les instructions d'accès mémoire pouvaient ainsi préciser une paire de registre d'indice pour préciser quelle adresse lire/écrire. Idem pour les branchements indirects : le processeur supportait une instruction de branchement indirect qui précisait l'adresse dans une paire de registres d'indice. Les registres d'indice sont donc assez mal nommés sur cette architecture, vu qu'ils peuvent servir soit de registre d'indice, soit de demi-registre d'adresse. Il s'agit là du système de pseudo-aliasing des registres, mais appliqué aux registres d'indice.
L'Intel 4004 gérait deux instructions pour gérer les adresses mémoires. La première, l'instruction DCL (''Designate Command Line'') configure le registre de page. Elle prend en entrée un numéro de page et le copie dans le registre de page. L'opérande peut provenir d'un registre d'indice ou de l'accumulateur. La seconde, l'instruction SRC (''Send Register Control'') concatène deux registres d'indice pour obtenir une adresse de 8 bits. Un accès mémoire se fait donc en maximum trois instructions : une qui configure le registre de page si ce n'est pas déjà fait, une instruction SRC pour envoyer l'adresse, et une troisième instruction qui dit s'il faut faire une lecture ou une écriture.
===La microarchitecture de l'Intel 4004===
Il incorporait une pile d'adresse de retour intégrée au processeur. La pile d'adresse acceptait exactement 3 adresses maximum. Elle était regroupée avec le ''program counter'' dans un banc de registre, de 4 registres. Le ''program counter'' et le pointeur de pile faisaient chacun 12 bits, soit trois nibble. Ils étaient incrémentés par un incrémenteur dédié.
SI on omet le registre de page et la pile d'adresse, le 4004 est une architecture à accumulateur des plus classiques, avec un bus interne unique, un banc de registre pour les registres d'indices, un accumulateur relié à une unité de calcul. Les registres d'indice étaient dans un banc de registre séparés, car ils faisaient 4 bits chacun, contrairement au pointeur de pile et le ''program counter''. Un détail important est que les bancs de registres du 4004 étaient implémentés avec de la DRAM, et non des registres usuels fabriqués avec des bascules 1 bit.
[[File:Microarchitecture de l'Intel 4004.png|centre|vignette|upright=2.5|Microarchitecture de l'Intel 4004]]
<noinclude>
{{NavChapitre | book=Fonctionnement d'un ordinateur
| prev=Les architectures à pile et mémoire-mémoire
| prevText=Les architectures à pile et mémoire-mémoire
| next=Les processeurs de traitement du signal
| nextText=Les processeurs de traitement du signal
}}
</noinclude>
02tacny4uzqh4oohqtoks2hr5zz7adn
765686
765685
2026-05-01T15:00:09Z
Mewtow
31375
/* Les microcontrôleurs PIC */
765686
wikitext
text/x-wiki
Nous avons déjà abordé la notion de processeur 8, 16, 32, 64 bits. Elle désigne la taille des registres généraux, ou de l'accumulateur. De nos jours, les processeurs 32 et 64 bits sont la norme, mais les premiers micro-processeurs étaient des processeurs 4 et 8, avant de passer rapidement au 16 bits. La raison est que leur budget en transistor limité faisait qu'on ne pouvait pas utiliser une ALU trop grande : une ALU 8 bit prend deux fois moins de place et de transistors qu'une ALU 16 bits. Cependant, les processeurs 8 bits avaient de sérieuses limitations qui étaient compensées par diverses solutions. Dans ce chapitre, nous allons faire une revue rapide des processeurs 8 bits et de leurs fonctionnalités.
La principale limitation des CPU 8 bits était l'adressage : des registres de 8 bits limitaient l'espace d'adressage à seulement 256 adresses, soit à peine 256 octets ! Intuitivement, on se dit que 256 octets est purement impraticable, on ne peut rien faire d'intéressant avec seulement 256 de RAM + ROM. Et c'est partiellement vrai. L'adage veut que 16 bits est la taille minimale intéressante, la limite à partir de laquelle on a assez de mémoire RAM/ROM pour coder des applications intéressantes. Mais 256 octets de RAM est largement suffisant sur de nombreux systèmes embarqués simples s'en accommodent : des caisses enregistreuses, des systèmes de régulation de feu de circulation, etc.
Pour les applications demandant plus de mémoire RAM, les CPU de l'époque contournaient la limitation de 256 octets de RAM avec de nombreux stratagèmes. Dans ce qui va suivre, nous allons séparer les CPU 8 bits selon qu'ils utilisent une architecture Harvard ou une architecture Von Neumann. La raison est qu'une architecture Harvard permet en soi de contourner partiellement ce problème d'adressage. Les choses sont plus compliquées avec une architecture Von Neumann.
==Les processeurs 8/16 bits à architecture Harvard ==
La première solution est d'utiliser une architecture Harvard. Le processeur 8 bit a alors deux espaces d'adressage : un pour la RAM, un autre pour la ROM. Et les deux utilisent des adresses de taille différente. La ROM est reliée à un bus d'adresse de 16 bits, alors que la RAM est elle connectée à un bus d'adresse de 8 bits. La RAM est donc limitée à 256 octets, alors que la ROM peut monter jusqu'à 64 kibioctets. Mine de rien, faire ainsi est largement suffisant.
Les processeurs de l'époque intégraient parfois les 256 octets de RAM directement dans le processeur. Beaucoup en implémentaient moins, avec par exemple seulement 64 octets de RAM, ou 32 octets, ou 128 octets. L'avantage est que cela éliminait le bus d'adresse des données et ne laissait que le bus d'adresse pour la ROM. On économisait ainsi beaucoup de broches sur le circuit intégré du CPU. Et pour les applications demandant plus de RAM, on pouvait ajouter un circuit séparé qui permettait d'adresser une RAM plus grande. Mais cela sera plus clair avec un exemple.
===Les microcontrôleurs PIC===
Un exemple de système 8 bits est celui des '''microcontrôleurs PIC'''. La gamme des microcontrôleurs PIC est très vaste, et regroupe des microcontrôleurs allant de microcontrôleurs 8 bit aux performances très faible, à des microcontrôleurs 32 bits bien plus puissants. Les microcontrôleurs PIC sont très utilisés dans l'embarqué ou d'informatique industrielle. Ils sont vendu à des volumes assez impressionnants, plusieurs millions par an. Et si vous avez ou êtes en train de faire des études d'électronique, je parie que vous les avez déjà vu en classe, ou que ce ne saurait tarder.
Dans ce qui suit, nous allons nous concentrer sur les microcontrôleurs PIC 8 bits, à savoir les PIC 16, 16 et 18. Les PIC 24, qui sont des microcontrôleurs 16 bits, ne seront pas abordés. Les microcontrôleurs PIC 8 bits incorporent une mémoire RAM très petite, ainsi qu'une architecture Harvard, comme dit plus haut. Le processeur de ces microcontrôleurs a un jeu d'instruction propriétaire, le jeu d'instruction PIC.
La mémoire RAM des microcontrôleurs PIC est très petite, elle dépasse rarement la centaine d'adresse. Pour donner un exemple, le PIC16F84 a une RAM composée de 68 "registres" de 8 bits. Le terme "registres" devrait vous faire tiquer, mais il s'agit bien d'une mémoire SRAM séparée. Simplement, la documentation des PIC qualifie cette mémoire SRAM de "registres", et il faut admettre que la différence entre banc de registre et SRAM séparée est un peu flou quand on utilise une architecture à accumulateur.
Ce sont des architectures à accumulateur, avec une petite subtilité : le résultat d'une opération arithmétique peut être enregistré ailleurs que dans l'accumulateur. Le résultat peut aussi remplacer la seconde opérande, celle lue en mémoire RAM. Dit autrement, le résultat est enregistré dans l'adresse mémoire source. Les instructions de calcul ont le choix : un bit dans leur encodage précise où enregistrer le résultat.
Outre l'accumulateur, les PIC disposent de registres de contrôle, d'un ''program counter'', d'un registre d'état, et d'un pointeur de pile. Le registre d'état contient un registre séparé pour la retenue de l'addition/soustraction. Ce dernier est très important, vu qu'il est nécessaire pour les additions/soustractions sur des opérandes de 16 bits. Le processeur a beau être un CPU 8 bits, il peut être utilisé pour faire des calculs 16 bits, la performance est alors amoindrie, mais ce n'est pas un problème pour les applications d'un tel microcontroleur.
Un détail assez original est que les registres précédents sont mappés en mémoire, à quelques exceptions près ! En clair, on peut y accéder en lisant/écrivant à une adresse mémoire bien précise. Les seules registres qui ne sont pas mappés en mémoire sont l'accumulateur, la pile d'appel, et les registres d'entrée-sortie. Les registres d'entrée-sortie permettent de lire ou écrire sur un port d'entrée-sortie ou de lire un ''timer''. En clair, les PIC ont un espace d'adressage séparé pour les entrées-sorties.
[[File:DocPIC16F84.png|centre|vignette|upright=2|DocPIC16F84]]
Les instructions PIC sont très petites. Les premières versions du jeu d'instruction utilisaient des instructions codées sur 12 bits, dont 5 pour l'adresse mémoire de la seconde opérande. Pour les branchements, 3 bits étaient utilisés pour l'opcode, 9 pour l'adresse de destination. Par la suite, les instructions ont été étendues à 13 bits sur les PIC1670, puis à 14, 15 et 16 bits. Les adresses ont alors été élargies, ce qui permet d'adresser en peu plus de mémoire RAM.
Les instructions se limitent à des additions/soustractions, des opérations bit à bit,des branchements, des instructions LOAD/STORE, ainsi que des opérations de manipulation de bit. Il y a une instruction pour mettre une adresse à zéro, qui peut aussi mettre à zéro l’accumulateur. Les PIC gèrent l'adressage absolu et indirect. L'adressage absolu, celui où l'adresse est intégrée dans l'instruction, est très simple à implémenter. Les adresses prennent moins d'un octet, vu que la taille de la RAM est très petite, les adresses sont très courtes, les intégrer dans des instructions elles-mêmes courtes n'est pas un problème. L'adresse est encodée sur 5 à 7 bits, selon le modèle, ce qui permet d'adresser entre 32 et 128 octets.
Pour ce qui est des branchements, les PIC n'ont pas d'instructions de branchement conditionnels, ils font avec une SKIP instruction et des branchements inconditionnels. Par contre, ils ont des branchements pour les appels et retour de fonction. Mieux que ça, ils intègrent une pile d'appel d'environ 8 adresses de retour. Pour donner une idée, l'adresse de retour est encodée sur 10 bits sur les PIC16F84.
Pour les instructions de manipulation de bit, il y a des instructions pour tester/masquer un bit dans une opérande, 4 en tout ( mettre à 0, mettre à 1, tester si bit = 1, tester si bit = 0). Les instructions qui testent un bit prennent leur opérande dans l'accumulateur. Il y a aussi deux instructions de rotation à gauche et droite, qui tiennent compte de la retenue mémorisée dans le registre d'état. Mentionnons aussi une instruction pour inverser deux ''nibbles'' dans un octet.
Les PIC ont aussi des instructions d'incrémentation et de décrémentation, un peu spéciales. Ces dernières regroupent : une incrémentation normale, une décrémentation normale, une décrémentation fusionnée avec une instruction SKIP, et une incrémentation fusionnée avec une instruction SKIP. Les deux dernières incrémentent/décrémentent l'accumulateur et SKIP l'instruction suivante si le résultat est zéro. Elles permettent de fortement simplifier l'implémentation des boucles qui s'exécutent tant que leur compteur atteint zéro.
[[File:DocPIC16F84 all.png|centre|vignette|upright=2.5|Microarchitecture du PIC16F84.]]
: Les PIC 18 peuvent adresser plus de 156 octets de RAM en utilisant la commutation de banques, une technique qui sera abordée dans plusieurs chapitres.
===Le Fairchild F8 et la console de jeu Fairchild Channel F===
Un autre exemple est la Fairchild F8 de la défunte entreprise Fairchild Semiconductor. Il incorpore un processeur 8 bits, c'est à dire que le processeur fait des calculs sur des entiers de 8 bits maximum, une mémoire RAM de 64 octets, ainsi qu'une mémoire ROM de 1 kibioctet. Les 64 octets de RAM sont certes très peu, mais c'est suffisant pour certaines applications simples, comme les caisses automatiques de l'époque, ou des applications embarquées. Et de toute façon, il est possible d'ajouter de la mémoire RAM supplémentaire si les 64 octets de RAM intégrée ne suffisent pas. Le système était donc modulaire, adaptable selon les besoins, peu cher pour son implémentation minimale sans RAM en plus.
Vu qu'il s'agit d'un des tout premiers ordinateurs, il est sorti à une époque où la technologie était rudimentaire. À cette époque, le processeur était composé de pièces détachées qu'il fallait souder ensemble pour obtenir un processeur fonctionnel. Ce n'est que plus tard qu'est apparu le micro-processeur, qui regroupe un processeur complet dans un seul circuit intégré. Le résultat est que le processeur du Fairchild F8 est coupé en deux, l'unité de calcul et l'unité de contrôle sont placés dans des pièces détachées séparés.
Le microcontrôleur est composé de trois à quatre pièces détachées, certaines étant optionnelles. La première est le '''3850 CPU''', qui regroupe l'unité de calcul et la mémoire RAM intégrée. La seconde est le PSU (''3851 Program Storage Unit''), qui regroupe la mémoire ROM et l'unité de contrôle, ''program counter'' inclut. S'il y a besoin d'utiliser plus de RAM, il faut ajouter un circuit d’interface mémoire, qui est au choix le ''3852 Dynamic Memory Interface'' (DMI) ou le ''3853 Static Memory Interface'', le premier étant connecté à une mémoire de type DRAM, l'autre à une SRAM (nous verrons ce que sont les DRAM et les SRAM dans le prochain chapitre).
[[File:Fairchild F8.png|centre|vignette|upright=2|Fairchild F8]]
Le système minimal est composé d'un PSU et d'un 3850, sans les circuits d'interface mémoire. Le tout donne un système avec un processeur 8 bit, 64 octets de RAM et 1 kibioctet de ROM, les deux mémoires étant intégrées dans le "processeur". Le processeur gérait 4 entrées-sorties, chacune étant reliée avec un bus de 8 bit au processeur. Au passage, en 1977, Mostek a créé un microcontrôleur qui regroupe un PSU et un 3850 : le Mostek 3870. Le système minimal n'avait pas de bus d'adresse, vu que la RAM était intégrée au processeur. C'est les 3852 et 3853 qui ajoutaient un bus d'adresse. Ils ajoutent un bus d'adresse de 16 bits, ce qui permet d'adresser 64 kibioctets de RAM.
[[File:Fairchild-Channel-F.jpg|vignette|un Fairchild Channel F]]
Le Fairchild F8 a été utilisé dans la Fairchild Channel F, une des toute première console de seconde génération, à savoir des consoles qui utilisaient des cartouches de jeu. Avant les consoles de seconde génération, les consoles étaient non-programmables. Elles étaient conçues pour faire tourner un jeu précis, aucun autre, le jeu étant implémenté dans leurs circuits.
La Fairchild Channel F est composé du système minimal, auquel on a ajouté une carte son rudimentaire et 2 kibioctets de mémoire vidéo. La mémoire vidéo sert uniquement pour afficher des images à l'écran : on écrit l'image à afficher dedans, un circuit vidéo se charge de l'afficher à l'écran automatiquement. Le processeur ne fait qu'écrire dans cette RAM vidéo, il ne peut pas en lire le contenu. De la RAM supplémentaire peut cependant être ajoutée dans les cartouches de jeu.
===L'usage d'une architecture Harvard modifiée : les consoles 8 bits===
Pour encore améliorer la situation, il est possible d'utiliser une architecture Harvard modifiée, qui permet de lire des données depuis la mémoire ROM. Cela réduit encore plus les besoins en mémoire RAM. Les constantes manipulées par le programme sont mémorisées en ROM, lues depuis la ROM, au lieu d'être chargées en RAM. Les consoles de jeu utilisaient beaucoup de stratagème.
L'exemple type est celui des consoles 8 bits avec des graphismes en 2D. La cartouche de jeu contenait une ROM, qui mémorisait le code du jeu, les niveaux, les sprites et autres données graphiques. Leur carte graphique lisait directement les ''sprites'' depuis la mémoire ROM, sans avoir à les charger en mémoire vidéo. La mémoire vidéo se contentait de mémoriser le reste des informations graphiques, ainsi que des pointeurs vers les ''sprites'' en ROM. En conséquence, les consoles 8 bits n'avaient pas besoin de beaucoup de RAM, vu qu'une grande partie des données utiles étaient dans une ROM directement accessible par le processeur. A l'opposé, les micro-ordinateurs devaient copier les données d'un jeu depuis une disquette dans la mémoire RAM, ce qui demandait d'avoir plus de RAM.
Le passage au support CD sur les consoles 32 bits a eu la même conséquence. Le processeur ne pouvant pas lire directement le CD à sa guise, il fallait copier les données du CD en RAM. D'où l'apparition de temps de chargement assez longs, inexistants sur support cartouche.
Avec ce genre de stratagèmes, 256 octets de RAM est largement suffisant sur de nombreux systèmes, à condition qu'on ait assez de ROM pour coder un programme digne de ce nom. Par exemple, de nombreux systèmes embarqués simples s'en accommodent : des caisses enregistreuses, des systèmes de régulation de feu de circulation, etc.
===Le HP Nanoprocessor : un processeur sans ALU===
Un dernier exemple est celui du processeur HP Nanoprocessor, de l'entreprise HP. Il a été commercialisé en 1974, en même temps que les premiers micro-processeurs d'Intel. Tous les processeurs de l'époque étaient des processeurs 8 bits et le HP Nanoprocessor ne faisait pas exception. Ce n'était pas un processeur haute performance, il était destiné à des applications d'informatique industrielle ou embarquée. D'ailleurs, il utilisait des transistors de type metal-gate, peu performants, là où ses contemporains utilisait des transistors en silicium, plus performants.
Mais une caractéristique qui rend cela encore plus claire est qu'il n'y a pas d'ALU ! En effet, ce processeur est incapable de faire des additions, des soustractions ou autres opérations simples ! Il est cependant capable d'effectuer des incrémentations et décrémentations, des décalages, des opérations logiques comme des ET/OU/NON/XOR et bien d'autres. Il supporte en tout 48 instructions, avec un support limité des modes d'adressage indirects. Les instructions de branchement étaient des instructions SKIP, il n'y avait pas d'instructions de branchement généralistes.
Pour ce qui est des registres, il disposait de 16 registres de 8 bits et d'un accumulateur. Niveau mémoire, il était relié à une mémoire ROM, rien de plus. Il n'avait de RAM supplémentaire qu'on pouvait lui adjoindre, il devait se débrouiller avec seulement ses registres. Et cela ne posait pas de problèmes pour son usage. Seul le mode d'adressage indirect à registre est supporté, il n'y a pas de registres d'indices. Ce mode d'adressage permet de lire des données en mémoire ROM, la ROM pouvant contenir des tableaux de valeurs constantes.
: Il est possible de lui adjoindre de la RAM via les ports d'entrée-sortie, ainsi qu'une ALU, mais RAM et ALU sont traités comme des périphériques avec lesquels on communique, ils ne sont pas intégrés au processeur.
Niveau micro-architecture, il incorporait une unité de calcul logique et un circuit comparateur. Le comparateur était un circuit comparateur série des plus basiques, qui était utilisé pour les instructions de branchement et associées. L'unité de calcul logique gérait des incrémentations/décrémentation, des décalages, les opérations logiques et quelques autres. L'unité de calcul logique était bit-slicée, à savoir conçue en assemblant 8 ALU de 1 bit chacune, enchainées en série. Le tout était combiné à des circuits de ''carry skip''.
[[File:Unité de calcul du HP nanonprocessor.png|centre|vignette|upright=2|Unité de calcul du HP nanoprocessor]]
Son unité de décodage d'instruction était très simple, essentiellement basée sur des portes NOR, grâce à un encodage efficace des instructions machine. Le ''program counter'' fait 11 bits, ce qui permet d'adresser une ROM de 2 kibioctets. Le ''program counter'' était relié à un circuit incrémenteur qui gérait les isntructions SKIP (il pouvait incrémenter le ''program counter'' par pas de 1 ou de 2 en cas de SKIP). Le processeur contient aussi deux registres, qui servent en quelque sorte de pile d'adresse de retour. Un premier registre mémorise l'adresse de retour d'une fonction, l'autre mémorise le ''program counter'' lors d'une interruption, pour savoir où brancher à la fin de l'interruption.
[[File:HP nanoprocessor.png|centre|vignette|upright=2.5|HP nanoprocessor]]
Fait intéressant, le concepteur du processeur a gracieusement donné les masques utilisés pour graver le silicium du processeur au site [https://www.cpushack.com/ CPU Shack]. Les masques en question sont disponibles ici :
* [https://www.cpushack.com/2020/08/20/hp-nanoprocessor-mask-set/ HP NanoProcessor Mask Set]
* [https://www.cpushack.com/2020/08/09/the-forgotten-ones-hp-nanoprocessor/ The Forgotten Ones: HP Nanoprocessor]
Les masques ont été analysés par Ken Shirrif dans cet article de blog :
* [https://www.righto.com/2020/09/hp-nanoprocessor-part-ii-reverse.html HP Nanoprocessor part II: Reverse-engineering the circuits from the masks]
==Les processeurs 8/16 bits à architecture Von Neumann==
L'usage d'une architecture Harvard est une solution pour adresser plus de mémoire avec des CPU 8 bits. Mais plusieurs microprocesseurs commerciaux n'utilisaient pas cette solution. À la place, c'était des architectures Von Neumann, mais qui étaient capables de gérer des adresses de 16 bits. Les données faisaient 8 bits, les registres faisaient 8 bits, mais quelques techniques permettaient de gérer des adresses de 16 bits. Nous parlerons de '''processeurs 8/16 bits''' pour les désigner, et nous allons les étudier à part.
Un point important est que la gestion d'adresses de 16 bits permet d'adresser 64 kibioctets, qui peuvent être remplis avec de la RAM et de la ROM. On a donc le meilleur des mondes : 64 kibioctets de mémoire, mais avec des données de 8 bits et les économies de circuit qui vont avec. L'avantage est que le processeur peut maintenant gérer une vraie pile d'appel, pas seulement une pile d'adresse de retour. Il lui suffit pour cela d'intégrer un pointeur de pile codé sur 16 bits.
===Les modes d'adressage par page des CPU Motorola===
Les processeurs Motorola 8 bits étaient des processeurs 8 bits avec un bus d'adresse de 16 bits. C'était des processeurs à accumulateur incorporant deux registres d'indice, un registre d'état, un pointeur de pile, et un ''program counter''. Tous les registres sont reliés au bus d'adresse, sauf le registre d'état et l’accumulateur. Tous les registres font 8 bits, sauf le ''program counter''. La pile est câblée pour être dans un bloc de 256 octets compris entre l'adresse 1 0000 0000 et l'adresse 1 1111 1111, ce qui fait que son adressage se fait avec un seul octet.
[[File:6502-architecture.svg|centre|vignette|upright=1.5|Architecture simplifiée du 6502.</br> X et Y : registres d'indice ;</br> S : le pointeur de pile ;</br> A : accumulateur ;</br>P : registre d'état.</br>]]
Les processeurs Motorola 8 bits utilisaient une méthode simple pour adresser 64 kibioctets de RAM, avec des registres de 8 bits. Pour cela, ils utilisaient une variante de l'adressage base + décalage. Elle améliore l'adressage absolu, qui intègre l'adresse à lire/écrire dans l'instruction elle-même. L'adresse en question est de 8 bits et n'encode que les 8 bits de poids faible de l'adresse, les 8 bits de poids fort sont dans un '''registre de page''' adressé implicitement. L'adresse finale est obtenue en concaténant ce registre avec l'adresse mémoire intégrée dans l’instruction. Le résultat est que la mémoire était découpée en blocs de 256 consécutifs, chacun pouvant servir de fenêtre de 256 octets. Une page est réservée pour la pile, la seconde, comme dit plus haut.
Formellement, ce mode d'adressage a des ressemblances avec la commutation de banques, une technique qu'on verra dans les chapitres sur l'espace d'adressage et la mémoire virtuelle. Mais ce n'en est pas du tout : le registre de page est utilisé uniquement pour les accès mémoire avec le mode d'adressage base + décalage, mais pas pour les autres accès mémoire, qui gèrent des adresses complètes. Notons que l'usage d'un registre de page dédié fait que celui-ci est adressé implicitement.
Il faut noter que la technique a été utilisée sur des processeurs 16 bits, pour contourner la petite taille des instructions. Un exemple est celui du HP 2100, un processeur 16 bits. Il avait un registre de page de 5 bits et encodait 10 bits d'adresse dans ses instructions. Ses instructions d'accès mémoire disposaient d'un bit qui choisit quel mode d'adressage utiliser. S'il était à 0, l'adressage absolu était utilisé, le registre de page n'était pas utilisé. Mais s'il était à 1, le registre de page était utilisé pour calculer l'adresse.
Une évolution de l'adressage précédent est le '''mode page direct'''. Avec lui, le registre de page est étendu et contient une adresse mémoire complète. L'adresse finale n'est pas obtenue par concaténation, mais en additionnant le registre de page avec l'adresse fournie par adressage absolu + décalage. Un exemple est celui des premiers processeurs Motorola, qui géraient des adresses courtes de 8 bits. L'adresse courte de 8 bits correspondait non pas aux 256 premiers octets de la mémoire, mais à une fenêtre de 256 octets déplaçable en mémoire. La position de la fenêtre de 256 octets était spécifiée par le registre de page de 16 bits, qui précisait l'adresse du début de la fenêtre, celle de sa première donnée.
Il s'agit donc formellement d'adressage base + décalage, à un détail près : il n'y a qu'un seul registre de base. Le fait que ce registre de base soit unique fait qu'il est adressé implicitement, on n'a pas à encoder le numéro/noms de registre dans l'instruction. Le registre de base est utilisé uniquement pour l'adressage absolu, pas pour les autres accès mémoire. S'il y a des ressemblances avec la segmentation, une technique de mémoire virtuelle qu'on abordera dans quelques chapitres, ce n'en est pas vu que le registre de base est utilisé seulement pour un mode d'adressage bien précis.
===Le ''pseudo-aliasing'' des registres des processeurs Intel x86===
Voyons maintenant le cas des anciens processeurs 8 bits d'Intel à savoir l'Intel 4004, 4040, 8008 et 8080. Le Z80, un processeur inspiré des CPU Intel 8 bits, est aussi concerné. Avant de poursuivre, parlons des registres de ces processeurs. Les premiers CPU Intel incorporaient 7 registres de 8 bits nommés A, B, C, D, E, F, H, L, SP. Ils correspondent respectivement à : l'accumulateur A ; six registres nommés B, C, D, E, H et L ; le registre d'état F ; le pointeur de pile SP. Le Z80 ajoute deux registres d'indice X et Y. De plus, le Z80 dispose de registres d'interruption, qui sont en quelque sorte des copies des registres A, B, C, D, E, F, H, L. Le tout est illustré dans le tableau ci-dessous.
{|class="wikitable" style="text-align:center;"
|-
!
! Registres des CPU Intel
! Registres supplémentaires du Z80
|-
! Accumulateur
| A
| A'
|-
! Registre d'état
| F
| F'
|-
! Registres généraux
| B, C, D, E, H, L
| B', C', D', E', H', L'
|-
! Pointeur de pile
| colspan="2" | SP (sauf pour le 8008)
|-
! Registres d'indice
|
| X et Y
|}
Le 8008 incorpore une pile d'appel de 7 adresses, dans le processeur lui-même. Il en est de la même avec le 4004 et le 4040, comme on le verra dans la section sur les processeurs 4 bits. Mais le 8080 et le 8085 ont remplacé le tout par un simple pointeur de pile, afin d'avoir une véritable pile d'appel. Autant c'est impossible d'avoir une pile d'appel avec seulement 256 octets de mémoire, autant on peut se le permettre avec 65 536 adresses.
Pour gérer des adresses de 16 bits, ils auraient pu utiliser des registres d'adresse séparés, mais on préféré un système de '''pseudo-''aliasing'' de registres'''. Formellement, c'est un système qui concatène deux registres 8 bits pour obtenir une adresse de 16 bits. L’appariement a lieu lors de certaines opérations bien précises, qui n'ont de sens que pour les adresses : la lecture/écriture en mémoire, et l'incrémentation.
Il y avait cependant des contraintes quant aux paires de registres possibles, toutes les paires de registres n'étaient pas autorisées. Les CPU concernés sont donc des processeurs hybrides accumulateur-registre généraux. L'accumulateur ne peut pas être appairé, seuls les registres généraux le peuvent. Le Z80 autorise plus de paires que les CPU Intel. Voici les paires de registres qui pouvaient servir d'adresse 16 bits :
* Les CPU 8008 d'Intel autorisait une seule paire formée des registres H et L.
* Les autres processeurs, à savoir le 8080, le 8085 et le Z80, autorisaient : les paires BC, DE et HL.
Le 8008 ne gérait que des opérations sur 8 bits. Mais le 8080 et le 8085 ont ajouté des instructions 16 bits qui agissaient sur des paires de registre, que le Z80 a repris. Une paire de registres est considérée comme un registre unique de 16 bits pour certaines opérations arithmétiques, dont l'incrémentation. Voici la liste des instructions concernées :
* INC et DEC pour l'incrémentation et la décrémentation ;
* DAD : additionne le registre HL avec une autre paire (Hl inclus) ;
* LXI : copie une constante immédiate dans une paire de registres ;
* LHLD : lit 16 depuis la mémoire et l'enregistre dans une paire de registres ;
* SHLD : copie 16 bits depuis une paire de registres et l'enregistre en mémoire ;
* PUSH et POP : empile ou dépilent une paire de registre sur la pile ;
* XTHL : échange la paire HL avec les 16 bits au sommet de la pile d'appel ;
* XCHG : échange le contenu de la paire HL et DE.
Pour résumer, le processeur avait des instructions LOAD, STORE, PUSH et POP adaptées pour gérer des paires de registre. De plus, l'instruction XCHG permettait d’échanger le contenu des paires DE et HL. L'instruction a été étendue sur les processeurs 16 bits pour échanger tous les registres. Mais l'implémentation était alors différente. L'incrémentation sur une paire de 16 bit était très utile, car les adresses sont souvent incrémentées quand on parcours un tableau. Ces instructions nous donnent quelques indices sur ce qu'il y a dans le processeur.
Le système de pseudo-aliasing a un impact sur le banc de registre. Le banc de registre regroupe les registres généraux et le pointeur de pile, mais ne contient pas l'accumulateur. Les contraintes sur les paires de registres possibles ne s'expliquent que d'une seule manière : le banc de registre contient des registres de 16 bits, une paire de registres 8 bits est mémorisée dans un registre unique. Il faut donc faire une différence entre les registres architecturaux de 8 bits, et les registres réels de 16 bits.
Le banc de registre a un port de 8 bits pour les données, qui est fabriqué à partir d'un port 16 bits auquel on a rajouté un multiplexeur pour choisir soit l'octet de poids faible, soit l'octet de poids fort. Le bus de données fait 8 bits, ce qui fait que les instructions LOAD, STORE, PUSH et POP pour paires 16 bits sont réalisées en deux fois : on lit/écrit l'octet de poids faible, puis celui de poids fort. Par contre, le bus d'adresse fait bien 16 bits. Cela suggère que le banc de registre dispose d'un port de 16 bits dédié aux adresses, en plus du port de données 8 bits.
[[File:Architecture d'un CPU 8-16 bits avec un banc de registre double port.png|centre|vignette|upright=2|Architecture d'un CPU 8-16 bits avec un banc de registre double port]]
L'incrémentation d'une paire 16 bits ne coute rien à implémenter, ou presque. En effet, le processeur incorpore un incrémenteur 16 bits pour le ''program counter'', qui est relié au bus d'adresse. L'idée est de rentabiliser cet incrémenteur, en lui permettant d'incrémenter des données/adresses de 16 bits obtenues via pseudo-aliasing. De même, il peut être utilisé pour incrémenter le pointeur de pile, voire un compteur de rafraichissement mémoire (pour rappel, le rafraîchissement mémoire demande de balayer la mémoire d'adresse en adresse et été fait par le CPU à l'époque). Pour cela, il suffit de connecter le ''program counter'', le banc de registre, et l'incrémenteur, via un bus dédié.
[[File:Calcul d'adresse par ALU dédiée avec PC séparé.png|centre|vignette|upright=2|Calcul d'adresse par ALU dédiée avec PC séparé]]
Notez qu'on peut encore simplifier le tout en placant le ''program counter'' dans le banc de registre, ce qui ne gênera pas le travail de l'incrémenteur mais simplifiera le câblage au bus d'adresse. Ce n'était pas systématique, certains processeurs mettaient le ''program counter'' dans le banc de registre, d'autres non.
: Inclure le ''program counter'' dans le banc de registre permet parfois de remplir un vide. Par exemple, sur un processeur avec 12 registres, le banc de registre devrait faire idéalement 16 registres, inclure le ''program counter'' dedans fait monter le tout à 13.
[[File:Architecture d'un CPU 8-16 bits.png|centre|vignette|upright=2|Architecture d'un CPU 8-16 bits]]
Les processeurs Intel 8 bits, à savoir le 8008, le 8080 et le 8085 ; mettaient le ''program counter'' dans le banc de registre. Vous avez donc toutes les armes pour comprendre leur micro-architecture. Par exemple, voici la micro-architecture du processeur 8080. Remarquez le banc de registre, qui contient tous les registres sauf l'accumulateur et le registre. Il a deux ports : un pour les adresses et un pour les données. Notez le dé-multiplexeur sur le port de donnée. Pour le reste, il s'agit d'une architecture à accumulateur hybride des plus classiques.
[[File:Intel 8080 arch.svg|centre|vignette|upright=3|Microarchitecture de l'Intel 8080.]]
Le Z80 est un processeur inspiré du design des processeurs Intel 8 bits, mais avec pas mal d'améliorations. Un point particulier de ce processeur est son banc de registre. Il contient tous les registres du processeur, y compris l'accumulateur et le registre d'état ! Les seuls registres en-dehors du banc de registre sont le ''program counter'' et un compteur de rafraichissement mémoire IR.
Un autre point particulier est que les registres dans le banc de registres avaient une copie séparée accessible uniquement pour les interruptions, via fenêtrage de registres. Et l'accumulateur et le registre d'état étant dans le banc de registre, il y avait deux accumulateurs et deux registres d'état. Les registres A, B, C, D, E et F étaient dupliqués, par le pointeur de pile ni les registres d'indice. Les copies des registres étaient nommées A', B', C', D', E' et F'.
Le Z80 supportait des instructions d'échange de registre en plus des CPU Intel 8 bits. L'instruction EX peut échanger soit le contenu des paires D,E et H,F, soit la paire A,F avec la paire A',F'. L'instruction EXX échange les paires BC, DE, HL avec les paires BC', DE', HL'. En faisant cela, le programmeur pouvait utiliser deux fois plus de registres généraux s'il n'utilisait pas les interruptions. L'échange de paires se fait sans copies de registres, mais simplement en modifiant l'adresse envoyée sur le banc de registre. Pour cela, plusieurs bascules mémorisent des bits qui indiquent si les paires ont été échangées ou non. Il y a une bascule pour les paires DE , HL ; une autre pour les paires A,F et paire A',F', une dernière pour l'instruction EXX. En combinant ces bascules avec les noms de registres envoyés par le séquenceur, on peut échanger les paires de registres.
==Le cas particulier des processeurs 4 bits : le 4004 d'Intel==
L'Intel 4004 était le tout premier micro-processeur. Il s'agissait d'un microprocesseur de 4 bits, basé sur une architecture à accumulateur. Il disposait d'un accumulateur et de 16 registres d'indice, tous de 4 bits. Il faisait des calculs sur des données de 4 bits, appelées des nibbles. Cependant, sur ses 46 instructions machines supportées, 41 agissaient sur des opérandes de 8 bits, les 5 restantes sur des opérandes de 16 bits. Simplement, les calculs se faisaient en deux fois, en échangeant des données entre mémoire RAM et accumulateur.
Le 4004 est un circuit intégré avec peu de broches. Il dispose notamment d'un bus de données/adresse, qui est multiplexé, c’est-à-dire qu'il sert alternativement de bus de données et de bus d'adresse selon les besoins. Le bus de commande mémoire fait 5 bits, dont 4 pour les chips de RAM, un pour la ROM. Les adresses sont codées sur 12 bits, les données sur 4 et les instructions sur 8 bits. L'envoi d'une adresse sur le bus se fait en plusieurs fois, de même que la lecture d'une instruction. Il s'agit là d'une adaptation pour outrepasser les limitations d'un processeur 4 bit.
[[File:Intel 4004 processor pinout.png|centre|vignette|upright=2|Broches de l'Intel 4004. Nous verrons à quoi elles servent plus bas.]]
===L'espace d'adressage de l'Intel 4004===
Les adresses du processeur sont sur 12 bits, ce qui fait 4096 adresses différentes. Elles regroupent à la fois la ROM et la mémoire RAM, vu que l'architecture est une sorte de mélange bizarre entre une architecture Von Neumann et Harvard. Le processeur gère bien deux espaces d'adressage séparés, mais la RAM et la ROM sont reliés au même bus. La sortie CM-ROM du processeur indique si l'adresse envoyée correspond à la RAM ou la ROM. Un circuit de décodage d'adresse active ou désactive la RAM selon la valeur de ce bit, l'inverse pour la ROM, en agissant sur leurs bits Chip Select. Seule la RAM ou la ROM répondent alors à l'adresse.
Pour ce qui est de la RAM, le circuit de décodage d'adresse pouvait gérer au maximum 1024 adresses différentes, chacune contenant un nibble. Pour cela, le CPU 4004 était relié à une ou plusieurs RAM externes, des Intel 4002. Chaque Intel 4002 contenait 64 nibbles de données, plus 16 nibbles de statut qu'on ne détaillera pas ici. Les nibbles de statut étaient accessibles en utilisant des instructions d'entrée-sortie, donc pas avec des lectures/écritures mémoire. Les 64 nibbles de données sont découpés en 4 groupes de 16 nibbles. Le CPU pouvait être relié à maximum 16 Intel 4002, ce qui fait 1024 nibbles de données et 256 nibbles de statut. L'ensemble permet de remplir l'espace d'adressage de 1024 adresses.
===Le registre de page et le pseudo-aliasing des registres===
Sélectionner une adresse mémoire utilisait un mélange entre pseudo-aliasing et registre de page. Pour les données, les 1024 adresses étaient découpées en 4 pages de 256 adresses. Pour la ROM, les 4096 adresses étaient découpées en 16 pages de 256 adresses. Localiser une donnée dans une page ne requiert que 8 bits, 2/4 bits supplémentaires permettent de sélectionner la page voulue. Le registre de page était dans le processeur lui-même, et était relié aux sorties du processeur nommées CM-RAM 0, 1, 2 et 3. Les 4 sorties encodaient un nombre qui permet de sélectionner le numéro de page voulu.
Le registre de page fait 5 bits : un pour distinguer RAM et ROM, 4 bits pour sélectionner la page voulue. L'avantage est que la carte mère gère au maximum 16 chips de RAM, ce qui colle parfaitement avec les 4 utilisés pour sélectionner une page. Un chip de RAM correspond à une page, et chacun est activé ou désactivé suivant la page sélectionnée. Pour cela, il suffit d'ajouter un décodeur sur la carte mère, qui prend les 4 bits du registre de page et fournit les signaux Chip Select aux différents chips de RAM.
Reste alors à utiliser les 8 bits d'adresse à l'intérieur d'un chip de RAM. Le 4004 permettait de concaténer deux registres d'indice de 4 bits pour former une adresse de 8 bits. Les instructions d'accès mémoire pouvaient ainsi préciser une paire de registre d'indice pour préciser quelle adresse lire/écrire. Idem pour les branchements indirects : le processeur supportait une instruction de branchement indirect qui précisait l'adresse dans une paire de registres d'indice. Les registres d'indice sont donc assez mal nommés sur cette architecture, vu qu'ils peuvent servir soit de registre d'indice, soit de demi-registre d'adresse. Il s'agit là du système de pseudo-aliasing des registres, mais appliqué aux registres d'indice.
L'Intel 4004 gérait deux instructions pour gérer les adresses mémoires. La première, l'instruction DCL (''Designate Command Line'') configure le registre de page. Elle prend en entrée un numéro de page et le copie dans le registre de page. L'opérande peut provenir d'un registre d'indice ou de l'accumulateur. La seconde, l'instruction SRC (''Send Register Control'') concatène deux registres d'indice pour obtenir une adresse de 8 bits. Un accès mémoire se fait donc en maximum trois instructions : une qui configure le registre de page si ce n'est pas déjà fait, une instruction SRC pour envoyer l'adresse, et une troisième instruction qui dit s'il faut faire une lecture ou une écriture.
===La microarchitecture de l'Intel 4004===
Il incorporait une pile d'adresse de retour intégrée au processeur. La pile d'adresse acceptait exactement 3 adresses maximum. Elle était regroupée avec le ''program counter'' dans un banc de registre, de 4 registres. Le ''program counter'' et le pointeur de pile faisaient chacun 12 bits, soit trois nibble. Ils étaient incrémentés par un incrémenteur dédié.
SI on omet le registre de page et la pile d'adresse, le 4004 est une architecture à accumulateur des plus classiques, avec un bus interne unique, un banc de registre pour les registres d'indices, un accumulateur relié à une unité de calcul. Les registres d'indice étaient dans un banc de registre séparés, car ils faisaient 4 bits chacun, contrairement au pointeur de pile et le ''program counter''. Un détail important est que les bancs de registres du 4004 étaient implémentés avec de la DRAM, et non des registres usuels fabriqués avec des bascules 1 bit.
[[File:Microarchitecture de l'Intel 4004.png|centre|vignette|upright=2.5|Microarchitecture de l'Intel 4004]]
<noinclude>
{{NavChapitre | book=Fonctionnement d'un ordinateur
| prev=Les architectures à pile et mémoire-mémoire
| prevText=Les architectures à pile et mémoire-mémoire
| next=Les processeurs de traitement du signal
| nextText=Les processeurs de traitement du signal
}}
</noinclude>
5f4xkewaf1njlsdqht2ai8j8m9hvgp9
765687
765686
2026-05-01T15:08:32Z
Mewtow
31375
/* Les microcontrôleurs PIC */
765687
wikitext
text/x-wiki
Nous avons déjà abordé la notion de processeur 8, 16, 32, 64 bits. Elle désigne la taille des registres généraux, ou de l'accumulateur. De nos jours, les processeurs 32 et 64 bits sont la norme, mais les premiers micro-processeurs étaient des processeurs 4 et 8, avant de passer rapidement au 16 bits. La raison est que leur budget en transistor limité faisait qu'on ne pouvait pas utiliser une ALU trop grande : une ALU 8 bit prend deux fois moins de place et de transistors qu'une ALU 16 bits. Cependant, les processeurs 8 bits avaient de sérieuses limitations qui étaient compensées par diverses solutions. Dans ce chapitre, nous allons faire une revue rapide des processeurs 8 bits et de leurs fonctionnalités.
La principale limitation des CPU 8 bits était l'adressage : des registres de 8 bits limitaient l'espace d'adressage à seulement 256 adresses, soit à peine 256 octets ! Intuitivement, on se dit que 256 octets est purement impraticable, on ne peut rien faire d'intéressant avec seulement 256 de RAM + ROM. Et c'est partiellement vrai. L'adage veut que 16 bits est la taille minimale intéressante, la limite à partir de laquelle on a assez de mémoire RAM/ROM pour coder des applications intéressantes. Mais 256 octets de RAM est largement suffisant sur de nombreux systèmes embarqués simples s'en accommodent : des caisses enregistreuses, des systèmes de régulation de feu de circulation, etc.
Pour les applications demandant plus de mémoire RAM, les CPU de l'époque contournaient la limitation de 256 octets de RAM avec de nombreux stratagèmes. Dans ce qui va suivre, nous allons séparer les CPU 8 bits selon qu'ils utilisent une architecture Harvard ou une architecture Von Neumann. La raison est qu'une architecture Harvard permet en soi de contourner partiellement ce problème d'adressage. Les choses sont plus compliquées avec une architecture Von Neumann.
==Les processeurs 8/16 bits à architecture Harvard ==
La première solution est d'utiliser une architecture Harvard. Le processeur 8 bit a alors deux espaces d'adressage : un pour la RAM, un autre pour la ROM. Et les deux utilisent des adresses de taille différente. La ROM est reliée à un bus d'adresse de 16 bits, alors que la RAM est elle connectée à un bus d'adresse de 8 bits. La RAM est donc limitée à 256 octets, alors que la ROM peut monter jusqu'à 64 kibioctets. Mine de rien, faire ainsi est largement suffisant.
Les processeurs de l'époque intégraient parfois les 256 octets de RAM directement dans le processeur. Beaucoup en implémentaient moins, avec par exemple seulement 64 octets de RAM, ou 32 octets, ou 128 octets. L'avantage est que cela éliminait le bus d'adresse des données et ne laissait que le bus d'adresse pour la ROM. On économisait ainsi beaucoup de broches sur le circuit intégré du CPU. Et pour les applications demandant plus de RAM, on pouvait ajouter un circuit séparé qui permettait d'adresser une RAM plus grande. Mais cela sera plus clair avec un exemple.
===Les microcontrôleurs PIC===
Un exemple de système 8 bits est celui des '''microcontrôleurs PIC'''. La gamme des microcontrôleurs PIC est très vaste, et regroupe des microcontrôleurs allant de microcontrôleurs 8 bit aux performances très faible, à des microcontrôleurs 32 bits bien plus puissants. Les microcontrôleurs PIC sont très utilisés dans l'embarqué ou d'informatique industrielle. Ils sont vendu à des volumes assez impressionnants, plusieurs millions par an. Et si vous avez ou êtes en train de faire des études d'électronique, je parie que vous les avez déjà vu en classe, ou que ce ne saurait tarder.
Dans ce qui suit, nous allons nous concentrer sur les microcontrôleurs PIC 8 bits, à savoir les PIC 16, 16 et 18. Les PIC 24, qui sont des microcontrôleurs 16 bits, ne seront pas abordés. Les microcontrôleurs PIC 8 bits incorporent une mémoire RAM très petite, ainsi qu'une architecture Harvard, comme dit plus haut. Le processeur de ces microcontrôleurs a un jeu d'instruction propriétaire, le jeu d'instruction PIC.
La mémoire RAM des microcontrôleurs PIC est très petite, elle dépasse rarement la centaine d'adresse. Pour donner un exemple, le PIC16F84 a une RAM composée de 68 "registres" de 8 bits. Le terme "registres" devrait vous faire tiquer, mais il s'agit bien d'une mémoire SRAM séparée. Simplement, la documentation des PIC qualifie cette mémoire SRAM de "registres", et il faut admettre que la différence entre banc de registre et SRAM séparée est un peu floue. Cependant, je préfère parler de SRAM que de banc de registre, pour une raison simple : la SRAM n'a qu'un seul port qui sert à la fois pour les lectures et écritures.
Pour compenser l'absence de ports de lecture/écriture sur la SRAM, les PIC sont des architectures à accumulateur, où une opérande est lue depuis la SRAM, l'autre depuis l'accumulateur. Les concepteurs du processeur auraient pu rajouter un second port de lecture sur la SRAM, ce qui en aurait fait un banc de registre classique, mais ils ont préféré économiser des transistors. Leur implémentation de l'accumulateur ajoute une petite subtilité : le résultat d'une opération arithmétique peut être enregistré ailleurs que dans l'accumulateur. Le résultat peut aussi remplacer la seconde opérande, celle lue en mémoire RAM. Dit autrement, le résultat est enregistré dans l'adresse mémoire source. Les instructions de calcul ont le choix : un bit dans leur encodage précise où enregistrer le résultat.
Outre l'accumulateur, les PIC disposent de registres de contrôle, d'un ''program counter'', d'un registre d'état, et d'un pointeur de pile. Le registre d'état contient un registre séparé pour la retenue de l'addition/soustraction. Ce dernier est très important, vu qu'il est nécessaire pour les additions/soustractions sur des opérandes de 16 bits. Le processeur a beau être un CPU 8 bits, il peut être utilisé pour faire des calculs 16 bits, la performance est alors amoindrie, mais ce n'est pas un problème pour les applications d'un tel microcontroleur.
Un détail assez original est que les registres précédents sont mappés en mémoire, à quelques exceptions près ! En clair, on peut y accéder en lisant/écrivant à une adresse mémoire bien précise. Les seules registres qui ne sont pas mappés en mémoire sont l'accumulateur, la pile d'appel, et les registres d'entrée-sortie. Les registres d'entrée-sortie permettent de lire ou écrire sur un port d'entrée-sortie ou de lire un ''timer''. En clair, les PIC ont un espace d'adressage séparé pour les entrées-sorties.
[[File:DocPIC16F84.png|centre|vignette|upright=2|DocPIC16F84]]
Les instructions PIC sont très petites. Les premières versions du jeu d'instruction utilisaient des instructions codées sur 12 bits, dont 5 pour l'adresse mémoire de la seconde opérande. Pour les branchements, 3 bits étaient utilisés pour l'opcode, 9 pour l'adresse de destination. Par la suite, les instructions ont été étendues à 13 bits sur les PIC1670, puis à 14, 15 et 16 bits. Les adresses ont alors été élargies, ce qui permet d'adresser en peu plus de mémoire RAM.
Les instructions se limitent à des additions/soustractions, des opérations bit à bit,des branchements, des instructions LOAD/STORE, ainsi que des opérations de manipulation de bit. Il y a une instruction pour mettre une adresse à zéro, qui peut aussi mettre à zéro l’accumulateur. Les PIC gèrent l'adressage absolu et indirect. L'adressage absolu, celui où l'adresse est intégrée dans l'instruction, est très simple à implémenter. Les adresses prennent moins d'un octet, vu que la taille de la RAM est très petite, les adresses sont très courtes, les intégrer dans des instructions elles-mêmes courtes n'est pas un problème. L'adresse est encodée sur 5 à 7 bits, selon le modèle, ce qui permet d'adresser entre 32 et 128 octets.
Pour ce qui est des branchements, les PIC n'ont pas d'instructions de branchement conditionnels, ils font avec une SKIP instruction et des branchements inconditionnels. Par contre, ils ont des branchements pour les appels et retour de fonction. Mieux que ça, ils intègrent une pile d'appel d'environ 8 adresses de retour. Pour donner une idée, l'adresse de retour est encodée sur 10 bits sur les PIC16F84.
Pour les instructions de manipulation de bit, il y a des instructions pour tester/masquer un bit dans une opérande, 4 en tout ( mettre à 0, mettre à 1, tester si bit = 1, tester si bit = 0). Les instructions qui testent un bit prennent leur opérande dans l'accumulateur. Il y a aussi deux instructions de rotation à gauche et droite, qui tiennent compte de la retenue mémorisée dans le registre d'état. Mentionnons aussi une instruction pour inverser deux ''nibbles'' dans un octet.
Les PIC ont aussi des instructions d'incrémentation et de décrémentation, un peu spéciales. Ces dernières regroupent : une incrémentation normale, une décrémentation normale, une décrémentation fusionnée avec une instruction SKIP, et une incrémentation fusionnée avec une instruction SKIP. Les deux dernières incrémentent/décrémentent l'accumulateur et SKIP l'instruction suivante si le résultat est zéro. Elles permettent de fortement simplifier l'implémentation des boucles qui s'exécutent tant que leur compteur atteint zéro.
[[File:DocPIC16F84 all.png|centre|vignette|upright=2.5|Microarchitecture du PIC16F84.]]
: Les PIC 18 peuvent adresser plus de 156 octets de RAM en utilisant la commutation de banques, une technique qui sera abordée dans plusieurs chapitres.
===Le Fairchild F8 et la console de jeu Fairchild Channel F===
Un autre exemple est la Fairchild F8 de la défunte entreprise Fairchild Semiconductor. Il incorpore un processeur 8 bits, c'est à dire que le processeur fait des calculs sur des entiers de 8 bits maximum, une mémoire RAM de 64 octets, ainsi qu'une mémoire ROM de 1 kibioctet. Les 64 octets de RAM sont certes très peu, mais c'est suffisant pour certaines applications simples, comme les caisses automatiques de l'époque, ou des applications embarquées. Et de toute façon, il est possible d'ajouter de la mémoire RAM supplémentaire si les 64 octets de RAM intégrée ne suffisent pas. Le système était donc modulaire, adaptable selon les besoins, peu cher pour son implémentation minimale sans RAM en plus.
Vu qu'il s'agit d'un des tout premiers ordinateurs, il est sorti à une époque où la technologie était rudimentaire. À cette époque, le processeur était composé de pièces détachées qu'il fallait souder ensemble pour obtenir un processeur fonctionnel. Ce n'est que plus tard qu'est apparu le micro-processeur, qui regroupe un processeur complet dans un seul circuit intégré. Le résultat est que le processeur du Fairchild F8 est coupé en deux, l'unité de calcul et l'unité de contrôle sont placés dans des pièces détachées séparés.
Le microcontrôleur est composé de trois à quatre pièces détachées, certaines étant optionnelles. La première est le '''3850 CPU''', qui regroupe l'unité de calcul et la mémoire RAM intégrée. La seconde est le PSU (''3851 Program Storage Unit''), qui regroupe la mémoire ROM et l'unité de contrôle, ''program counter'' inclut. S'il y a besoin d'utiliser plus de RAM, il faut ajouter un circuit d’interface mémoire, qui est au choix le ''3852 Dynamic Memory Interface'' (DMI) ou le ''3853 Static Memory Interface'', le premier étant connecté à une mémoire de type DRAM, l'autre à une SRAM (nous verrons ce que sont les DRAM et les SRAM dans le prochain chapitre).
[[File:Fairchild F8.png|centre|vignette|upright=2|Fairchild F8]]
Le système minimal est composé d'un PSU et d'un 3850, sans les circuits d'interface mémoire. Le tout donne un système avec un processeur 8 bit, 64 octets de RAM et 1 kibioctet de ROM, les deux mémoires étant intégrées dans le "processeur". Le processeur gérait 4 entrées-sorties, chacune étant reliée avec un bus de 8 bit au processeur. Au passage, en 1977, Mostek a créé un microcontrôleur qui regroupe un PSU et un 3850 : le Mostek 3870. Le système minimal n'avait pas de bus d'adresse, vu que la RAM était intégrée au processeur. C'est les 3852 et 3853 qui ajoutaient un bus d'adresse. Ils ajoutent un bus d'adresse de 16 bits, ce qui permet d'adresser 64 kibioctets de RAM.
[[File:Fairchild-Channel-F.jpg|vignette|un Fairchild Channel F]]
Le Fairchild F8 a été utilisé dans la Fairchild Channel F, une des toute première console de seconde génération, à savoir des consoles qui utilisaient des cartouches de jeu. Avant les consoles de seconde génération, les consoles étaient non-programmables. Elles étaient conçues pour faire tourner un jeu précis, aucun autre, le jeu étant implémenté dans leurs circuits.
La Fairchild Channel F est composé du système minimal, auquel on a ajouté une carte son rudimentaire et 2 kibioctets de mémoire vidéo. La mémoire vidéo sert uniquement pour afficher des images à l'écran : on écrit l'image à afficher dedans, un circuit vidéo se charge de l'afficher à l'écran automatiquement. Le processeur ne fait qu'écrire dans cette RAM vidéo, il ne peut pas en lire le contenu. De la RAM supplémentaire peut cependant être ajoutée dans les cartouches de jeu.
===L'usage d'une architecture Harvard modifiée : les consoles 8 bits===
Pour encore améliorer la situation, il est possible d'utiliser une architecture Harvard modifiée, qui permet de lire des données depuis la mémoire ROM. Cela réduit encore plus les besoins en mémoire RAM. Les constantes manipulées par le programme sont mémorisées en ROM, lues depuis la ROM, au lieu d'être chargées en RAM. Les consoles de jeu utilisaient beaucoup de stratagème.
L'exemple type est celui des consoles 8 bits avec des graphismes en 2D. La cartouche de jeu contenait une ROM, qui mémorisait le code du jeu, les niveaux, les sprites et autres données graphiques. Leur carte graphique lisait directement les ''sprites'' depuis la mémoire ROM, sans avoir à les charger en mémoire vidéo. La mémoire vidéo se contentait de mémoriser le reste des informations graphiques, ainsi que des pointeurs vers les ''sprites'' en ROM. En conséquence, les consoles 8 bits n'avaient pas besoin de beaucoup de RAM, vu qu'une grande partie des données utiles étaient dans une ROM directement accessible par le processeur. A l'opposé, les micro-ordinateurs devaient copier les données d'un jeu depuis une disquette dans la mémoire RAM, ce qui demandait d'avoir plus de RAM.
Le passage au support CD sur les consoles 32 bits a eu la même conséquence. Le processeur ne pouvant pas lire directement le CD à sa guise, il fallait copier les données du CD en RAM. D'où l'apparition de temps de chargement assez longs, inexistants sur support cartouche.
Avec ce genre de stratagèmes, 256 octets de RAM est largement suffisant sur de nombreux systèmes, à condition qu'on ait assez de ROM pour coder un programme digne de ce nom. Par exemple, de nombreux systèmes embarqués simples s'en accommodent : des caisses enregistreuses, des systèmes de régulation de feu de circulation, etc.
===Le HP Nanoprocessor : un processeur sans ALU===
Un dernier exemple est celui du processeur HP Nanoprocessor, de l'entreprise HP. Il a été commercialisé en 1974, en même temps que les premiers micro-processeurs d'Intel. Tous les processeurs de l'époque étaient des processeurs 8 bits et le HP Nanoprocessor ne faisait pas exception. Ce n'était pas un processeur haute performance, il était destiné à des applications d'informatique industrielle ou embarquée. D'ailleurs, il utilisait des transistors de type metal-gate, peu performants, là où ses contemporains utilisait des transistors en silicium, plus performants.
Mais une caractéristique qui rend cela encore plus claire est qu'il n'y a pas d'ALU ! En effet, ce processeur est incapable de faire des additions, des soustractions ou autres opérations simples ! Il est cependant capable d'effectuer des incrémentations et décrémentations, des décalages, des opérations logiques comme des ET/OU/NON/XOR et bien d'autres. Il supporte en tout 48 instructions, avec un support limité des modes d'adressage indirects. Les instructions de branchement étaient des instructions SKIP, il n'y avait pas d'instructions de branchement généralistes.
Pour ce qui est des registres, il disposait de 16 registres de 8 bits et d'un accumulateur. Niveau mémoire, il était relié à une mémoire ROM, rien de plus. Il n'avait de RAM supplémentaire qu'on pouvait lui adjoindre, il devait se débrouiller avec seulement ses registres. Et cela ne posait pas de problèmes pour son usage. Seul le mode d'adressage indirect à registre est supporté, il n'y a pas de registres d'indices. Ce mode d'adressage permet de lire des données en mémoire ROM, la ROM pouvant contenir des tableaux de valeurs constantes.
: Il est possible de lui adjoindre de la RAM via les ports d'entrée-sortie, ainsi qu'une ALU, mais RAM et ALU sont traités comme des périphériques avec lesquels on communique, ils ne sont pas intégrés au processeur.
Niveau micro-architecture, il incorporait une unité de calcul logique et un circuit comparateur. Le comparateur était un circuit comparateur série des plus basiques, qui était utilisé pour les instructions de branchement et associées. L'unité de calcul logique gérait des incrémentations/décrémentation, des décalages, les opérations logiques et quelques autres. L'unité de calcul logique était bit-slicée, à savoir conçue en assemblant 8 ALU de 1 bit chacune, enchainées en série. Le tout était combiné à des circuits de ''carry skip''.
[[File:Unité de calcul du HP nanonprocessor.png|centre|vignette|upright=2|Unité de calcul du HP nanoprocessor]]
Son unité de décodage d'instruction était très simple, essentiellement basée sur des portes NOR, grâce à un encodage efficace des instructions machine. Le ''program counter'' fait 11 bits, ce qui permet d'adresser une ROM de 2 kibioctets. Le ''program counter'' était relié à un circuit incrémenteur qui gérait les isntructions SKIP (il pouvait incrémenter le ''program counter'' par pas de 1 ou de 2 en cas de SKIP). Le processeur contient aussi deux registres, qui servent en quelque sorte de pile d'adresse de retour. Un premier registre mémorise l'adresse de retour d'une fonction, l'autre mémorise le ''program counter'' lors d'une interruption, pour savoir où brancher à la fin de l'interruption.
[[File:HP nanoprocessor.png|centre|vignette|upright=2.5|HP nanoprocessor]]
Fait intéressant, le concepteur du processeur a gracieusement donné les masques utilisés pour graver le silicium du processeur au site [https://www.cpushack.com/ CPU Shack]. Les masques en question sont disponibles ici :
* [https://www.cpushack.com/2020/08/20/hp-nanoprocessor-mask-set/ HP NanoProcessor Mask Set]
* [https://www.cpushack.com/2020/08/09/the-forgotten-ones-hp-nanoprocessor/ The Forgotten Ones: HP Nanoprocessor]
Les masques ont été analysés par Ken Shirrif dans cet article de blog :
* [https://www.righto.com/2020/09/hp-nanoprocessor-part-ii-reverse.html HP Nanoprocessor part II: Reverse-engineering the circuits from the masks]
==Les processeurs 8/16 bits à architecture Von Neumann==
L'usage d'une architecture Harvard est une solution pour adresser plus de mémoire avec des CPU 8 bits. Mais plusieurs microprocesseurs commerciaux n'utilisaient pas cette solution. À la place, c'était des architectures Von Neumann, mais qui étaient capables de gérer des adresses de 16 bits. Les données faisaient 8 bits, les registres faisaient 8 bits, mais quelques techniques permettaient de gérer des adresses de 16 bits. Nous parlerons de '''processeurs 8/16 bits''' pour les désigner, et nous allons les étudier à part.
Un point important est que la gestion d'adresses de 16 bits permet d'adresser 64 kibioctets, qui peuvent être remplis avec de la RAM et de la ROM. On a donc le meilleur des mondes : 64 kibioctets de mémoire, mais avec des données de 8 bits et les économies de circuit qui vont avec. L'avantage est que le processeur peut maintenant gérer une vraie pile d'appel, pas seulement une pile d'adresse de retour. Il lui suffit pour cela d'intégrer un pointeur de pile codé sur 16 bits.
===Les modes d'adressage par page des CPU Motorola===
Les processeurs Motorola 8 bits étaient des processeurs 8 bits avec un bus d'adresse de 16 bits. C'était des processeurs à accumulateur incorporant deux registres d'indice, un registre d'état, un pointeur de pile, et un ''program counter''. Tous les registres sont reliés au bus d'adresse, sauf le registre d'état et l’accumulateur. Tous les registres font 8 bits, sauf le ''program counter''. La pile est câblée pour être dans un bloc de 256 octets compris entre l'adresse 1 0000 0000 et l'adresse 1 1111 1111, ce qui fait que son adressage se fait avec un seul octet.
[[File:6502-architecture.svg|centre|vignette|upright=1.5|Architecture simplifiée du 6502.</br> X et Y : registres d'indice ;</br> S : le pointeur de pile ;</br> A : accumulateur ;</br>P : registre d'état.</br>]]
Les processeurs Motorola 8 bits utilisaient une méthode simple pour adresser 64 kibioctets de RAM, avec des registres de 8 bits. Pour cela, ils utilisaient une variante de l'adressage base + décalage. Elle améliore l'adressage absolu, qui intègre l'adresse à lire/écrire dans l'instruction elle-même. L'adresse en question est de 8 bits et n'encode que les 8 bits de poids faible de l'adresse, les 8 bits de poids fort sont dans un '''registre de page''' adressé implicitement. L'adresse finale est obtenue en concaténant ce registre avec l'adresse mémoire intégrée dans l’instruction. Le résultat est que la mémoire était découpée en blocs de 256 consécutifs, chacun pouvant servir de fenêtre de 256 octets. Une page est réservée pour la pile, la seconde, comme dit plus haut.
Formellement, ce mode d'adressage a des ressemblances avec la commutation de banques, une technique qu'on verra dans les chapitres sur l'espace d'adressage et la mémoire virtuelle. Mais ce n'en est pas du tout : le registre de page est utilisé uniquement pour les accès mémoire avec le mode d'adressage base + décalage, mais pas pour les autres accès mémoire, qui gèrent des adresses complètes. Notons que l'usage d'un registre de page dédié fait que celui-ci est adressé implicitement.
Il faut noter que la technique a été utilisée sur des processeurs 16 bits, pour contourner la petite taille des instructions. Un exemple est celui du HP 2100, un processeur 16 bits. Il avait un registre de page de 5 bits et encodait 10 bits d'adresse dans ses instructions. Ses instructions d'accès mémoire disposaient d'un bit qui choisit quel mode d'adressage utiliser. S'il était à 0, l'adressage absolu était utilisé, le registre de page n'était pas utilisé. Mais s'il était à 1, le registre de page était utilisé pour calculer l'adresse.
Une évolution de l'adressage précédent est le '''mode page direct'''. Avec lui, le registre de page est étendu et contient une adresse mémoire complète. L'adresse finale n'est pas obtenue par concaténation, mais en additionnant le registre de page avec l'adresse fournie par adressage absolu + décalage. Un exemple est celui des premiers processeurs Motorola, qui géraient des adresses courtes de 8 bits. L'adresse courte de 8 bits correspondait non pas aux 256 premiers octets de la mémoire, mais à une fenêtre de 256 octets déplaçable en mémoire. La position de la fenêtre de 256 octets était spécifiée par le registre de page de 16 bits, qui précisait l'adresse du début de la fenêtre, celle de sa première donnée.
Il s'agit donc formellement d'adressage base + décalage, à un détail près : il n'y a qu'un seul registre de base. Le fait que ce registre de base soit unique fait qu'il est adressé implicitement, on n'a pas à encoder le numéro/noms de registre dans l'instruction. Le registre de base est utilisé uniquement pour l'adressage absolu, pas pour les autres accès mémoire. S'il y a des ressemblances avec la segmentation, une technique de mémoire virtuelle qu'on abordera dans quelques chapitres, ce n'en est pas vu que le registre de base est utilisé seulement pour un mode d'adressage bien précis.
===Le ''pseudo-aliasing'' des registres des processeurs Intel x86===
Voyons maintenant le cas des anciens processeurs 8 bits d'Intel à savoir l'Intel 4004, 4040, 8008 et 8080. Le Z80, un processeur inspiré des CPU Intel 8 bits, est aussi concerné. Avant de poursuivre, parlons des registres de ces processeurs. Les premiers CPU Intel incorporaient 7 registres de 8 bits nommés A, B, C, D, E, F, H, L, SP. Ils correspondent respectivement à : l'accumulateur A ; six registres nommés B, C, D, E, H et L ; le registre d'état F ; le pointeur de pile SP. Le Z80 ajoute deux registres d'indice X et Y. De plus, le Z80 dispose de registres d'interruption, qui sont en quelque sorte des copies des registres A, B, C, D, E, F, H, L. Le tout est illustré dans le tableau ci-dessous.
{|class="wikitable" style="text-align:center;"
|-
!
! Registres des CPU Intel
! Registres supplémentaires du Z80
|-
! Accumulateur
| A
| A'
|-
! Registre d'état
| F
| F'
|-
! Registres généraux
| B, C, D, E, H, L
| B', C', D', E', H', L'
|-
! Pointeur de pile
| colspan="2" | SP (sauf pour le 8008)
|-
! Registres d'indice
|
| X et Y
|}
Le 8008 incorpore une pile d'appel de 7 adresses, dans le processeur lui-même. Il en est de la même avec le 4004 et le 4040, comme on le verra dans la section sur les processeurs 4 bits. Mais le 8080 et le 8085 ont remplacé le tout par un simple pointeur de pile, afin d'avoir une véritable pile d'appel. Autant c'est impossible d'avoir une pile d'appel avec seulement 256 octets de mémoire, autant on peut se le permettre avec 65 536 adresses.
Pour gérer des adresses de 16 bits, ils auraient pu utiliser des registres d'adresse séparés, mais on préféré un système de '''pseudo-''aliasing'' de registres'''. Formellement, c'est un système qui concatène deux registres 8 bits pour obtenir une adresse de 16 bits. L’appariement a lieu lors de certaines opérations bien précises, qui n'ont de sens que pour les adresses : la lecture/écriture en mémoire, et l'incrémentation.
Il y avait cependant des contraintes quant aux paires de registres possibles, toutes les paires de registres n'étaient pas autorisées. Les CPU concernés sont donc des processeurs hybrides accumulateur-registre généraux. L'accumulateur ne peut pas être appairé, seuls les registres généraux le peuvent. Le Z80 autorise plus de paires que les CPU Intel. Voici les paires de registres qui pouvaient servir d'adresse 16 bits :
* Les CPU 8008 d'Intel autorisait une seule paire formée des registres H et L.
* Les autres processeurs, à savoir le 8080, le 8085 et le Z80, autorisaient : les paires BC, DE et HL.
Le 8008 ne gérait que des opérations sur 8 bits. Mais le 8080 et le 8085 ont ajouté des instructions 16 bits qui agissaient sur des paires de registre, que le Z80 a repris. Une paire de registres est considérée comme un registre unique de 16 bits pour certaines opérations arithmétiques, dont l'incrémentation. Voici la liste des instructions concernées :
* INC et DEC pour l'incrémentation et la décrémentation ;
* DAD : additionne le registre HL avec une autre paire (Hl inclus) ;
* LXI : copie une constante immédiate dans une paire de registres ;
* LHLD : lit 16 depuis la mémoire et l'enregistre dans une paire de registres ;
* SHLD : copie 16 bits depuis une paire de registres et l'enregistre en mémoire ;
* PUSH et POP : empile ou dépilent une paire de registre sur la pile ;
* XTHL : échange la paire HL avec les 16 bits au sommet de la pile d'appel ;
* XCHG : échange le contenu de la paire HL et DE.
Pour résumer, le processeur avait des instructions LOAD, STORE, PUSH et POP adaptées pour gérer des paires de registre. De plus, l'instruction XCHG permettait d’échanger le contenu des paires DE et HL. L'instruction a été étendue sur les processeurs 16 bits pour échanger tous les registres. Mais l'implémentation était alors différente. L'incrémentation sur une paire de 16 bit était très utile, car les adresses sont souvent incrémentées quand on parcours un tableau. Ces instructions nous donnent quelques indices sur ce qu'il y a dans le processeur.
Le système de pseudo-aliasing a un impact sur le banc de registre. Le banc de registre regroupe les registres généraux et le pointeur de pile, mais ne contient pas l'accumulateur. Les contraintes sur les paires de registres possibles ne s'expliquent que d'une seule manière : le banc de registre contient des registres de 16 bits, une paire de registres 8 bits est mémorisée dans un registre unique. Il faut donc faire une différence entre les registres architecturaux de 8 bits, et les registres réels de 16 bits.
Le banc de registre a un port de 8 bits pour les données, qui est fabriqué à partir d'un port 16 bits auquel on a rajouté un multiplexeur pour choisir soit l'octet de poids faible, soit l'octet de poids fort. Le bus de données fait 8 bits, ce qui fait que les instructions LOAD, STORE, PUSH et POP pour paires 16 bits sont réalisées en deux fois : on lit/écrit l'octet de poids faible, puis celui de poids fort. Par contre, le bus d'adresse fait bien 16 bits. Cela suggère que le banc de registre dispose d'un port de 16 bits dédié aux adresses, en plus du port de données 8 bits.
[[File:Architecture d'un CPU 8-16 bits avec un banc de registre double port.png|centre|vignette|upright=2|Architecture d'un CPU 8-16 bits avec un banc de registre double port]]
L'incrémentation d'une paire 16 bits ne coute rien à implémenter, ou presque. En effet, le processeur incorpore un incrémenteur 16 bits pour le ''program counter'', qui est relié au bus d'adresse. L'idée est de rentabiliser cet incrémenteur, en lui permettant d'incrémenter des données/adresses de 16 bits obtenues via pseudo-aliasing. De même, il peut être utilisé pour incrémenter le pointeur de pile, voire un compteur de rafraichissement mémoire (pour rappel, le rafraîchissement mémoire demande de balayer la mémoire d'adresse en adresse et été fait par le CPU à l'époque). Pour cela, il suffit de connecter le ''program counter'', le banc de registre, et l'incrémenteur, via un bus dédié.
[[File:Calcul d'adresse par ALU dédiée avec PC séparé.png|centre|vignette|upright=2|Calcul d'adresse par ALU dédiée avec PC séparé]]
Notez qu'on peut encore simplifier le tout en placant le ''program counter'' dans le banc de registre, ce qui ne gênera pas le travail de l'incrémenteur mais simplifiera le câblage au bus d'adresse. Ce n'était pas systématique, certains processeurs mettaient le ''program counter'' dans le banc de registre, d'autres non.
: Inclure le ''program counter'' dans le banc de registre permet parfois de remplir un vide. Par exemple, sur un processeur avec 12 registres, le banc de registre devrait faire idéalement 16 registres, inclure le ''program counter'' dedans fait monter le tout à 13.
[[File:Architecture d'un CPU 8-16 bits.png|centre|vignette|upright=2|Architecture d'un CPU 8-16 bits]]
Les processeurs Intel 8 bits, à savoir le 8008, le 8080 et le 8085 ; mettaient le ''program counter'' dans le banc de registre. Vous avez donc toutes les armes pour comprendre leur micro-architecture. Par exemple, voici la micro-architecture du processeur 8080. Remarquez le banc de registre, qui contient tous les registres sauf l'accumulateur et le registre. Il a deux ports : un pour les adresses et un pour les données. Notez le dé-multiplexeur sur le port de donnée. Pour le reste, il s'agit d'une architecture à accumulateur hybride des plus classiques.
[[File:Intel 8080 arch.svg|centre|vignette|upright=3|Microarchitecture de l'Intel 8080.]]
Le Z80 est un processeur inspiré du design des processeurs Intel 8 bits, mais avec pas mal d'améliorations. Un point particulier de ce processeur est son banc de registre. Il contient tous les registres du processeur, y compris l'accumulateur et le registre d'état ! Les seuls registres en-dehors du banc de registre sont le ''program counter'' et un compteur de rafraichissement mémoire IR.
Un autre point particulier est que les registres dans le banc de registres avaient une copie séparée accessible uniquement pour les interruptions, via fenêtrage de registres. Et l'accumulateur et le registre d'état étant dans le banc de registre, il y avait deux accumulateurs et deux registres d'état. Les registres A, B, C, D, E et F étaient dupliqués, par le pointeur de pile ni les registres d'indice. Les copies des registres étaient nommées A', B', C', D', E' et F'.
Le Z80 supportait des instructions d'échange de registre en plus des CPU Intel 8 bits. L'instruction EX peut échanger soit le contenu des paires D,E et H,F, soit la paire A,F avec la paire A',F'. L'instruction EXX échange les paires BC, DE, HL avec les paires BC', DE', HL'. En faisant cela, le programmeur pouvait utiliser deux fois plus de registres généraux s'il n'utilisait pas les interruptions. L'échange de paires se fait sans copies de registres, mais simplement en modifiant l'adresse envoyée sur le banc de registre. Pour cela, plusieurs bascules mémorisent des bits qui indiquent si les paires ont été échangées ou non. Il y a une bascule pour les paires DE , HL ; une autre pour les paires A,F et paire A',F', une dernière pour l'instruction EXX. En combinant ces bascules avec les noms de registres envoyés par le séquenceur, on peut échanger les paires de registres.
==Le cas particulier des processeurs 4 bits : le 4004 d'Intel==
L'Intel 4004 était le tout premier micro-processeur. Il s'agissait d'un microprocesseur de 4 bits, basé sur une architecture à accumulateur. Il disposait d'un accumulateur et de 16 registres d'indice, tous de 4 bits. Il faisait des calculs sur des données de 4 bits, appelées des nibbles. Cependant, sur ses 46 instructions machines supportées, 41 agissaient sur des opérandes de 8 bits, les 5 restantes sur des opérandes de 16 bits. Simplement, les calculs se faisaient en deux fois, en échangeant des données entre mémoire RAM et accumulateur.
Le 4004 est un circuit intégré avec peu de broches. Il dispose notamment d'un bus de données/adresse, qui est multiplexé, c’est-à-dire qu'il sert alternativement de bus de données et de bus d'adresse selon les besoins. Le bus de commande mémoire fait 5 bits, dont 4 pour les chips de RAM, un pour la ROM. Les adresses sont codées sur 12 bits, les données sur 4 et les instructions sur 8 bits. L'envoi d'une adresse sur le bus se fait en plusieurs fois, de même que la lecture d'une instruction. Il s'agit là d'une adaptation pour outrepasser les limitations d'un processeur 4 bit.
[[File:Intel 4004 processor pinout.png|centre|vignette|upright=2|Broches de l'Intel 4004. Nous verrons à quoi elles servent plus bas.]]
===L'espace d'adressage de l'Intel 4004===
Les adresses du processeur sont sur 12 bits, ce qui fait 4096 adresses différentes. Elles regroupent à la fois la ROM et la mémoire RAM, vu que l'architecture est une sorte de mélange bizarre entre une architecture Von Neumann et Harvard. Le processeur gère bien deux espaces d'adressage séparés, mais la RAM et la ROM sont reliés au même bus. La sortie CM-ROM du processeur indique si l'adresse envoyée correspond à la RAM ou la ROM. Un circuit de décodage d'adresse active ou désactive la RAM selon la valeur de ce bit, l'inverse pour la ROM, en agissant sur leurs bits Chip Select. Seule la RAM ou la ROM répondent alors à l'adresse.
Pour ce qui est de la RAM, le circuit de décodage d'adresse pouvait gérer au maximum 1024 adresses différentes, chacune contenant un nibble. Pour cela, le CPU 4004 était relié à une ou plusieurs RAM externes, des Intel 4002. Chaque Intel 4002 contenait 64 nibbles de données, plus 16 nibbles de statut qu'on ne détaillera pas ici. Les nibbles de statut étaient accessibles en utilisant des instructions d'entrée-sortie, donc pas avec des lectures/écritures mémoire. Les 64 nibbles de données sont découpés en 4 groupes de 16 nibbles. Le CPU pouvait être relié à maximum 16 Intel 4002, ce qui fait 1024 nibbles de données et 256 nibbles de statut. L'ensemble permet de remplir l'espace d'adressage de 1024 adresses.
===Le registre de page et le pseudo-aliasing des registres===
Sélectionner une adresse mémoire utilisait un mélange entre pseudo-aliasing et registre de page. Pour les données, les 1024 adresses étaient découpées en 4 pages de 256 adresses. Pour la ROM, les 4096 adresses étaient découpées en 16 pages de 256 adresses. Localiser une donnée dans une page ne requiert que 8 bits, 2/4 bits supplémentaires permettent de sélectionner la page voulue. Le registre de page était dans le processeur lui-même, et était relié aux sorties du processeur nommées CM-RAM 0, 1, 2 et 3. Les 4 sorties encodaient un nombre qui permet de sélectionner le numéro de page voulu.
Le registre de page fait 5 bits : un pour distinguer RAM et ROM, 4 bits pour sélectionner la page voulue. L'avantage est que la carte mère gère au maximum 16 chips de RAM, ce qui colle parfaitement avec les 4 utilisés pour sélectionner une page. Un chip de RAM correspond à une page, et chacun est activé ou désactivé suivant la page sélectionnée. Pour cela, il suffit d'ajouter un décodeur sur la carte mère, qui prend les 4 bits du registre de page et fournit les signaux Chip Select aux différents chips de RAM.
Reste alors à utiliser les 8 bits d'adresse à l'intérieur d'un chip de RAM. Le 4004 permettait de concaténer deux registres d'indice de 4 bits pour former une adresse de 8 bits. Les instructions d'accès mémoire pouvaient ainsi préciser une paire de registre d'indice pour préciser quelle adresse lire/écrire. Idem pour les branchements indirects : le processeur supportait une instruction de branchement indirect qui précisait l'adresse dans une paire de registres d'indice. Les registres d'indice sont donc assez mal nommés sur cette architecture, vu qu'ils peuvent servir soit de registre d'indice, soit de demi-registre d'adresse. Il s'agit là du système de pseudo-aliasing des registres, mais appliqué aux registres d'indice.
L'Intel 4004 gérait deux instructions pour gérer les adresses mémoires. La première, l'instruction DCL (''Designate Command Line'') configure le registre de page. Elle prend en entrée un numéro de page et le copie dans le registre de page. L'opérande peut provenir d'un registre d'indice ou de l'accumulateur. La seconde, l'instruction SRC (''Send Register Control'') concatène deux registres d'indice pour obtenir une adresse de 8 bits. Un accès mémoire se fait donc en maximum trois instructions : une qui configure le registre de page si ce n'est pas déjà fait, une instruction SRC pour envoyer l'adresse, et une troisième instruction qui dit s'il faut faire une lecture ou une écriture.
===La microarchitecture de l'Intel 4004===
Il incorporait une pile d'adresse de retour intégrée au processeur. La pile d'adresse acceptait exactement 3 adresses maximum. Elle était regroupée avec le ''program counter'' dans un banc de registre, de 4 registres. Le ''program counter'' et le pointeur de pile faisaient chacun 12 bits, soit trois nibble. Ils étaient incrémentés par un incrémenteur dédié.
SI on omet le registre de page et la pile d'adresse, le 4004 est une architecture à accumulateur des plus classiques, avec un bus interne unique, un banc de registre pour les registres d'indices, un accumulateur relié à une unité de calcul. Les registres d'indice étaient dans un banc de registre séparés, car ils faisaient 4 bits chacun, contrairement au pointeur de pile et le ''program counter''. Un détail important est que les bancs de registres du 4004 étaient implémentés avec de la DRAM, et non des registres usuels fabriqués avec des bascules 1 bit.
[[File:Microarchitecture de l'Intel 4004.png|centre|vignette|upright=2.5|Microarchitecture de l'Intel 4004]]
<noinclude>
{{NavChapitre | book=Fonctionnement d'un ordinateur
| prev=Les architectures à pile et mémoire-mémoire
| prevText=Les architectures à pile et mémoire-mémoire
| next=Les processeurs de traitement du signal
| nextText=Les processeurs de traitement du signal
}}
</noinclude>
nurzue5m8a9udo0kbbfyzpv0nzvn7jk
765688
765687
2026-05-01T15:11:59Z
Mewtow
31375
/* Les microcontrôleurs PIC */
765688
wikitext
text/x-wiki
Nous avons déjà abordé la notion de processeur 8, 16, 32, 64 bits. Elle désigne la taille des registres généraux, ou de l'accumulateur. De nos jours, les processeurs 32 et 64 bits sont la norme, mais les premiers micro-processeurs étaient des processeurs 4 et 8, avant de passer rapidement au 16 bits. La raison est que leur budget en transistor limité faisait qu'on ne pouvait pas utiliser une ALU trop grande : une ALU 8 bit prend deux fois moins de place et de transistors qu'une ALU 16 bits. Cependant, les processeurs 8 bits avaient de sérieuses limitations qui étaient compensées par diverses solutions. Dans ce chapitre, nous allons faire une revue rapide des processeurs 8 bits et de leurs fonctionnalités.
La principale limitation des CPU 8 bits était l'adressage : des registres de 8 bits limitaient l'espace d'adressage à seulement 256 adresses, soit à peine 256 octets ! Intuitivement, on se dit que 256 octets est purement impraticable, on ne peut rien faire d'intéressant avec seulement 256 de RAM + ROM. Et c'est partiellement vrai. L'adage veut que 16 bits est la taille minimale intéressante, la limite à partir de laquelle on a assez de mémoire RAM/ROM pour coder des applications intéressantes. Mais 256 octets de RAM est largement suffisant sur de nombreux systèmes embarqués simples s'en accommodent : des caisses enregistreuses, des systèmes de régulation de feu de circulation, etc.
Pour les applications demandant plus de mémoire RAM, les CPU de l'époque contournaient la limitation de 256 octets de RAM avec de nombreux stratagèmes. Dans ce qui va suivre, nous allons séparer les CPU 8 bits selon qu'ils utilisent une architecture Harvard ou une architecture Von Neumann. La raison est qu'une architecture Harvard permet en soi de contourner partiellement ce problème d'adressage. Les choses sont plus compliquées avec une architecture Von Neumann.
==Les processeurs 8/16 bits à architecture Harvard ==
La première solution est d'utiliser une architecture Harvard. Le processeur 8 bit a alors deux espaces d'adressage : un pour la RAM, un autre pour la ROM. Et les deux utilisent des adresses de taille différente. La ROM est reliée à un bus d'adresse de 16 bits, alors que la RAM est elle connectée à un bus d'adresse de 8 bits. La RAM est donc limitée à 256 octets, alors que la ROM peut monter jusqu'à 64 kibioctets. Mine de rien, faire ainsi est largement suffisant.
Les processeurs de l'époque intégraient parfois les 256 octets de RAM directement dans le processeur. Beaucoup en implémentaient moins, avec par exemple seulement 64 octets de RAM, ou 32 octets, ou 128 octets. L'avantage est que cela éliminait le bus d'adresse des données et ne laissait que le bus d'adresse pour la ROM. On économisait ainsi beaucoup de broches sur le circuit intégré du CPU. Et pour les applications demandant plus de RAM, on pouvait ajouter un circuit séparé qui permettait d'adresser une RAM plus grande. Mais cela sera plus clair avec un exemple.
===Les microcontrôleurs PIC===
Un exemple de système 8 bits est celui des '''microcontrôleurs PIC'''. La gamme des microcontrôleurs PIC est très vaste, et regroupe des microcontrôleurs allant de microcontrôleurs 8 bit aux performances très faible, à des microcontrôleurs 32 bits bien plus puissants. Les microcontrôleurs PIC sont très utilisés dans l'embarqué ou d'informatique industrielle. Ils sont vendu à des volumes assez impressionnants, plusieurs millions par an. Et si vous avez ou êtes en train de faire des études d'électronique, je parie que vous les avez déjà vu en classe, ou que ce ne saurait tarder.
Dans ce qui suit, nous allons nous concentrer sur les microcontrôleurs PIC 8 bits, à savoir les PIC 16, 16 et 18. Les PIC 24, qui sont des microcontrôleurs 16 bits, ne seront pas abordés. Les microcontrôleurs PIC 8 bits incorporent une mémoire RAM très petite, ainsi qu'une architecture Harvard, comme dit plus haut. Le processeur de ces microcontrôleurs a un jeu d'instruction propriétaire, le jeu d'instruction PIC.
La mémoire RAM des microcontrôleurs PIC est très petite, elle dépasse rarement la centaine d'adresse. Pour donner un exemple, le PIC16F84 a une RAM composée de 68 "registres" de 8 bits. Le terme "registres" devrait vous faire tiquer, mais il s'agit bien d'une mémoire SRAM séparée. Simplement, la documentation des PIC qualifie cette mémoire SRAM de "registres", et il faut admettre que la différence entre banc de registre et SRAM séparée est un peu floue.
Un détail est que la SRAM n'a qu'un seul port qui sert à la fois pour les lectures et écritures. Pour compenser, les PIC sont des architectures à accumulateur, où une opérande est lue depuis la SRAM, l'autre depuis l'accumulateur. Leur implémentation de l'accumulateur ajoute une petite subtilité : le résultat d'une opération arithmétique peut être enregistré ailleurs que dans l'accumulateur. Le résultat peut aussi remplacer la seconde opérande, celle lue en mémoire RAM. Dit autrement, le résultat est enregistré dans l'adresse mémoire source. Les instructions de calcul ont le choix : un bit dans leur encodage précise où enregistrer le résultat.
Outre l'accumulateur, les PIC disposent de registres de contrôle, d'un ''program counter'', d'un registre d'état, et d'un pointeur de pile. Le registre d'état contient un registre séparé pour la retenue de l'addition/soustraction. Ce dernier est très important, vu qu'il est nécessaire pour les additions/soustractions sur des opérandes de 16 bits. Le processeur a beau être un CPU 8 bits, il peut être utilisé pour faire des calculs 16 bits, la performance est alors amoindrie, mais ce n'est pas un problème pour les applications d'un tel microcontroleur.
Un détail assez original est que les registres précédents sont mappés en mémoire, à quelques exceptions près ! En clair, on peut y accéder en lisant/écrivant à une adresse mémoire bien précise. Les seules registres qui ne sont pas mappés en mémoire sont l'accumulateur, la pile d'appel, et les registres d'entrée-sortie. Les registres d'entrée-sortie permettent de lire ou écrire sur un port d'entrée-sortie ou de lire un ''timer''. En clair, les PIC ont un espace d'adressage séparé pour les entrées-sorties.
[[File:DocPIC16F84.png|centre|vignette|upright=2|DocPIC16F84]]
Les instructions PIC sont très petites. Les premières versions du jeu d'instruction utilisaient des instructions codées sur 12 bits, dont 5 pour l'adresse mémoire de la seconde opérande. Pour les branchements, 3 bits étaient utilisés pour l'opcode, 9 pour l'adresse de destination. Par la suite, les instructions ont été étendues à 13 bits sur les PIC1670, puis à 14, 15 et 16 bits. Les adresses ont alors été élargies, ce qui permet d'adresser en peu plus de mémoire RAM.
Les instructions se limitent à des additions/soustractions, des opérations bit à bit,des branchements, des instructions LOAD/STORE, ainsi que des opérations de manipulation de bit. Il y a une instruction pour mettre une adresse à zéro, qui peut aussi mettre à zéro l’accumulateur. Les PIC gèrent l'adressage absolu et indirect. L'adressage absolu, celui où l'adresse est intégrée dans l'instruction, est très simple à implémenter. Les adresses prennent moins d'un octet, vu que la taille de la RAM est très petite, les adresses sont très courtes, les intégrer dans des instructions elles-mêmes courtes n'est pas un problème. L'adresse est encodée sur 5 à 7 bits, selon le modèle, ce qui permet d'adresser entre 32 et 128 octets.
Pour ce qui est des branchements, les PIC n'ont pas d'instructions de branchement conditionnels, ils font avec une SKIP instruction et des branchements inconditionnels. Par contre, ils ont des branchements pour les appels et retour de fonction. Mieux que ça, ils intègrent une pile d'appel d'environ 8 adresses de retour. Pour donner une idée, l'adresse de retour est encodée sur 10 bits sur les PIC16F84.
Pour les instructions de manipulation de bit, il y a des instructions pour tester/masquer un bit dans une opérande, 4 en tout ( mettre à 0, mettre à 1, tester si bit = 1, tester si bit = 0). Les instructions qui testent un bit prennent leur opérande dans l'accumulateur. Il y a aussi deux instructions de rotation à gauche et droite, qui tiennent compte de la retenue mémorisée dans le registre d'état. Mentionnons aussi une instruction pour inverser deux ''nibbles'' dans un octet.
Les PIC ont aussi des instructions d'incrémentation et de décrémentation, un peu spéciales. Ces dernières regroupent : une incrémentation normale, une décrémentation normale, une décrémentation fusionnée avec une instruction SKIP, et une incrémentation fusionnée avec une instruction SKIP. Les deux dernières incrémentent/décrémentent l'accumulateur et SKIP l'instruction suivante si le résultat est zéro. Elles permettent de fortement simplifier l'implémentation des boucles qui s'exécutent tant que leur compteur atteint zéro.
[[File:DocPIC16F84 all.png|centre|vignette|upright=2.5|Microarchitecture du PIC16F84.]]
: Les PIC 18 peuvent adresser plus de 156 octets de RAM en utilisant la commutation de banques, une technique qui sera abordée dans plusieurs chapitres.
===Le Fairchild F8 et la console de jeu Fairchild Channel F===
Un autre exemple est la Fairchild F8 de la défunte entreprise Fairchild Semiconductor. Il incorpore un processeur 8 bits, c'est à dire que le processeur fait des calculs sur des entiers de 8 bits maximum, une mémoire RAM de 64 octets, ainsi qu'une mémoire ROM de 1 kibioctet. Les 64 octets de RAM sont certes très peu, mais c'est suffisant pour certaines applications simples, comme les caisses automatiques de l'époque, ou des applications embarquées. Et de toute façon, il est possible d'ajouter de la mémoire RAM supplémentaire si les 64 octets de RAM intégrée ne suffisent pas. Le système était donc modulaire, adaptable selon les besoins, peu cher pour son implémentation minimale sans RAM en plus.
Vu qu'il s'agit d'un des tout premiers ordinateurs, il est sorti à une époque où la technologie était rudimentaire. À cette époque, le processeur était composé de pièces détachées qu'il fallait souder ensemble pour obtenir un processeur fonctionnel. Ce n'est que plus tard qu'est apparu le micro-processeur, qui regroupe un processeur complet dans un seul circuit intégré. Le résultat est que le processeur du Fairchild F8 est coupé en deux, l'unité de calcul et l'unité de contrôle sont placés dans des pièces détachées séparés.
Le microcontrôleur est composé de trois à quatre pièces détachées, certaines étant optionnelles. La première est le '''3850 CPU''', qui regroupe l'unité de calcul et la mémoire RAM intégrée. La seconde est le PSU (''3851 Program Storage Unit''), qui regroupe la mémoire ROM et l'unité de contrôle, ''program counter'' inclut. S'il y a besoin d'utiliser plus de RAM, il faut ajouter un circuit d’interface mémoire, qui est au choix le ''3852 Dynamic Memory Interface'' (DMI) ou le ''3853 Static Memory Interface'', le premier étant connecté à une mémoire de type DRAM, l'autre à une SRAM (nous verrons ce que sont les DRAM et les SRAM dans le prochain chapitre).
[[File:Fairchild F8.png|centre|vignette|upright=2|Fairchild F8]]
Le système minimal est composé d'un PSU et d'un 3850, sans les circuits d'interface mémoire. Le tout donne un système avec un processeur 8 bit, 64 octets de RAM et 1 kibioctet de ROM, les deux mémoires étant intégrées dans le "processeur". Le processeur gérait 4 entrées-sorties, chacune étant reliée avec un bus de 8 bit au processeur. Au passage, en 1977, Mostek a créé un microcontrôleur qui regroupe un PSU et un 3850 : le Mostek 3870. Le système minimal n'avait pas de bus d'adresse, vu que la RAM était intégrée au processeur. C'est les 3852 et 3853 qui ajoutaient un bus d'adresse. Ils ajoutent un bus d'adresse de 16 bits, ce qui permet d'adresser 64 kibioctets de RAM.
[[File:Fairchild-Channel-F.jpg|vignette|un Fairchild Channel F]]
Le Fairchild F8 a été utilisé dans la Fairchild Channel F, une des toute première console de seconde génération, à savoir des consoles qui utilisaient des cartouches de jeu. Avant les consoles de seconde génération, les consoles étaient non-programmables. Elles étaient conçues pour faire tourner un jeu précis, aucun autre, le jeu étant implémenté dans leurs circuits.
La Fairchild Channel F est composé du système minimal, auquel on a ajouté une carte son rudimentaire et 2 kibioctets de mémoire vidéo. La mémoire vidéo sert uniquement pour afficher des images à l'écran : on écrit l'image à afficher dedans, un circuit vidéo se charge de l'afficher à l'écran automatiquement. Le processeur ne fait qu'écrire dans cette RAM vidéo, il ne peut pas en lire le contenu. De la RAM supplémentaire peut cependant être ajoutée dans les cartouches de jeu.
===L'usage d'une architecture Harvard modifiée : les consoles 8 bits===
Pour encore améliorer la situation, il est possible d'utiliser une architecture Harvard modifiée, qui permet de lire des données depuis la mémoire ROM. Cela réduit encore plus les besoins en mémoire RAM. Les constantes manipulées par le programme sont mémorisées en ROM, lues depuis la ROM, au lieu d'être chargées en RAM. Les consoles de jeu utilisaient beaucoup de stratagème.
L'exemple type est celui des consoles 8 bits avec des graphismes en 2D. La cartouche de jeu contenait une ROM, qui mémorisait le code du jeu, les niveaux, les sprites et autres données graphiques. Leur carte graphique lisait directement les ''sprites'' depuis la mémoire ROM, sans avoir à les charger en mémoire vidéo. La mémoire vidéo se contentait de mémoriser le reste des informations graphiques, ainsi que des pointeurs vers les ''sprites'' en ROM. En conséquence, les consoles 8 bits n'avaient pas besoin de beaucoup de RAM, vu qu'une grande partie des données utiles étaient dans une ROM directement accessible par le processeur. A l'opposé, les micro-ordinateurs devaient copier les données d'un jeu depuis une disquette dans la mémoire RAM, ce qui demandait d'avoir plus de RAM.
Le passage au support CD sur les consoles 32 bits a eu la même conséquence. Le processeur ne pouvant pas lire directement le CD à sa guise, il fallait copier les données du CD en RAM. D'où l'apparition de temps de chargement assez longs, inexistants sur support cartouche.
Avec ce genre de stratagèmes, 256 octets de RAM est largement suffisant sur de nombreux systèmes, à condition qu'on ait assez de ROM pour coder un programme digne de ce nom. Par exemple, de nombreux systèmes embarqués simples s'en accommodent : des caisses enregistreuses, des systèmes de régulation de feu de circulation, etc.
===Le HP Nanoprocessor : un processeur sans ALU===
Un dernier exemple est celui du processeur HP Nanoprocessor, de l'entreprise HP. Il a été commercialisé en 1974, en même temps que les premiers micro-processeurs d'Intel. Tous les processeurs de l'époque étaient des processeurs 8 bits et le HP Nanoprocessor ne faisait pas exception. Ce n'était pas un processeur haute performance, il était destiné à des applications d'informatique industrielle ou embarquée. D'ailleurs, il utilisait des transistors de type metal-gate, peu performants, là où ses contemporains utilisait des transistors en silicium, plus performants.
Mais une caractéristique qui rend cela encore plus claire est qu'il n'y a pas d'ALU ! En effet, ce processeur est incapable de faire des additions, des soustractions ou autres opérations simples ! Il est cependant capable d'effectuer des incrémentations et décrémentations, des décalages, des opérations logiques comme des ET/OU/NON/XOR et bien d'autres. Il supporte en tout 48 instructions, avec un support limité des modes d'adressage indirects. Les instructions de branchement étaient des instructions SKIP, il n'y avait pas d'instructions de branchement généralistes.
Pour ce qui est des registres, il disposait de 16 registres de 8 bits et d'un accumulateur. Niveau mémoire, il était relié à une mémoire ROM, rien de plus. Il n'avait de RAM supplémentaire qu'on pouvait lui adjoindre, il devait se débrouiller avec seulement ses registres. Et cela ne posait pas de problèmes pour son usage. Seul le mode d'adressage indirect à registre est supporté, il n'y a pas de registres d'indices. Ce mode d'adressage permet de lire des données en mémoire ROM, la ROM pouvant contenir des tableaux de valeurs constantes.
: Il est possible de lui adjoindre de la RAM via les ports d'entrée-sortie, ainsi qu'une ALU, mais RAM et ALU sont traités comme des périphériques avec lesquels on communique, ils ne sont pas intégrés au processeur.
Niveau micro-architecture, il incorporait une unité de calcul logique et un circuit comparateur. Le comparateur était un circuit comparateur série des plus basiques, qui était utilisé pour les instructions de branchement et associées. L'unité de calcul logique gérait des incrémentations/décrémentation, des décalages, les opérations logiques et quelques autres. L'unité de calcul logique était bit-slicée, à savoir conçue en assemblant 8 ALU de 1 bit chacune, enchainées en série. Le tout était combiné à des circuits de ''carry skip''.
[[File:Unité de calcul du HP nanonprocessor.png|centre|vignette|upright=2|Unité de calcul du HP nanoprocessor]]
Son unité de décodage d'instruction était très simple, essentiellement basée sur des portes NOR, grâce à un encodage efficace des instructions machine. Le ''program counter'' fait 11 bits, ce qui permet d'adresser une ROM de 2 kibioctets. Le ''program counter'' était relié à un circuit incrémenteur qui gérait les isntructions SKIP (il pouvait incrémenter le ''program counter'' par pas de 1 ou de 2 en cas de SKIP). Le processeur contient aussi deux registres, qui servent en quelque sorte de pile d'adresse de retour. Un premier registre mémorise l'adresse de retour d'une fonction, l'autre mémorise le ''program counter'' lors d'une interruption, pour savoir où brancher à la fin de l'interruption.
[[File:HP nanoprocessor.png|centre|vignette|upright=2.5|HP nanoprocessor]]
Fait intéressant, le concepteur du processeur a gracieusement donné les masques utilisés pour graver le silicium du processeur au site [https://www.cpushack.com/ CPU Shack]. Les masques en question sont disponibles ici :
* [https://www.cpushack.com/2020/08/20/hp-nanoprocessor-mask-set/ HP NanoProcessor Mask Set]
* [https://www.cpushack.com/2020/08/09/the-forgotten-ones-hp-nanoprocessor/ The Forgotten Ones: HP Nanoprocessor]
Les masques ont été analysés par Ken Shirrif dans cet article de blog :
* [https://www.righto.com/2020/09/hp-nanoprocessor-part-ii-reverse.html HP Nanoprocessor part II: Reverse-engineering the circuits from the masks]
==Les processeurs 8/16 bits à architecture Von Neumann==
L'usage d'une architecture Harvard est une solution pour adresser plus de mémoire avec des CPU 8 bits. Mais plusieurs microprocesseurs commerciaux n'utilisaient pas cette solution. À la place, c'était des architectures Von Neumann, mais qui étaient capables de gérer des adresses de 16 bits. Les données faisaient 8 bits, les registres faisaient 8 bits, mais quelques techniques permettaient de gérer des adresses de 16 bits. Nous parlerons de '''processeurs 8/16 bits''' pour les désigner, et nous allons les étudier à part.
Un point important est que la gestion d'adresses de 16 bits permet d'adresser 64 kibioctets, qui peuvent être remplis avec de la RAM et de la ROM. On a donc le meilleur des mondes : 64 kibioctets de mémoire, mais avec des données de 8 bits et les économies de circuit qui vont avec. L'avantage est que le processeur peut maintenant gérer une vraie pile d'appel, pas seulement une pile d'adresse de retour. Il lui suffit pour cela d'intégrer un pointeur de pile codé sur 16 bits.
===Les modes d'adressage par page des CPU Motorola===
Les processeurs Motorola 8 bits étaient des processeurs 8 bits avec un bus d'adresse de 16 bits. C'était des processeurs à accumulateur incorporant deux registres d'indice, un registre d'état, un pointeur de pile, et un ''program counter''. Tous les registres sont reliés au bus d'adresse, sauf le registre d'état et l’accumulateur. Tous les registres font 8 bits, sauf le ''program counter''. La pile est câblée pour être dans un bloc de 256 octets compris entre l'adresse 1 0000 0000 et l'adresse 1 1111 1111, ce qui fait que son adressage se fait avec un seul octet.
[[File:6502-architecture.svg|centre|vignette|upright=1.5|Architecture simplifiée du 6502.</br> X et Y : registres d'indice ;</br> S : le pointeur de pile ;</br> A : accumulateur ;</br>P : registre d'état.</br>]]
Les processeurs Motorola 8 bits utilisaient une méthode simple pour adresser 64 kibioctets de RAM, avec des registres de 8 bits. Pour cela, ils utilisaient une variante de l'adressage base + décalage. Elle améliore l'adressage absolu, qui intègre l'adresse à lire/écrire dans l'instruction elle-même. L'adresse en question est de 8 bits et n'encode que les 8 bits de poids faible de l'adresse, les 8 bits de poids fort sont dans un '''registre de page''' adressé implicitement. L'adresse finale est obtenue en concaténant ce registre avec l'adresse mémoire intégrée dans l’instruction. Le résultat est que la mémoire était découpée en blocs de 256 consécutifs, chacun pouvant servir de fenêtre de 256 octets. Une page est réservée pour la pile, la seconde, comme dit plus haut.
Formellement, ce mode d'adressage a des ressemblances avec la commutation de banques, une technique qu'on verra dans les chapitres sur l'espace d'adressage et la mémoire virtuelle. Mais ce n'en est pas du tout : le registre de page est utilisé uniquement pour les accès mémoire avec le mode d'adressage base + décalage, mais pas pour les autres accès mémoire, qui gèrent des adresses complètes. Notons que l'usage d'un registre de page dédié fait que celui-ci est adressé implicitement.
Il faut noter que la technique a été utilisée sur des processeurs 16 bits, pour contourner la petite taille des instructions. Un exemple est celui du HP 2100, un processeur 16 bits. Il avait un registre de page de 5 bits et encodait 10 bits d'adresse dans ses instructions. Ses instructions d'accès mémoire disposaient d'un bit qui choisit quel mode d'adressage utiliser. S'il était à 0, l'adressage absolu était utilisé, le registre de page n'était pas utilisé. Mais s'il était à 1, le registre de page était utilisé pour calculer l'adresse.
Une évolution de l'adressage précédent est le '''mode page direct'''. Avec lui, le registre de page est étendu et contient une adresse mémoire complète. L'adresse finale n'est pas obtenue par concaténation, mais en additionnant le registre de page avec l'adresse fournie par adressage absolu + décalage. Un exemple est celui des premiers processeurs Motorola, qui géraient des adresses courtes de 8 bits. L'adresse courte de 8 bits correspondait non pas aux 256 premiers octets de la mémoire, mais à une fenêtre de 256 octets déplaçable en mémoire. La position de la fenêtre de 256 octets était spécifiée par le registre de page de 16 bits, qui précisait l'adresse du début de la fenêtre, celle de sa première donnée.
Il s'agit donc formellement d'adressage base + décalage, à un détail près : il n'y a qu'un seul registre de base. Le fait que ce registre de base soit unique fait qu'il est adressé implicitement, on n'a pas à encoder le numéro/noms de registre dans l'instruction. Le registre de base est utilisé uniquement pour l'adressage absolu, pas pour les autres accès mémoire. S'il y a des ressemblances avec la segmentation, une technique de mémoire virtuelle qu'on abordera dans quelques chapitres, ce n'en est pas vu que le registre de base est utilisé seulement pour un mode d'adressage bien précis.
===Le ''pseudo-aliasing'' des registres des processeurs Intel x86===
Voyons maintenant le cas des anciens processeurs 8 bits d'Intel à savoir l'Intel 4004, 4040, 8008 et 8080. Le Z80, un processeur inspiré des CPU Intel 8 bits, est aussi concerné. Avant de poursuivre, parlons des registres de ces processeurs. Les premiers CPU Intel incorporaient 7 registres de 8 bits nommés A, B, C, D, E, F, H, L, SP. Ils correspondent respectivement à : l'accumulateur A ; six registres nommés B, C, D, E, H et L ; le registre d'état F ; le pointeur de pile SP. Le Z80 ajoute deux registres d'indice X et Y. De plus, le Z80 dispose de registres d'interruption, qui sont en quelque sorte des copies des registres A, B, C, D, E, F, H, L. Le tout est illustré dans le tableau ci-dessous.
{|class="wikitable" style="text-align:center;"
|-
!
! Registres des CPU Intel
! Registres supplémentaires du Z80
|-
! Accumulateur
| A
| A'
|-
! Registre d'état
| F
| F'
|-
! Registres généraux
| B, C, D, E, H, L
| B', C', D', E', H', L'
|-
! Pointeur de pile
| colspan="2" | SP (sauf pour le 8008)
|-
! Registres d'indice
|
| X et Y
|}
Le 8008 incorpore une pile d'appel de 7 adresses, dans le processeur lui-même. Il en est de la même avec le 4004 et le 4040, comme on le verra dans la section sur les processeurs 4 bits. Mais le 8080 et le 8085 ont remplacé le tout par un simple pointeur de pile, afin d'avoir une véritable pile d'appel. Autant c'est impossible d'avoir une pile d'appel avec seulement 256 octets de mémoire, autant on peut se le permettre avec 65 536 adresses.
Pour gérer des adresses de 16 bits, ils auraient pu utiliser des registres d'adresse séparés, mais on préféré un système de '''pseudo-''aliasing'' de registres'''. Formellement, c'est un système qui concatène deux registres 8 bits pour obtenir une adresse de 16 bits. L’appariement a lieu lors de certaines opérations bien précises, qui n'ont de sens que pour les adresses : la lecture/écriture en mémoire, et l'incrémentation.
Il y avait cependant des contraintes quant aux paires de registres possibles, toutes les paires de registres n'étaient pas autorisées. Les CPU concernés sont donc des processeurs hybrides accumulateur-registre généraux. L'accumulateur ne peut pas être appairé, seuls les registres généraux le peuvent. Le Z80 autorise plus de paires que les CPU Intel. Voici les paires de registres qui pouvaient servir d'adresse 16 bits :
* Les CPU 8008 d'Intel autorisait une seule paire formée des registres H et L.
* Les autres processeurs, à savoir le 8080, le 8085 et le Z80, autorisaient : les paires BC, DE et HL.
Le 8008 ne gérait que des opérations sur 8 bits. Mais le 8080 et le 8085 ont ajouté des instructions 16 bits qui agissaient sur des paires de registre, que le Z80 a repris. Une paire de registres est considérée comme un registre unique de 16 bits pour certaines opérations arithmétiques, dont l'incrémentation. Voici la liste des instructions concernées :
* INC et DEC pour l'incrémentation et la décrémentation ;
* DAD : additionne le registre HL avec une autre paire (Hl inclus) ;
* LXI : copie une constante immédiate dans une paire de registres ;
* LHLD : lit 16 depuis la mémoire et l'enregistre dans une paire de registres ;
* SHLD : copie 16 bits depuis une paire de registres et l'enregistre en mémoire ;
* PUSH et POP : empile ou dépilent une paire de registre sur la pile ;
* XTHL : échange la paire HL avec les 16 bits au sommet de la pile d'appel ;
* XCHG : échange le contenu de la paire HL et DE.
Pour résumer, le processeur avait des instructions LOAD, STORE, PUSH et POP adaptées pour gérer des paires de registre. De plus, l'instruction XCHG permettait d’échanger le contenu des paires DE et HL. L'instruction a été étendue sur les processeurs 16 bits pour échanger tous les registres. Mais l'implémentation était alors différente. L'incrémentation sur une paire de 16 bit était très utile, car les adresses sont souvent incrémentées quand on parcours un tableau. Ces instructions nous donnent quelques indices sur ce qu'il y a dans le processeur.
Le système de pseudo-aliasing a un impact sur le banc de registre. Le banc de registre regroupe les registres généraux et le pointeur de pile, mais ne contient pas l'accumulateur. Les contraintes sur les paires de registres possibles ne s'expliquent que d'une seule manière : le banc de registre contient des registres de 16 bits, une paire de registres 8 bits est mémorisée dans un registre unique. Il faut donc faire une différence entre les registres architecturaux de 8 bits, et les registres réels de 16 bits.
Le banc de registre a un port de 8 bits pour les données, qui est fabriqué à partir d'un port 16 bits auquel on a rajouté un multiplexeur pour choisir soit l'octet de poids faible, soit l'octet de poids fort. Le bus de données fait 8 bits, ce qui fait que les instructions LOAD, STORE, PUSH et POP pour paires 16 bits sont réalisées en deux fois : on lit/écrit l'octet de poids faible, puis celui de poids fort. Par contre, le bus d'adresse fait bien 16 bits. Cela suggère que le banc de registre dispose d'un port de 16 bits dédié aux adresses, en plus du port de données 8 bits.
[[File:Architecture d'un CPU 8-16 bits avec un banc de registre double port.png|centre|vignette|upright=2|Architecture d'un CPU 8-16 bits avec un banc de registre double port]]
L'incrémentation d'une paire 16 bits ne coute rien à implémenter, ou presque. En effet, le processeur incorpore un incrémenteur 16 bits pour le ''program counter'', qui est relié au bus d'adresse. L'idée est de rentabiliser cet incrémenteur, en lui permettant d'incrémenter des données/adresses de 16 bits obtenues via pseudo-aliasing. De même, il peut être utilisé pour incrémenter le pointeur de pile, voire un compteur de rafraichissement mémoire (pour rappel, le rafraîchissement mémoire demande de balayer la mémoire d'adresse en adresse et été fait par le CPU à l'époque). Pour cela, il suffit de connecter le ''program counter'', le banc de registre, et l'incrémenteur, via un bus dédié.
[[File:Calcul d'adresse par ALU dédiée avec PC séparé.png|centre|vignette|upright=2|Calcul d'adresse par ALU dédiée avec PC séparé]]
Notez qu'on peut encore simplifier le tout en placant le ''program counter'' dans le banc de registre, ce qui ne gênera pas le travail de l'incrémenteur mais simplifiera le câblage au bus d'adresse. Ce n'était pas systématique, certains processeurs mettaient le ''program counter'' dans le banc de registre, d'autres non.
: Inclure le ''program counter'' dans le banc de registre permet parfois de remplir un vide. Par exemple, sur un processeur avec 12 registres, le banc de registre devrait faire idéalement 16 registres, inclure le ''program counter'' dedans fait monter le tout à 13.
[[File:Architecture d'un CPU 8-16 bits.png|centre|vignette|upright=2|Architecture d'un CPU 8-16 bits]]
Les processeurs Intel 8 bits, à savoir le 8008, le 8080 et le 8085 ; mettaient le ''program counter'' dans le banc de registre. Vous avez donc toutes les armes pour comprendre leur micro-architecture. Par exemple, voici la micro-architecture du processeur 8080. Remarquez le banc de registre, qui contient tous les registres sauf l'accumulateur et le registre. Il a deux ports : un pour les adresses et un pour les données. Notez le dé-multiplexeur sur le port de donnée. Pour le reste, il s'agit d'une architecture à accumulateur hybride des plus classiques.
[[File:Intel 8080 arch.svg|centre|vignette|upright=3|Microarchitecture de l'Intel 8080.]]
Le Z80 est un processeur inspiré du design des processeurs Intel 8 bits, mais avec pas mal d'améliorations. Un point particulier de ce processeur est son banc de registre. Il contient tous les registres du processeur, y compris l'accumulateur et le registre d'état ! Les seuls registres en-dehors du banc de registre sont le ''program counter'' et un compteur de rafraichissement mémoire IR.
Un autre point particulier est que les registres dans le banc de registres avaient une copie séparée accessible uniquement pour les interruptions, via fenêtrage de registres. Et l'accumulateur et le registre d'état étant dans le banc de registre, il y avait deux accumulateurs et deux registres d'état. Les registres A, B, C, D, E et F étaient dupliqués, par le pointeur de pile ni les registres d'indice. Les copies des registres étaient nommées A', B', C', D', E' et F'.
Le Z80 supportait des instructions d'échange de registre en plus des CPU Intel 8 bits. L'instruction EX peut échanger soit le contenu des paires D,E et H,F, soit la paire A,F avec la paire A',F'. L'instruction EXX échange les paires BC, DE, HL avec les paires BC', DE', HL'. En faisant cela, le programmeur pouvait utiliser deux fois plus de registres généraux s'il n'utilisait pas les interruptions. L'échange de paires se fait sans copies de registres, mais simplement en modifiant l'adresse envoyée sur le banc de registre. Pour cela, plusieurs bascules mémorisent des bits qui indiquent si les paires ont été échangées ou non. Il y a une bascule pour les paires DE , HL ; une autre pour les paires A,F et paire A',F', une dernière pour l'instruction EXX. En combinant ces bascules avec les noms de registres envoyés par le séquenceur, on peut échanger les paires de registres.
==Le cas particulier des processeurs 4 bits : le 4004 d'Intel==
L'Intel 4004 était le tout premier micro-processeur. Il s'agissait d'un microprocesseur de 4 bits, basé sur une architecture à accumulateur. Il disposait d'un accumulateur et de 16 registres d'indice, tous de 4 bits. Il faisait des calculs sur des données de 4 bits, appelées des nibbles. Cependant, sur ses 46 instructions machines supportées, 41 agissaient sur des opérandes de 8 bits, les 5 restantes sur des opérandes de 16 bits. Simplement, les calculs se faisaient en deux fois, en échangeant des données entre mémoire RAM et accumulateur.
Le 4004 est un circuit intégré avec peu de broches. Il dispose notamment d'un bus de données/adresse, qui est multiplexé, c’est-à-dire qu'il sert alternativement de bus de données et de bus d'adresse selon les besoins. Le bus de commande mémoire fait 5 bits, dont 4 pour les chips de RAM, un pour la ROM. Les adresses sont codées sur 12 bits, les données sur 4 et les instructions sur 8 bits. L'envoi d'une adresse sur le bus se fait en plusieurs fois, de même que la lecture d'une instruction. Il s'agit là d'une adaptation pour outrepasser les limitations d'un processeur 4 bit.
[[File:Intel 4004 processor pinout.png|centre|vignette|upright=2|Broches de l'Intel 4004. Nous verrons à quoi elles servent plus bas.]]
===L'espace d'adressage de l'Intel 4004===
Les adresses du processeur sont sur 12 bits, ce qui fait 4096 adresses différentes. Elles regroupent à la fois la ROM et la mémoire RAM, vu que l'architecture est une sorte de mélange bizarre entre une architecture Von Neumann et Harvard. Le processeur gère bien deux espaces d'adressage séparés, mais la RAM et la ROM sont reliés au même bus. La sortie CM-ROM du processeur indique si l'adresse envoyée correspond à la RAM ou la ROM. Un circuit de décodage d'adresse active ou désactive la RAM selon la valeur de ce bit, l'inverse pour la ROM, en agissant sur leurs bits Chip Select. Seule la RAM ou la ROM répondent alors à l'adresse.
Pour ce qui est de la RAM, le circuit de décodage d'adresse pouvait gérer au maximum 1024 adresses différentes, chacune contenant un nibble. Pour cela, le CPU 4004 était relié à une ou plusieurs RAM externes, des Intel 4002. Chaque Intel 4002 contenait 64 nibbles de données, plus 16 nibbles de statut qu'on ne détaillera pas ici. Les nibbles de statut étaient accessibles en utilisant des instructions d'entrée-sortie, donc pas avec des lectures/écritures mémoire. Les 64 nibbles de données sont découpés en 4 groupes de 16 nibbles. Le CPU pouvait être relié à maximum 16 Intel 4002, ce qui fait 1024 nibbles de données et 256 nibbles de statut. L'ensemble permet de remplir l'espace d'adressage de 1024 adresses.
===Le registre de page et le pseudo-aliasing des registres===
Sélectionner une adresse mémoire utilisait un mélange entre pseudo-aliasing et registre de page. Pour les données, les 1024 adresses étaient découpées en 4 pages de 256 adresses. Pour la ROM, les 4096 adresses étaient découpées en 16 pages de 256 adresses. Localiser une donnée dans une page ne requiert que 8 bits, 2/4 bits supplémentaires permettent de sélectionner la page voulue. Le registre de page était dans le processeur lui-même, et était relié aux sorties du processeur nommées CM-RAM 0, 1, 2 et 3. Les 4 sorties encodaient un nombre qui permet de sélectionner le numéro de page voulu.
Le registre de page fait 5 bits : un pour distinguer RAM et ROM, 4 bits pour sélectionner la page voulue. L'avantage est que la carte mère gère au maximum 16 chips de RAM, ce qui colle parfaitement avec les 4 utilisés pour sélectionner une page. Un chip de RAM correspond à une page, et chacun est activé ou désactivé suivant la page sélectionnée. Pour cela, il suffit d'ajouter un décodeur sur la carte mère, qui prend les 4 bits du registre de page et fournit les signaux Chip Select aux différents chips de RAM.
Reste alors à utiliser les 8 bits d'adresse à l'intérieur d'un chip de RAM. Le 4004 permettait de concaténer deux registres d'indice de 4 bits pour former une adresse de 8 bits. Les instructions d'accès mémoire pouvaient ainsi préciser une paire de registre d'indice pour préciser quelle adresse lire/écrire. Idem pour les branchements indirects : le processeur supportait une instruction de branchement indirect qui précisait l'adresse dans une paire de registres d'indice. Les registres d'indice sont donc assez mal nommés sur cette architecture, vu qu'ils peuvent servir soit de registre d'indice, soit de demi-registre d'adresse. Il s'agit là du système de pseudo-aliasing des registres, mais appliqué aux registres d'indice.
L'Intel 4004 gérait deux instructions pour gérer les adresses mémoires. La première, l'instruction DCL (''Designate Command Line'') configure le registre de page. Elle prend en entrée un numéro de page et le copie dans le registre de page. L'opérande peut provenir d'un registre d'indice ou de l'accumulateur. La seconde, l'instruction SRC (''Send Register Control'') concatène deux registres d'indice pour obtenir une adresse de 8 bits. Un accès mémoire se fait donc en maximum trois instructions : une qui configure le registre de page si ce n'est pas déjà fait, une instruction SRC pour envoyer l'adresse, et une troisième instruction qui dit s'il faut faire une lecture ou une écriture.
===La microarchitecture de l'Intel 4004===
Il incorporait une pile d'adresse de retour intégrée au processeur. La pile d'adresse acceptait exactement 3 adresses maximum. Elle était regroupée avec le ''program counter'' dans un banc de registre, de 4 registres. Le ''program counter'' et le pointeur de pile faisaient chacun 12 bits, soit trois nibble. Ils étaient incrémentés par un incrémenteur dédié.
SI on omet le registre de page et la pile d'adresse, le 4004 est une architecture à accumulateur des plus classiques, avec un bus interne unique, un banc de registre pour les registres d'indices, un accumulateur relié à une unité de calcul. Les registres d'indice étaient dans un banc de registre séparés, car ils faisaient 4 bits chacun, contrairement au pointeur de pile et le ''program counter''. Un détail important est que les bancs de registres du 4004 étaient implémentés avec de la DRAM, et non des registres usuels fabriqués avec des bascules 1 bit.
[[File:Microarchitecture de l'Intel 4004.png|centre|vignette|upright=2.5|Microarchitecture de l'Intel 4004]]
<noinclude>
{{NavChapitre | book=Fonctionnement d'un ordinateur
| prev=Les architectures à pile et mémoire-mémoire
| prevText=Les architectures à pile et mémoire-mémoire
| next=Les processeurs de traitement du signal
| nextText=Les processeurs de traitement du signal
}}
</noinclude>
ncensdynerjtdl2vyoc2eb0y2xe8c9w
765689
765688
2026-05-01T15:15:34Z
Mewtow
31375
/* Les microcontrôleurs PIC */
765689
wikitext
text/x-wiki
Nous avons déjà abordé la notion de processeur 8, 16, 32, 64 bits. Elle désigne la taille des registres généraux, ou de l'accumulateur. De nos jours, les processeurs 32 et 64 bits sont la norme, mais les premiers micro-processeurs étaient des processeurs 4 et 8, avant de passer rapidement au 16 bits. La raison est que leur budget en transistor limité faisait qu'on ne pouvait pas utiliser une ALU trop grande : une ALU 8 bit prend deux fois moins de place et de transistors qu'une ALU 16 bits. Cependant, les processeurs 8 bits avaient de sérieuses limitations qui étaient compensées par diverses solutions. Dans ce chapitre, nous allons faire une revue rapide des processeurs 8 bits et de leurs fonctionnalités.
La principale limitation des CPU 8 bits était l'adressage : des registres de 8 bits limitaient l'espace d'adressage à seulement 256 adresses, soit à peine 256 octets ! Intuitivement, on se dit que 256 octets est purement impraticable, on ne peut rien faire d'intéressant avec seulement 256 de RAM + ROM. Et c'est partiellement vrai. L'adage veut que 16 bits est la taille minimale intéressante, la limite à partir de laquelle on a assez de mémoire RAM/ROM pour coder des applications intéressantes. Mais 256 octets de RAM est largement suffisant sur de nombreux systèmes embarqués simples s'en accommodent : des caisses enregistreuses, des systèmes de régulation de feu de circulation, etc.
Pour les applications demandant plus de mémoire RAM, les CPU de l'époque contournaient la limitation de 256 octets de RAM avec de nombreux stratagèmes. Dans ce qui va suivre, nous allons séparer les CPU 8 bits selon qu'ils utilisent une architecture Harvard ou une architecture Von Neumann. La raison est qu'une architecture Harvard permet en soi de contourner partiellement ce problème d'adressage. Les choses sont plus compliquées avec une architecture Von Neumann.
==Les processeurs 8/16 bits à architecture Harvard ==
La première solution est d'utiliser une architecture Harvard. Le processeur 8 bit a alors deux espaces d'adressage : un pour la RAM, un autre pour la ROM. Et les deux utilisent des adresses de taille différente. La ROM est reliée à un bus d'adresse de 16 bits, alors que la RAM est elle connectée à un bus d'adresse de 8 bits. La RAM est donc limitée à 256 octets, alors que la ROM peut monter jusqu'à 64 kibioctets. Mine de rien, faire ainsi est largement suffisant.
Les processeurs de l'époque intégraient parfois les 256 octets de RAM directement dans le processeur. Beaucoup en implémentaient moins, avec par exemple seulement 64 octets de RAM, ou 32 octets, ou 128 octets. L'avantage est que cela éliminait le bus d'adresse des données et ne laissait que le bus d'adresse pour la ROM. On économisait ainsi beaucoup de broches sur le circuit intégré du CPU. Et pour les applications demandant plus de RAM, on pouvait ajouter un circuit séparé qui permettait d'adresser une RAM plus grande. Mais cela sera plus clair avec un exemple.
===Les microcontrôleurs PIC===
Les '''microcontrôleurs PIC''' regroupent des microcontrôleurs allant de microcontrôleurs 8 bit aux performances très faible, à des microcontrôleurs 32 bits bien plus puissants. Les microcontrôleurs PIC sont très utilisés dans l'embarqué ou d'informatique industrielle. Ils sont vendu à des volumes assez impressionnants, plusieurs millions par an. Et si vous avez ou êtes en train de faire des études d'électronique, je parie que vous les avez déjà vu en classe, ou que ce ne saurait tarder. Dans ce qui suit, nous allons nous concentrer sur les microcontrôleurs PIC 8 bits, à savoir les PIC 16, 16 et 18. Les PIC 24, qui sont des microcontrôleurs 16 bits, ne seront pas abordés.
Les microcontrôleurs PIC 8 bits incorporent une mémoire RAM très petite, ainsi qu'une architecture Harvard, comme dit plus haut. La mémoire RAM des microcontrôleurs PIC est très petite, elle dépasse rarement la centaine d'adresse. Pour donner un exemple, le PIC16F84 a une RAM composée de 68 "registres" de 8 bits. Le terme "registres" devrait vous faire tiquer, mais il s'agit bien d'une mémoire SRAM séparée. Simplement, la documentation des PIC qualifie cette mémoire SRAM de "registres", et il faut admettre que la différence entre banc de registre et SRAM séparée est un peu floue.
Un détail est que la SRAM n'a qu'un seul port qui sert à la fois pour les lectures et écritures. Pour compenser, les PIC sont des architectures à accumulateur, où une opérande est lue depuis la SRAM, l'autre depuis l'accumulateur. Leur implémentation de l'accumulateur ajoute une petite subtilité : le résultat d'une opération arithmétique peut être enregistré ailleurs que dans l'accumulateur. Le résultat peut aussi remplacer la seconde opérande, celle lue en mémoire RAM. Dit autrement, le résultat est enregistré dans l'adresse mémoire source. Les instructions de calcul ont le choix : un bit dans leur encodage précise où enregistrer le résultat.
Outre l'accumulateur, les PIC disposent de registres de contrôle, d'un ''program counter'', d'un registre d'état, et d'un pointeur de pile. Le registre d'état contient un registre séparé pour la retenue de l'addition/soustraction. Ce dernier est très important, vu qu'il est nécessaire pour les additions/soustractions sur des opérandes de 16 bits. Le processeur a beau être un CPU 8 bits, il peut être utilisé pour faire des calculs 16 bits, la performance est alors amoindrie, mais ce n'est pas un problème pour les applications d'un tel microcontroleur.
Un détail assez original est que les registres précédents sont mappés en mémoire, à quelques exceptions près ! En clair, on peut y accéder en lisant/écrivant à une adresse mémoire bien précise. Les seules registres qui ne sont pas mappés en mémoire sont l'accumulateur, la pile d'appel, et les registres d'entrée-sortie. Les registres d'entrée-sortie permettent de lire ou écrire sur un port d'entrée-sortie ou de lire un ''timer''. En clair, les PIC ont un espace d'adressage séparé pour les entrées-sorties.
[[File:DocPIC16F84.png|centre|vignette|upright=2|DocPIC16F84]]
Le processeur de ces microcontrôleurs a un jeu d'instruction propriétaire, le jeu d'instruction PIC. Les instructions PIC sont très petites. Les premières versions du jeu d'instruction utilisaient des instructions codées sur 12 bits, dont 5 pour l'adresse mémoire de la seconde opérande. Pour les branchements, 3 bits étaient utilisés pour l'opcode, 9 pour l'adresse de destination. Par la suite, les instructions ont été étendues à 13 bits sur les PIC1670, puis à 14, 15 et 16 bits. Les adresses ont alors été élargies, ce qui permet d'adresser en peu plus de mémoire RAM.
Les instructions se limitent à des additions/soustractions, des opérations bit à bit,des branchements, des instructions LOAD/STORE, ainsi que des opérations de manipulation de bit. Il y a une instruction pour mettre une adresse à zéro, qui peut aussi mettre à zéro l’accumulateur. Les PIC gèrent l'adressage absolu et indirect. L'adressage absolu, celui où l'adresse est intégrée dans l'instruction, est très simple à implémenter. Les adresses prennent moins d'un octet, vu que la taille de la RAM est très petite, les adresses sont très courtes, les intégrer dans des instructions elles-mêmes courtes n'est pas un problème. L'adresse est encodée sur 5 à 7 bits, selon le modèle, ce qui permet d'adresser entre 32 et 128 octets.
Pour ce qui est des branchements, les PIC n'ont pas d'instructions de branchement conditionnels, ils font avec une SKIP instruction et des branchements inconditionnels. Par contre, ils ont des branchements pour les appels et retour de fonction. Mieux que ça, ils intègrent une pile d'appel d'environ 8 adresses de retour. Pour donner une idée, l'adresse de retour est encodée sur 10 bits sur les PIC16F84.
Pour les instructions de manipulation de bit, il y a des instructions pour tester/masquer un bit dans une opérande, 4 en tout ( mettre à 0, mettre à 1, tester si bit = 1, tester si bit = 0). Les instructions qui testent un bit prennent leur opérande dans l'accumulateur. Il y a aussi deux instructions de rotation à gauche et droite, qui tiennent compte de la retenue mémorisée dans le registre d'état. Mentionnons aussi une instruction pour inverser deux ''nibbles'' dans un octet.
Les PIC ont aussi des instructions d'incrémentation et de décrémentation, un peu spéciales. Ces dernières regroupent : une incrémentation normale, une décrémentation normale, une décrémentation fusionnée avec une instruction SKIP, et une incrémentation fusionnée avec une instruction SKIP. Les deux dernières incrémentent/décrémentent l'accumulateur et SKIP l'instruction suivante si le résultat est zéro. Elles permettent de fortement simplifier l'implémentation des boucles qui s'exécutent tant que leur compteur atteint zéro.
[[File:DocPIC16F84 all.png|centre|vignette|upright=2.5|Microarchitecture du PIC16F84.]]
: Les PIC 18 peuvent adresser plus de 156 octets de RAM en utilisant la commutation de banques, une technique qui sera abordée dans plusieurs chapitres.
===Le Fairchild F8 et la console de jeu Fairchild Channel F===
Un autre exemple est la Fairchild F8 de la défunte entreprise Fairchild Semiconductor. Il incorpore un processeur 8 bits, c'est à dire que le processeur fait des calculs sur des entiers de 8 bits maximum, une mémoire RAM de 64 octets, ainsi qu'une mémoire ROM de 1 kibioctet. Les 64 octets de RAM sont certes très peu, mais c'est suffisant pour certaines applications simples, comme les caisses automatiques de l'époque, ou des applications embarquées. Et de toute façon, il est possible d'ajouter de la mémoire RAM supplémentaire si les 64 octets de RAM intégrée ne suffisent pas. Le système était donc modulaire, adaptable selon les besoins, peu cher pour son implémentation minimale sans RAM en plus.
Vu qu'il s'agit d'un des tout premiers ordinateurs, il est sorti à une époque où la technologie était rudimentaire. À cette époque, le processeur était composé de pièces détachées qu'il fallait souder ensemble pour obtenir un processeur fonctionnel. Ce n'est que plus tard qu'est apparu le micro-processeur, qui regroupe un processeur complet dans un seul circuit intégré. Le résultat est que le processeur du Fairchild F8 est coupé en deux, l'unité de calcul et l'unité de contrôle sont placés dans des pièces détachées séparés.
Le microcontrôleur est composé de trois à quatre pièces détachées, certaines étant optionnelles. La première est le '''3850 CPU''', qui regroupe l'unité de calcul et la mémoire RAM intégrée. La seconde est le PSU (''3851 Program Storage Unit''), qui regroupe la mémoire ROM et l'unité de contrôle, ''program counter'' inclut. S'il y a besoin d'utiliser plus de RAM, il faut ajouter un circuit d’interface mémoire, qui est au choix le ''3852 Dynamic Memory Interface'' (DMI) ou le ''3853 Static Memory Interface'', le premier étant connecté à une mémoire de type DRAM, l'autre à une SRAM (nous verrons ce que sont les DRAM et les SRAM dans le prochain chapitre).
[[File:Fairchild F8.png|centre|vignette|upright=2|Fairchild F8]]
Le système minimal est composé d'un PSU et d'un 3850, sans les circuits d'interface mémoire. Le tout donne un système avec un processeur 8 bit, 64 octets de RAM et 1 kibioctet de ROM, les deux mémoires étant intégrées dans le "processeur". Le processeur gérait 4 entrées-sorties, chacune étant reliée avec un bus de 8 bit au processeur. Au passage, en 1977, Mostek a créé un microcontrôleur qui regroupe un PSU et un 3850 : le Mostek 3870. Le système minimal n'avait pas de bus d'adresse, vu que la RAM était intégrée au processeur. C'est les 3852 et 3853 qui ajoutaient un bus d'adresse. Ils ajoutent un bus d'adresse de 16 bits, ce qui permet d'adresser 64 kibioctets de RAM.
[[File:Fairchild-Channel-F.jpg|vignette|un Fairchild Channel F]]
Le Fairchild F8 a été utilisé dans la Fairchild Channel F, une des toute première console de seconde génération, à savoir des consoles qui utilisaient des cartouches de jeu. Avant les consoles de seconde génération, les consoles étaient non-programmables. Elles étaient conçues pour faire tourner un jeu précis, aucun autre, le jeu étant implémenté dans leurs circuits.
La Fairchild Channel F est composé du système minimal, auquel on a ajouté une carte son rudimentaire et 2 kibioctets de mémoire vidéo. La mémoire vidéo sert uniquement pour afficher des images à l'écran : on écrit l'image à afficher dedans, un circuit vidéo se charge de l'afficher à l'écran automatiquement. Le processeur ne fait qu'écrire dans cette RAM vidéo, il ne peut pas en lire le contenu. De la RAM supplémentaire peut cependant être ajoutée dans les cartouches de jeu.
===L'usage d'une architecture Harvard modifiée : les consoles 8 bits===
Pour encore améliorer la situation, il est possible d'utiliser une architecture Harvard modifiée, qui permet de lire des données depuis la mémoire ROM. Cela réduit encore plus les besoins en mémoire RAM. Les constantes manipulées par le programme sont mémorisées en ROM, lues depuis la ROM, au lieu d'être chargées en RAM. Les consoles de jeu utilisaient beaucoup de stratagème.
L'exemple type est celui des consoles 8 bits avec des graphismes en 2D. La cartouche de jeu contenait une ROM, qui mémorisait le code du jeu, les niveaux, les sprites et autres données graphiques. Leur carte graphique lisait directement les ''sprites'' depuis la mémoire ROM, sans avoir à les charger en mémoire vidéo. La mémoire vidéo se contentait de mémoriser le reste des informations graphiques, ainsi que des pointeurs vers les ''sprites'' en ROM. En conséquence, les consoles 8 bits n'avaient pas besoin de beaucoup de RAM, vu qu'une grande partie des données utiles étaient dans une ROM directement accessible par le processeur. A l'opposé, les micro-ordinateurs devaient copier les données d'un jeu depuis une disquette dans la mémoire RAM, ce qui demandait d'avoir plus de RAM.
Le passage au support CD sur les consoles 32 bits a eu la même conséquence. Le processeur ne pouvant pas lire directement le CD à sa guise, il fallait copier les données du CD en RAM. D'où l'apparition de temps de chargement assez longs, inexistants sur support cartouche.
Avec ce genre de stratagèmes, 256 octets de RAM est largement suffisant sur de nombreux systèmes, à condition qu'on ait assez de ROM pour coder un programme digne de ce nom. Par exemple, de nombreux systèmes embarqués simples s'en accommodent : des caisses enregistreuses, des systèmes de régulation de feu de circulation, etc.
===Le HP Nanoprocessor : un processeur sans ALU===
Un dernier exemple est celui du processeur HP Nanoprocessor, de l'entreprise HP. Il a été commercialisé en 1974, en même temps que les premiers micro-processeurs d'Intel. Tous les processeurs de l'époque étaient des processeurs 8 bits et le HP Nanoprocessor ne faisait pas exception. Ce n'était pas un processeur haute performance, il était destiné à des applications d'informatique industrielle ou embarquée. D'ailleurs, il utilisait des transistors de type metal-gate, peu performants, là où ses contemporains utilisait des transistors en silicium, plus performants.
Mais une caractéristique qui rend cela encore plus claire est qu'il n'y a pas d'ALU ! En effet, ce processeur est incapable de faire des additions, des soustractions ou autres opérations simples ! Il est cependant capable d'effectuer des incrémentations et décrémentations, des décalages, des opérations logiques comme des ET/OU/NON/XOR et bien d'autres. Il supporte en tout 48 instructions, avec un support limité des modes d'adressage indirects. Les instructions de branchement étaient des instructions SKIP, il n'y avait pas d'instructions de branchement généralistes.
Pour ce qui est des registres, il disposait de 16 registres de 8 bits et d'un accumulateur. Niveau mémoire, il était relié à une mémoire ROM, rien de plus. Il n'avait de RAM supplémentaire qu'on pouvait lui adjoindre, il devait se débrouiller avec seulement ses registres. Et cela ne posait pas de problèmes pour son usage. Seul le mode d'adressage indirect à registre est supporté, il n'y a pas de registres d'indices. Ce mode d'adressage permet de lire des données en mémoire ROM, la ROM pouvant contenir des tableaux de valeurs constantes.
: Il est possible de lui adjoindre de la RAM via les ports d'entrée-sortie, ainsi qu'une ALU, mais RAM et ALU sont traités comme des périphériques avec lesquels on communique, ils ne sont pas intégrés au processeur.
Niveau micro-architecture, il incorporait une unité de calcul logique et un circuit comparateur. Le comparateur était un circuit comparateur série des plus basiques, qui était utilisé pour les instructions de branchement et associées. L'unité de calcul logique gérait des incrémentations/décrémentation, des décalages, les opérations logiques et quelques autres. L'unité de calcul logique était bit-slicée, à savoir conçue en assemblant 8 ALU de 1 bit chacune, enchainées en série. Le tout était combiné à des circuits de ''carry skip''.
[[File:Unité de calcul du HP nanonprocessor.png|centre|vignette|upright=2|Unité de calcul du HP nanoprocessor]]
Son unité de décodage d'instruction était très simple, essentiellement basée sur des portes NOR, grâce à un encodage efficace des instructions machine. Le ''program counter'' fait 11 bits, ce qui permet d'adresser une ROM de 2 kibioctets. Le ''program counter'' était relié à un circuit incrémenteur qui gérait les isntructions SKIP (il pouvait incrémenter le ''program counter'' par pas de 1 ou de 2 en cas de SKIP). Le processeur contient aussi deux registres, qui servent en quelque sorte de pile d'adresse de retour. Un premier registre mémorise l'adresse de retour d'une fonction, l'autre mémorise le ''program counter'' lors d'une interruption, pour savoir où brancher à la fin de l'interruption.
[[File:HP nanoprocessor.png|centre|vignette|upright=2.5|HP nanoprocessor]]
Fait intéressant, le concepteur du processeur a gracieusement donné les masques utilisés pour graver le silicium du processeur au site [https://www.cpushack.com/ CPU Shack]. Les masques en question sont disponibles ici :
* [https://www.cpushack.com/2020/08/20/hp-nanoprocessor-mask-set/ HP NanoProcessor Mask Set]
* [https://www.cpushack.com/2020/08/09/the-forgotten-ones-hp-nanoprocessor/ The Forgotten Ones: HP Nanoprocessor]
Les masques ont été analysés par Ken Shirrif dans cet article de blog :
* [https://www.righto.com/2020/09/hp-nanoprocessor-part-ii-reverse.html HP Nanoprocessor part II: Reverse-engineering the circuits from the masks]
==Les processeurs 8/16 bits à architecture Von Neumann==
L'usage d'une architecture Harvard est une solution pour adresser plus de mémoire avec des CPU 8 bits. Mais plusieurs microprocesseurs commerciaux n'utilisaient pas cette solution. À la place, c'était des architectures Von Neumann, mais qui étaient capables de gérer des adresses de 16 bits. Les données faisaient 8 bits, les registres faisaient 8 bits, mais quelques techniques permettaient de gérer des adresses de 16 bits. Nous parlerons de '''processeurs 8/16 bits''' pour les désigner, et nous allons les étudier à part.
Un point important est que la gestion d'adresses de 16 bits permet d'adresser 64 kibioctets, qui peuvent être remplis avec de la RAM et de la ROM. On a donc le meilleur des mondes : 64 kibioctets de mémoire, mais avec des données de 8 bits et les économies de circuit qui vont avec. L'avantage est que le processeur peut maintenant gérer une vraie pile d'appel, pas seulement une pile d'adresse de retour. Il lui suffit pour cela d'intégrer un pointeur de pile codé sur 16 bits.
===Les modes d'adressage par page des CPU Motorola===
Les processeurs Motorola 8 bits étaient des processeurs 8 bits avec un bus d'adresse de 16 bits. C'était des processeurs à accumulateur incorporant deux registres d'indice, un registre d'état, un pointeur de pile, et un ''program counter''. Tous les registres sont reliés au bus d'adresse, sauf le registre d'état et l’accumulateur. Tous les registres font 8 bits, sauf le ''program counter''. La pile est câblée pour être dans un bloc de 256 octets compris entre l'adresse 1 0000 0000 et l'adresse 1 1111 1111, ce qui fait que son adressage se fait avec un seul octet.
[[File:6502-architecture.svg|centre|vignette|upright=1.5|Architecture simplifiée du 6502.</br> X et Y : registres d'indice ;</br> S : le pointeur de pile ;</br> A : accumulateur ;</br>P : registre d'état.</br>]]
Les processeurs Motorola 8 bits utilisaient une méthode simple pour adresser 64 kibioctets de RAM, avec des registres de 8 bits. Pour cela, ils utilisaient une variante de l'adressage base + décalage. Elle améliore l'adressage absolu, qui intègre l'adresse à lire/écrire dans l'instruction elle-même. L'adresse en question est de 8 bits et n'encode que les 8 bits de poids faible de l'adresse, les 8 bits de poids fort sont dans un '''registre de page''' adressé implicitement. L'adresse finale est obtenue en concaténant ce registre avec l'adresse mémoire intégrée dans l’instruction. Le résultat est que la mémoire était découpée en blocs de 256 consécutifs, chacun pouvant servir de fenêtre de 256 octets. Une page est réservée pour la pile, la seconde, comme dit plus haut.
Formellement, ce mode d'adressage a des ressemblances avec la commutation de banques, une technique qu'on verra dans les chapitres sur l'espace d'adressage et la mémoire virtuelle. Mais ce n'en est pas du tout : le registre de page est utilisé uniquement pour les accès mémoire avec le mode d'adressage base + décalage, mais pas pour les autres accès mémoire, qui gèrent des adresses complètes. Notons que l'usage d'un registre de page dédié fait que celui-ci est adressé implicitement.
Il faut noter que la technique a été utilisée sur des processeurs 16 bits, pour contourner la petite taille des instructions. Un exemple est celui du HP 2100, un processeur 16 bits. Il avait un registre de page de 5 bits et encodait 10 bits d'adresse dans ses instructions. Ses instructions d'accès mémoire disposaient d'un bit qui choisit quel mode d'adressage utiliser. S'il était à 0, l'adressage absolu était utilisé, le registre de page n'était pas utilisé. Mais s'il était à 1, le registre de page était utilisé pour calculer l'adresse.
Une évolution de l'adressage précédent est le '''mode page direct'''. Avec lui, le registre de page est étendu et contient une adresse mémoire complète. L'adresse finale n'est pas obtenue par concaténation, mais en additionnant le registre de page avec l'adresse fournie par adressage absolu + décalage. Un exemple est celui des premiers processeurs Motorola, qui géraient des adresses courtes de 8 bits. L'adresse courte de 8 bits correspondait non pas aux 256 premiers octets de la mémoire, mais à une fenêtre de 256 octets déplaçable en mémoire. La position de la fenêtre de 256 octets était spécifiée par le registre de page de 16 bits, qui précisait l'adresse du début de la fenêtre, celle de sa première donnée.
Il s'agit donc formellement d'adressage base + décalage, à un détail près : il n'y a qu'un seul registre de base. Le fait que ce registre de base soit unique fait qu'il est adressé implicitement, on n'a pas à encoder le numéro/noms de registre dans l'instruction. Le registre de base est utilisé uniquement pour l'adressage absolu, pas pour les autres accès mémoire. S'il y a des ressemblances avec la segmentation, une technique de mémoire virtuelle qu'on abordera dans quelques chapitres, ce n'en est pas vu que le registre de base est utilisé seulement pour un mode d'adressage bien précis.
===Le ''pseudo-aliasing'' des registres des processeurs Intel x86===
Voyons maintenant le cas des anciens processeurs 8 bits d'Intel à savoir l'Intel 4004, 4040, 8008 et 8080. Le Z80, un processeur inspiré des CPU Intel 8 bits, est aussi concerné. Avant de poursuivre, parlons des registres de ces processeurs. Les premiers CPU Intel incorporaient 7 registres de 8 bits nommés A, B, C, D, E, F, H, L, SP. Ils correspondent respectivement à : l'accumulateur A ; six registres nommés B, C, D, E, H et L ; le registre d'état F ; le pointeur de pile SP. Le Z80 ajoute deux registres d'indice X et Y. De plus, le Z80 dispose de registres d'interruption, qui sont en quelque sorte des copies des registres A, B, C, D, E, F, H, L. Le tout est illustré dans le tableau ci-dessous.
{|class="wikitable" style="text-align:center;"
|-
!
! Registres des CPU Intel
! Registres supplémentaires du Z80
|-
! Accumulateur
| A
| A'
|-
! Registre d'état
| F
| F'
|-
! Registres généraux
| B, C, D, E, H, L
| B', C', D', E', H', L'
|-
! Pointeur de pile
| colspan="2" | SP (sauf pour le 8008)
|-
! Registres d'indice
|
| X et Y
|}
Le 8008 incorpore une pile d'appel de 7 adresses, dans le processeur lui-même. Il en est de la même avec le 4004 et le 4040, comme on le verra dans la section sur les processeurs 4 bits. Mais le 8080 et le 8085 ont remplacé le tout par un simple pointeur de pile, afin d'avoir une véritable pile d'appel. Autant c'est impossible d'avoir une pile d'appel avec seulement 256 octets de mémoire, autant on peut se le permettre avec 65 536 adresses.
Pour gérer des adresses de 16 bits, ils auraient pu utiliser des registres d'adresse séparés, mais on préféré un système de '''pseudo-''aliasing'' de registres'''. Formellement, c'est un système qui concatène deux registres 8 bits pour obtenir une adresse de 16 bits. L’appariement a lieu lors de certaines opérations bien précises, qui n'ont de sens que pour les adresses : la lecture/écriture en mémoire, et l'incrémentation.
Il y avait cependant des contraintes quant aux paires de registres possibles, toutes les paires de registres n'étaient pas autorisées. Les CPU concernés sont donc des processeurs hybrides accumulateur-registre généraux. L'accumulateur ne peut pas être appairé, seuls les registres généraux le peuvent. Le Z80 autorise plus de paires que les CPU Intel. Voici les paires de registres qui pouvaient servir d'adresse 16 bits :
* Les CPU 8008 d'Intel autorisait une seule paire formée des registres H et L.
* Les autres processeurs, à savoir le 8080, le 8085 et le Z80, autorisaient : les paires BC, DE et HL.
Le 8008 ne gérait que des opérations sur 8 bits. Mais le 8080 et le 8085 ont ajouté des instructions 16 bits qui agissaient sur des paires de registre, que le Z80 a repris. Une paire de registres est considérée comme un registre unique de 16 bits pour certaines opérations arithmétiques, dont l'incrémentation. Voici la liste des instructions concernées :
* INC et DEC pour l'incrémentation et la décrémentation ;
* DAD : additionne le registre HL avec une autre paire (Hl inclus) ;
* LXI : copie une constante immédiate dans une paire de registres ;
* LHLD : lit 16 depuis la mémoire et l'enregistre dans une paire de registres ;
* SHLD : copie 16 bits depuis une paire de registres et l'enregistre en mémoire ;
* PUSH et POP : empile ou dépilent une paire de registre sur la pile ;
* XTHL : échange la paire HL avec les 16 bits au sommet de la pile d'appel ;
* XCHG : échange le contenu de la paire HL et DE.
Pour résumer, le processeur avait des instructions LOAD, STORE, PUSH et POP adaptées pour gérer des paires de registre. De plus, l'instruction XCHG permettait d’échanger le contenu des paires DE et HL. L'instruction a été étendue sur les processeurs 16 bits pour échanger tous les registres. Mais l'implémentation était alors différente. L'incrémentation sur une paire de 16 bit était très utile, car les adresses sont souvent incrémentées quand on parcours un tableau. Ces instructions nous donnent quelques indices sur ce qu'il y a dans le processeur.
Le système de pseudo-aliasing a un impact sur le banc de registre. Le banc de registre regroupe les registres généraux et le pointeur de pile, mais ne contient pas l'accumulateur. Les contraintes sur les paires de registres possibles ne s'expliquent que d'une seule manière : le banc de registre contient des registres de 16 bits, une paire de registres 8 bits est mémorisée dans un registre unique. Il faut donc faire une différence entre les registres architecturaux de 8 bits, et les registres réels de 16 bits.
Le banc de registre a un port de 8 bits pour les données, qui est fabriqué à partir d'un port 16 bits auquel on a rajouté un multiplexeur pour choisir soit l'octet de poids faible, soit l'octet de poids fort. Le bus de données fait 8 bits, ce qui fait que les instructions LOAD, STORE, PUSH et POP pour paires 16 bits sont réalisées en deux fois : on lit/écrit l'octet de poids faible, puis celui de poids fort. Par contre, le bus d'adresse fait bien 16 bits. Cela suggère que le banc de registre dispose d'un port de 16 bits dédié aux adresses, en plus du port de données 8 bits.
[[File:Architecture d'un CPU 8-16 bits avec un banc de registre double port.png|centre|vignette|upright=2|Architecture d'un CPU 8-16 bits avec un banc de registre double port]]
L'incrémentation d'une paire 16 bits ne coute rien à implémenter, ou presque. En effet, le processeur incorpore un incrémenteur 16 bits pour le ''program counter'', qui est relié au bus d'adresse. L'idée est de rentabiliser cet incrémenteur, en lui permettant d'incrémenter des données/adresses de 16 bits obtenues via pseudo-aliasing. De même, il peut être utilisé pour incrémenter le pointeur de pile, voire un compteur de rafraichissement mémoire (pour rappel, le rafraîchissement mémoire demande de balayer la mémoire d'adresse en adresse et été fait par le CPU à l'époque). Pour cela, il suffit de connecter le ''program counter'', le banc de registre, et l'incrémenteur, via un bus dédié.
[[File:Calcul d'adresse par ALU dédiée avec PC séparé.png|centre|vignette|upright=2|Calcul d'adresse par ALU dédiée avec PC séparé]]
Notez qu'on peut encore simplifier le tout en placant le ''program counter'' dans le banc de registre, ce qui ne gênera pas le travail de l'incrémenteur mais simplifiera le câblage au bus d'adresse. Ce n'était pas systématique, certains processeurs mettaient le ''program counter'' dans le banc de registre, d'autres non.
: Inclure le ''program counter'' dans le banc de registre permet parfois de remplir un vide. Par exemple, sur un processeur avec 12 registres, le banc de registre devrait faire idéalement 16 registres, inclure le ''program counter'' dedans fait monter le tout à 13.
[[File:Architecture d'un CPU 8-16 bits.png|centre|vignette|upright=2|Architecture d'un CPU 8-16 bits]]
Les processeurs Intel 8 bits, à savoir le 8008, le 8080 et le 8085 ; mettaient le ''program counter'' dans le banc de registre. Vous avez donc toutes les armes pour comprendre leur micro-architecture. Par exemple, voici la micro-architecture du processeur 8080. Remarquez le banc de registre, qui contient tous les registres sauf l'accumulateur et le registre. Il a deux ports : un pour les adresses et un pour les données. Notez le dé-multiplexeur sur le port de donnée. Pour le reste, il s'agit d'une architecture à accumulateur hybride des plus classiques.
[[File:Intel 8080 arch.svg|centre|vignette|upright=3|Microarchitecture de l'Intel 8080.]]
Le Z80 est un processeur inspiré du design des processeurs Intel 8 bits, mais avec pas mal d'améliorations. Un point particulier de ce processeur est son banc de registre. Il contient tous les registres du processeur, y compris l'accumulateur et le registre d'état ! Les seuls registres en-dehors du banc de registre sont le ''program counter'' et un compteur de rafraichissement mémoire IR.
Un autre point particulier est que les registres dans le banc de registres avaient une copie séparée accessible uniquement pour les interruptions, via fenêtrage de registres. Et l'accumulateur et le registre d'état étant dans le banc de registre, il y avait deux accumulateurs et deux registres d'état. Les registres A, B, C, D, E et F étaient dupliqués, par le pointeur de pile ni les registres d'indice. Les copies des registres étaient nommées A', B', C', D', E' et F'.
Le Z80 supportait des instructions d'échange de registre en plus des CPU Intel 8 bits. L'instruction EX peut échanger soit le contenu des paires D,E et H,F, soit la paire A,F avec la paire A',F'. L'instruction EXX échange les paires BC, DE, HL avec les paires BC', DE', HL'. En faisant cela, le programmeur pouvait utiliser deux fois plus de registres généraux s'il n'utilisait pas les interruptions. L'échange de paires se fait sans copies de registres, mais simplement en modifiant l'adresse envoyée sur le banc de registre. Pour cela, plusieurs bascules mémorisent des bits qui indiquent si les paires ont été échangées ou non. Il y a une bascule pour les paires DE , HL ; une autre pour les paires A,F et paire A',F', une dernière pour l'instruction EXX. En combinant ces bascules avec les noms de registres envoyés par le séquenceur, on peut échanger les paires de registres.
==Le cas particulier des processeurs 4 bits : le 4004 d'Intel==
L'Intel 4004 était le tout premier micro-processeur. Il s'agissait d'un microprocesseur de 4 bits, basé sur une architecture à accumulateur. Il disposait d'un accumulateur et de 16 registres d'indice, tous de 4 bits. Il faisait des calculs sur des données de 4 bits, appelées des nibbles. Cependant, sur ses 46 instructions machines supportées, 41 agissaient sur des opérandes de 8 bits, les 5 restantes sur des opérandes de 16 bits. Simplement, les calculs se faisaient en deux fois, en échangeant des données entre mémoire RAM et accumulateur.
Le 4004 est un circuit intégré avec peu de broches. Il dispose notamment d'un bus de données/adresse, qui est multiplexé, c’est-à-dire qu'il sert alternativement de bus de données et de bus d'adresse selon les besoins. Le bus de commande mémoire fait 5 bits, dont 4 pour les chips de RAM, un pour la ROM. Les adresses sont codées sur 12 bits, les données sur 4 et les instructions sur 8 bits. L'envoi d'une adresse sur le bus se fait en plusieurs fois, de même que la lecture d'une instruction. Il s'agit là d'une adaptation pour outrepasser les limitations d'un processeur 4 bit.
[[File:Intel 4004 processor pinout.png|centre|vignette|upright=2|Broches de l'Intel 4004. Nous verrons à quoi elles servent plus bas.]]
===L'espace d'adressage de l'Intel 4004===
Les adresses du processeur sont sur 12 bits, ce qui fait 4096 adresses différentes. Elles regroupent à la fois la ROM et la mémoire RAM, vu que l'architecture est une sorte de mélange bizarre entre une architecture Von Neumann et Harvard. Le processeur gère bien deux espaces d'adressage séparés, mais la RAM et la ROM sont reliés au même bus. La sortie CM-ROM du processeur indique si l'adresse envoyée correspond à la RAM ou la ROM. Un circuit de décodage d'adresse active ou désactive la RAM selon la valeur de ce bit, l'inverse pour la ROM, en agissant sur leurs bits Chip Select. Seule la RAM ou la ROM répondent alors à l'adresse.
Pour ce qui est de la RAM, le circuit de décodage d'adresse pouvait gérer au maximum 1024 adresses différentes, chacune contenant un nibble. Pour cela, le CPU 4004 était relié à une ou plusieurs RAM externes, des Intel 4002. Chaque Intel 4002 contenait 64 nibbles de données, plus 16 nibbles de statut qu'on ne détaillera pas ici. Les nibbles de statut étaient accessibles en utilisant des instructions d'entrée-sortie, donc pas avec des lectures/écritures mémoire. Les 64 nibbles de données sont découpés en 4 groupes de 16 nibbles. Le CPU pouvait être relié à maximum 16 Intel 4002, ce qui fait 1024 nibbles de données et 256 nibbles de statut. L'ensemble permet de remplir l'espace d'adressage de 1024 adresses.
===Le registre de page et le pseudo-aliasing des registres===
Sélectionner une adresse mémoire utilisait un mélange entre pseudo-aliasing et registre de page. Pour les données, les 1024 adresses étaient découpées en 4 pages de 256 adresses. Pour la ROM, les 4096 adresses étaient découpées en 16 pages de 256 adresses. Localiser une donnée dans une page ne requiert que 8 bits, 2/4 bits supplémentaires permettent de sélectionner la page voulue. Le registre de page était dans le processeur lui-même, et était relié aux sorties du processeur nommées CM-RAM 0, 1, 2 et 3. Les 4 sorties encodaient un nombre qui permet de sélectionner le numéro de page voulu.
Le registre de page fait 5 bits : un pour distinguer RAM et ROM, 4 bits pour sélectionner la page voulue. L'avantage est que la carte mère gère au maximum 16 chips de RAM, ce qui colle parfaitement avec les 4 utilisés pour sélectionner une page. Un chip de RAM correspond à une page, et chacun est activé ou désactivé suivant la page sélectionnée. Pour cela, il suffit d'ajouter un décodeur sur la carte mère, qui prend les 4 bits du registre de page et fournit les signaux Chip Select aux différents chips de RAM.
Reste alors à utiliser les 8 bits d'adresse à l'intérieur d'un chip de RAM. Le 4004 permettait de concaténer deux registres d'indice de 4 bits pour former une adresse de 8 bits. Les instructions d'accès mémoire pouvaient ainsi préciser une paire de registre d'indice pour préciser quelle adresse lire/écrire. Idem pour les branchements indirects : le processeur supportait une instruction de branchement indirect qui précisait l'adresse dans une paire de registres d'indice. Les registres d'indice sont donc assez mal nommés sur cette architecture, vu qu'ils peuvent servir soit de registre d'indice, soit de demi-registre d'adresse. Il s'agit là du système de pseudo-aliasing des registres, mais appliqué aux registres d'indice.
L'Intel 4004 gérait deux instructions pour gérer les adresses mémoires. La première, l'instruction DCL (''Designate Command Line'') configure le registre de page. Elle prend en entrée un numéro de page et le copie dans le registre de page. L'opérande peut provenir d'un registre d'indice ou de l'accumulateur. La seconde, l'instruction SRC (''Send Register Control'') concatène deux registres d'indice pour obtenir une adresse de 8 bits. Un accès mémoire se fait donc en maximum trois instructions : une qui configure le registre de page si ce n'est pas déjà fait, une instruction SRC pour envoyer l'adresse, et une troisième instruction qui dit s'il faut faire une lecture ou une écriture.
===La microarchitecture de l'Intel 4004===
Il incorporait une pile d'adresse de retour intégrée au processeur. La pile d'adresse acceptait exactement 3 adresses maximum. Elle était regroupée avec le ''program counter'' dans un banc de registre, de 4 registres. Le ''program counter'' et le pointeur de pile faisaient chacun 12 bits, soit trois nibble. Ils étaient incrémentés par un incrémenteur dédié.
SI on omet le registre de page et la pile d'adresse, le 4004 est une architecture à accumulateur des plus classiques, avec un bus interne unique, un banc de registre pour les registres d'indices, un accumulateur relié à une unité de calcul. Les registres d'indice étaient dans un banc de registre séparés, car ils faisaient 4 bits chacun, contrairement au pointeur de pile et le ''program counter''. Un détail important est que les bancs de registres du 4004 étaient implémentés avec de la DRAM, et non des registres usuels fabriqués avec des bascules 1 bit.
[[File:Microarchitecture de l'Intel 4004.png|centre|vignette|upright=2.5|Microarchitecture de l'Intel 4004]]
<noinclude>
{{NavChapitre | book=Fonctionnement d'un ordinateur
| prev=Les architectures à pile et mémoire-mémoire
| prevText=Les architectures à pile et mémoire-mémoire
| next=Les processeurs de traitement du signal
| nextText=Les processeurs de traitement du signal
}}
</noinclude>
q5vfytiindy4tt0fgomfsozi6iz312q
765690
765689
2026-05-01T15:44:37Z
Mewtow
31375
/* Les microcontrôleurs PIC */
765690
wikitext
text/x-wiki
Nous avons déjà abordé la notion de processeur 8, 16, 32, 64 bits. Elle désigne la taille des registres généraux, ou de l'accumulateur. De nos jours, les processeurs 32 et 64 bits sont la norme, mais les premiers micro-processeurs étaient des processeurs 4 et 8, avant de passer rapidement au 16 bits. La raison est que leur budget en transistor limité faisait qu'on ne pouvait pas utiliser une ALU trop grande : une ALU 8 bit prend deux fois moins de place et de transistors qu'une ALU 16 bits. Cependant, les processeurs 8 bits avaient de sérieuses limitations qui étaient compensées par diverses solutions. Dans ce chapitre, nous allons faire une revue rapide des processeurs 8 bits et de leurs fonctionnalités.
La principale limitation des CPU 8 bits était l'adressage : des registres de 8 bits limitaient l'espace d'adressage à seulement 256 adresses, soit à peine 256 octets ! Intuitivement, on se dit que 256 octets est purement impraticable, on ne peut rien faire d'intéressant avec seulement 256 de RAM + ROM. Et c'est partiellement vrai. L'adage veut que 16 bits est la taille minimale intéressante, la limite à partir de laquelle on a assez de mémoire RAM/ROM pour coder des applications intéressantes. Mais 256 octets de RAM est largement suffisant sur de nombreux systèmes embarqués simples s'en accommodent : des caisses enregistreuses, des systèmes de régulation de feu de circulation, etc.
Pour les applications demandant plus de mémoire RAM, les CPU de l'époque contournaient la limitation de 256 octets de RAM avec de nombreux stratagèmes. Dans ce qui va suivre, nous allons séparer les CPU 8 bits selon qu'ils utilisent une architecture Harvard ou une architecture Von Neumann. La raison est qu'une architecture Harvard permet en soi de contourner partiellement ce problème d'adressage. Les choses sont plus compliquées avec une architecture Von Neumann.
==Les processeurs 8/16 bits à architecture Harvard ==
La première solution est d'utiliser une architecture Harvard. Le processeur 8 bit a alors deux espaces d'adressage : un pour la RAM, un autre pour la ROM. Et les deux utilisent des adresses de taille différente. La ROM est reliée à un bus d'adresse de 16 bits, alors que la RAM est elle connectée à un bus d'adresse de 8 bits. La RAM est donc limitée à 256 octets, alors que la ROM peut monter jusqu'à 64 kibioctets. Mine de rien, faire ainsi est largement suffisant.
Les processeurs de l'époque intégraient parfois les 256 octets de RAM directement dans le processeur. Beaucoup en implémentaient moins, avec par exemple seulement 64 octets de RAM, ou 32 octets, ou 128 octets. L'avantage est que cela éliminait le bus d'adresse des données et ne laissait que le bus d'adresse pour la ROM. On économisait ainsi beaucoup de broches sur le circuit intégré du CPU. Et pour les applications demandant plus de RAM, on pouvait ajouter un circuit séparé qui permettait d'adresser une RAM plus grande. Mais cela sera plus clair avec un exemple.
===Les microcontrôleurs PIC===
Les '''microcontrôleurs PIC''' regroupent des microcontrôleurs allant de microcontrôleurs 8 bit aux performances très faible, à des microcontrôleurs 32 bits bien plus puissants. Les microcontrôleurs PIC sont très utilisés dans l'embarqué ou d'informatique industrielle. Ils sont vendu à des volumes assez impressionnants, plusieurs millions par an. Et si vous avez ou êtes en train de faire des études d'électronique, je parie que vous les avez déjà vu en classe, ou que ce ne saurait tarder. Dans ce qui suit, nous allons nous concentrer sur les microcontrôleurs PIC 8 bits, à savoir les PIC 16, 16 et 18. Les PIC 24, qui sont des microcontrôleurs 16 bits, ne seront pas abordés.
Les microcontrôleurs PIC 8 bits incorporent une mémoire RAM très petite, ainsi qu'une architecture Harvard, comme dit plus haut. La mémoire RAM des microcontrôleurs PIC est très petite, elle dépasse rarement la centaine d'adresse. Pour donner un exemple, le PIC16F84 a une RAM composée de 68 "registres" de 8 bits. Le terme "registres" devrait vous faire tiquer, mais il s'agit bien d'une mémoire SRAM séparée. Simplement, la documentation des PIC qualifie cette mémoire SRAM de "registres", et il faut admettre que la différence entre banc de registre et SRAM séparée est un peu floue.
Un détail est que la SRAM n'a qu'un seul port qui sert à la fois pour les lectures et écritures. Pour compenser, les PIC sont des architectures à accumulateur, où une opérande est lue depuis la SRAM, l'autre depuis l'accumulateur. Leur implémentation de l'accumulateur ajoute une petite subtilité : le résultat d'une opération arithmétique peut être enregistré ailleurs que dans l'accumulateur. Le résultat peut aussi remplacer la seconde opérande, celle lue en mémoire RAM. Dit autrement, le résultat est enregistré dans l'adresse mémoire source. Les instructions de calcul ont le choix : un bit dans leur encodage précise où enregistrer le résultat.
Outre l'accumulateur, les PIC disposent de registres de contrôle, d'un ''program counter'', d'un registre d'état, et d'un pointeur de pile. Le registre d'état contient un registre séparé pour la retenue de l'addition/soustraction. Ce dernier est très important, vu qu'il est nécessaire pour les additions/soustractions sur des opérandes de 16 bits. Le processeur a beau être un CPU 8 bits, il peut être utilisé pour faire des calculs 16 bits, la performance est alors amoindrie, mais ce n'est pas un problème pour les applications d'un tel microcontroleur.
Un détail assez original est que les registres précédents sont mappés en mémoire, à quelques exceptions près ! En clair, on peut y accéder en lisant/écrivant à une adresse mémoire bien précise. Les seules registres qui ne sont pas mappés en mémoire sont l'accumulateur, la pile d'appel, et les registres d'entrée-sortie. Les registres d'entrée-sortie permettent de lire ou écrire sur un port d'entrée-sortie ou de lire un ''timer''. En clair, les PIC ont un espace d'adressage séparé pour les entrées-sorties.
[[File:DocPIC16F84.png|centre|vignette|upright=2|DocPIC16F84]]
Le processeur de ces microcontrôleurs a un jeu d'instruction propriétaire, le jeu d'instruction PIC. Les instructions PIC sont très petites. Les premières versions du jeu d'instruction utilisaient des instructions codées sur 12 bits, dont 5 pour l'adresse mémoire de la seconde opérande. Pour les branchements, 3 bits étaient utilisés pour l'opcode, 9 pour l'adresse de destination. Par la suite, les instructions ont été étendues à 13 bits sur les PIC1670, puis à 14, 15 et 16 bits. Les adresses ont alors été élargies, ce qui permet d'adresser en peu plus de mémoire RAM.
Les instructions se limitent à des additions/soustractions, des opérations bit à bit,des branchements, des instructions LOAD/STORE, ainsi que des opérations de manipulation de bit. Il y a une instruction pour mettre une adresse à zéro, qui peut aussi mettre à zéro l’accumulateur.
Pour ce qui est des branchements, les PIC n'ont pas d'instructions de branchement conditionnels, ils font avec une SKIP instruction et des branchements inconditionnels. Par contre, ils ont des branchements pour les appels et retour de fonction. Mieux que ça, ils intègrent une pile d'appel d'environ 8 adresses de retour. Pour donner une idée, l'adresse de retour est encodée sur 10 bits sur les PIC16F84.
Pour les instructions de manipulation de bit, il y a des instructions pour tester/masquer un bit dans une opérande, 4 en tout ( mettre à 0, mettre à 1, tester si bit = 1, tester si bit = 0). Les instructions qui testent un bit prennent leur opérande dans l'accumulateur. Il y a aussi deux instructions de rotation à gauche et droite, qui tiennent compte de la retenue mémorisée dans le registre d'état. Mentionnons aussi une instruction pour inverser deux ''nibbles'' dans un octet.
Les PIC ont aussi des instructions d'incrémentation et de décrémentation, un peu spéciales. Ces dernières regroupent : une incrémentation normale, une décrémentation normale, une décrémentation fusionnée avec une instruction SKIP, et une incrémentation fusionnée avec une instruction SKIP. Les deux dernières incrémentent/décrémentent l'accumulateur et SKIP l'instruction suivante si le résultat est zéro. Elles permettent de fortement simplifier l'implémentation des boucles qui s'exécutent tant que leur compteur atteint zéro.
Les PIC gèrent l'adressage absolu et indirect. L'adressage absolu, celui où l'adresse est intégrée dans l'instruction, est très simple à implémenter. Les adresses prennent moins d'un octet, vu que la taille de la RAM est très petite, les adresses sont très courtes, les intégrer dans des instructions elles-mêmes courtes n'est pas un problème. L'adresse est encodée sur 5 à 7 bits, selon le modèle, ce qui permet d'adresser entre 32 et 128 octets.
: Les PIC 18 peuvent adresser plus de 256 octets de RAM en utilisant la commutation de banques, une technique qui sera abordée dans plusieurs chapitres.
Pour l'adressage indirect, les PIC intègrent un registre d'adresse dédié. Il s'agit du registre FSR, qui mémorise l'adresse à lire/écrire. Il est possible de copier un pointeur dedans, qui provient soit de l'accumulateur, soit de la mémoire SRAM. Dans les deux cas, la donnée adressée est copiée dans un registre INDR, qui sert de registre d’interfaçage mémoire avec le bus de données. Le registre FSR est directement connecté sur le bus d'adresse. Les modèles de base se débrouillent avec un registre FSR et un registre INDR, mais les modèles plus performants ont deux ou trois copies de chaque registre. Ces modèles plus avancés ajoutent aussi des instructions LOAD/STORE avec les modes d'adressage à post- ou pré-incrément/décrément.
Avec tout ce qu'on vient de dire, vous devriez pouvoir comprendre la microarchitecture d'un PIC, qui est résumée dans ce schéma.
[[File:DocPIC16F84 all.png|centre|vignette|upright=2.5|Microarchitecture du PIC16F84.]]
===Le Fairchild F8 et la console de jeu Fairchild Channel F===
Un autre exemple est la Fairchild F8 de la défunte entreprise Fairchild Semiconductor. Il incorpore un processeur 8 bits, c'est à dire que le processeur fait des calculs sur des entiers de 8 bits maximum, une mémoire RAM de 64 octets, ainsi qu'une mémoire ROM de 1 kibioctet. Les 64 octets de RAM sont certes très peu, mais c'est suffisant pour certaines applications simples, comme les caisses automatiques de l'époque, ou des applications embarquées. Et de toute façon, il est possible d'ajouter de la mémoire RAM supplémentaire si les 64 octets de RAM intégrée ne suffisent pas. Le système était donc modulaire, adaptable selon les besoins, peu cher pour son implémentation minimale sans RAM en plus.
Vu qu'il s'agit d'un des tout premiers ordinateurs, il est sorti à une époque où la technologie était rudimentaire. À cette époque, le processeur était composé de pièces détachées qu'il fallait souder ensemble pour obtenir un processeur fonctionnel. Ce n'est que plus tard qu'est apparu le micro-processeur, qui regroupe un processeur complet dans un seul circuit intégré. Le résultat est que le processeur du Fairchild F8 est coupé en deux, l'unité de calcul et l'unité de contrôle sont placés dans des pièces détachées séparés.
Le microcontrôleur est composé de trois à quatre pièces détachées, certaines étant optionnelles. La première est le '''3850 CPU''', qui regroupe l'unité de calcul et la mémoire RAM intégrée. La seconde est le PSU (''3851 Program Storage Unit''), qui regroupe la mémoire ROM et l'unité de contrôle, ''program counter'' inclut. S'il y a besoin d'utiliser plus de RAM, il faut ajouter un circuit d’interface mémoire, qui est au choix le ''3852 Dynamic Memory Interface'' (DMI) ou le ''3853 Static Memory Interface'', le premier étant connecté à une mémoire de type DRAM, l'autre à une SRAM (nous verrons ce que sont les DRAM et les SRAM dans le prochain chapitre).
[[File:Fairchild F8.png|centre|vignette|upright=2|Fairchild F8]]
Le système minimal est composé d'un PSU et d'un 3850, sans les circuits d'interface mémoire. Le tout donne un système avec un processeur 8 bit, 64 octets de RAM et 1 kibioctet de ROM, les deux mémoires étant intégrées dans le "processeur". Le processeur gérait 4 entrées-sorties, chacune étant reliée avec un bus de 8 bit au processeur. Au passage, en 1977, Mostek a créé un microcontrôleur qui regroupe un PSU et un 3850 : le Mostek 3870. Le système minimal n'avait pas de bus d'adresse, vu que la RAM était intégrée au processeur. C'est les 3852 et 3853 qui ajoutaient un bus d'adresse. Ils ajoutent un bus d'adresse de 16 bits, ce qui permet d'adresser 64 kibioctets de RAM.
[[File:Fairchild-Channel-F.jpg|vignette|un Fairchild Channel F]]
Le Fairchild F8 a été utilisé dans la Fairchild Channel F, une des toute première console de seconde génération, à savoir des consoles qui utilisaient des cartouches de jeu. Avant les consoles de seconde génération, les consoles étaient non-programmables. Elles étaient conçues pour faire tourner un jeu précis, aucun autre, le jeu étant implémenté dans leurs circuits.
La Fairchild Channel F est composé du système minimal, auquel on a ajouté une carte son rudimentaire et 2 kibioctets de mémoire vidéo. La mémoire vidéo sert uniquement pour afficher des images à l'écran : on écrit l'image à afficher dedans, un circuit vidéo se charge de l'afficher à l'écran automatiquement. Le processeur ne fait qu'écrire dans cette RAM vidéo, il ne peut pas en lire le contenu. De la RAM supplémentaire peut cependant être ajoutée dans les cartouches de jeu.
===L'usage d'une architecture Harvard modifiée : les consoles 8 bits===
Pour encore améliorer la situation, il est possible d'utiliser une architecture Harvard modifiée, qui permet de lire des données depuis la mémoire ROM. Cela réduit encore plus les besoins en mémoire RAM. Les constantes manipulées par le programme sont mémorisées en ROM, lues depuis la ROM, au lieu d'être chargées en RAM. Les consoles de jeu utilisaient beaucoup de stratagème.
L'exemple type est celui des consoles 8 bits avec des graphismes en 2D. La cartouche de jeu contenait une ROM, qui mémorisait le code du jeu, les niveaux, les sprites et autres données graphiques. Leur carte graphique lisait directement les ''sprites'' depuis la mémoire ROM, sans avoir à les charger en mémoire vidéo. La mémoire vidéo se contentait de mémoriser le reste des informations graphiques, ainsi que des pointeurs vers les ''sprites'' en ROM. En conséquence, les consoles 8 bits n'avaient pas besoin de beaucoup de RAM, vu qu'une grande partie des données utiles étaient dans une ROM directement accessible par le processeur. A l'opposé, les micro-ordinateurs devaient copier les données d'un jeu depuis une disquette dans la mémoire RAM, ce qui demandait d'avoir plus de RAM.
Le passage au support CD sur les consoles 32 bits a eu la même conséquence. Le processeur ne pouvant pas lire directement le CD à sa guise, il fallait copier les données du CD en RAM. D'où l'apparition de temps de chargement assez longs, inexistants sur support cartouche.
Avec ce genre de stratagèmes, 256 octets de RAM est largement suffisant sur de nombreux systèmes, à condition qu'on ait assez de ROM pour coder un programme digne de ce nom. Par exemple, de nombreux systèmes embarqués simples s'en accommodent : des caisses enregistreuses, des systèmes de régulation de feu de circulation, etc.
===Le HP Nanoprocessor : un processeur sans ALU===
Un dernier exemple est celui du processeur HP Nanoprocessor, de l'entreprise HP. Il a été commercialisé en 1974, en même temps que les premiers micro-processeurs d'Intel. Tous les processeurs de l'époque étaient des processeurs 8 bits et le HP Nanoprocessor ne faisait pas exception. Ce n'était pas un processeur haute performance, il était destiné à des applications d'informatique industrielle ou embarquée. D'ailleurs, il utilisait des transistors de type metal-gate, peu performants, là où ses contemporains utilisait des transistors en silicium, plus performants.
Mais une caractéristique qui rend cela encore plus claire est qu'il n'y a pas d'ALU ! En effet, ce processeur est incapable de faire des additions, des soustractions ou autres opérations simples ! Il est cependant capable d'effectuer des incrémentations et décrémentations, des décalages, des opérations logiques comme des ET/OU/NON/XOR et bien d'autres. Il supporte en tout 48 instructions, avec un support limité des modes d'adressage indirects. Les instructions de branchement étaient des instructions SKIP, il n'y avait pas d'instructions de branchement généralistes.
Pour ce qui est des registres, il disposait de 16 registres de 8 bits et d'un accumulateur. Niveau mémoire, il était relié à une mémoire ROM, rien de plus. Il n'avait de RAM supplémentaire qu'on pouvait lui adjoindre, il devait se débrouiller avec seulement ses registres. Et cela ne posait pas de problèmes pour son usage. Seul le mode d'adressage indirect à registre est supporté, il n'y a pas de registres d'indices. Ce mode d'adressage permet de lire des données en mémoire ROM, la ROM pouvant contenir des tableaux de valeurs constantes.
: Il est possible de lui adjoindre de la RAM via les ports d'entrée-sortie, ainsi qu'une ALU, mais RAM et ALU sont traités comme des périphériques avec lesquels on communique, ils ne sont pas intégrés au processeur.
Niveau micro-architecture, il incorporait une unité de calcul logique et un circuit comparateur. Le comparateur était un circuit comparateur série des plus basiques, qui était utilisé pour les instructions de branchement et associées. L'unité de calcul logique gérait des incrémentations/décrémentation, des décalages, les opérations logiques et quelques autres. L'unité de calcul logique était bit-slicée, à savoir conçue en assemblant 8 ALU de 1 bit chacune, enchainées en série. Le tout était combiné à des circuits de ''carry skip''.
[[File:Unité de calcul du HP nanonprocessor.png|centre|vignette|upright=2|Unité de calcul du HP nanoprocessor]]
Son unité de décodage d'instruction était très simple, essentiellement basée sur des portes NOR, grâce à un encodage efficace des instructions machine. Le ''program counter'' fait 11 bits, ce qui permet d'adresser une ROM de 2 kibioctets. Le ''program counter'' était relié à un circuit incrémenteur qui gérait les isntructions SKIP (il pouvait incrémenter le ''program counter'' par pas de 1 ou de 2 en cas de SKIP). Le processeur contient aussi deux registres, qui servent en quelque sorte de pile d'adresse de retour. Un premier registre mémorise l'adresse de retour d'une fonction, l'autre mémorise le ''program counter'' lors d'une interruption, pour savoir où brancher à la fin de l'interruption.
[[File:HP nanoprocessor.png|centre|vignette|upright=2.5|HP nanoprocessor]]
Fait intéressant, le concepteur du processeur a gracieusement donné les masques utilisés pour graver le silicium du processeur au site [https://www.cpushack.com/ CPU Shack]. Les masques en question sont disponibles ici :
* [https://www.cpushack.com/2020/08/20/hp-nanoprocessor-mask-set/ HP NanoProcessor Mask Set]
* [https://www.cpushack.com/2020/08/09/the-forgotten-ones-hp-nanoprocessor/ The Forgotten Ones: HP Nanoprocessor]
Les masques ont été analysés par Ken Shirrif dans cet article de blog :
* [https://www.righto.com/2020/09/hp-nanoprocessor-part-ii-reverse.html HP Nanoprocessor part II: Reverse-engineering the circuits from the masks]
==Les processeurs 8/16 bits à architecture Von Neumann==
L'usage d'une architecture Harvard est une solution pour adresser plus de mémoire avec des CPU 8 bits. Mais plusieurs microprocesseurs commerciaux n'utilisaient pas cette solution. À la place, c'était des architectures Von Neumann, mais qui étaient capables de gérer des adresses de 16 bits. Les données faisaient 8 bits, les registres faisaient 8 bits, mais quelques techniques permettaient de gérer des adresses de 16 bits. Nous parlerons de '''processeurs 8/16 bits''' pour les désigner, et nous allons les étudier à part.
Un point important est que la gestion d'adresses de 16 bits permet d'adresser 64 kibioctets, qui peuvent être remplis avec de la RAM et de la ROM. On a donc le meilleur des mondes : 64 kibioctets de mémoire, mais avec des données de 8 bits et les économies de circuit qui vont avec. L'avantage est que le processeur peut maintenant gérer une vraie pile d'appel, pas seulement une pile d'adresse de retour. Il lui suffit pour cela d'intégrer un pointeur de pile codé sur 16 bits.
===Les modes d'adressage par page des CPU Motorola===
Les processeurs Motorola 8 bits étaient des processeurs 8 bits avec un bus d'adresse de 16 bits. C'était des processeurs à accumulateur incorporant deux registres d'indice, un registre d'état, un pointeur de pile, et un ''program counter''. Tous les registres sont reliés au bus d'adresse, sauf le registre d'état et l’accumulateur. Tous les registres font 8 bits, sauf le ''program counter''. La pile est câblée pour être dans un bloc de 256 octets compris entre l'adresse 1 0000 0000 et l'adresse 1 1111 1111, ce qui fait que son adressage se fait avec un seul octet.
[[File:6502-architecture.svg|centre|vignette|upright=1.5|Architecture simplifiée du 6502.</br> X et Y : registres d'indice ;</br> S : le pointeur de pile ;</br> A : accumulateur ;</br>P : registre d'état.</br>]]
Les processeurs Motorola 8 bits utilisaient une méthode simple pour adresser 64 kibioctets de RAM, avec des registres de 8 bits. Pour cela, ils utilisaient une variante de l'adressage base + décalage. Elle améliore l'adressage absolu, qui intègre l'adresse à lire/écrire dans l'instruction elle-même. L'adresse en question est de 8 bits et n'encode que les 8 bits de poids faible de l'adresse, les 8 bits de poids fort sont dans un '''registre de page''' adressé implicitement. L'adresse finale est obtenue en concaténant ce registre avec l'adresse mémoire intégrée dans l’instruction. Le résultat est que la mémoire était découpée en blocs de 256 consécutifs, chacun pouvant servir de fenêtre de 256 octets. Une page est réservée pour la pile, la seconde, comme dit plus haut.
Formellement, ce mode d'adressage a des ressemblances avec la commutation de banques, une technique qu'on verra dans les chapitres sur l'espace d'adressage et la mémoire virtuelle. Mais ce n'en est pas du tout : le registre de page est utilisé uniquement pour les accès mémoire avec le mode d'adressage base + décalage, mais pas pour les autres accès mémoire, qui gèrent des adresses complètes. Notons que l'usage d'un registre de page dédié fait que celui-ci est adressé implicitement.
Il faut noter que la technique a été utilisée sur des processeurs 16 bits, pour contourner la petite taille des instructions. Un exemple est celui du HP 2100, un processeur 16 bits. Il avait un registre de page de 5 bits et encodait 10 bits d'adresse dans ses instructions. Ses instructions d'accès mémoire disposaient d'un bit qui choisit quel mode d'adressage utiliser. S'il était à 0, l'adressage absolu était utilisé, le registre de page n'était pas utilisé. Mais s'il était à 1, le registre de page était utilisé pour calculer l'adresse.
Une évolution de l'adressage précédent est le '''mode page direct'''. Avec lui, le registre de page est étendu et contient une adresse mémoire complète. L'adresse finale n'est pas obtenue par concaténation, mais en additionnant le registre de page avec l'adresse fournie par adressage absolu + décalage. Un exemple est celui des premiers processeurs Motorola, qui géraient des adresses courtes de 8 bits. L'adresse courte de 8 bits correspondait non pas aux 256 premiers octets de la mémoire, mais à une fenêtre de 256 octets déplaçable en mémoire. La position de la fenêtre de 256 octets était spécifiée par le registre de page de 16 bits, qui précisait l'adresse du début de la fenêtre, celle de sa première donnée.
Il s'agit donc formellement d'adressage base + décalage, à un détail près : il n'y a qu'un seul registre de base. Le fait que ce registre de base soit unique fait qu'il est adressé implicitement, on n'a pas à encoder le numéro/noms de registre dans l'instruction. Le registre de base est utilisé uniquement pour l'adressage absolu, pas pour les autres accès mémoire. S'il y a des ressemblances avec la segmentation, une technique de mémoire virtuelle qu'on abordera dans quelques chapitres, ce n'en est pas vu que le registre de base est utilisé seulement pour un mode d'adressage bien précis.
===Le ''pseudo-aliasing'' des registres des processeurs Intel x86===
Voyons maintenant le cas des anciens processeurs 8 bits d'Intel à savoir l'Intel 4004, 4040, 8008 et 8080. Le Z80, un processeur inspiré des CPU Intel 8 bits, est aussi concerné. Avant de poursuivre, parlons des registres de ces processeurs. Les premiers CPU Intel incorporaient 7 registres de 8 bits nommés A, B, C, D, E, F, H, L, SP. Ils correspondent respectivement à : l'accumulateur A ; six registres nommés B, C, D, E, H et L ; le registre d'état F ; le pointeur de pile SP. Le Z80 ajoute deux registres d'indice X et Y. De plus, le Z80 dispose de registres d'interruption, qui sont en quelque sorte des copies des registres A, B, C, D, E, F, H, L. Le tout est illustré dans le tableau ci-dessous.
{|class="wikitable" style="text-align:center;"
|-
!
! Registres des CPU Intel
! Registres supplémentaires du Z80
|-
! Accumulateur
| A
| A'
|-
! Registre d'état
| F
| F'
|-
! Registres généraux
| B, C, D, E, H, L
| B', C', D', E', H', L'
|-
! Pointeur de pile
| colspan="2" | SP (sauf pour le 8008)
|-
! Registres d'indice
|
| X et Y
|}
Le 8008 incorpore une pile d'appel de 7 adresses, dans le processeur lui-même. Il en est de la même avec le 4004 et le 4040, comme on le verra dans la section sur les processeurs 4 bits. Mais le 8080 et le 8085 ont remplacé le tout par un simple pointeur de pile, afin d'avoir une véritable pile d'appel. Autant c'est impossible d'avoir une pile d'appel avec seulement 256 octets de mémoire, autant on peut se le permettre avec 65 536 adresses.
Pour gérer des adresses de 16 bits, ils auraient pu utiliser des registres d'adresse séparés, mais on préféré un système de '''pseudo-''aliasing'' de registres'''. Formellement, c'est un système qui concatène deux registres 8 bits pour obtenir une adresse de 16 bits. L’appariement a lieu lors de certaines opérations bien précises, qui n'ont de sens que pour les adresses : la lecture/écriture en mémoire, et l'incrémentation.
Il y avait cependant des contraintes quant aux paires de registres possibles, toutes les paires de registres n'étaient pas autorisées. Les CPU concernés sont donc des processeurs hybrides accumulateur-registre généraux. L'accumulateur ne peut pas être appairé, seuls les registres généraux le peuvent. Le Z80 autorise plus de paires que les CPU Intel. Voici les paires de registres qui pouvaient servir d'adresse 16 bits :
* Les CPU 8008 d'Intel autorisait une seule paire formée des registres H et L.
* Les autres processeurs, à savoir le 8080, le 8085 et le Z80, autorisaient : les paires BC, DE et HL.
Le 8008 ne gérait que des opérations sur 8 bits. Mais le 8080 et le 8085 ont ajouté des instructions 16 bits qui agissaient sur des paires de registre, que le Z80 a repris. Une paire de registres est considérée comme un registre unique de 16 bits pour certaines opérations arithmétiques, dont l'incrémentation. Voici la liste des instructions concernées :
* INC et DEC pour l'incrémentation et la décrémentation ;
* DAD : additionne le registre HL avec une autre paire (Hl inclus) ;
* LXI : copie une constante immédiate dans une paire de registres ;
* LHLD : lit 16 depuis la mémoire et l'enregistre dans une paire de registres ;
* SHLD : copie 16 bits depuis une paire de registres et l'enregistre en mémoire ;
* PUSH et POP : empile ou dépilent une paire de registre sur la pile ;
* XTHL : échange la paire HL avec les 16 bits au sommet de la pile d'appel ;
* XCHG : échange le contenu de la paire HL et DE.
Pour résumer, le processeur avait des instructions LOAD, STORE, PUSH et POP adaptées pour gérer des paires de registre. De plus, l'instruction XCHG permettait d’échanger le contenu des paires DE et HL. L'instruction a été étendue sur les processeurs 16 bits pour échanger tous les registres. Mais l'implémentation était alors différente. L'incrémentation sur une paire de 16 bit était très utile, car les adresses sont souvent incrémentées quand on parcours un tableau. Ces instructions nous donnent quelques indices sur ce qu'il y a dans le processeur.
Le système de pseudo-aliasing a un impact sur le banc de registre. Le banc de registre regroupe les registres généraux et le pointeur de pile, mais ne contient pas l'accumulateur. Les contraintes sur les paires de registres possibles ne s'expliquent que d'une seule manière : le banc de registre contient des registres de 16 bits, une paire de registres 8 bits est mémorisée dans un registre unique. Il faut donc faire une différence entre les registres architecturaux de 8 bits, et les registres réels de 16 bits.
Le banc de registre a un port de 8 bits pour les données, qui est fabriqué à partir d'un port 16 bits auquel on a rajouté un multiplexeur pour choisir soit l'octet de poids faible, soit l'octet de poids fort. Le bus de données fait 8 bits, ce qui fait que les instructions LOAD, STORE, PUSH et POP pour paires 16 bits sont réalisées en deux fois : on lit/écrit l'octet de poids faible, puis celui de poids fort. Par contre, le bus d'adresse fait bien 16 bits. Cela suggère que le banc de registre dispose d'un port de 16 bits dédié aux adresses, en plus du port de données 8 bits.
[[File:Architecture d'un CPU 8-16 bits avec un banc de registre double port.png|centre|vignette|upright=2|Architecture d'un CPU 8-16 bits avec un banc de registre double port]]
L'incrémentation d'une paire 16 bits ne coute rien à implémenter, ou presque. En effet, le processeur incorpore un incrémenteur 16 bits pour le ''program counter'', qui est relié au bus d'adresse. L'idée est de rentabiliser cet incrémenteur, en lui permettant d'incrémenter des données/adresses de 16 bits obtenues via pseudo-aliasing. De même, il peut être utilisé pour incrémenter le pointeur de pile, voire un compteur de rafraichissement mémoire (pour rappel, le rafraîchissement mémoire demande de balayer la mémoire d'adresse en adresse et été fait par le CPU à l'époque). Pour cela, il suffit de connecter le ''program counter'', le banc de registre, et l'incrémenteur, via un bus dédié.
[[File:Calcul d'adresse par ALU dédiée avec PC séparé.png|centre|vignette|upright=2|Calcul d'adresse par ALU dédiée avec PC séparé]]
Notez qu'on peut encore simplifier le tout en placant le ''program counter'' dans le banc de registre, ce qui ne gênera pas le travail de l'incrémenteur mais simplifiera le câblage au bus d'adresse. Ce n'était pas systématique, certains processeurs mettaient le ''program counter'' dans le banc de registre, d'autres non.
: Inclure le ''program counter'' dans le banc de registre permet parfois de remplir un vide. Par exemple, sur un processeur avec 12 registres, le banc de registre devrait faire idéalement 16 registres, inclure le ''program counter'' dedans fait monter le tout à 13.
[[File:Architecture d'un CPU 8-16 bits.png|centre|vignette|upright=2|Architecture d'un CPU 8-16 bits]]
Les processeurs Intel 8 bits, à savoir le 8008, le 8080 et le 8085 ; mettaient le ''program counter'' dans le banc de registre. Vous avez donc toutes les armes pour comprendre leur micro-architecture. Par exemple, voici la micro-architecture du processeur 8080. Remarquez le banc de registre, qui contient tous les registres sauf l'accumulateur et le registre. Il a deux ports : un pour les adresses et un pour les données. Notez le dé-multiplexeur sur le port de donnée. Pour le reste, il s'agit d'une architecture à accumulateur hybride des plus classiques.
[[File:Intel 8080 arch.svg|centre|vignette|upright=3|Microarchitecture de l'Intel 8080.]]
Le Z80 est un processeur inspiré du design des processeurs Intel 8 bits, mais avec pas mal d'améliorations. Un point particulier de ce processeur est son banc de registre. Il contient tous les registres du processeur, y compris l'accumulateur et le registre d'état ! Les seuls registres en-dehors du banc de registre sont le ''program counter'' et un compteur de rafraichissement mémoire IR.
Un autre point particulier est que les registres dans le banc de registres avaient une copie séparée accessible uniquement pour les interruptions, via fenêtrage de registres. Et l'accumulateur et le registre d'état étant dans le banc de registre, il y avait deux accumulateurs et deux registres d'état. Les registres A, B, C, D, E et F étaient dupliqués, par le pointeur de pile ni les registres d'indice. Les copies des registres étaient nommées A', B', C', D', E' et F'.
Le Z80 supportait des instructions d'échange de registre en plus des CPU Intel 8 bits. L'instruction EX peut échanger soit le contenu des paires D,E et H,F, soit la paire A,F avec la paire A',F'. L'instruction EXX échange les paires BC, DE, HL avec les paires BC', DE', HL'. En faisant cela, le programmeur pouvait utiliser deux fois plus de registres généraux s'il n'utilisait pas les interruptions. L'échange de paires se fait sans copies de registres, mais simplement en modifiant l'adresse envoyée sur le banc de registre. Pour cela, plusieurs bascules mémorisent des bits qui indiquent si les paires ont été échangées ou non. Il y a une bascule pour les paires DE , HL ; une autre pour les paires A,F et paire A',F', une dernière pour l'instruction EXX. En combinant ces bascules avec les noms de registres envoyés par le séquenceur, on peut échanger les paires de registres.
==Le cas particulier des processeurs 4 bits : le 4004 d'Intel==
L'Intel 4004 était le tout premier micro-processeur. Il s'agissait d'un microprocesseur de 4 bits, basé sur une architecture à accumulateur. Il disposait d'un accumulateur et de 16 registres d'indice, tous de 4 bits. Il faisait des calculs sur des données de 4 bits, appelées des nibbles. Cependant, sur ses 46 instructions machines supportées, 41 agissaient sur des opérandes de 8 bits, les 5 restantes sur des opérandes de 16 bits. Simplement, les calculs se faisaient en deux fois, en échangeant des données entre mémoire RAM et accumulateur.
Le 4004 est un circuit intégré avec peu de broches. Il dispose notamment d'un bus de données/adresse, qui est multiplexé, c’est-à-dire qu'il sert alternativement de bus de données et de bus d'adresse selon les besoins. Le bus de commande mémoire fait 5 bits, dont 4 pour les chips de RAM, un pour la ROM. Les adresses sont codées sur 12 bits, les données sur 4 et les instructions sur 8 bits. L'envoi d'une adresse sur le bus se fait en plusieurs fois, de même que la lecture d'une instruction. Il s'agit là d'une adaptation pour outrepasser les limitations d'un processeur 4 bit.
[[File:Intel 4004 processor pinout.png|centre|vignette|upright=2|Broches de l'Intel 4004. Nous verrons à quoi elles servent plus bas.]]
===L'espace d'adressage de l'Intel 4004===
Les adresses du processeur sont sur 12 bits, ce qui fait 4096 adresses différentes. Elles regroupent à la fois la ROM et la mémoire RAM, vu que l'architecture est une sorte de mélange bizarre entre une architecture Von Neumann et Harvard. Le processeur gère bien deux espaces d'adressage séparés, mais la RAM et la ROM sont reliés au même bus. La sortie CM-ROM du processeur indique si l'adresse envoyée correspond à la RAM ou la ROM. Un circuit de décodage d'adresse active ou désactive la RAM selon la valeur de ce bit, l'inverse pour la ROM, en agissant sur leurs bits Chip Select. Seule la RAM ou la ROM répondent alors à l'adresse.
Pour ce qui est de la RAM, le circuit de décodage d'adresse pouvait gérer au maximum 1024 adresses différentes, chacune contenant un nibble. Pour cela, le CPU 4004 était relié à une ou plusieurs RAM externes, des Intel 4002. Chaque Intel 4002 contenait 64 nibbles de données, plus 16 nibbles de statut qu'on ne détaillera pas ici. Les nibbles de statut étaient accessibles en utilisant des instructions d'entrée-sortie, donc pas avec des lectures/écritures mémoire. Les 64 nibbles de données sont découpés en 4 groupes de 16 nibbles. Le CPU pouvait être relié à maximum 16 Intel 4002, ce qui fait 1024 nibbles de données et 256 nibbles de statut. L'ensemble permet de remplir l'espace d'adressage de 1024 adresses.
===Le registre de page et le pseudo-aliasing des registres===
Sélectionner une adresse mémoire utilisait un mélange entre pseudo-aliasing et registre de page. Pour les données, les 1024 adresses étaient découpées en 4 pages de 256 adresses. Pour la ROM, les 4096 adresses étaient découpées en 16 pages de 256 adresses. Localiser une donnée dans une page ne requiert que 8 bits, 2/4 bits supplémentaires permettent de sélectionner la page voulue. Le registre de page était dans le processeur lui-même, et était relié aux sorties du processeur nommées CM-RAM 0, 1, 2 et 3. Les 4 sorties encodaient un nombre qui permet de sélectionner le numéro de page voulu.
Le registre de page fait 5 bits : un pour distinguer RAM et ROM, 4 bits pour sélectionner la page voulue. L'avantage est que la carte mère gère au maximum 16 chips de RAM, ce qui colle parfaitement avec les 4 utilisés pour sélectionner une page. Un chip de RAM correspond à une page, et chacun est activé ou désactivé suivant la page sélectionnée. Pour cela, il suffit d'ajouter un décodeur sur la carte mère, qui prend les 4 bits du registre de page et fournit les signaux Chip Select aux différents chips de RAM.
Reste alors à utiliser les 8 bits d'adresse à l'intérieur d'un chip de RAM. Le 4004 permettait de concaténer deux registres d'indice de 4 bits pour former une adresse de 8 bits. Les instructions d'accès mémoire pouvaient ainsi préciser une paire de registre d'indice pour préciser quelle adresse lire/écrire. Idem pour les branchements indirects : le processeur supportait une instruction de branchement indirect qui précisait l'adresse dans une paire de registres d'indice. Les registres d'indice sont donc assez mal nommés sur cette architecture, vu qu'ils peuvent servir soit de registre d'indice, soit de demi-registre d'adresse. Il s'agit là du système de pseudo-aliasing des registres, mais appliqué aux registres d'indice.
L'Intel 4004 gérait deux instructions pour gérer les adresses mémoires. La première, l'instruction DCL (''Designate Command Line'') configure le registre de page. Elle prend en entrée un numéro de page et le copie dans le registre de page. L'opérande peut provenir d'un registre d'indice ou de l'accumulateur. La seconde, l'instruction SRC (''Send Register Control'') concatène deux registres d'indice pour obtenir une adresse de 8 bits. Un accès mémoire se fait donc en maximum trois instructions : une qui configure le registre de page si ce n'est pas déjà fait, une instruction SRC pour envoyer l'adresse, et une troisième instruction qui dit s'il faut faire une lecture ou une écriture.
===La microarchitecture de l'Intel 4004===
Il incorporait une pile d'adresse de retour intégrée au processeur. La pile d'adresse acceptait exactement 3 adresses maximum. Elle était regroupée avec le ''program counter'' dans un banc de registre, de 4 registres. Le ''program counter'' et le pointeur de pile faisaient chacun 12 bits, soit trois nibble. Ils étaient incrémentés par un incrémenteur dédié.
SI on omet le registre de page et la pile d'adresse, le 4004 est une architecture à accumulateur des plus classiques, avec un bus interne unique, un banc de registre pour les registres d'indices, un accumulateur relié à une unité de calcul. Les registres d'indice étaient dans un banc de registre séparés, car ils faisaient 4 bits chacun, contrairement au pointeur de pile et le ''program counter''. Un détail important est que les bancs de registres du 4004 étaient implémentés avec de la DRAM, et non des registres usuels fabriqués avec des bascules 1 bit.
[[File:Microarchitecture de l'Intel 4004.png|centre|vignette|upright=2.5|Microarchitecture de l'Intel 4004]]
<noinclude>
{{NavChapitre | book=Fonctionnement d'un ordinateur
| prev=Les architectures à pile et mémoire-mémoire
| prevText=Les architectures à pile et mémoire-mémoire
| next=Les processeurs de traitement du signal
| nextText=Les processeurs de traitement du signal
}}
</noinclude>
dob16fjaqoef0wle95igib44tzzyh5x
765691
765690
2026-05-01T15:51:07Z
Mewtow
31375
/* Les microcontrôleurs PIC */
765691
wikitext
text/x-wiki
Nous avons déjà abordé la notion de processeur 8, 16, 32, 64 bits. Elle désigne la taille des registres généraux, ou de l'accumulateur. De nos jours, les processeurs 32 et 64 bits sont la norme, mais les premiers micro-processeurs étaient des processeurs 4 et 8, avant de passer rapidement au 16 bits. La raison est que leur budget en transistor limité faisait qu'on ne pouvait pas utiliser une ALU trop grande : une ALU 8 bit prend deux fois moins de place et de transistors qu'une ALU 16 bits. Cependant, les processeurs 8 bits avaient de sérieuses limitations qui étaient compensées par diverses solutions. Dans ce chapitre, nous allons faire une revue rapide des processeurs 8 bits et de leurs fonctionnalités.
La principale limitation des CPU 8 bits était l'adressage : des registres de 8 bits limitaient l'espace d'adressage à seulement 256 adresses, soit à peine 256 octets ! Intuitivement, on se dit que 256 octets est purement impraticable, on ne peut rien faire d'intéressant avec seulement 256 de RAM + ROM. Et c'est partiellement vrai. L'adage veut que 16 bits est la taille minimale intéressante, la limite à partir de laquelle on a assez de mémoire RAM/ROM pour coder des applications intéressantes. Mais 256 octets de RAM est largement suffisant sur de nombreux systèmes embarqués simples s'en accommodent : des caisses enregistreuses, des systèmes de régulation de feu de circulation, etc.
Pour les applications demandant plus de mémoire RAM, les CPU de l'époque contournaient la limitation de 256 octets de RAM avec de nombreux stratagèmes. Dans ce qui va suivre, nous allons séparer les CPU 8 bits selon qu'ils utilisent une architecture Harvard ou une architecture Von Neumann. La raison est qu'une architecture Harvard permet en soi de contourner partiellement ce problème d'adressage. Les choses sont plus compliquées avec une architecture Von Neumann.
==Les processeurs 8/16 bits à architecture Harvard ==
La première solution est d'utiliser une architecture Harvard. Le processeur 8 bit a alors deux espaces d'adressage : un pour la RAM, un autre pour la ROM. Et les deux utilisent des adresses de taille différente. La ROM est reliée à un bus d'adresse de 16 bits, alors que la RAM est elle connectée à un bus d'adresse de 8 bits. La RAM est donc limitée à 256 octets, alors que la ROM peut monter jusqu'à 64 kibioctets. Mine de rien, faire ainsi est largement suffisant.
Les processeurs de l'époque intégraient parfois les 256 octets de RAM directement dans le processeur. Beaucoup en implémentaient moins, avec par exemple seulement 64 octets de RAM, ou 32 octets, ou 128 octets. L'avantage est que cela éliminait le bus d'adresse des données et ne laissait que le bus d'adresse pour la ROM. On économisait ainsi beaucoup de broches sur le circuit intégré du CPU. Et pour les applications demandant plus de RAM, on pouvait ajouter un circuit séparé qui permettait d'adresser une RAM plus grande. Mais cela sera plus clair avec un exemple.
===Les microcontrôleurs PIC===
Les '''microcontrôleurs PIC''' regroupent des microcontrôleurs allant de microcontrôleurs 8 bit aux performances très faible, à des microcontrôleurs 32 bits bien plus puissants. Les microcontrôleurs PIC sont très utilisés dans l'embarqué ou d'informatique industrielle. Ils sont vendu à des volumes assez impressionnants, plusieurs millions par an. Et si vous avez ou êtes en train de faire des études d'électronique, je parie que vous les avez déjà vu en classe, ou que ce ne saurait tarder. Dans ce qui suit, nous allons nous concentrer sur les microcontrôleurs PIC 8 bits, à savoir les PIC 16, 16 et 18. Les PIC 24, qui sont des microcontrôleurs 16 bits, ne seront pas abordés.
Les microcontrôleurs PIC 8 bits incorporent une mémoire RAM très petite, ainsi qu'une architecture Harvard, comme dit plus haut. La mémoire RAM des microcontrôleurs PIC est très petite, elle dépasse rarement la centaine d'adresse. Pour donner un exemple, le PIC16F84 a une RAM composée de 68 "registres" de 8 bits. Le terme "registres" devrait vous faire tiquer, mais il s'agit bien d'une mémoire SRAM séparée. Simplement, la documentation des PIC qualifie cette mémoire SRAM de "registres", et il faut admettre que la différence entre banc de registre et SRAM séparée est un peu floue.
Un détail est que la SRAM n'a qu'un seul port qui sert à la fois pour les lectures et écritures. Pour compenser, les PIC sont des architectures à accumulateur, où une opérande est lue depuis la SRAM, l'autre depuis l'accumulateur. Leur implémentation de l'accumulateur ajoute une petite subtilité : le résultat d'une opération arithmétique peut être enregistré ailleurs que dans l'accumulateur. Le résultat peut aussi remplacer la seconde opérande, celle lue en mémoire RAM. Dit autrement, le résultat est enregistré dans l'adresse mémoire source. Les instructions de calcul ont le choix : un bit dans leur encodage précise où enregistrer le résultat.
Outre l'accumulateur, les PIC disposent de registres de contrôle, d'un ''program counter'', d'un registre d'état, et d'un pointeur de pile. Le registre d'état contient un registre séparé pour la retenue de l'addition/soustraction. Ce dernier est très important, vu qu'il est nécessaire pour les additions/soustractions sur des opérandes de 16 bits. Le processeur a beau être un CPU 8 bits, il peut être utilisé pour faire des calculs 16 bits, la performance est alors amoindrie, mais ce n'est pas un problème pour les applications d'un tel microcontroleur.
Un détail assez original est que les registres précédents sont mappés en mémoire, à quelques exceptions près ! En clair, on peut y accéder en lisant/écrivant à une adresse mémoire bien précise. Les seules registres qui ne sont pas mappés en mémoire sont l'accumulateur, la pile d'appel, et les registres d'entrée-sortie. Les registres d'entrée-sortie permettent de lire ou écrire sur un port d'entrée-sortie ou de lire un ''timer''. En clair, les PIC ont un espace d'adressage séparé pour les entrées-sorties.
[[File:DocPIC16F84.png|centre|vignette|upright=2|DocPIC16F84]]
Le processeur de ces microcontrôleurs a un jeu d'instruction propriétaire, le jeu d'instruction PIC. Les instructions PIC sont très petites. Les premières versions du jeu d'instruction utilisaient des instructions codées sur 12 bits, dont 5 pour l'adresse mémoire de la seconde opérande. Pour les branchements, 3 bits étaient utilisés pour l'opcode, 9 pour l'adresse de destination. Par la suite, les instructions ont été étendues à 13 bits sur les PIC1670, puis à 14, 15 et 16 bits. Les adresses ont alors été élargies, ce qui permet d'adresser en peu plus de mémoire RAM.
Les instructions se limitent à des additions/soustractions, des opérations bit à bit,des branchements, des instructions LOAD/STORE, ainsi que des opérations de manipulation de bit. Il y a une instruction pour mettre une adresse à zéro, qui peut aussi mettre à zéro l’accumulateur.
Pour ce qui est des branchements, les PIC n'ont pas d'instructions de branchement conditionnels, ils font avec une SKIP instruction et des branchements inconditionnels. Par contre, ils ont des branchements pour les appels et retour de fonction. Mieux que ça, ils intègrent une pile d'appel d'environ 8 adresses de retour. Pour donner une idée, l'adresse de retour est encodée sur 10 bits sur les PIC16F84.
Pour les instructions de manipulation de bit, il y a des instructions pour tester/masquer un bit dans une opérande, 4 en tout ( mettre à 0, mettre à 1, tester si bit = 1, tester si bit = 0). Les instructions qui testent un bit prennent leur opérande dans l'accumulateur. Il y a aussi deux instructions de rotation à gauche et droite, qui tiennent compte de la retenue mémorisée dans le registre d'état. Mentionnons aussi une instruction pour inverser deux ''nibbles'' dans un octet.
Les PIC ont aussi des instructions d'incrémentation et de décrémentation, un peu spéciales. Ces dernières regroupent : une incrémentation normale, une décrémentation normale, une décrémentation fusionnée avec une instruction SKIP, et une incrémentation fusionnée avec une instruction SKIP. Les deux dernières incrémentent/décrémentent l'accumulateur et SKIP l'instruction suivante si le résultat est zéro. Elles permettent de fortement simplifier l'implémentation des boucles qui s'exécutent tant que leur compteur atteint zéro.
Les PIC gèrent l'adressage absolu et indirect. L'adressage absolu, celui où l'adresse est intégrée dans l'instruction, est très simple à implémenter. Les adresses prennent moins d'un octet, vu que la taille de la RAM est très petite, les adresses sont très courtes, les intégrer dans des instructions elles-mêmes courtes n'est pas un problème. L'adresse est encodée sur 5 à 7 bits, selon le modèle, ce qui permet d'adresser entre 32 et 128 octets.
: Les PIC 18 peuvent adresser plus de 256 octets de RAM en utilisant la commutation de banques, une technique qui sera abordée dans plusieurs chapitres.
Pour l'adressage indirect, les PIC intègrent un registre d'adresse dédié. Il s'agit du registre FSR, qui mémorise l'adresse à lire/écrire. Il est possible de copier un pointeur dedans, qui provient soit de l'accumulateur, soit de la mémoire SRAM. Dans les deux cas, la donnée adressée est copiée dans un registre INDR, qui sert de registre d’interfaçage mémoire avec le bus de données. Le registre FSR est directement connecté sur le bus d'adresse. Les modèles de base se débrouillent avec un registre FSR et un registre INDR, mais les modèles plus performants ont deux ou trois copies de chaque registre. Les modèles PIC18 ajoutent aussi des instructions LOAD/STORE avec les modes d'adressage à post- ou pré-incrément/décrément, et le mode d'adressage "Base + Indice + Décalage".
Avec tout ce qu'on vient de dire, vous devriez pouvoir comprendre la microarchitecture d'un PIC, qui est résumée dans ce schéma.
[[File:DocPIC16F84 all.png|centre|vignette|upright=2.5|Microarchitecture du PIC16F84.]]
===Le Fairchild F8 et la console de jeu Fairchild Channel F===
Un autre exemple est la Fairchild F8 de la défunte entreprise Fairchild Semiconductor. Il incorpore un processeur 8 bits, c'est à dire que le processeur fait des calculs sur des entiers de 8 bits maximum, une mémoire RAM de 64 octets, ainsi qu'une mémoire ROM de 1 kibioctet. Les 64 octets de RAM sont certes très peu, mais c'est suffisant pour certaines applications simples, comme les caisses automatiques de l'époque, ou des applications embarquées. Et de toute façon, il est possible d'ajouter de la mémoire RAM supplémentaire si les 64 octets de RAM intégrée ne suffisent pas. Le système était donc modulaire, adaptable selon les besoins, peu cher pour son implémentation minimale sans RAM en plus.
Vu qu'il s'agit d'un des tout premiers ordinateurs, il est sorti à une époque où la technologie était rudimentaire. À cette époque, le processeur était composé de pièces détachées qu'il fallait souder ensemble pour obtenir un processeur fonctionnel. Ce n'est que plus tard qu'est apparu le micro-processeur, qui regroupe un processeur complet dans un seul circuit intégré. Le résultat est que le processeur du Fairchild F8 est coupé en deux, l'unité de calcul et l'unité de contrôle sont placés dans des pièces détachées séparés.
Le microcontrôleur est composé de trois à quatre pièces détachées, certaines étant optionnelles. La première est le '''3850 CPU''', qui regroupe l'unité de calcul et la mémoire RAM intégrée. La seconde est le PSU (''3851 Program Storage Unit''), qui regroupe la mémoire ROM et l'unité de contrôle, ''program counter'' inclut. S'il y a besoin d'utiliser plus de RAM, il faut ajouter un circuit d’interface mémoire, qui est au choix le ''3852 Dynamic Memory Interface'' (DMI) ou le ''3853 Static Memory Interface'', le premier étant connecté à une mémoire de type DRAM, l'autre à une SRAM (nous verrons ce que sont les DRAM et les SRAM dans le prochain chapitre).
[[File:Fairchild F8.png|centre|vignette|upright=2|Fairchild F8]]
Le système minimal est composé d'un PSU et d'un 3850, sans les circuits d'interface mémoire. Le tout donne un système avec un processeur 8 bit, 64 octets de RAM et 1 kibioctet de ROM, les deux mémoires étant intégrées dans le "processeur". Le processeur gérait 4 entrées-sorties, chacune étant reliée avec un bus de 8 bit au processeur. Au passage, en 1977, Mostek a créé un microcontrôleur qui regroupe un PSU et un 3850 : le Mostek 3870. Le système minimal n'avait pas de bus d'adresse, vu que la RAM était intégrée au processeur. C'est les 3852 et 3853 qui ajoutaient un bus d'adresse. Ils ajoutent un bus d'adresse de 16 bits, ce qui permet d'adresser 64 kibioctets de RAM.
[[File:Fairchild-Channel-F.jpg|vignette|un Fairchild Channel F]]
Le Fairchild F8 a été utilisé dans la Fairchild Channel F, une des toute première console de seconde génération, à savoir des consoles qui utilisaient des cartouches de jeu. Avant les consoles de seconde génération, les consoles étaient non-programmables. Elles étaient conçues pour faire tourner un jeu précis, aucun autre, le jeu étant implémenté dans leurs circuits.
La Fairchild Channel F est composé du système minimal, auquel on a ajouté une carte son rudimentaire et 2 kibioctets de mémoire vidéo. La mémoire vidéo sert uniquement pour afficher des images à l'écran : on écrit l'image à afficher dedans, un circuit vidéo se charge de l'afficher à l'écran automatiquement. Le processeur ne fait qu'écrire dans cette RAM vidéo, il ne peut pas en lire le contenu. De la RAM supplémentaire peut cependant être ajoutée dans les cartouches de jeu.
===L'usage d'une architecture Harvard modifiée : les consoles 8 bits===
Pour encore améliorer la situation, il est possible d'utiliser une architecture Harvard modifiée, qui permet de lire des données depuis la mémoire ROM. Cela réduit encore plus les besoins en mémoire RAM. Les constantes manipulées par le programme sont mémorisées en ROM, lues depuis la ROM, au lieu d'être chargées en RAM. Les consoles de jeu utilisaient beaucoup de stratagème.
L'exemple type est celui des consoles 8 bits avec des graphismes en 2D. La cartouche de jeu contenait une ROM, qui mémorisait le code du jeu, les niveaux, les sprites et autres données graphiques. Leur carte graphique lisait directement les ''sprites'' depuis la mémoire ROM, sans avoir à les charger en mémoire vidéo. La mémoire vidéo se contentait de mémoriser le reste des informations graphiques, ainsi que des pointeurs vers les ''sprites'' en ROM. En conséquence, les consoles 8 bits n'avaient pas besoin de beaucoup de RAM, vu qu'une grande partie des données utiles étaient dans une ROM directement accessible par le processeur. A l'opposé, les micro-ordinateurs devaient copier les données d'un jeu depuis une disquette dans la mémoire RAM, ce qui demandait d'avoir plus de RAM.
Le passage au support CD sur les consoles 32 bits a eu la même conséquence. Le processeur ne pouvant pas lire directement le CD à sa guise, il fallait copier les données du CD en RAM. D'où l'apparition de temps de chargement assez longs, inexistants sur support cartouche.
Avec ce genre de stratagèmes, 256 octets de RAM est largement suffisant sur de nombreux systèmes, à condition qu'on ait assez de ROM pour coder un programme digne de ce nom. Par exemple, de nombreux systèmes embarqués simples s'en accommodent : des caisses enregistreuses, des systèmes de régulation de feu de circulation, etc.
===Le HP Nanoprocessor : un processeur sans ALU===
Un dernier exemple est celui du processeur HP Nanoprocessor, de l'entreprise HP. Il a été commercialisé en 1974, en même temps que les premiers micro-processeurs d'Intel. Tous les processeurs de l'époque étaient des processeurs 8 bits et le HP Nanoprocessor ne faisait pas exception. Ce n'était pas un processeur haute performance, il était destiné à des applications d'informatique industrielle ou embarquée. D'ailleurs, il utilisait des transistors de type metal-gate, peu performants, là où ses contemporains utilisait des transistors en silicium, plus performants.
Mais une caractéristique qui rend cela encore plus claire est qu'il n'y a pas d'ALU ! En effet, ce processeur est incapable de faire des additions, des soustractions ou autres opérations simples ! Il est cependant capable d'effectuer des incrémentations et décrémentations, des décalages, des opérations logiques comme des ET/OU/NON/XOR et bien d'autres. Il supporte en tout 48 instructions, avec un support limité des modes d'adressage indirects. Les instructions de branchement étaient des instructions SKIP, il n'y avait pas d'instructions de branchement généralistes.
Pour ce qui est des registres, il disposait de 16 registres de 8 bits et d'un accumulateur. Niveau mémoire, il était relié à une mémoire ROM, rien de plus. Il n'avait de RAM supplémentaire qu'on pouvait lui adjoindre, il devait se débrouiller avec seulement ses registres. Et cela ne posait pas de problèmes pour son usage. Seul le mode d'adressage indirect à registre est supporté, il n'y a pas de registres d'indices. Ce mode d'adressage permet de lire des données en mémoire ROM, la ROM pouvant contenir des tableaux de valeurs constantes.
: Il est possible de lui adjoindre de la RAM via les ports d'entrée-sortie, ainsi qu'une ALU, mais RAM et ALU sont traités comme des périphériques avec lesquels on communique, ils ne sont pas intégrés au processeur.
Niveau micro-architecture, il incorporait une unité de calcul logique et un circuit comparateur. Le comparateur était un circuit comparateur série des plus basiques, qui était utilisé pour les instructions de branchement et associées. L'unité de calcul logique gérait des incrémentations/décrémentation, des décalages, les opérations logiques et quelques autres. L'unité de calcul logique était bit-slicée, à savoir conçue en assemblant 8 ALU de 1 bit chacune, enchainées en série. Le tout était combiné à des circuits de ''carry skip''.
[[File:Unité de calcul du HP nanonprocessor.png|centre|vignette|upright=2|Unité de calcul du HP nanoprocessor]]
Son unité de décodage d'instruction était très simple, essentiellement basée sur des portes NOR, grâce à un encodage efficace des instructions machine. Le ''program counter'' fait 11 bits, ce qui permet d'adresser une ROM de 2 kibioctets. Le ''program counter'' était relié à un circuit incrémenteur qui gérait les isntructions SKIP (il pouvait incrémenter le ''program counter'' par pas de 1 ou de 2 en cas de SKIP). Le processeur contient aussi deux registres, qui servent en quelque sorte de pile d'adresse de retour. Un premier registre mémorise l'adresse de retour d'une fonction, l'autre mémorise le ''program counter'' lors d'une interruption, pour savoir où brancher à la fin de l'interruption.
[[File:HP nanoprocessor.png|centre|vignette|upright=2.5|HP nanoprocessor]]
Fait intéressant, le concepteur du processeur a gracieusement donné les masques utilisés pour graver le silicium du processeur au site [https://www.cpushack.com/ CPU Shack]. Les masques en question sont disponibles ici :
* [https://www.cpushack.com/2020/08/20/hp-nanoprocessor-mask-set/ HP NanoProcessor Mask Set]
* [https://www.cpushack.com/2020/08/09/the-forgotten-ones-hp-nanoprocessor/ The Forgotten Ones: HP Nanoprocessor]
Les masques ont été analysés par Ken Shirrif dans cet article de blog :
* [https://www.righto.com/2020/09/hp-nanoprocessor-part-ii-reverse.html HP Nanoprocessor part II: Reverse-engineering the circuits from the masks]
==Les processeurs 8/16 bits à architecture Von Neumann==
L'usage d'une architecture Harvard est une solution pour adresser plus de mémoire avec des CPU 8 bits. Mais plusieurs microprocesseurs commerciaux n'utilisaient pas cette solution. À la place, c'était des architectures Von Neumann, mais qui étaient capables de gérer des adresses de 16 bits. Les données faisaient 8 bits, les registres faisaient 8 bits, mais quelques techniques permettaient de gérer des adresses de 16 bits. Nous parlerons de '''processeurs 8/16 bits''' pour les désigner, et nous allons les étudier à part.
Un point important est que la gestion d'adresses de 16 bits permet d'adresser 64 kibioctets, qui peuvent être remplis avec de la RAM et de la ROM. On a donc le meilleur des mondes : 64 kibioctets de mémoire, mais avec des données de 8 bits et les économies de circuit qui vont avec. L'avantage est que le processeur peut maintenant gérer une vraie pile d'appel, pas seulement une pile d'adresse de retour. Il lui suffit pour cela d'intégrer un pointeur de pile codé sur 16 bits.
===Les modes d'adressage par page des CPU Motorola===
Les processeurs Motorola 8 bits étaient des processeurs 8 bits avec un bus d'adresse de 16 bits. C'était des processeurs à accumulateur incorporant deux registres d'indice, un registre d'état, un pointeur de pile, et un ''program counter''. Tous les registres sont reliés au bus d'adresse, sauf le registre d'état et l’accumulateur. Tous les registres font 8 bits, sauf le ''program counter''. La pile est câblée pour être dans un bloc de 256 octets compris entre l'adresse 1 0000 0000 et l'adresse 1 1111 1111, ce qui fait que son adressage se fait avec un seul octet.
[[File:6502-architecture.svg|centre|vignette|upright=1.5|Architecture simplifiée du 6502.</br> X et Y : registres d'indice ;</br> S : le pointeur de pile ;</br> A : accumulateur ;</br>P : registre d'état.</br>]]
Les processeurs Motorola 8 bits utilisaient une méthode simple pour adresser 64 kibioctets de RAM, avec des registres de 8 bits. Pour cela, ils utilisaient une variante de l'adressage base + décalage. Elle améliore l'adressage absolu, qui intègre l'adresse à lire/écrire dans l'instruction elle-même. L'adresse en question est de 8 bits et n'encode que les 8 bits de poids faible de l'adresse, les 8 bits de poids fort sont dans un '''registre de page''' adressé implicitement. L'adresse finale est obtenue en concaténant ce registre avec l'adresse mémoire intégrée dans l’instruction. Le résultat est que la mémoire était découpée en blocs de 256 consécutifs, chacun pouvant servir de fenêtre de 256 octets. Une page est réservée pour la pile, la seconde, comme dit plus haut.
Formellement, ce mode d'adressage a des ressemblances avec la commutation de banques, une technique qu'on verra dans les chapitres sur l'espace d'adressage et la mémoire virtuelle. Mais ce n'en est pas du tout : le registre de page est utilisé uniquement pour les accès mémoire avec le mode d'adressage base + décalage, mais pas pour les autres accès mémoire, qui gèrent des adresses complètes. Notons que l'usage d'un registre de page dédié fait que celui-ci est adressé implicitement.
Il faut noter que la technique a été utilisée sur des processeurs 16 bits, pour contourner la petite taille des instructions. Un exemple est celui du HP 2100, un processeur 16 bits. Il avait un registre de page de 5 bits et encodait 10 bits d'adresse dans ses instructions. Ses instructions d'accès mémoire disposaient d'un bit qui choisit quel mode d'adressage utiliser. S'il était à 0, l'adressage absolu était utilisé, le registre de page n'était pas utilisé. Mais s'il était à 1, le registre de page était utilisé pour calculer l'adresse.
Une évolution de l'adressage précédent est le '''mode page direct'''. Avec lui, le registre de page est étendu et contient une adresse mémoire complète. L'adresse finale n'est pas obtenue par concaténation, mais en additionnant le registre de page avec l'adresse fournie par adressage absolu + décalage. Un exemple est celui des premiers processeurs Motorola, qui géraient des adresses courtes de 8 bits. L'adresse courte de 8 bits correspondait non pas aux 256 premiers octets de la mémoire, mais à une fenêtre de 256 octets déplaçable en mémoire. La position de la fenêtre de 256 octets était spécifiée par le registre de page de 16 bits, qui précisait l'adresse du début de la fenêtre, celle de sa première donnée.
Il s'agit donc formellement d'adressage base + décalage, à un détail près : il n'y a qu'un seul registre de base. Le fait que ce registre de base soit unique fait qu'il est adressé implicitement, on n'a pas à encoder le numéro/noms de registre dans l'instruction. Le registre de base est utilisé uniquement pour l'adressage absolu, pas pour les autres accès mémoire. S'il y a des ressemblances avec la segmentation, une technique de mémoire virtuelle qu'on abordera dans quelques chapitres, ce n'en est pas vu que le registre de base est utilisé seulement pour un mode d'adressage bien précis.
===Le ''pseudo-aliasing'' des registres des processeurs Intel x86===
Voyons maintenant le cas des anciens processeurs 8 bits d'Intel à savoir l'Intel 4004, 4040, 8008 et 8080. Le Z80, un processeur inspiré des CPU Intel 8 bits, est aussi concerné. Avant de poursuivre, parlons des registres de ces processeurs. Les premiers CPU Intel incorporaient 7 registres de 8 bits nommés A, B, C, D, E, F, H, L, SP. Ils correspondent respectivement à : l'accumulateur A ; six registres nommés B, C, D, E, H et L ; le registre d'état F ; le pointeur de pile SP. Le Z80 ajoute deux registres d'indice X et Y. De plus, le Z80 dispose de registres d'interruption, qui sont en quelque sorte des copies des registres A, B, C, D, E, F, H, L. Le tout est illustré dans le tableau ci-dessous.
{|class="wikitable" style="text-align:center;"
|-
!
! Registres des CPU Intel
! Registres supplémentaires du Z80
|-
! Accumulateur
| A
| A'
|-
! Registre d'état
| F
| F'
|-
! Registres généraux
| B, C, D, E, H, L
| B', C', D', E', H', L'
|-
! Pointeur de pile
| colspan="2" | SP (sauf pour le 8008)
|-
! Registres d'indice
|
| X et Y
|}
Le 8008 incorpore une pile d'appel de 7 adresses, dans le processeur lui-même. Il en est de la même avec le 4004 et le 4040, comme on le verra dans la section sur les processeurs 4 bits. Mais le 8080 et le 8085 ont remplacé le tout par un simple pointeur de pile, afin d'avoir une véritable pile d'appel. Autant c'est impossible d'avoir une pile d'appel avec seulement 256 octets de mémoire, autant on peut se le permettre avec 65 536 adresses.
Pour gérer des adresses de 16 bits, ils auraient pu utiliser des registres d'adresse séparés, mais on préféré un système de '''pseudo-''aliasing'' de registres'''. Formellement, c'est un système qui concatène deux registres 8 bits pour obtenir une adresse de 16 bits. L’appariement a lieu lors de certaines opérations bien précises, qui n'ont de sens que pour les adresses : la lecture/écriture en mémoire, et l'incrémentation.
Il y avait cependant des contraintes quant aux paires de registres possibles, toutes les paires de registres n'étaient pas autorisées. Les CPU concernés sont donc des processeurs hybrides accumulateur-registre généraux. L'accumulateur ne peut pas être appairé, seuls les registres généraux le peuvent. Le Z80 autorise plus de paires que les CPU Intel. Voici les paires de registres qui pouvaient servir d'adresse 16 bits :
* Les CPU 8008 d'Intel autorisait une seule paire formée des registres H et L.
* Les autres processeurs, à savoir le 8080, le 8085 et le Z80, autorisaient : les paires BC, DE et HL.
Le 8008 ne gérait que des opérations sur 8 bits. Mais le 8080 et le 8085 ont ajouté des instructions 16 bits qui agissaient sur des paires de registre, que le Z80 a repris. Une paire de registres est considérée comme un registre unique de 16 bits pour certaines opérations arithmétiques, dont l'incrémentation. Voici la liste des instructions concernées :
* INC et DEC pour l'incrémentation et la décrémentation ;
* DAD : additionne le registre HL avec une autre paire (Hl inclus) ;
* LXI : copie une constante immédiate dans une paire de registres ;
* LHLD : lit 16 depuis la mémoire et l'enregistre dans une paire de registres ;
* SHLD : copie 16 bits depuis une paire de registres et l'enregistre en mémoire ;
* PUSH et POP : empile ou dépilent une paire de registre sur la pile ;
* XTHL : échange la paire HL avec les 16 bits au sommet de la pile d'appel ;
* XCHG : échange le contenu de la paire HL et DE.
Pour résumer, le processeur avait des instructions LOAD, STORE, PUSH et POP adaptées pour gérer des paires de registre. De plus, l'instruction XCHG permettait d’échanger le contenu des paires DE et HL. L'instruction a été étendue sur les processeurs 16 bits pour échanger tous les registres. Mais l'implémentation était alors différente. L'incrémentation sur une paire de 16 bit était très utile, car les adresses sont souvent incrémentées quand on parcours un tableau. Ces instructions nous donnent quelques indices sur ce qu'il y a dans le processeur.
Le système de pseudo-aliasing a un impact sur le banc de registre. Le banc de registre regroupe les registres généraux et le pointeur de pile, mais ne contient pas l'accumulateur. Les contraintes sur les paires de registres possibles ne s'expliquent que d'une seule manière : le banc de registre contient des registres de 16 bits, une paire de registres 8 bits est mémorisée dans un registre unique. Il faut donc faire une différence entre les registres architecturaux de 8 bits, et les registres réels de 16 bits.
Le banc de registre a un port de 8 bits pour les données, qui est fabriqué à partir d'un port 16 bits auquel on a rajouté un multiplexeur pour choisir soit l'octet de poids faible, soit l'octet de poids fort. Le bus de données fait 8 bits, ce qui fait que les instructions LOAD, STORE, PUSH et POP pour paires 16 bits sont réalisées en deux fois : on lit/écrit l'octet de poids faible, puis celui de poids fort. Par contre, le bus d'adresse fait bien 16 bits. Cela suggère que le banc de registre dispose d'un port de 16 bits dédié aux adresses, en plus du port de données 8 bits.
[[File:Architecture d'un CPU 8-16 bits avec un banc de registre double port.png|centre|vignette|upright=2|Architecture d'un CPU 8-16 bits avec un banc de registre double port]]
L'incrémentation d'une paire 16 bits ne coute rien à implémenter, ou presque. En effet, le processeur incorpore un incrémenteur 16 bits pour le ''program counter'', qui est relié au bus d'adresse. L'idée est de rentabiliser cet incrémenteur, en lui permettant d'incrémenter des données/adresses de 16 bits obtenues via pseudo-aliasing. De même, il peut être utilisé pour incrémenter le pointeur de pile, voire un compteur de rafraichissement mémoire (pour rappel, le rafraîchissement mémoire demande de balayer la mémoire d'adresse en adresse et été fait par le CPU à l'époque). Pour cela, il suffit de connecter le ''program counter'', le banc de registre, et l'incrémenteur, via un bus dédié.
[[File:Calcul d'adresse par ALU dédiée avec PC séparé.png|centre|vignette|upright=2|Calcul d'adresse par ALU dédiée avec PC séparé]]
Notez qu'on peut encore simplifier le tout en placant le ''program counter'' dans le banc de registre, ce qui ne gênera pas le travail de l'incrémenteur mais simplifiera le câblage au bus d'adresse. Ce n'était pas systématique, certains processeurs mettaient le ''program counter'' dans le banc de registre, d'autres non.
: Inclure le ''program counter'' dans le banc de registre permet parfois de remplir un vide. Par exemple, sur un processeur avec 12 registres, le banc de registre devrait faire idéalement 16 registres, inclure le ''program counter'' dedans fait monter le tout à 13.
[[File:Architecture d'un CPU 8-16 bits.png|centre|vignette|upright=2|Architecture d'un CPU 8-16 bits]]
Les processeurs Intel 8 bits, à savoir le 8008, le 8080 et le 8085 ; mettaient le ''program counter'' dans le banc de registre. Vous avez donc toutes les armes pour comprendre leur micro-architecture. Par exemple, voici la micro-architecture du processeur 8080. Remarquez le banc de registre, qui contient tous les registres sauf l'accumulateur et le registre. Il a deux ports : un pour les adresses et un pour les données. Notez le dé-multiplexeur sur le port de donnée. Pour le reste, il s'agit d'une architecture à accumulateur hybride des plus classiques.
[[File:Intel 8080 arch.svg|centre|vignette|upright=3|Microarchitecture de l'Intel 8080.]]
Le Z80 est un processeur inspiré du design des processeurs Intel 8 bits, mais avec pas mal d'améliorations. Un point particulier de ce processeur est son banc de registre. Il contient tous les registres du processeur, y compris l'accumulateur et le registre d'état ! Les seuls registres en-dehors du banc de registre sont le ''program counter'' et un compteur de rafraichissement mémoire IR.
Un autre point particulier est que les registres dans le banc de registres avaient une copie séparée accessible uniquement pour les interruptions, via fenêtrage de registres. Et l'accumulateur et le registre d'état étant dans le banc de registre, il y avait deux accumulateurs et deux registres d'état. Les registres A, B, C, D, E et F étaient dupliqués, par le pointeur de pile ni les registres d'indice. Les copies des registres étaient nommées A', B', C', D', E' et F'.
Le Z80 supportait des instructions d'échange de registre en plus des CPU Intel 8 bits. L'instruction EX peut échanger soit le contenu des paires D,E et H,F, soit la paire A,F avec la paire A',F'. L'instruction EXX échange les paires BC, DE, HL avec les paires BC', DE', HL'. En faisant cela, le programmeur pouvait utiliser deux fois plus de registres généraux s'il n'utilisait pas les interruptions. L'échange de paires se fait sans copies de registres, mais simplement en modifiant l'adresse envoyée sur le banc de registre. Pour cela, plusieurs bascules mémorisent des bits qui indiquent si les paires ont été échangées ou non. Il y a une bascule pour les paires DE , HL ; une autre pour les paires A,F et paire A',F', une dernière pour l'instruction EXX. En combinant ces bascules avec les noms de registres envoyés par le séquenceur, on peut échanger les paires de registres.
==Le cas particulier des processeurs 4 bits : le 4004 d'Intel==
L'Intel 4004 était le tout premier micro-processeur. Il s'agissait d'un microprocesseur de 4 bits, basé sur une architecture à accumulateur. Il disposait d'un accumulateur et de 16 registres d'indice, tous de 4 bits. Il faisait des calculs sur des données de 4 bits, appelées des nibbles. Cependant, sur ses 46 instructions machines supportées, 41 agissaient sur des opérandes de 8 bits, les 5 restantes sur des opérandes de 16 bits. Simplement, les calculs se faisaient en deux fois, en échangeant des données entre mémoire RAM et accumulateur.
Le 4004 est un circuit intégré avec peu de broches. Il dispose notamment d'un bus de données/adresse, qui est multiplexé, c’est-à-dire qu'il sert alternativement de bus de données et de bus d'adresse selon les besoins. Le bus de commande mémoire fait 5 bits, dont 4 pour les chips de RAM, un pour la ROM. Les adresses sont codées sur 12 bits, les données sur 4 et les instructions sur 8 bits. L'envoi d'une adresse sur le bus se fait en plusieurs fois, de même que la lecture d'une instruction. Il s'agit là d'une adaptation pour outrepasser les limitations d'un processeur 4 bit.
[[File:Intel 4004 processor pinout.png|centre|vignette|upright=2|Broches de l'Intel 4004. Nous verrons à quoi elles servent plus bas.]]
===L'espace d'adressage de l'Intel 4004===
Les adresses du processeur sont sur 12 bits, ce qui fait 4096 adresses différentes. Elles regroupent à la fois la ROM et la mémoire RAM, vu que l'architecture est une sorte de mélange bizarre entre une architecture Von Neumann et Harvard. Le processeur gère bien deux espaces d'adressage séparés, mais la RAM et la ROM sont reliés au même bus. La sortie CM-ROM du processeur indique si l'adresse envoyée correspond à la RAM ou la ROM. Un circuit de décodage d'adresse active ou désactive la RAM selon la valeur de ce bit, l'inverse pour la ROM, en agissant sur leurs bits Chip Select. Seule la RAM ou la ROM répondent alors à l'adresse.
Pour ce qui est de la RAM, le circuit de décodage d'adresse pouvait gérer au maximum 1024 adresses différentes, chacune contenant un nibble. Pour cela, le CPU 4004 était relié à une ou plusieurs RAM externes, des Intel 4002. Chaque Intel 4002 contenait 64 nibbles de données, plus 16 nibbles de statut qu'on ne détaillera pas ici. Les nibbles de statut étaient accessibles en utilisant des instructions d'entrée-sortie, donc pas avec des lectures/écritures mémoire. Les 64 nibbles de données sont découpés en 4 groupes de 16 nibbles. Le CPU pouvait être relié à maximum 16 Intel 4002, ce qui fait 1024 nibbles de données et 256 nibbles de statut. L'ensemble permet de remplir l'espace d'adressage de 1024 adresses.
===Le registre de page et le pseudo-aliasing des registres===
Sélectionner une adresse mémoire utilisait un mélange entre pseudo-aliasing et registre de page. Pour les données, les 1024 adresses étaient découpées en 4 pages de 256 adresses. Pour la ROM, les 4096 adresses étaient découpées en 16 pages de 256 adresses. Localiser une donnée dans une page ne requiert que 8 bits, 2/4 bits supplémentaires permettent de sélectionner la page voulue. Le registre de page était dans le processeur lui-même, et était relié aux sorties du processeur nommées CM-RAM 0, 1, 2 et 3. Les 4 sorties encodaient un nombre qui permet de sélectionner le numéro de page voulu.
Le registre de page fait 5 bits : un pour distinguer RAM et ROM, 4 bits pour sélectionner la page voulue. L'avantage est que la carte mère gère au maximum 16 chips de RAM, ce qui colle parfaitement avec les 4 utilisés pour sélectionner une page. Un chip de RAM correspond à une page, et chacun est activé ou désactivé suivant la page sélectionnée. Pour cela, il suffit d'ajouter un décodeur sur la carte mère, qui prend les 4 bits du registre de page et fournit les signaux Chip Select aux différents chips de RAM.
Reste alors à utiliser les 8 bits d'adresse à l'intérieur d'un chip de RAM. Le 4004 permettait de concaténer deux registres d'indice de 4 bits pour former une adresse de 8 bits. Les instructions d'accès mémoire pouvaient ainsi préciser une paire de registre d'indice pour préciser quelle adresse lire/écrire. Idem pour les branchements indirects : le processeur supportait une instruction de branchement indirect qui précisait l'adresse dans une paire de registres d'indice. Les registres d'indice sont donc assez mal nommés sur cette architecture, vu qu'ils peuvent servir soit de registre d'indice, soit de demi-registre d'adresse. Il s'agit là du système de pseudo-aliasing des registres, mais appliqué aux registres d'indice.
L'Intel 4004 gérait deux instructions pour gérer les adresses mémoires. La première, l'instruction DCL (''Designate Command Line'') configure le registre de page. Elle prend en entrée un numéro de page et le copie dans le registre de page. L'opérande peut provenir d'un registre d'indice ou de l'accumulateur. La seconde, l'instruction SRC (''Send Register Control'') concatène deux registres d'indice pour obtenir une adresse de 8 bits. Un accès mémoire se fait donc en maximum trois instructions : une qui configure le registre de page si ce n'est pas déjà fait, une instruction SRC pour envoyer l'adresse, et une troisième instruction qui dit s'il faut faire une lecture ou une écriture.
===La microarchitecture de l'Intel 4004===
Il incorporait une pile d'adresse de retour intégrée au processeur. La pile d'adresse acceptait exactement 3 adresses maximum. Elle était regroupée avec le ''program counter'' dans un banc de registre, de 4 registres. Le ''program counter'' et le pointeur de pile faisaient chacun 12 bits, soit trois nibble. Ils étaient incrémentés par un incrémenteur dédié.
SI on omet le registre de page et la pile d'adresse, le 4004 est une architecture à accumulateur des plus classiques, avec un bus interne unique, un banc de registre pour les registres d'indices, un accumulateur relié à une unité de calcul. Les registres d'indice étaient dans un banc de registre séparés, car ils faisaient 4 bits chacun, contrairement au pointeur de pile et le ''program counter''. Un détail important est que les bancs de registres du 4004 étaient implémentés avec de la DRAM, et non des registres usuels fabriqués avec des bascules 1 bit.
[[File:Microarchitecture de l'Intel 4004.png|centre|vignette|upright=2.5|Microarchitecture de l'Intel 4004]]
<noinclude>
{{NavChapitre | book=Fonctionnement d'un ordinateur
| prev=Les architectures à pile et mémoire-mémoire
| prevText=Les architectures à pile et mémoire-mémoire
| next=Les processeurs de traitement du signal
| nextText=Les processeurs de traitement du signal
}}
</noinclude>
4icja6b3jgvcr91sp6qq1fztax8v2yz
765692
765691
2026-05-01T16:46:55Z
Mewtow
31375
/* Les microcontrôleurs PIC */
765692
wikitext
text/x-wiki
Nous avons déjà abordé la notion de processeur 8, 16, 32, 64 bits. Elle désigne la taille des registres généraux, ou de l'accumulateur. De nos jours, les processeurs 32 et 64 bits sont la norme, mais les premiers micro-processeurs étaient des processeurs 4 et 8, avant de passer rapidement au 16 bits. La raison est que leur budget en transistor limité faisait qu'on ne pouvait pas utiliser une ALU trop grande : une ALU 8 bit prend deux fois moins de place et de transistors qu'une ALU 16 bits. Cependant, les processeurs 8 bits avaient de sérieuses limitations qui étaient compensées par diverses solutions. Dans ce chapitre, nous allons faire une revue rapide des processeurs 8 bits et de leurs fonctionnalités.
La principale limitation des CPU 8 bits était l'adressage : des registres de 8 bits limitaient l'espace d'adressage à seulement 256 adresses, soit à peine 256 octets ! Intuitivement, on se dit que 256 octets est purement impraticable, on ne peut rien faire d'intéressant avec seulement 256 de RAM + ROM. Et c'est partiellement vrai. L'adage veut que 16 bits est la taille minimale intéressante, la limite à partir de laquelle on a assez de mémoire RAM/ROM pour coder des applications intéressantes. Mais 256 octets de RAM est largement suffisant sur de nombreux systèmes embarqués simples s'en accommodent : des caisses enregistreuses, des systèmes de régulation de feu de circulation, etc.
Pour les applications demandant plus de mémoire RAM, les CPU de l'époque contournaient la limitation de 256 octets de RAM avec de nombreux stratagèmes. Dans ce qui va suivre, nous allons séparer les CPU 8 bits selon qu'ils utilisent une architecture Harvard ou une architecture Von Neumann. La raison est qu'une architecture Harvard permet en soi de contourner partiellement ce problème d'adressage. Les choses sont plus compliquées avec une architecture Von Neumann.
==Les processeurs 8/16 bits à architecture Harvard ==
La première solution est d'utiliser une architecture Harvard. Le processeur 8 bit a alors deux espaces d'adressage : un pour la RAM, un autre pour la ROM. Et les deux utilisent des adresses de taille différente. La ROM est reliée à un bus d'adresse de 16 bits, alors que la RAM est elle connectée à un bus d'adresse de 8 bits. La RAM est donc limitée à 256 octets, alors que la ROM peut monter jusqu'à 64 kibioctets. Mine de rien, faire ainsi est largement suffisant.
Les processeurs de l'époque intégraient parfois les 256 octets de RAM directement dans le processeur. Beaucoup en implémentaient moins, avec par exemple seulement 64 octets de RAM, ou 32 octets, ou 128 octets. L'avantage est que cela éliminait le bus d'adresse des données et ne laissait que le bus d'adresse pour la ROM. On économisait ainsi beaucoup de broches sur le circuit intégré du CPU. Et pour les applications demandant plus de RAM, on pouvait ajouter un circuit séparé qui permettait d'adresser une RAM plus grande. Mais cela sera plus clair avec un exemple.
===Les microcontrôleurs PIC===
Les '''microcontrôleurs PIC''' regroupent des microcontrôleurs allant de microcontrôleurs 8 bit aux performances très faible, à des microcontrôleurs 32 bits bien plus puissants. Les microcontrôleurs PIC sont très utilisés dans l'embarqué ou d'informatique industrielle. Ils sont vendu à des volumes assez impressionnants, plusieurs millions par an. Et si vous avez ou êtes en train de faire des études d'électronique, je parie que vous les avez déjà vu en classe, ou que ce ne saurait tarder. Dans ce qui suit, nous allons nous concentrer sur les microcontrôleurs PIC 8 bits, à savoir les PIC 16, 16 et 18. Les PIC 24, qui sont des microcontrôleurs 16 bits, ne seront pas abordés.
Les microcontrôleurs PIC 8 bits incorporent une mémoire RAM très petite, ainsi qu'une architecture Harvard, comme dit plus haut. La mémoire RAM des microcontrôleurs PIC est très petite, elle dépasse rarement la centaine d'adresse. Pour donner un exemple, le PIC16F84 a une RAM composée de 68 "registres" de 8 bits. Le terme "registres" devrait vous faire tiquer, mais il s'agit bien d'une mémoire SRAM séparée. Simplement, la documentation des PIC qualifie cette mémoire SRAM de "registres", et il faut admettre que la différence entre banc de registre et SRAM séparée est un peu floue.
Un détail est que la SRAM n'a qu'un seul port qui sert à la fois pour les lectures et écritures. Pour compenser, les PIC sont des architectures à accumulateur, où une opérande est lue depuis la SRAM, l'autre depuis l'accumulateur. Leur implémentation de l'accumulateur ajoute une petite subtilité : le résultat d'une opération arithmétique peut être enregistré ailleurs que dans l'accumulateur. Le résultat peut aussi remplacer la seconde opérande, celle lue en mémoire RAM. Dit autrement, le résultat est enregistré dans l'adresse mémoire source. Les instructions de calcul ont le choix : un bit dans leur encodage précise où enregistrer le résultat.
[[File:DocPIC16F84 4.png|centre|vignette|upright=2|Microarchitecture simplifiée d'un microcontroleur PIC (ici, un 16F84).]]
Outre l'accumulateur, les PIC disposent de registres de contrôle, d'un ''program counter'', d'un registre d'état, et d'un pointeur de pile. Le registre d'état contient un registre séparé pour la retenue de l'addition/soustraction. Ce dernier est très important, vu qu'il est nécessaire pour les additions/soustractions sur des opérandes de 16 bits. Le processeur a beau être un CPU 8 bits, il peut être utilisé pour faire des calculs 16 bits, la performance est alors amoindrie, mais ce n'est pas un problème pour les applications d'un tel microcontroleur.
Un détail assez original est que les registres précédents sont mappés en mémoire, à quelques exceptions près ! En clair, on peut y accéder en lisant/écrivant à une adresse mémoire bien précise. Les seules registres qui ne sont pas mappés en mémoire sont l'accumulateur, la pile d'appel, et les registres d'entrée-sortie. Les registres d'entrée-sortie permettent de lire ou écrire sur un port d'entrée-sortie ou de lire un ''timer''. En clair, les PIC ont un espace d'adressage séparé pour les entrées-sorties.
[[File:DocPIC16F84.png|centre|vignette|upright=2|DocPIC16F84]]
Le processeur de ces microcontrôleurs a un jeu d'instruction propriétaire, le jeu d'instruction PIC. Les instructions PIC sont très petites. Les premières versions du jeu d'instruction utilisaient des instructions codées sur 12 bits, dont 5 pour l'adresse mémoire de la seconde opérande. Pour les branchements, 3 bits étaient utilisés pour l'opcode, 9 pour l'adresse de destination. Par la suite, les instructions ont été étendues à 13 bits sur les PIC1670, puis à 14, 15 et 16 bits. Les adresses ont alors été élargies, ce qui permet d'adresser en peu plus de mémoire RAM.
Les instructions se limitent à des additions/soustractions, des opérations bit à bit,des branchements, des instructions LOAD/STORE, ainsi que des opérations de manipulation de bit. Il y a une instruction pour mettre une adresse à zéro, qui peut aussi mettre à zéro l’accumulateur.
Pour ce qui est des branchements, les PIC n'ont pas d'instructions de branchement conditionnels, ils font avec une SKIP instruction et des branchements inconditionnels. Par contre, ils ont des branchements pour les appels et retour de fonction. Mieux que ça, ils intègrent une pile d'appel d'environ 8 adresses de retour. Pour donner une idée, l'adresse de retour est encodée sur 10 bits sur les PIC16F84.
Pour les instructions de manipulation de bit, il y a des instructions pour tester/masquer un bit dans une opérande, 4 en tout ( mettre à 0, mettre à 1, tester si bit = 1, tester si bit = 0). Les instructions qui testent un bit prennent leur opérande dans l'accumulateur. Il y a aussi deux instructions de rotation à gauche et droite, qui tiennent compte de la retenue mémorisée dans le registre d'état. Mentionnons aussi une instruction pour inverser deux ''nibbles'' dans un octet.
Les PIC ont aussi des instructions d'incrémentation et de décrémentation, un peu spéciales. Ces dernières regroupent : une incrémentation normale, une décrémentation normale, une décrémentation fusionnée avec une instruction SKIP, et une incrémentation fusionnée avec une instruction SKIP. Les deux dernières incrémentent/décrémentent l'accumulateur et SKIP l'instruction suivante si le résultat est zéro. Elles permettent de fortement simplifier l'implémentation des boucles qui s'exécutent tant que leur compteur atteint zéro.
Les PIC gèrent l'adressage absolu et indirect. L'adressage absolu, celui où l'adresse est intégrée dans l'instruction, est très simple à implémenter. Les adresses prennent moins d'un octet, vu que la taille de la RAM est très petite, les adresses sont très courtes, les intégrer dans des instructions elles-mêmes courtes n'est pas un problème. L'adresse est encodée sur 5 à 7 bits, selon le modèle, ce qui permet d'adresser entre 32 et 128 octets.
: Les PIC 18 peuvent adresser plus de 256 octets de RAM en utilisant la commutation de banques, une technique qui sera abordée dans plusieurs chapitres.
Pour l'adressage indirect, les PIC intègrent un registre d'adresse dédié. Il s'agit du registre FSR, qui mémorise l'adresse à lire/écrire. Il est possible de copier un pointeur dedans, qui provient soit de l'accumulateur, soit de la mémoire SRAM. Dans les deux cas, la donnée adressée est copiée dans un registre INDR, qui sert de registre d’interfaçage mémoire avec le bus de données. Le registre FSR est directement connecté sur le bus d'adresse. Les modèles de base se débrouillent avec un registre FSR et un registre INDR, mais les modèles plus performants ont deux ou trois copies de chaque registre. Les modèles PIC18 ajoutent aussi des instructions LOAD/STORE avec les modes d'adressage à post- ou pré-incrément/décrément, et le mode d'adressage "Base + Indice + Décalage".
Avec tout ce qu'on vient de dire, vous devriez pouvoir comprendre la microarchitecture d'un PIC, qui est résumée dans ce schéma.
[[File:DocPIC16F84 all.png|centre|vignette|upright=2.5|Microarchitecture du PIC16F84.]]
===Le Fairchild F8 et la console de jeu Fairchild Channel F===
Un autre exemple est la Fairchild F8 de la défunte entreprise Fairchild Semiconductor. Il incorpore un processeur 8 bits, c'est à dire que le processeur fait des calculs sur des entiers de 8 bits maximum, une mémoire RAM de 64 octets, ainsi qu'une mémoire ROM de 1 kibioctet. Les 64 octets de RAM sont certes très peu, mais c'est suffisant pour certaines applications simples, comme les caisses automatiques de l'époque, ou des applications embarquées. Et de toute façon, il est possible d'ajouter de la mémoire RAM supplémentaire si les 64 octets de RAM intégrée ne suffisent pas. Le système était donc modulaire, adaptable selon les besoins, peu cher pour son implémentation minimale sans RAM en plus.
Vu qu'il s'agit d'un des tout premiers ordinateurs, il est sorti à une époque où la technologie était rudimentaire. À cette époque, le processeur était composé de pièces détachées qu'il fallait souder ensemble pour obtenir un processeur fonctionnel. Ce n'est que plus tard qu'est apparu le micro-processeur, qui regroupe un processeur complet dans un seul circuit intégré. Le résultat est que le processeur du Fairchild F8 est coupé en deux, l'unité de calcul et l'unité de contrôle sont placés dans des pièces détachées séparés.
Le microcontrôleur est composé de trois à quatre pièces détachées, certaines étant optionnelles. La première est le '''3850 CPU''', qui regroupe l'unité de calcul et la mémoire RAM intégrée. La seconde est le PSU (''3851 Program Storage Unit''), qui regroupe la mémoire ROM et l'unité de contrôle, ''program counter'' inclut. S'il y a besoin d'utiliser plus de RAM, il faut ajouter un circuit d’interface mémoire, qui est au choix le ''3852 Dynamic Memory Interface'' (DMI) ou le ''3853 Static Memory Interface'', le premier étant connecté à une mémoire de type DRAM, l'autre à une SRAM (nous verrons ce que sont les DRAM et les SRAM dans le prochain chapitre).
[[File:Fairchild F8.png|centre|vignette|upright=2|Fairchild F8]]
Le système minimal est composé d'un PSU et d'un 3850, sans les circuits d'interface mémoire. Le tout donne un système avec un processeur 8 bit, 64 octets de RAM et 1 kibioctet de ROM, les deux mémoires étant intégrées dans le "processeur". Le processeur gérait 4 entrées-sorties, chacune étant reliée avec un bus de 8 bit au processeur. Au passage, en 1977, Mostek a créé un microcontrôleur qui regroupe un PSU et un 3850 : le Mostek 3870. Le système minimal n'avait pas de bus d'adresse, vu que la RAM était intégrée au processeur. C'est les 3852 et 3853 qui ajoutaient un bus d'adresse. Ils ajoutent un bus d'adresse de 16 bits, ce qui permet d'adresser 64 kibioctets de RAM.
[[File:Fairchild-Channel-F.jpg|vignette|un Fairchild Channel F]]
Le Fairchild F8 a été utilisé dans la Fairchild Channel F, une des toute première console de seconde génération, à savoir des consoles qui utilisaient des cartouches de jeu. Avant les consoles de seconde génération, les consoles étaient non-programmables. Elles étaient conçues pour faire tourner un jeu précis, aucun autre, le jeu étant implémenté dans leurs circuits.
La Fairchild Channel F est composé du système minimal, auquel on a ajouté une carte son rudimentaire et 2 kibioctets de mémoire vidéo. La mémoire vidéo sert uniquement pour afficher des images à l'écran : on écrit l'image à afficher dedans, un circuit vidéo se charge de l'afficher à l'écran automatiquement. Le processeur ne fait qu'écrire dans cette RAM vidéo, il ne peut pas en lire le contenu. De la RAM supplémentaire peut cependant être ajoutée dans les cartouches de jeu.
===L'usage d'une architecture Harvard modifiée : les consoles 8 bits===
Pour encore améliorer la situation, il est possible d'utiliser une architecture Harvard modifiée, qui permet de lire des données depuis la mémoire ROM. Cela réduit encore plus les besoins en mémoire RAM. Les constantes manipulées par le programme sont mémorisées en ROM, lues depuis la ROM, au lieu d'être chargées en RAM. Les consoles de jeu utilisaient beaucoup de stratagème.
L'exemple type est celui des consoles 8 bits avec des graphismes en 2D. La cartouche de jeu contenait une ROM, qui mémorisait le code du jeu, les niveaux, les sprites et autres données graphiques. Leur carte graphique lisait directement les ''sprites'' depuis la mémoire ROM, sans avoir à les charger en mémoire vidéo. La mémoire vidéo se contentait de mémoriser le reste des informations graphiques, ainsi que des pointeurs vers les ''sprites'' en ROM. En conséquence, les consoles 8 bits n'avaient pas besoin de beaucoup de RAM, vu qu'une grande partie des données utiles étaient dans une ROM directement accessible par le processeur. A l'opposé, les micro-ordinateurs devaient copier les données d'un jeu depuis une disquette dans la mémoire RAM, ce qui demandait d'avoir plus de RAM.
Le passage au support CD sur les consoles 32 bits a eu la même conséquence. Le processeur ne pouvant pas lire directement le CD à sa guise, il fallait copier les données du CD en RAM. D'où l'apparition de temps de chargement assez longs, inexistants sur support cartouche.
Avec ce genre de stratagèmes, 256 octets de RAM est largement suffisant sur de nombreux systèmes, à condition qu'on ait assez de ROM pour coder un programme digne de ce nom. Par exemple, de nombreux systèmes embarqués simples s'en accommodent : des caisses enregistreuses, des systèmes de régulation de feu de circulation, etc.
===Le HP Nanoprocessor : un processeur sans ALU===
Un dernier exemple est celui du processeur HP Nanoprocessor, de l'entreprise HP. Il a été commercialisé en 1974, en même temps que les premiers micro-processeurs d'Intel. Tous les processeurs de l'époque étaient des processeurs 8 bits et le HP Nanoprocessor ne faisait pas exception. Ce n'était pas un processeur haute performance, il était destiné à des applications d'informatique industrielle ou embarquée. D'ailleurs, il utilisait des transistors de type metal-gate, peu performants, là où ses contemporains utilisait des transistors en silicium, plus performants.
Mais une caractéristique qui rend cela encore plus claire est qu'il n'y a pas d'ALU ! En effet, ce processeur est incapable de faire des additions, des soustractions ou autres opérations simples ! Il est cependant capable d'effectuer des incrémentations et décrémentations, des décalages, des opérations logiques comme des ET/OU/NON/XOR et bien d'autres. Il supporte en tout 48 instructions, avec un support limité des modes d'adressage indirects. Les instructions de branchement étaient des instructions SKIP, il n'y avait pas d'instructions de branchement généralistes.
Pour ce qui est des registres, il disposait de 16 registres de 8 bits et d'un accumulateur. Niveau mémoire, il était relié à une mémoire ROM, rien de plus. Il n'avait de RAM supplémentaire qu'on pouvait lui adjoindre, il devait se débrouiller avec seulement ses registres. Et cela ne posait pas de problèmes pour son usage. Seul le mode d'adressage indirect à registre est supporté, il n'y a pas de registres d'indices. Ce mode d'adressage permet de lire des données en mémoire ROM, la ROM pouvant contenir des tableaux de valeurs constantes.
: Il est possible de lui adjoindre de la RAM via les ports d'entrée-sortie, ainsi qu'une ALU, mais RAM et ALU sont traités comme des périphériques avec lesquels on communique, ils ne sont pas intégrés au processeur.
Niveau micro-architecture, il incorporait une unité de calcul logique et un circuit comparateur. Le comparateur était un circuit comparateur série des plus basiques, qui était utilisé pour les instructions de branchement et associées. L'unité de calcul logique gérait des incrémentations/décrémentation, des décalages, les opérations logiques et quelques autres. L'unité de calcul logique était bit-slicée, à savoir conçue en assemblant 8 ALU de 1 bit chacune, enchainées en série. Le tout était combiné à des circuits de ''carry skip''.
[[File:Unité de calcul du HP nanonprocessor.png|centre|vignette|upright=2|Unité de calcul du HP nanoprocessor]]
Son unité de décodage d'instruction était très simple, essentiellement basée sur des portes NOR, grâce à un encodage efficace des instructions machine. Le ''program counter'' fait 11 bits, ce qui permet d'adresser une ROM de 2 kibioctets. Le ''program counter'' était relié à un circuit incrémenteur qui gérait les isntructions SKIP (il pouvait incrémenter le ''program counter'' par pas de 1 ou de 2 en cas de SKIP). Le processeur contient aussi deux registres, qui servent en quelque sorte de pile d'adresse de retour. Un premier registre mémorise l'adresse de retour d'une fonction, l'autre mémorise le ''program counter'' lors d'une interruption, pour savoir où brancher à la fin de l'interruption.
[[File:HP nanoprocessor.png|centre|vignette|upright=2.5|HP nanoprocessor]]
Fait intéressant, le concepteur du processeur a gracieusement donné les masques utilisés pour graver le silicium du processeur au site [https://www.cpushack.com/ CPU Shack]. Les masques en question sont disponibles ici :
* [https://www.cpushack.com/2020/08/20/hp-nanoprocessor-mask-set/ HP NanoProcessor Mask Set]
* [https://www.cpushack.com/2020/08/09/the-forgotten-ones-hp-nanoprocessor/ The Forgotten Ones: HP Nanoprocessor]
Les masques ont été analysés par Ken Shirrif dans cet article de blog :
* [https://www.righto.com/2020/09/hp-nanoprocessor-part-ii-reverse.html HP Nanoprocessor part II: Reverse-engineering the circuits from the masks]
==Les processeurs 8/16 bits à architecture Von Neumann==
L'usage d'une architecture Harvard est une solution pour adresser plus de mémoire avec des CPU 8 bits. Mais plusieurs microprocesseurs commerciaux n'utilisaient pas cette solution. À la place, c'était des architectures Von Neumann, mais qui étaient capables de gérer des adresses de 16 bits. Les données faisaient 8 bits, les registres faisaient 8 bits, mais quelques techniques permettaient de gérer des adresses de 16 bits. Nous parlerons de '''processeurs 8/16 bits''' pour les désigner, et nous allons les étudier à part.
Un point important est que la gestion d'adresses de 16 bits permet d'adresser 64 kibioctets, qui peuvent être remplis avec de la RAM et de la ROM. On a donc le meilleur des mondes : 64 kibioctets de mémoire, mais avec des données de 8 bits et les économies de circuit qui vont avec. L'avantage est que le processeur peut maintenant gérer une vraie pile d'appel, pas seulement une pile d'adresse de retour. Il lui suffit pour cela d'intégrer un pointeur de pile codé sur 16 bits.
===Les modes d'adressage par page des CPU Motorola===
Les processeurs Motorola 8 bits étaient des processeurs 8 bits avec un bus d'adresse de 16 bits. C'était des processeurs à accumulateur incorporant deux registres d'indice, un registre d'état, un pointeur de pile, et un ''program counter''. Tous les registres sont reliés au bus d'adresse, sauf le registre d'état et l’accumulateur. Tous les registres font 8 bits, sauf le ''program counter''. La pile est câblée pour être dans un bloc de 256 octets compris entre l'adresse 1 0000 0000 et l'adresse 1 1111 1111, ce qui fait que son adressage se fait avec un seul octet.
[[File:6502-architecture.svg|centre|vignette|upright=1.5|Architecture simplifiée du 6502.</br> X et Y : registres d'indice ;</br> S : le pointeur de pile ;</br> A : accumulateur ;</br>P : registre d'état.</br>]]
Les processeurs Motorola 8 bits utilisaient une méthode simple pour adresser 64 kibioctets de RAM, avec des registres de 8 bits. Pour cela, ils utilisaient une variante de l'adressage base + décalage. Elle améliore l'adressage absolu, qui intègre l'adresse à lire/écrire dans l'instruction elle-même. L'adresse en question est de 8 bits et n'encode que les 8 bits de poids faible de l'adresse, les 8 bits de poids fort sont dans un '''registre de page''' adressé implicitement. L'adresse finale est obtenue en concaténant ce registre avec l'adresse mémoire intégrée dans l’instruction. Le résultat est que la mémoire était découpée en blocs de 256 consécutifs, chacun pouvant servir de fenêtre de 256 octets. Une page est réservée pour la pile, la seconde, comme dit plus haut.
Formellement, ce mode d'adressage a des ressemblances avec la commutation de banques, une technique qu'on verra dans les chapitres sur l'espace d'adressage et la mémoire virtuelle. Mais ce n'en est pas du tout : le registre de page est utilisé uniquement pour les accès mémoire avec le mode d'adressage base + décalage, mais pas pour les autres accès mémoire, qui gèrent des adresses complètes. Notons que l'usage d'un registre de page dédié fait que celui-ci est adressé implicitement.
Il faut noter que la technique a été utilisée sur des processeurs 16 bits, pour contourner la petite taille des instructions. Un exemple est celui du HP 2100, un processeur 16 bits. Il avait un registre de page de 5 bits et encodait 10 bits d'adresse dans ses instructions. Ses instructions d'accès mémoire disposaient d'un bit qui choisit quel mode d'adressage utiliser. S'il était à 0, l'adressage absolu était utilisé, le registre de page n'était pas utilisé. Mais s'il était à 1, le registre de page était utilisé pour calculer l'adresse.
Une évolution de l'adressage précédent est le '''mode page direct'''. Avec lui, le registre de page est étendu et contient une adresse mémoire complète. L'adresse finale n'est pas obtenue par concaténation, mais en additionnant le registre de page avec l'adresse fournie par adressage absolu + décalage. Un exemple est celui des premiers processeurs Motorola, qui géraient des adresses courtes de 8 bits. L'adresse courte de 8 bits correspondait non pas aux 256 premiers octets de la mémoire, mais à une fenêtre de 256 octets déplaçable en mémoire. La position de la fenêtre de 256 octets était spécifiée par le registre de page de 16 bits, qui précisait l'adresse du début de la fenêtre, celle de sa première donnée.
Il s'agit donc formellement d'adressage base + décalage, à un détail près : il n'y a qu'un seul registre de base. Le fait que ce registre de base soit unique fait qu'il est adressé implicitement, on n'a pas à encoder le numéro/noms de registre dans l'instruction. Le registre de base est utilisé uniquement pour l'adressage absolu, pas pour les autres accès mémoire. S'il y a des ressemblances avec la segmentation, une technique de mémoire virtuelle qu'on abordera dans quelques chapitres, ce n'en est pas vu que le registre de base est utilisé seulement pour un mode d'adressage bien précis.
===Le ''pseudo-aliasing'' des registres des processeurs Intel x86===
Voyons maintenant le cas des anciens processeurs 8 bits d'Intel à savoir l'Intel 4004, 4040, 8008 et 8080. Le Z80, un processeur inspiré des CPU Intel 8 bits, est aussi concerné. Avant de poursuivre, parlons des registres de ces processeurs. Les premiers CPU Intel incorporaient 7 registres de 8 bits nommés A, B, C, D, E, F, H, L, SP. Ils correspondent respectivement à : l'accumulateur A ; six registres nommés B, C, D, E, H et L ; le registre d'état F ; le pointeur de pile SP. Le Z80 ajoute deux registres d'indice X et Y. De plus, le Z80 dispose de registres d'interruption, qui sont en quelque sorte des copies des registres A, B, C, D, E, F, H, L. Le tout est illustré dans le tableau ci-dessous.
{|class="wikitable" style="text-align:center;"
|-
!
! Registres des CPU Intel
! Registres supplémentaires du Z80
|-
! Accumulateur
| A
| A'
|-
! Registre d'état
| F
| F'
|-
! Registres généraux
| B, C, D, E, H, L
| B', C', D', E', H', L'
|-
! Pointeur de pile
| colspan="2" | SP (sauf pour le 8008)
|-
! Registres d'indice
|
| X et Y
|}
Le 8008 incorpore une pile d'appel de 7 adresses, dans le processeur lui-même. Il en est de la même avec le 4004 et le 4040, comme on le verra dans la section sur les processeurs 4 bits. Mais le 8080 et le 8085 ont remplacé le tout par un simple pointeur de pile, afin d'avoir une véritable pile d'appel. Autant c'est impossible d'avoir une pile d'appel avec seulement 256 octets de mémoire, autant on peut se le permettre avec 65 536 adresses.
Pour gérer des adresses de 16 bits, ils auraient pu utiliser des registres d'adresse séparés, mais on préféré un système de '''pseudo-''aliasing'' de registres'''. Formellement, c'est un système qui concatène deux registres 8 bits pour obtenir une adresse de 16 bits. L’appariement a lieu lors de certaines opérations bien précises, qui n'ont de sens que pour les adresses : la lecture/écriture en mémoire, et l'incrémentation.
Il y avait cependant des contraintes quant aux paires de registres possibles, toutes les paires de registres n'étaient pas autorisées. Les CPU concernés sont donc des processeurs hybrides accumulateur-registre généraux. L'accumulateur ne peut pas être appairé, seuls les registres généraux le peuvent. Le Z80 autorise plus de paires que les CPU Intel. Voici les paires de registres qui pouvaient servir d'adresse 16 bits :
* Les CPU 8008 d'Intel autorisait une seule paire formée des registres H et L.
* Les autres processeurs, à savoir le 8080, le 8085 et le Z80, autorisaient : les paires BC, DE et HL.
Le 8008 ne gérait que des opérations sur 8 bits. Mais le 8080 et le 8085 ont ajouté des instructions 16 bits qui agissaient sur des paires de registre, que le Z80 a repris. Une paire de registres est considérée comme un registre unique de 16 bits pour certaines opérations arithmétiques, dont l'incrémentation. Voici la liste des instructions concernées :
* INC et DEC pour l'incrémentation et la décrémentation ;
* DAD : additionne le registre HL avec une autre paire (Hl inclus) ;
* LXI : copie une constante immédiate dans une paire de registres ;
* LHLD : lit 16 depuis la mémoire et l'enregistre dans une paire de registres ;
* SHLD : copie 16 bits depuis une paire de registres et l'enregistre en mémoire ;
* PUSH et POP : empile ou dépilent une paire de registre sur la pile ;
* XTHL : échange la paire HL avec les 16 bits au sommet de la pile d'appel ;
* XCHG : échange le contenu de la paire HL et DE.
Pour résumer, le processeur avait des instructions LOAD, STORE, PUSH et POP adaptées pour gérer des paires de registre. De plus, l'instruction XCHG permettait d’échanger le contenu des paires DE et HL. L'instruction a été étendue sur les processeurs 16 bits pour échanger tous les registres. Mais l'implémentation était alors différente. L'incrémentation sur une paire de 16 bit était très utile, car les adresses sont souvent incrémentées quand on parcours un tableau. Ces instructions nous donnent quelques indices sur ce qu'il y a dans le processeur.
Le système de pseudo-aliasing a un impact sur le banc de registre. Le banc de registre regroupe les registres généraux et le pointeur de pile, mais ne contient pas l'accumulateur. Les contraintes sur les paires de registres possibles ne s'expliquent que d'une seule manière : le banc de registre contient des registres de 16 bits, une paire de registres 8 bits est mémorisée dans un registre unique. Il faut donc faire une différence entre les registres architecturaux de 8 bits, et les registres réels de 16 bits.
Le banc de registre a un port de 8 bits pour les données, qui est fabriqué à partir d'un port 16 bits auquel on a rajouté un multiplexeur pour choisir soit l'octet de poids faible, soit l'octet de poids fort. Le bus de données fait 8 bits, ce qui fait que les instructions LOAD, STORE, PUSH et POP pour paires 16 bits sont réalisées en deux fois : on lit/écrit l'octet de poids faible, puis celui de poids fort. Par contre, le bus d'adresse fait bien 16 bits. Cela suggère que le banc de registre dispose d'un port de 16 bits dédié aux adresses, en plus du port de données 8 bits.
[[File:Architecture d'un CPU 8-16 bits avec un banc de registre double port.png|centre|vignette|upright=2|Architecture d'un CPU 8-16 bits avec un banc de registre double port]]
L'incrémentation d'une paire 16 bits ne coute rien à implémenter, ou presque. En effet, le processeur incorpore un incrémenteur 16 bits pour le ''program counter'', qui est relié au bus d'adresse. L'idée est de rentabiliser cet incrémenteur, en lui permettant d'incrémenter des données/adresses de 16 bits obtenues via pseudo-aliasing. De même, il peut être utilisé pour incrémenter le pointeur de pile, voire un compteur de rafraichissement mémoire (pour rappel, le rafraîchissement mémoire demande de balayer la mémoire d'adresse en adresse et été fait par le CPU à l'époque). Pour cela, il suffit de connecter le ''program counter'', le banc de registre, et l'incrémenteur, via un bus dédié.
[[File:Calcul d'adresse par ALU dédiée avec PC séparé.png|centre|vignette|upright=2|Calcul d'adresse par ALU dédiée avec PC séparé]]
Notez qu'on peut encore simplifier le tout en placant le ''program counter'' dans le banc de registre, ce qui ne gênera pas le travail de l'incrémenteur mais simplifiera le câblage au bus d'adresse. Ce n'était pas systématique, certains processeurs mettaient le ''program counter'' dans le banc de registre, d'autres non.
: Inclure le ''program counter'' dans le banc de registre permet parfois de remplir un vide. Par exemple, sur un processeur avec 12 registres, le banc de registre devrait faire idéalement 16 registres, inclure le ''program counter'' dedans fait monter le tout à 13.
[[File:Architecture d'un CPU 8-16 bits.png|centre|vignette|upright=2|Architecture d'un CPU 8-16 bits]]
Les processeurs Intel 8 bits, à savoir le 8008, le 8080 et le 8085 ; mettaient le ''program counter'' dans le banc de registre. Vous avez donc toutes les armes pour comprendre leur micro-architecture. Par exemple, voici la micro-architecture du processeur 8080. Remarquez le banc de registre, qui contient tous les registres sauf l'accumulateur et le registre. Il a deux ports : un pour les adresses et un pour les données. Notez le dé-multiplexeur sur le port de donnée. Pour le reste, il s'agit d'une architecture à accumulateur hybride des plus classiques.
[[File:Intel 8080 arch.svg|centre|vignette|upright=3|Microarchitecture de l'Intel 8080.]]
Le Z80 est un processeur inspiré du design des processeurs Intel 8 bits, mais avec pas mal d'améliorations. Un point particulier de ce processeur est son banc de registre. Il contient tous les registres du processeur, y compris l'accumulateur et le registre d'état ! Les seuls registres en-dehors du banc de registre sont le ''program counter'' et un compteur de rafraichissement mémoire IR.
Un autre point particulier est que les registres dans le banc de registres avaient une copie séparée accessible uniquement pour les interruptions, via fenêtrage de registres. Et l'accumulateur et le registre d'état étant dans le banc de registre, il y avait deux accumulateurs et deux registres d'état. Les registres A, B, C, D, E et F étaient dupliqués, par le pointeur de pile ni les registres d'indice. Les copies des registres étaient nommées A', B', C', D', E' et F'.
Le Z80 supportait des instructions d'échange de registre en plus des CPU Intel 8 bits. L'instruction EX peut échanger soit le contenu des paires D,E et H,F, soit la paire A,F avec la paire A',F'. L'instruction EXX échange les paires BC, DE, HL avec les paires BC', DE', HL'. En faisant cela, le programmeur pouvait utiliser deux fois plus de registres généraux s'il n'utilisait pas les interruptions. L'échange de paires se fait sans copies de registres, mais simplement en modifiant l'adresse envoyée sur le banc de registre. Pour cela, plusieurs bascules mémorisent des bits qui indiquent si les paires ont été échangées ou non. Il y a une bascule pour les paires DE , HL ; une autre pour les paires A,F et paire A',F', une dernière pour l'instruction EXX. En combinant ces bascules avec les noms de registres envoyés par le séquenceur, on peut échanger les paires de registres.
==Le cas particulier des processeurs 4 bits : le 4004 d'Intel==
L'Intel 4004 était le tout premier micro-processeur. Il s'agissait d'un microprocesseur de 4 bits, basé sur une architecture à accumulateur. Il disposait d'un accumulateur et de 16 registres d'indice, tous de 4 bits. Il faisait des calculs sur des données de 4 bits, appelées des nibbles. Cependant, sur ses 46 instructions machines supportées, 41 agissaient sur des opérandes de 8 bits, les 5 restantes sur des opérandes de 16 bits. Simplement, les calculs se faisaient en deux fois, en échangeant des données entre mémoire RAM et accumulateur.
Le 4004 est un circuit intégré avec peu de broches. Il dispose notamment d'un bus de données/adresse, qui est multiplexé, c’est-à-dire qu'il sert alternativement de bus de données et de bus d'adresse selon les besoins. Le bus de commande mémoire fait 5 bits, dont 4 pour les chips de RAM, un pour la ROM. Les adresses sont codées sur 12 bits, les données sur 4 et les instructions sur 8 bits. L'envoi d'une adresse sur le bus se fait en plusieurs fois, de même que la lecture d'une instruction. Il s'agit là d'une adaptation pour outrepasser les limitations d'un processeur 4 bit.
[[File:Intel 4004 processor pinout.png|centre|vignette|upright=2|Broches de l'Intel 4004. Nous verrons à quoi elles servent plus bas.]]
===L'espace d'adressage de l'Intel 4004===
Les adresses du processeur sont sur 12 bits, ce qui fait 4096 adresses différentes. Elles regroupent à la fois la ROM et la mémoire RAM, vu que l'architecture est une sorte de mélange bizarre entre une architecture Von Neumann et Harvard. Le processeur gère bien deux espaces d'adressage séparés, mais la RAM et la ROM sont reliés au même bus. La sortie CM-ROM du processeur indique si l'adresse envoyée correspond à la RAM ou la ROM. Un circuit de décodage d'adresse active ou désactive la RAM selon la valeur de ce bit, l'inverse pour la ROM, en agissant sur leurs bits Chip Select. Seule la RAM ou la ROM répondent alors à l'adresse.
Pour ce qui est de la RAM, le circuit de décodage d'adresse pouvait gérer au maximum 1024 adresses différentes, chacune contenant un nibble. Pour cela, le CPU 4004 était relié à une ou plusieurs RAM externes, des Intel 4002. Chaque Intel 4002 contenait 64 nibbles de données, plus 16 nibbles de statut qu'on ne détaillera pas ici. Les nibbles de statut étaient accessibles en utilisant des instructions d'entrée-sortie, donc pas avec des lectures/écritures mémoire. Les 64 nibbles de données sont découpés en 4 groupes de 16 nibbles. Le CPU pouvait être relié à maximum 16 Intel 4002, ce qui fait 1024 nibbles de données et 256 nibbles de statut. L'ensemble permet de remplir l'espace d'adressage de 1024 adresses.
===Le registre de page et le pseudo-aliasing des registres===
Sélectionner une adresse mémoire utilisait un mélange entre pseudo-aliasing et registre de page. Pour les données, les 1024 adresses étaient découpées en 4 pages de 256 adresses. Pour la ROM, les 4096 adresses étaient découpées en 16 pages de 256 adresses. Localiser une donnée dans une page ne requiert que 8 bits, 2/4 bits supplémentaires permettent de sélectionner la page voulue. Le registre de page était dans le processeur lui-même, et était relié aux sorties du processeur nommées CM-RAM 0, 1, 2 et 3. Les 4 sorties encodaient un nombre qui permet de sélectionner le numéro de page voulu.
Le registre de page fait 5 bits : un pour distinguer RAM et ROM, 4 bits pour sélectionner la page voulue. L'avantage est que la carte mère gère au maximum 16 chips de RAM, ce qui colle parfaitement avec les 4 utilisés pour sélectionner une page. Un chip de RAM correspond à une page, et chacun est activé ou désactivé suivant la page sélectionnée. Pour cela, il suffit d'ajouter un décodeur sur la carte mère, qui prend les 4 bits du registre de page et fournit les signaux Chip Select aux différents chips de RAM.
Reste alors à utiliser les 8 bits d'adresse à l'intérieur d'un chip de RAM. Le 4004 permettait de concaténer deux registres d'indice de 4 bits pour former une adresse de 8 bits. Les instructions d'accès mémoire pouvaient ainsi préciser une paire de registre d'indice pour préciser quelle adresse lire/écrire. Idem pour les branchements indirects : le processeur supportait une instruction de branchement indirect qui précisait l'adresse dans une paire de registres d'indice. Les registres d'indice sont donc assez mal nommés sur cette architecture, vu qu'ils peuvent servir soit de registre d'indice, soit de demi-registre d'adresse. Il s'agit là du système de pseudo-aliasing des registres, mais appliqué aux registres d'indice.
L'Intel 4004 gérait deux instructions pour gérer les adresses mémoires. La première, l'instruction DCL (''Designate Command Line'') configure le registre de page. Elle prend en entrée un numéro de page et le copie dans le registre de page. L'opérande peut provenir d'un registre d'indice ou de l'accumulateur. La seconde, l'instruction SRC (''Send Register Control'') concatène deux registres d'indice pour obtenir une adresse de 8 bits. Un accès mémoire se fait donc en maximum trois instructions : une qui configure le registre de page si ce n'est pas déjà fait, une instruction SRC pour envoyer l'adresse, et une troisième instruction qui dit s'il faut faire une lecture ou une écriture.
===La microarchitecture de l'Intel 4004===
Il incorporait une pile d'adresse de retour intégrée au processeur. La pile d'adresse acceptait exactement 3 adresses maximum. Elle était regroupée avec le ''program counter'' dans un banc de registre, de 4 registres. Le ''program counter'' et le pointeur de pile faisaient chacun 12 bits, soit trois nibble. Ils étaient incrémentés par un incrémenteur dédié.
SI on omet le registre de page et la pile d'adresse, le 4004 est une architecture à accumulateur des plus classiques, avec un bus interne unique, un banc de registre pour les registres d'indices, un accumulateur relié à une unité de calcul. Les registres d'indice étaient dans un banc de registre séparés, car ils faisaient 4 bits chacun, contrairement au pointeur de pile et le ''program counter''. Un détail important est que les bancs de registres du 4004 étaient implémentés avec de la DRAM, et non des registres usuels fabriqués avec des bascules 1 bit.
[[File:Microarchitecture de l'Intel 4004.png|centre|vignette|upright=2.5|Microarchitecture de l'Intel 4004]]
<noinclude>
{{NavChapitre | book=Fonctionnement d'un ordinateur
| prev=Les architectures à pile et mémoire-mémoire
| prevText=Les architectures à pile et mémoire-mémoire
| next=Les processeurs de traitement du signal
| nextText=Les processeurs de traitement du signal
}}
</noinclude>
rh4byppzg7x3glj3j5sfbgnsze9bejl
765693
765692
2026-05-01T16:47:34Z
Mewtow
31375
/* Les microcontrôleurs PIC */
765693
wikitext
text/x-wiki
Nous avons déjà abordé la notion de processeur 8, 16, 32, 64 bits. Elle désigne la taille des registres généraux, ou de l'accumulateur. De nos jours, les processeurs 32 et 64 bits sont la norme, mais les premiers micro-processeurs étaient des processeurs 4 et 8, avant de passer rapidement au 16 bits. La raison est que leur budget en transistor limité faisait qu'on ne pouvait pas utiliser une ALU trop grande : une ALU 8 bit prend deux fois moins de place et de transistors qu'une ALU 16 bits. Cependant, les processeurs 8 bits avaient de sérieuses limitations qui étaient compensées par diverses solutions. Dans ce chapitre, nous allons faire une revue rapide des processeurs 8 bits et de leurs fonctionnalités.
La principale limitation des CPU 8 bits était l'adressage : des registres de 8 bits limitaient l'espace d'adressage à seulement 256 adresses, soit à peine 256 octets ! Intuitivement, on se dit que 256 octets est purement impraticable, on ne peut rien faire d'intéressant avec seulement 256 de RAM + ROM. Et c'est partiellement vrai. L'adage veut que 16 bits est la taille minimale intéressante, la limite à partir de laquelle on a assez de mémoire RAM/ROM pour coder des applications intéressantes. Mais 256 octets de RAM est largement suffisant sur de nombreux systèmes embarqués simples s'en accommodent : des caisses enregistreuses, des systèmes de régulation de feu de circulation, etc.
Pour les applications demandant plus de mémoire RAM, les CPU de l'époque contournaient la limitation de 256 octets de RAM avec de nombreux stratagèmes. Dans ce qui va suivre, nous allons séparer les CPU 8 bits selon qu'ils utilisent une architecture Harvard ou une architecture Von Neumann. La raison est qu'une architecture Harvard permet en soi de contourner partiellement ce problème d'adressage. Les choses sont plus compliquées avec une architecture Von Neumann.
==Les processeurs 8/16 bits à architecture Harvard ==
La première solution est d'utiliser une architecture Harvard. Le processeur 8 bit a alors deux espaces d'adressage : un pour la RAM, un autre pour la ROM. Et les deux utilisent des adresses de taille différente. La ROM est reliée à un bus d'adresse de 16 bits, alors que la RAM est elle connectée à un bus d'adresse de 8 bits. La RAM est donc limitée à 256 octets, alors que la ROM peut monter jusqu'à 64 kibioctets. Mine de rien, faire ainsi est largement suffisant.
Les processeurs de l'époque intégraient parfois les 256 octets de RAM directement dans le processeur. Beaucoup en implémentaient moins, avec par exemple seulement 64 octets de RAM, ou 32 octets, ou 128 octets. L'avantage est que cela éliminait le bus d'adresse des données et ne laissait que le bus d'adresse pour la ROM. On économisait ainsi beaucoup de broches sur le circuit intégré du CPU. Et pour les applications demandant plus de RAM, on pouvait ajouter un circuit séparé qui permettait d'adresser une RAM plus grande. Mais cela sera plus clair avec un exemple.
===Les microcontrôleurs PIC===
Les '''microcontrôleurs PIC''' regroupent des microcontrôleurs allant de microcontrôleurs 8 bit aux performances très faible, à des microcontrôleurs 32 bits bien plus puissants. Les microcontrôleurs PIC sont très utilisés dans l'embarqué ou d'informatique industrielle. Ils sont vendu à des volumes assez impressionnants, plusieurs millions par an. Et si vous avez ou êtes en train de faire des études d'électronique, je parie que vous les avez déjà vu en classe, ou que ce ne saurait tarder. Dans ce qui suit, nous allons nous concentrer sur les microcontrôleurs PIC 8 bits, à savoir les PIC 16, 16 et 18. Les PIC 24, qui sont des microcontrôleurs 16 bits, ne seront pas abordés.
Les microcontrôleurs PIC 8 bits incorporent une mémoire RAM très petite, ainsi qu'une architecture Harvard, comme dit plus haut. La mémoire RAM des microcontrôleurs PIC est très petite, elle dépasse rarement la centaine d'adresse. Pour donner un exemple, le PIC16F84 a une RAM composée de 68 "registres" de 8 bits. Le terme "registres" devrait vous faire tiquer, mais il s'agit bien d'une mémoire SRAM séparée. Simplement, la documentation des PIC qualifie cette mémoire SRAM de "registres", et il faut admettre que la différence entre banc de registre et SRAM séparée est un peu floue.
Un détail est que la SRAM n'a qu'un seul port qui sert à la fois pour les lectures et écritures. Pour compenser, les PIC sont des architectures à accumulateur, où une opérande est lue depuis la SRAM, l'autre depuis l'accumulateur. Leur implémentation de l'accumulateur ajoute une petite subtilité : le résultat d'une opération arithmétique peut être enregistré ailleurs que dans l'accumulateur. Le résultat peut aussi remplacer la seconde opérande, celle lue en mémoire RAM. Dit autrement, le résultat est enregistré dans l'adresse mémoire source. Les instructions de calcul ont le choix : un bit dans leur encodage précise où enregistrer le résultat.
[[File:DocPIC16F84 5.png|centre|vignette|upright=2|Microarchitecture simplifiée d'un microcontroleur PIC (ici, un 16F84).]]
Outre l'accumulateur, les PIC disposent de registres de contrôle, d'un ''program counter'', d'un registre d'état, et d'un pointeur de pile. Le registre d'état contient un registre séparé pour la retenue de l'addition/soustraction. Ce dernier est très important, vu qu'il est nécessaire pour les additions/soustractions sur des opérandes de 16 bits. Le processeur a beau être un CPU 8 bits, il peut être utilisé pour faire des calculs 16 bits, la performance est alors amoindrie, mais ce n'est pas un problème pour les applications d'un tel microcontroleur.
Un détail assez original est que les registres précédents sont mappés en mémoire, à quelques exceptions près ! En clair, on peut y accéder en lisant/écrivant à une adresse mémoire bien précise. Les seules registres qui ne sont pas mappés en mémoire sont l'accumulateur, la pile d'appel, et les registres d'entrée-sortie. Les registres d'entrée-sortie permettent de lire ou écrire sur un port d'entrée-sortie ou de lire un ''timer''. En clair, les PIC ont un espace d'adressage séparé pour les entrées-sorties.
[[File:DocPIC16F84.png|centre|vignette|upright=2|DocPIC16F84]]
Le processeur de ces microcontrôleurs a un jeu d'instruction propriétaire, le jeu d'instruction PIC. Les instructions PIC sont très petites. Les premières versions du jeu d'instruction utilisaient des instructions codées sur 12 bits, dont 5 pour l'adresse mémoire de la seconde opérande. Pour les branchements, 3 bits étaient utilisés pour l'opcode, 9 pour l'adresse de destination. Par la suite, les instructions ont été étendues à 13 bits sur les PIC1670, puis à 14, 15 et 16 bits. Les adresses ont alors été élargies, ce qui permet d'adresser en peu plus de mémoire RAM.
Les instructions se limitent à des additions/soustractions, des opérations bit à bit,des branchements, des instructions LOAD/STORE, ainsi que des opérations de manipulation de bit. Il y a une instruction pour mettre une adresse à zéro, qui peut aussi mettre à zéro l’accumulateur.
Pour ce qui est des branchements, les PIC n'ont pas d'instructions de branchement conditionnels, ils font avec une SKIP instruction et des branchements inconditionnels. Par contre, ils ont des branchements pour les appels et retour de fonction. Mieux que ça, ils intègrent une pile d'appel d'environ 8 adresses de retour. Pour donner une idée, l'adresse de retour est encodée sur 10 bits sur les PIC16F84.
Pour les instructions de manipulation de bit, il y a des instructions pour tester/masquer un bit dans une opérande, 4 en tout ( mettre à 0, mettre à 1, tester si bit = 1, tester si bit = 0). Les instructions qui testent un bit prennent leur opérande dans l'accumulateur. Il y a aussi deux instructions de rotation à gauche et droite, qui tiennent compte de la retenue mémorisée dans le registre d'état. Mentionnons aussi une instruction pour inverser deux ''nibbles'' dans un octet.
Les PIC ont aussi des instructions d'incrémentation et de décrémentation, un peu spéciales. Ces dernières regroupent : une incrémentation normale, une décrémentation normale, une décrémentation fusionnée avec une instruction SKIP, et une incrémentation fusionnée avec une instruction SKIP. Les deux dernières incrémentent/décrémentent l'accumulateur et SKIP l'instruction suivante si le résultat est zéro. Elles permettent de fortement simplifier l'implémentation des boucles qui s'exécutent tant que leur compteur atteint zéro.
Les PIC gèrent l'adressage absolu et indirect. L'adressage absolu, celui où l'adresse est intégrée dans l'instruction, est très simple à implémenter. Les adresses prennent moins d'un octet, vu que la taille de la RAM est très petite, les adresses sont très courtes, les intégrer dans des instructions elles-mêmes courtes n'est pas un problème. L'adresse est encodée sur 5 à 7 bits, selon le modèle, ce qui permet d'adresser entre 32 et 128 octets.
: Les PIC 18 peuvent adresser plus de 256 octets de RAM en utilisant la commutation de banques, une technique qui sera abordée dans plusieurs chapitres.
Pour l'adressage indirect, les PIC intègrent un registre d'adresse dédié. Il s'agit du registre FSR, qui mémorise l'adresse à lire/écrire. Il est possible de copier un pointeur dedans, qui provient soit de l'accumulateur, soit de la mémoire SRAM. Dans les deux cas, la donnée adressée est copiée dans un registre INDR, qui sert de registre d’interfaçage mémoire avec le bus de données. Le registre FSR est directement connecté sur le bus d'adresse. Les modèles de base se débrouillent avec un registre FSR et un registre INDR, mais les modèles plus performants ont deux ou trois copies de chaque registre. Les modèles PIC18 ajoutent aussi des instructions LOAD/STORE avec les modes d'adressage à post- ou pré-incrément/décrément, et le mode d'adressage "Base + Indice + Décalage".
Avec tout ce qu'on vient de dire, vous devriez pouvoir comprendre la microarchitecture d'un PIC, qui est résumée dans ce schéma.
[[File:DocPIC16F84 all.png|centre|vignette|upright=2.5|Microarchitecture du PIC16F84.]]
===Le Fairchild F8 et la console de jeu Fairchild Channel F===
Un autre exemple est la Fairchild F8 de la défunte entreprise Fairchild Semiconductor. Il incorpore un processeur 8 bits, c'est à dire que le processeur fait des calculs sur des entiers de 8 bits maximum, une mémoire RAM de 64 octets, ainsi qu'une mémoire ROM de 1 kibioctet. Les 64 octets de RAM sont certes très peu, mais c'est suffisant pour certaines applications simples, comme les caisses automatiques de l'époque, ou des applications embarquées. Et de toute façon, il est possible d'ajouter de la mémoire RAM supplémentaire si les 64 octets de RAM intégrée ne suffisent pas. Le système était donc modulaire, adaptable selon les besoins, peu cher pour son implémentation minimale sans RAM en plus.
Vu qu'il s'agit d'un des tout premiers ordinateurs, il est sorti à une époque où la technologie était rudimentaire. À cette époque, le processeur était composé de pièces détachées qu'il fallait souder ensemble pour obtenir un processeur fonctionnel. Ce n'est que plus tard qu'est apparu le micro-processeur, qui regroupe un processeur complet dans un seul circuit intégré. Le résultat est que le processeur du Fairchild F8 est coupé en deux, l'unité de calcul et l'unité de contrôle sont placés dans des pièces détachées séparés.
Le microcontrôleur est composé de trois à quatre pièces détachées, certaines étant optionnelles. La première est le '''3850 CPU''', qui regroupe l'unité de calcul et la mémoire RAM intégrée. La seconde est le PSU (''3851 Program Storage Unit''), qui regroupe la mémoire ROM et l'unité de contrôle, ''program counter'' inclut. S'il y a besoin d'utiliser plus de RAM, il faut ajouter un circuit d’interface mémoire, qui est au choix le ''3852 Dynamic Memory Interface'' (DMI) ou le ''3853 Static Memory Interface'', le premier étant connecté à une mémoire de type DRAM, l'autre à une SRAM (nous verrons ce que sont les DRAM et les SRAM dans le prochain chapitre).
[[File:Fairchild F8.png|centre|vignette|upright=2|Fairchild F8]]
Le système minimal est composé d'un PSU et d'un 3850, sans les circuits d'interface mémoire. Le tout donne un système avec un processeur 8 bit, 64 octets de RAM et 1 kibioctet de ROM, les deux mémoires étant intégrées dans le "processeur". Le processeur gérait 4 entrées-sorties, chacune étant reliée avec un bus de 8 bit au processeur. Au passage, en 1977, Mostek a créé un microcontrôleur qui regroupe un PSU et un 3850 : le Mostek 3870. Le système minimal n'avait pas de bus d'adresse, vu que la RAM était intégrée au processeur. C'est les 3852 et 3853 qui ajoutaient un bus d'adresse. Ils ajoutent un bus d'adresse de 16 bits, ce qui permet d'adresser 64 kibioctets de RAM.
[[File:Fairchild-Channel-F.jpg|vignette|un Fairchild Channel F]]
Le Fairchild F8 a été utilisé dans la Fairchild Channel F, une des toute première console de seconde génération, à savoir des consoles qui utilisaient des cartouches de jeu. Avant les consoles de seconde génération, les consoles étaient non-programmables. Elles étaient conçues pour faire tourner un jeu précis, aucun autre, le jeu étant implémenté dans leurs circuits.
La Fairchild Channel F est composé du système minimal, auquel on a ajouté une carte son rudimentaire et 2 kibioctets de mémoire vidéo. La mémoire vidéo sert uniquement pour afficher des images à l'écran : on écrit l'image à afficher dedans, un circuit vidéo se charge de l'afficher à l'écran automatiquement. Le processeur ne fait qu'écrire dans cette RAM vidéo, il ne peut pas en lire le contenu. De la RAM supplémentaire peut cependant être ajoutée dans les cartouches de jeu.
===L'usage d'une architecture Harvard modifiée : les consoles 8 bits===
Pour encore améliorer la situation, il est possible d'utiliser une architecture Harvard modifiée, qui permet de lire des données depuis la mémoire ROM. Cela réduit encore plus les besoins en mémoire RAM. Les constantes manipulées par le programme sont mémorisées en ROM, lues depuis la ROM, au lieu d'être chargées en RAM. Les consoles de jeu utilisaient beaucoup de stratagème.
L'exemple type est celui des consoles 8 bits avec des graphismes en 2D. La cartouche de jeu contenait une ROM, qui mémorisait le code du jeu, les niveaux, les sprites et autres données graphiques. Leur carte graphique lisait directement les ''sprites'' depuis la mémoire ROM, sans avoir à les charger en mémoire vidéo. La mémoire vidéo se contentait de mémoriser le reste des informations graphiques, ainsi que des pointeurs vers les ''sprites'' en ROM. En conséquence, les consoles 8 bits n'avaient pas besoin de beaucoup de RAM, vu qu'une grande partie des données utiles étaient dans une ROM directement accessible par le processeur. A l'opposé, les micro-ordinateurs devaient copier les données d'un jeu depuis une disquette dans la mémoire RAM, ce qui demandait d'avoir plus de RAM.
Le passage au support CD sur les consoles 32 bits a eu la même conséquence. Le processeur ne pouvant pas lire directement le CD à sa guise, il fallait copier les données du CD en RAM. D'où l'apparition de temps de chargement assez longs, inexistants sur support cartouche.
Avec ce genre de stratagèmes, 256 octets de RAM est largement suffisant sur de nombreux systèmes, à condition qu'on ait assez de ROM pour coder un programme digne de ce nom. Par exemple, de nombreux systèmes embarqués simples s'en accommodent : des caisses enregistreuses, des systèmes de régulation de feu de circulation, etc.
===Le HP Nanoprocessor : un processeur sans ALU===
Un dernier exemple est celui du processeur HP Nanoprocessor, de l'entreprise HP. Il a été commercialisé en 1974, en même temps que les premiers micro-processeurs d'Intel. Tous les processeurs de l'époque étaient des processeurs 8 bits et le HP Nanoprocessor ne faisait pas exception. Ce n'était pas un processeur haute performance, il était destiné à des applications d'informatique industrielle ou embarquée. D'ailleurs, il utilisait des transistors de type metal-gate, peu performants, là où ses contemporains utilisait des transistors en silicium, plus performants.
Mais une caractéristique qui rend cela encore plus claire est qu'il n'y a pas d'ALU ! En effet, ce processeur est incapable de faire des additions, des soustractions ou autres opérations simples ! Il est cependant capable d'effectuer des incrémentations et décrémentations, des décalages, des opérations logiques comme des ET/OU/NON/XOR et bien d'autres. Il supporte en tout 48 instructions, avec un support limité des modes d'adressage indirects. Les instructions de branchement étaient des instructions SKIP, il n'y avait pas d'instructions de branchement généralistes.
Pour ce qui est des registres, il disposait de 16 registres de 8 bits et d'un accumulateur. Niveau mémoire, il était relié à une mémoire ROM, rien de plus. Il n'avait de RAM supplémentaire qu'on pouvait lui adjoindre, il devait se débrouiller avec seulement ses registres. Et cela ne posait pas de problèmes pour son usage. Seul le mode d'adressage indirect à registre est supporté, il n'y a pas de registres d'indices. Ce mode d'adressage permet de lire des données en mémoire ROM, la ROM pouvant contenir des tableaux de valeurs constantes.
: Il est possible de lui adjoindre de la RAM via les ports d'entrée-sortie, ainsi qu'une ALU, mais RAM et ALU sont traités comme des périphériques avec lesquels on communique, ils ne sont pas intégrés au processeur.
Niveau micro-architecture, il incorporait une unité de calcul logique et un circuit comparateur. Le comparateur était un circuit comparateur série des plus basiques, qui était utilisé pour les instructions de branchement et associées. L'unité de calcul logique gérait des incrémentations/décrémentation, des décalages, les opérations logiques et quelques autres. L'unité de calcul logique était bit-slicée, à savoir conçue en assemblant 8 ALU de 1 bit chacune, enchainées en série. Le tout était combiné à des circuits de ''carry skip''.
[[File:Unité de calcul du HP nanonprocessor.png|centre|vignette|upright=2|Unité de calcul du HP nanoprocessor]]
Son unité de décodage d'instruction était très simple, essentiellement basée sur des portes NOR, grâce à un encodage efficace des instructions machine. Le ''program counter'' fait 11 bits, ce qui permet d'adresser une ROM de 2 kibioctets. Le ''program counter'' était relié à un circuit incrémenteur qui gérait les isntructions SKIP (il pouvait incrémenter le ''program counter'' par pas de 1 ou de 2 en cas de SKIP). Le processeur contient aussi deux registres, qui servent en quelque sorte de pile d'adresse de retour. Un premier registre mémorise l'adresse de retour d'une fonction, l'autre mémorise le ''program counter'' lors d'une interruption, pour savoir où brancher à la fin de l'interruption.
[[File:HP nanoprocessor.png|centre|vignette|upright=2.5|HP nanoprocessor]]
Fait intéressant, le concepteur du processeur a gracieusement donné les masques utilisés pour graver le silicium du processeur au site [https://www.cpushack.com/ CPU Shack]. Les masques en question sont disponibles ici :
* [https://www.cpushack.com/2020/08/20/hp-nanoprocessor-mask-set/ HP NanoProcessor Mask Set]
* [https://www.cpushack.com/2020/08/09/the-forgotten-ones-hp-nanoprocessor/ The Forgotten Ones: HP Nanoprocessor]
Les masques ont été analysés par Ken Shirrif dans cet article de blog :
* [https://www.righto.com/2020/09/hp-nanoprocessor-part-ii-reverse.html HP Nanoprocessor part II: Reverse-engineering the circuits from the masks]
==Les processeurs 8/16 bits à architecture Von Neumann==
L'usage d'une architecture Harvard est une solution pour adresser plus de mémoire avec des CPU 8 bits. Mais plusieurs microprocesseurs commerciaux n'utilisaient pas cette solution. À la place, c'était des architectures Von Neumann, mais qui étaient capables de gérer des adresses de 16 bits. Les données faisaient 8 bits, les registres faisaient 8 bits, mais quelques techniques permettaient de gérer des adresses de 16 bits. Nous parlerons de '''processeurs 8/16 bits''' pour les désigner, et nous allons les étudier à part.
Un point important est que la gestion d'adresses de 16 bits permet d'adresser 64 kibioctets, qui peuvent être remplis avec de la RAM et de la ROM. On a donc le meilleur des mondes : 64 kibioctets de mémoire, mais avec des données de 8 bits et les économies de circuit qui vont avec. L'avantage est que le processeur peut maintenant gérer une vraie pile d'appel, pas seulement une pile d'adresse de retour. Il lui suffit pour cela d'intégrer un pointeur de pile codé sur 16 bits.
===Les modes d'adressage par page des CPU Motorola===
Les processeurs Motorola 8 bits étaient des processeurs 8 bits avec un bus d'adresse de 16 bits. C'était des processeurs à accumulateur incorporant deux registres d'indice, un registre d'état, un pointeur de pile, et un ''program counter''. Tous les registres sont reliés au bus d'adresse, sauf le registre d'état et l’accumulateur. Tous les registres font 8 bits, sauf le ''program counter''. La pile est câblée pour être dans un bloc de 256 octets compris entre l'adresse 1 0000 0000 et l'adresse 1 1111 1111, ce qui fait que son adressage se fait avec un seul octet.
[[File:6502-architecture.svg|centre|vignette|upright=1.5|Architecture simplifiée du 6502.</br> X et Y : registres d'indice ;</br> S : le pointeur de pile ;</br> A : accumulateur ;</br>P : registre d'état.</br>]]
Les processeurs Motorola 8 bits utilisaient une méthode simple pour adresser 64 kibioctets de RAM, avec des registres de 8 bits. Pour cela, ils utilisaient une variante de l'adressage base + décalage. Elle améliore l'adressage absolu, qui intègre l'adresse à lire/écrire dans l'instruction elle-même. L'adresse en question est de 8 bits et n'encode que les 8 bits de poids faible de l'adresse, les 8 bits de poids fort sont dans un '''registre de page''' adressé implicitement. L'adresse finale est obtenue en concaténant ce registre avec l'adresse mémoire intégrée dans l’instruction. Le résultat est que la mémoire était découpée en blocs de 256 consécutifs, chacun pouvant servir de fenêtre de 256 octets. Une page est réservée pour la pile, la seconde, comme dit plus haut.
Formellement, ce mode d'adressage a des ressemblances avec la commutation de banques, une technique qu'on verra dans les chapitres sur l'espace d'adressage et la mémoire virtuelle. Mais ce n'en est pas du tout : le registre de page est utilisé uniquement pour les accès mémoire avec le mode d'adressage base + décalage, mais pas pour les autres accès mémoire, qui gèrent des adresses complètes. Notons que l'usage d'un registre de page dédié fait que celui-ci est adressé implicitement.
Il faut noter que la technique a été utilisée sur des processeurs 16 bits, pour contourner la petite taille des instructions. Un exemple est celui du HP 2100, un processeur 16 bits. Il avait un registre de page de 5 bits et encodait 10 bits d'adresse dans ses instructions. Ses instructions d'accès mémoire disposaient d'un bit qui choisit quel mode d'adressage utiliser. S'il était à 0, l'adressage absolu était utilisé, le registre de page n'était pas utilisé. Mais s'il était à 1, le registre de page était utilisé pour calculer l'adresse.
Une évolution de l'adressage précédent est le '''mode page direct'''. Avec lui, le registre de page est étendu et contient une adresse mémoire complète. L'adresse finale n'est pas obtenue par concaténation, mais en additionnant le registre de page avec l'adresse fournie par adressage absolu + décalage. Un exemple est celui des premiers processeurs Motorola, qui géraient des adresses courtes de 8 bits. L'adresse courte de 8 bits correspondait non pas aux 256 premiers octets de la mémoire, mais à une fenêtre de 256 octets déplaçable en mémoire. La position de la fenêtre de 256 octets était spécifiée par le registre de page de 16 bits, qui précisait l'adresse du début de la fenêtre, celle de sa première donnée.
Il s'agit donc formellement d'adressage base + décalage, à un détail près : il n'y a qu'un seul registre de base. Le fait que ce registre de base soit unique fait qu'il est adressé implicitement, on n'a pas à encoder le numéro/noms de registre dans l'instruction. Le registre de base est utilisé uniquement pour l'adressage absolu, pas pour les autres accès mémoire. S'il y a des ressemblances avec la segmentation, une technique de mémoire virtuelle qu'on abordera dans quelques chapitres, ce n'en est pas vu que le registre de base est utilisé seulement pour un mode d'adressage bien précis.
===Le ''pseudo-aliasing'' des registres des processeurs Intel x86===
Voyons maintenant le cas des anciens processeurs 8 bits d'Intel à savoir l'Intel 4004, 4040, 8008 et 8080. Le Z80, un processeur inspiré des CPU Intel 8 bits, est aussi concerné. Avant de poursuivre, parlons des registres de ces processeurs. Les premiers CPU Intel incorporaient 7 registres de 8 bits nommés A, B, C, D, E, F, H, L, SP. Ils correspondent respectivement à : l'accumulateur A ; six registres nommés B, C, D, E, H et L ; le registre d'état F ; le pointeur de pile SP. Le Z80 ajoute deux registres d'indice X et Y. De plus, le Z80 dispose de registres d'interruption, qui sont en quelque sorte des copies des registres A, B, C, D, E, F, H, L. Le tout est illustré dans le tableau ci-dessous.
{|class="wikitable" style="text-align:center;"
|-
!
! Registres des CPU Intel
! Registres supplémentaires du Z80
|-
! Accumulateur
| A
| A'
|-
! Registre d'état
| F
| F'
|-
! Registres généraux
| B, C, D, E, H, L
| B', C', D', E', H', L'
|-
! Pointeur de pile
| colspan="2" | SP (sauf pour le 8008)
|-
! Registres d'indice
|
| X et Y
|}
Le 8008 incorpore une pile d'appel de 7 adresses, dans le processeur lui-même. Il en est de la même avec le 4004 et le 4040, comme on le verra dans la section sur les processeurs 4 bits. Mais le 8080 et le 8085 ont remplacé le tout par un simple pointeur de pile, afin d'avoir une véritable pile d'appel. Autant c'est impossible d'avoir une pile d'appel avec seulement 256 octets de mémoire, autant on peut se le permettre avec 65 536 adresses.
Pour gérer des adresses de 16 bits, ils auraient pu utiliser des registres d'adresse séparés, mais on préféré un système de '''pseudo-''aliasing'' de registres'''. Formellement, c'est un système qui concatène deux registres 8 bits pour obtenir une adresse de 16 bits. L’appariement a lieu lors de certaines opérations bien précises, qui n'ont de sens que pour les adresses : la lecture/écriture en mémoire, et l'incrémentation.
Il y avait cependant des contraintes quant aux paires de registres possibles, toutes les paires de registres n'étaient pas autorisées. Les CPU concernés sont donc des processeurs hybrides accumulateur-registre généraux. L'accumulateur ne peut pas être appairé, seuls les registres généraux le peuvent. Le Z80 autorise plus de paires que les CPU Intel. Voici les paires de registres qui pouvaient servir d'adresse 16 bits :
* Les CPU 8008 d'Intel autorisait une seule paire formée des registres H et L.
* Les autres processeurs, à savoir le 8080, le 8085 et le Z80, autorisaient : les paires BC, DE et HL.
Le 8008 ne gérait que des opérations sur 8 bits. Mais le 8080 et le 8085 ont ajouté des instructions 16 bits qui agissaient sur des paires de registre, que le Z80 a repris. Une paire de registres est considérée comme un registre unique de 16 bits pour certaines opérations arithmétiques, dont l'incrémentation. Voici la liste des instructions concernées :
* INC et DEC pour l'incrémentation et la décrémentation ;
* DAD : additionne le registre HL avec une autre paire (Hl inclus) ;
* LXI : copie une constante immédiate dans une paire de registres ;
* LHLD : lit 16 depuis la mémoire et l'enregistre dans une paire de registres ;
* SHLD : copie 16 bits depuis une paire de registres et l'enregistre en mémoire ;
* PUSH et POP : empile ou dépilent une paire de registre sur la pile ;
* XTHL : échange la paire HL avec les 16 bits au sommet de la pile d'appel ;
* XCHG : échange le contenu de la paire HL et DE.
Pour résumer, le processeur avait des instructions LOAD, STORE, PUSH et POP adaptées pour gérer des paires de registre. De plus, l'instruction XCHG permettait d’échanger le contenu des paires DE et HL. L'instruction a été étendue sur les processeurs 16 bits pour échanger tous les registres. Mais l'implémentation était alors différente. L'incrémentation sur une paire de 16 bit était très utile, car les adresses sont souvent incrémentées quand on parcours un tableau. Ces instructions nous donnent quelques indices sur ce qu'il y a dans le processeur.
Le système de pseudo-aliasing a un impact sur le banc de registre. Le banc de registre regroupe les registres généraux et le pointeur de pile, mais ne contient pas l'accumulateur. Les contraintes sur les paires de registres possibles ne s'expliquent que d'une seule manière : le banc de registre contient des registres de 16 bits, une paire de registres 8 bits est mémorisée dans un registre unique. Il faut donc faire une différence entre les registres architecturaux de 8 bits, et les registres réels de 16 bits.
Le banc de registre a un port de 8 bits pour les données, qui est fabriqué à partir d'un port 16 bits auquel on a rajouté un multiplexeur pour choisir soit l'octet de poids faible, soit l'octet de poids fort. Le bus de données fait 8 bits, ce qui fait que les instructions LOAD, STORE, PUSH et POP pour paires 16 bits sont réalisées en deux fois : on lit/écrit l'octet de poids faible, puis celui de poids fort. Par contre, le bus d'adresse fait bien 16 bits. Cela suggère que le banc de registre dispose d'un port de 16 bits dédié aux adresses, en plus du port de données 8 bits.
[[File:Architecture d'un CPU 8-16 bits avec un banc de registre double port.png|centre|vignette|upright=2|Architecture d'un CPU 8-16 bits avec un banc de registre double port]]
L'incrémentation d'une paire 16 bits ne coute rien à implémenter, ou presque. En effet, le processeur incorpore un incrémenteur 16 bits pour le ''program counter'', qui est relié au bus d'adresse. L'idée est de rentabiliser cet incrémenteur, en lui permettant d'incrémenter des données/adresses de 16 bits obtenues via pseudo-aliasing. De même, il peut être utilisé pour incrémenter le pointeur de pile, voire un compteur de rafraichissement mémoire (pour rappel, le rafraîchissement mémoire demande de balayer la mémoire d'adresse en adresse et été fait par le CPU à l'époque). Pour cela, il suffit de connecter le ''program counter'', le banc de registre, et l'incrémenteur, via un bus dédié.
[[File:Calcul d'adresse par ALU dédiée avec PC séparé.png|centre|vignette|upright=2|Calcul d'adresse par ALU dédiée avec PC séparé]]
Notez qu'on peut encore simplifier le tout en placant le ''program counter'' dans le banc de registre, ce qui ne gênera pas le travail de l'incrémenteur mais simplifiera le câblage au bus d'adresse. Ce n'était pas systématique, certains processeurs mettaient le ''program counter'' dans le banc de registre, d'autres non.
: Inclure le ''program counter'' dans le banc de registre permet parfois de remplir un vide. Par exemple, sur un processeur avec 12 registres, le banc de registre devrait faire idéalement 16 registres, inclure le ''program counter'' dedans fait monter le tout à 13.
[[File:Architecture d'un CPU 8-16 bits.png|centre|vignette|upright=2|Architecture d'un CPU 8-16 bits]]
Les processeurs Intel 8 bits, à savoir le 8008, le 8080 et le 8085 ; mettaient le ''program counter'' dans le banc de registre. Vous avez donc toutes les armes pour comprendre leur micro-architecture. Par exemple, voici la micro-architecture du processeur 8080. Remarquez le banc de registre, qui contient tous les registres sauf l'accumulateur et le registre. Il a deux ports : un pour les adresses et un pour les données. Notez le dé-multiplexeur sur le port de donnée. Pour le reste, il s'agit d'une architecture à accumulateur hybride des plus classiques.
[[File:Intel 8080 arch.svg|centre|vignette|upright=3|Microarchitecture de l'Intel 8080.]]
Le Z80 est un processeur inspiré du design des processeurs Intel 8 bits, mais avec pas mal d'améliorations. Un point particulier de ce processeur est son banc de registre. Il contient tous les registres du processeur, y compris l'accumulateur et le registre d'état ! Les seuls registres en-dehors du banc de registre sont le ''program counter'' et un compteur de rafraichissement mémoire IR.
Un autre point particulier est que les registres dans le banc de registres avaient une copie séparée accessible uniquement pour les interruptions, via fenêtrage de registres. Et l'accumulateur et le registre d'état étant dans le banc de registre, il y avait deux accumulateurs et deux registres d'état. Les registres A, B, C, D, E et F étaient dupliqués, par le pointeur de pile ni les registres d'indice. Les copies des registres étaient nommées A', B', C', D', E' et F'.
Le Z80 supportait des instructions d'échange de registre en plus des CPU Intel 8 bits. L'instruction EX peut échanger soit le contenu des paires D,E et H,F, soit la paire A,F avec la paire A',F'. L'instruction EXX échange les paires BC, DE, HL avec les paires BC', DE', HL'. En faisant cela, le programmeur pouvait utiliser deux fois plus de registres généraux s'il n'utilisait pas les interruptions. L'échange de paires se fait sans copies de registres, mais simplement en modifiant l'adresse envoyée sur le banc de registre. Pour cela, plusieurs bascules mémorisent des bits qui indiquent si les paires ont été échangées ou non. Il y a une bascule pour les paires DE , HL ; une autre pour les paires A,F et paire A',F', une dernière pour l'instruction EXX. En combinant ces bascules avec les noms de registres envoyés par le séquenceur, on peut échanger les paires de registres.
==Le cas particulier des processeurs 4 bits : le 4004 d'Intel==
L'Intel 4004 était le tout premier micro-processeur. Il s'agissait d'un microprocesseur de 4 bits, basé sur une architecture à accumulateur. Il disposait d'un accumulateur et de 16 registres d'indice, tous de 4 bits. Il faisait des calculs sur des données de 4 bits, appelées des nibbles. Cependant, sur ses 46 instructions machines supportées, 41 agissaient sur des opérandes de 8 bits, les 5 restantes sur des opérandes de 16 bits. Simplement, les calculs se faisaient en deux fois, en échangeant des données entre mémoire RAM et accumulateur.
Le 4004 est un circuit intégré avec peu de broches. Il dispose notamment d'un bus de données/adresse, qui est multiplexé, c’est-à-dire qu'il sert alternativement de bus de données et de bus d'adresse selon les besoins. Le bus de commande mémoire fait 5 bits, dont 4 pour les chips de RAM, un pour la ROM. Les adresses sont codées sur 12 bits, les données sur 4 et les instructions sur 8 bits. L'envoi d'une adresse sur le bus se fait en plusieurs fois, de même que la lecture d'une instruction. Il s'agit là d'une adaptation pour outrepasser les limitations d'un processeur 4 bit.
[[File:Intel 4004 processor pinout.png|centre|vignette|upright=2|Broches de l'Intel 4004. Nous verrons à quoi elles servent plus bas.]]
===L'espace d'adressage de l'Intel 4004===
Les adresses du processeur sont sur 12 bits, ce qui fait 4096 adresses différentes. Elles regroupent à la fois la ROM et la mémoire RAM, vu que l'architecture est une sorte de mélange bizarre entre une architecture Von Neumann et Harvard. Le processeur gère bien deux espaces d'adressage séparés, mais la RAM et la ROM sont reliés au même bus. La sortie CM-ROM du processeur indique si l'adresse envoyée correspond à la RAM ou la ROM. Un circuit de décodage d'adresse active ou désactive la RAM selon la valeur de ce bit, l'inverse pour la ROM, en agissant sur leurs bits Chip Select. Seule la RAM ou la ROM répondent alors à l'adresse.
Pour ce qui est de la RAM, le circuit de décodage d'adresse pouvait gérer au maximum 1024 adresses différentes, chacune contenant un nibble. Pour cela, le CPU 4004 était relié à une ou plusieurs RAM externes, des Intel 4002. Chaque Intel 4002 contenait 64 nibbles de données, plus 16 nibbles de statut qu'on ne détaillera pas ici. Les nibbles de statut étaient accessibles en utilisant des instructions d'entrée-sortie, donc pas avec des lectures/écritures mémoire. Les 64 nibbles de données sont découpés en 4 groupes de 16 nibbles. Le CPU pouvait être relié à maximum 16 Intel 4002, ce qui fait 1024 nibbles de données et 256 nibbles de statut. L'ensemble permet de remplir l'espace d'adressage de 1024 adresses.
===Le registre de page et le pseudo-aliasing des registres===
Sélectionner une adresse mémoire utilisait un mélange entre pseudo-aliasing et registre de page. Pour les données, les 1024 adresses étaient découpées en 4 pages de 256 adresses. Pour la ROM, les 4096 adresses étaient découpées en 16 pages de 256 adresses. Localiser une donnée dans une page ne requiert que 8 bits, 2/4 bits supplémentaires permettent de sélectionner la page voulue. Le registre de page était dans le processeur lui-même, et était relié aux sorties du processeur nommées CM-RAM 0, 1, 2 et 3. Les 4 sorties encodaient un nombre qui permet de sélectionner le numéro de page voulu.
Le registre de page fait 5 bits : un pour distinguer RAM et ROM, 4 bits pour sélectionner la page voulue. L'avantage est que la carte mère gère au maximum 16 chips de RAM, ce qui colle parfaitement avec les 4 utilisés pour sélectionner une page. Un chip de RAM correspond à une page, et chacun est activé ou désactivé suivant la page sélectionnée. Pour cela, il suffit d'ajouter un décodeur sur la carte mère, qui prend les 4 bits du registre de page et fournit les signaux Chip Select aux différents chips de RAM.
Reste alors à utiliser les 8 bits d'adresse à l'intérieur d'un chip de RAM. Le 4004 permettait de concaténer deux registres d'indice de 4 bits pour former une adresse de 8 bits. Les instructions d'accès mémoire pouvaient ainsi préciser une paire de registre d'indice pour préciser quelle adresse lire/écrire. Idem pour les branchements indirects : le processeur supportait une instruction de branchement indirect qui précisait l'adresse dans une paire de registres d'indice. Les registres d'indice sont donc assez mal nommés sur cette architecture, vu qu'ils peuvent servir soit de registre d'indice, soit de demi-registre d'adresse. Il s'agit là du système de pseudo-aliasing des registres, mais appliqué aux registres d'indice.
L'Intel 4004 gérait deux instructions pour gérer les adresses mémoires. La première, l'instruction DCL (''Designate Command Line'') configure le registre de page. Elle prend en entrée un numéro de page et le copie dans le registre de page. L'opérande peut provenir d'un registre d'indice ou de l'accumulateur. La seconde, l'instruction SRC (''Send Register Control'') concatène deux registres d'indice pour obtenir une adresse de 8 bits. Un accès mémoire se fait donc en maximum trois instructions : une qui configure le registre de page si ce n'est pas déjà fait, une instruction SRC pour envoyer l'adresse, et une troisième instruction qui dit s'il faut faire une lecture ou une écriture.
===La microarchitecture de l'Intel 4004===
Il incorporait une pile d'adresse de retour intégrée au processeur. La pile d'adresse acceptait exactement 3 adresses maximum. Elle était regroupée avec le ''program counter'' dans un banc de registre, de 4 registres. Le ''program counter'' et le pointeur de pile faisaient chacun 12 bits, soit trois nibble. Ils étaient incrémentés par un incrémenteur dédié.
SI on omet le registre de page et la pile d'adresse, le 4004 est une architecture à accumulateur des plus classiques, avec un bus interne unique, un banc de registre pour les registres d'indices, un accumulateur relié à une unité de calcul. Les registres d'indice étaient dans un banc de registre séparés, car ils faisaient 4 bits chacun, contrairement au pointeur de pile et le ''program counter''. Un détail important est que les bancs de registres du 4004 étaient implémentés avec de la DRAM, et non des registres usuels fabriqués avec des bascules 1 bit.
[[File:Microarchitecture de l'Intel 4004.png|centre|vignette|upright=2.5|Microarchitecture de l'Intel 4004]]
<noinclude>
{{NavChapitre | book=Fonctionnement d'un ordinateur
| prev=Les architectures à pile et mémoire-mémoire
| prevText=Les architectures à pile et mémoire-mémoire
| next=Les processeurs de traitement du signal
| nextText=Les processeurs de traitement du signal
}}
</noinclude>
g5yaoiw5fa78n0cvdrohvqgfon6mkb5
765694
765693
2026-05-01T16:50:38Z
Mewtow
31375
/* Les microcontrôleurs PIC */
765694
wikitext
text/x-wiki
Nous avons déjà abordé la notion de processeur 8, 16, 32, 64 bits. Elle désigne la taille des registres généraux, ou de l'accumulateur. De nos jours, les processeurs 32 et 64 bits sont la norme, mais les premiers micro-processeurs étaient des processeurs 4 et 8, avant de passer rapidement au 16 bits. La raison est que leur budget en transistor limité faisait qu'on ne pouvait pas utiliser une ALU trop grande : une ALU 8 bit prend deux fois moins de place et de transistors qu'une ALU 16 bits. Cependant, les processeurs 8 bits avaient de sérieuses limitations qui étaient compensées par diverses solutions. Dans ce chapitre, nous allons faire une revue rapide des processeurs 8 bits et de leurs fonctionnalités.
La principale limitation des CPU 8 bits était l'adressage : des registres de 8 bits limitaient l'espace d'adressage à seulement 256 adresses, soit à peine 256 octets ! Intuitivement, on se dit que 256 octets est purement impraticable, on ne peut rien faire d'intéressant avec seulement 256 de RAM + ROM. Et c'est partiellement vrai. L'adage veut que 16 bits est la taille minimale intéressante, la limite à partir de laquelle on a assez de mémoire RAM/ROM pour coder des applications intéressantes. Mais 256 octets de RAM est largement suffisant sur de nombreux systèmes embarqués simples s'en accommodent : des caisses enregistreuses, des systèmes de régulation de feu de circulation, etc.
Pour les applications demandant plus de mémoire RAM, les CPU de l'époque contournaient la limitation de 256 octets de RAM avec de nombreux stratagèmes. Dans ce qui va suivre, nous allons séparer les CPU 8 bits selon qu'ils utilisent une architecture Harvard ou une architecture Von Neumann. La raison est qu'une architecture Harvard permet en soi de contourner partiellement ce problème d'adressage. Les choses sont plus compliquées avec une architecture Von Neumann.
==Les processeurs 8/16 bits à architecture Harvard ==
La première solution est d'utiliser une architecture Harvard. Le processeur 8 bit a alors deux espaces d'adressage : un pour la RAM, un autre pour la ROM. Et les deux utilisent des adresses de taille différente. La ROM est reliée à un bus d'adresse de 16 bits, alors que la RAM est elle connectée à un bus d'adresse de 8 bits. La RAM est donc limitée à 256 octets, alors que la ROM peut monter jusqu'à 64 kibioctets. Mine de rien, faire ainsi est largement suffisant.
Les processeurs de l'époque intégraient parfois les 256 octets de RAM directement dans le processeur. Beaucoup en implémentaient moins, avec par exemple seulement 64 octets de RAM, ou 32 octets, ou 128 octets. L'avantage est que cela éliminait le bus d'adresse des données et ne laissait que le bus d'adresse pour la ROM. On économisait ainsi beaucoup de broches sur le circuit intégré du CPU. Et pour les applications demandant plus de RAM, on pouvait ajouter un circuit séparé qui permettait d'adresser une RAM plus grande. Mais cela sera plus clair avec un exemple.
===Les microcontrôleurs PIC===
Les '''microcontrôleurs PIC''' regroupent des microcontrôleurs allant de microcontrôleurs 8 bit aux performances très faible, à des microcontrôleurs 32 bits bien plus puissants. Les microcontrôleurs PIC sont très utilisés dans l'embarqué ou d'informatique industrielle. Ils sont vendu à des volumes assez impressionnants, plusieurs millions par an. Et si vous avez ou êtes en train de faire des études d'électronique, je parie que vous les avez déjà vu en classe, ou que ce ne saurait tarder. Dans ce qui suit, nous allons nous concentrer sur les microcontrôleurs PIC 8 bits, à savoir les PIC 16, 16 et 18. Les PIC 24, qui sont des microcontrôleurs 16 bits, ne seront pas abordés.
Les microcontrôleurs PIC 8 bits incorporent une mémoire RAM très petite, ainsi qu'une architecture Harvard, comme dit plus haut. La mémoire RAM des microcontrôleurs PIC est très petite, elle dépasse rarement la centaine d'adresse. Pour donner un exemple, le PIC16F84 a une RAM composée de 68 "registres" de 8 bits. Le terme "registres" devrait vous faire tiquer, mais il s'agit bien d'une mémoire SRAM séparée. Simplement, la documentation des PIC qualifie cette mémoire SRAM de "registres", et il faut admettre que la différence entre banc de registre et SRAM séparée est un peu floue.
Un détail est que la SRAM n'a qu'un seul port qui sert à la fois pour les lectures et écritures. Pour compenser, les PIC sont des architectures à accumulateur, où une opérande est lue depuis la SRAM, l'autre depuis l'accumulateur. Leur implémentation de l'accumulateur ajoute une petite subtilité : le résultat d'une opération arithmétique peut être enregistré ailleurs que dans l'accumulateur. Le résultat peut aussi remplacer la seconde opérande, celle lue en mémoire RAM. Dit autrement, le résultat est enregistré dans l'adresse mémoire source. Les instructions de calcul ont le choix : un bit dans leur encodage précise où enregistrer le résultat.
{|
|-
|[[File:DocPIC16F84 4.png|centre|vignette|upright=2|Microarchitecture simplifiée d'un microcontroleur PIC (ici, un 16F84).]]
|[[File:DocPIC16F84 5.png|centre|vignette|upright=2|Microarchitecture simplifiée d'un microcontroleur PIC (ici, un 16F84), avec les branchements directs.]]
|}
Outre l'accumulateur, les PIC disposent de registres de contrôle, d'un ''program counter'', d'un registre d'état, et d'un pointeur de pile. Le registre d'état contient un registre séparé pour la retenue de l'addition/soustraction. Ce dernier est très important, vu qu'il est nécessaire pour les additions/soustractions sur des opérandes de 16 bits. Le processeur a beau être un CPU 8 bits, il peut être utilisé pour faire des calculs 16 bits, la performance est alors amoindrie, mais ce n'est pas un problème pour les applications d'un tel microcontroleur.
Un détail assez original est que les registres précédents sont mappés en mémoire, à quelques exceptions près ! En clair, on peut y accéder en lisant/écrivant à une adresse mémoire bien précise. Les seules registres qui ne sont pas mappés en mémoire sont l'accumulateur, la pile d'appel, et les registres d'entrée-sortie. Les registres d'entrée-sortie permettent de lire ou écrire sur un port d'entrée-sortie ou de lire un ''timer''. En clair, les PIC ont un espace d'adressage séparé pour les entrées-sorties.
[[File:DocPIC16F84.png|centre|vignette|upright=2|DocPIC16F84]]
Le processeur de ces microcontrôleurs a un jeu d'instruction propriétaire, le jeu d'instruction PIC. Les instructions PIC sont très petites. Les premières versions du jeu d'instruction utilisaient des instructions codées sur 12 bits, dont 5 pour l'adresse mémoire de la seconde opérande. Pour les branchements, 3 bits étaient utilisés pour l'opcode, 9 pour l'adresse de destination. Par la suite, les instructions ont été étendues à 13 bits sur les PIC1670, puis à 14, 15 et 16 bits. Les adresses ont alors été élargies, ce qui permet d'adresser en peu plus de mémoire RAM.
Les instructions se limitent à des additions/soustractions, des opérations bit à bit,des branchements, des instructions LOAD/STORE, ainsi que des opérations de manipulation de bit. Il y a une instruction pour mettre une adresse à zéro, qui peut aussi mettre à zéro l’accumulateur.
Pour ce qui est des branchements, les PIC n'ont pas d'instructions de branchement conditionnels, ils font avec une SKIP instruction et des branchements inconditionnels. Par contre, ils ont des branchements pour les appels et retour de fonction. Mieux que ça, ils intègrent une pile d'appel d'environ 8 adresses de retour. Pour donner une idée, l'adresse de retour est encodée sur 10 bits sur les PIC16F84.
Pour les instructions de manipulation de bit, il y a des instructions pour tester/masquer un bit dans une opérande, 4 en tout ( mettre à 0, mettre à 1, tester si bit = 1, tester si bit = 0). Les instructions qui testent un bit prennent leur opérande dans l'accumulateur. Il y a aussi deux instructions de rotation à gauche et droite, qui tiennent compte de la retenue mémorisée dans le registre d'état. Mentionnons aussi une instruction pour inverser deux ''nibbles'' dans un octet.
Les PIC ont aussi des instructions d'incrémentation et de décrémentation, un peu spéciales. Ces dernières regroupent : une incrémentation normale, une décrémentation normale, une décrémentation fusionnée avec une instruction SKIP, et une incrémentation fusionnée avec une instruction SKIP. Les deux dernières incrémentent/décrémentent l'accumulateur et SKIP l'instruction suivante si le résultat est zéro. Elles permettent de fortement simplifier l'implémentation des boucles qui s'exécutent tant que leur compteur atteint zéro.
Les PIC gèrent l'adressage absolu et indirect. L'adressage absolu, celui où l'adresse est intégrée dans l'instruction, est très simple à implémenter. Les adresses prennent moins d'un octet, vu que la taille de la RAM est très petite, les adresses sont très courtes, les intégrer dans des instructions elles-mêmes courtes n'est pas un problème. L'adresse est encodée sur 5 à 7 bits, selon le modèle, ce qui permet d'adresser entre 32 et 128 octets.
: Les PIC 18 peuvent adresser plus de 256 octets de RAM en utilisant la commutation de banques, une technique qui sera abordée dans plusieurs chapitres.
Pour l'adressage indirect, les PIC intègrent un registre d'adresse dédié. Il s'agit du registre FSR, qui mémorise l'adresse à lire/écrire. Il est possible de copier un pointeur dedans, qui provient soit de l'accumulateur, soit de la mémoire SRAM. Dans les deux cas, la donnée adressée est copiée dans un registre INDR, qui sert de registre d’interfaçage mémoire avec le bus de données. Le registre FSR est directement connecté sur le bus d'adresse. Les modèles de base se débrouillent avec un registre FSR et un registre INDR, mais les modèles plus performants ont deux ou trois copies de chaque registre. Les modèles PIC18 ajoutent aussi des instructions LOAD/STORE avec les modes d'adressage à post- ou pré-incrément/décrément, et le mode d'adressage "Base + Indice + Décalage".
Avec tout ce qu'on vient de dire, vous devriez pouvoir comprendre la microarchitecture d'un PIC, qui est résumée dans ce schéma.
[[File:DocPIC16F84 all.png|centre|vignette|upright=2.5|Microarchitecture du PIC16F84.]]
===Le Fairchild F8 et la console de jeu Fairchild Channel F===
Un autre exemple est la Fairchild F8 de la défunte entreprise Fairchild Semiconductor. Il incorpore un processeur 8 bits, c'est à dire que le processeur fait des calculs sur des entiers de 8 bits maximum, une mémoire RAM de 64 octets, ainsi qu'une mémoire ROM de 1 kibioctet. Les 64 octets de RAM sont certes très peu, mais c'est suffisant pour certaines applications simples, comme les caisses automatiques de l'époque, ou des applications embarquées. Et de toute façon, il est possible d'ajouter de la mémoire RAM supplémentaire si les 64 octets de RAM intégrée ne suffisent pas. Le système était donc modulaire, adaptable selon les besoins, peu cher pour son implémentation minimale sans RAM en plus.
Vu qu'il s'agit d'un des tout premiers ordinateurs, il est sorti à une époque où la technologie était rudimentaire. À cette époque, le processeur était composé de pièces détachées qu'il fallait souder ensemble pour obtenir un processeur fonctionnel. Ce n'est que plus tard qu'est apparu le micro-processeur, qui regroupe un processeur complet dans un seul circuit intégré. Le résultat est que le processeur du Fairchild F8 est coupé en deux, l'unité de calcul et l'unité de contrôle sont placés dans des pièces détachées séparés.
Le microcontrôleur est composé de trois à quatre pièces détachées, certaines étant optionnelles. La première est le '''3850 CPU''', qui regroupe l'unité de calcul et la mémoire RAM intégrée. La seconde est le PSU (''3851 Program Storage Unit''), qui regroupe la mémoire ROM et l'unité de contrôle, ''program counter'' inclut. S'il y a besoin d'utiliser plus de RAM, il faut ajouter un circuit d’interface mémoire, qui est au choix le ''3852 Dynamic Memory Interface'' (DMI) ou le ''3853 Static Memory Interface'', le premier étant connecté à une mémoire de type DRAM, l'autre à une SRAM (nous verrons ce que sont les DRAM et les SRAM dans le prochain chapitre).
[[File:Fairchild F8.png|centre|vignette|upright=2|Fairchild F8]]
Le système minimal est composé d'un PSU et d'un 3850, sans les circuits d'interface mémoire. Le tout donne un système avec un processeur 8 bit, 64 octets de RAM et 1 kibioctet de ROM, les deux mémoires étant intégrées dans le "processeur". Le processeur gérait 4 entrées-sorties, chacune étant reliée avec un bus de 8 bit au processeur. Au passage, en 1977, Mostek a créé un microcontrôleur qui regroupe un PSU et un 3850 : le Mostek 3870. Le système minimal n'avait pas de bus d'adresse, vu que la RAM était intégrée au processeur. C'est les 3852 et 3853 qui ajoutaient un bus d'adresse. Ils ajoutent un bus d'adresse de 16 bits, ce qui permet d'adresser 64 kibioctets de RAM.
[[File:Fairchild-Channel-F.jpg|vignette|un Fairchild Channel F]]
Le Fairchild F8 a été utilisé dans la Fairchild Channel F, une des toute première console de seconde génération, à savoir des consoles qui utilisaient des cartouches de jeu. Avant les consoles de seconde génération, les consoles étaient non-programmables. Elles étaient conçues pour faire tourner un jeu précis, aucun autre, le jeu étant implémenté dans leurs circuits.
La Fairchild Channel F est composé du système minimal, auquel on a ajouté une carte son rudimentaire et 2 kibioctets de mémoire vidéo. La mémoire vidéo sert uniquement pour afficher des images à l'écran : on écrit l'image à afficher dedans, un circuit vidéo se charge de l'afficher à l'écran automatiquement. Le processeur ne fait qu'écrire dans cette RAM vidéo, il ne peut pas en lire le contenu. De la RAM supplémentaire peut cependant être ajoutée dans les cartouches de jeu.
===L'usage d'une architecture Harvard modifiée : les consoles 8 bits===
Pour encore améliorer la situation, il est possible d'utiliser une architecture Harvard modifiée, qui permet de lire des données depuis la mémoire ROM. Cela réduit encore plus les besoins en mémoire RAM. Les constantes manipulées par le programme sont mémorisées en ROM, lues depuis la ROM, au lieu d'être chargées en RAM. Les consoles de jeu utilisaient beaucoup de stratagème.
L'exemple type est celui des consoles 8 bits avec des graphismes en 2D. La cartouche de jeu contenait une ROM, qui mémorisait le code du jeu, les niveaux, les sprites et autres données graphiques. Leur carte graphique lisait directement les ''sprites'' depuis la mémoire ROM, sans avoir à les charger en mémoire vidéo. La mémoire vidéo se contentait de mémoriser le reste des informations graphiques, ainsi que des pointeurs vers les ''sprites'' en ROM. En conséquence, les consoles 8 bits n'avaient pas besoin de beaucoup de RAM, vu qu'une grande partie des données utiles étaient dans une ROM directement accessible par le processeur. A l'opposé, les micro-ordinateurs devaient copier les données d'un jeu depuis une disquette dans la mémoire RAM, ce qui demandait d'avoir plus de RAM.
Le passage au support CD sur les consoles 32 bits a eu la même conséquence. Le processeur ne pouvant pas lire directement le CD à sa guise, il fallait copier les données du CD en RAM. D'où l'apparition de temps de chargement assez longs, inexistants sur support cartouche.
Avec ce genre de stratagèmes, 256 octets de RAM est largement suffisant sur de nombreux systèmes, à condition qu'on ait assez de ROM pour coder un programme digne de ce nom. Par exemple, de nombreux systèmes embarqués simples s'en accommodent : des caisses enregistreuses, des systèmes de régulation de feu de circulation, etc.
===Le HP Nanoprocessor : un processeur sans ALU===
Un dernier exemple est celui du processeur HP Nanoprocessor, de l'entreprise HP. Il a été commercialisé en 1974, en même temps que les premiers micro-processeurs d'Intel. Tous les processeurs de l'époque étaient des processeurs 8 bits et le HP Nanoprocessor ne faisait pas exception. Ce n'était pas un processeur haute performance, il était destiné à des applications d'informatique industrielle ou embarquée. D'ailleurs, il utilisait des transistors de type metal-gate, peu performants, là où ses contemporains utilisait des transistors en silicium, plus performants.
Mais une caractéristique qui rend cela encore plus claire est qu'il n'y a pas d'ALU ! En effet, ce processeur est incapable de faire des additions, des soustractions ou autres opérations simples ! Il est cependant capable d'effectuer des incrémentations et décrémentations, des décalages, des opérations logiques comme des ET/OU/NON/XOR et bien d'autres. Il supporte en tout 48 instructions, avec un support limité des modes d'adressage indirects. Les instructions de branchement étaient des instructions SKIP, il n'y avait pas d'instructions de branchement généralistes.
Pour ce qui est des registres, il disposait de 16 registres de 8 bits et d'un accumulateur. Niveau mémoire, il était relié à une mémoire ROM, rien de plus. Il n'avait de RAM supplémentaire qu'on pouvait lui adjoindre, il devait se débrouiller avec seulement ses registres. Et cela ne posait pas de problèmes pour son usage. Seul le mode d'adressage indirect à registre est supporté, il n'y a pas de registres d'indices. Ce mode d'adressage permet de lire des données en mémoire ROM, la ROM pouvant contenir des tableaux de valeurs constantes.
: Il est possible de lui adjoindre de la RAM via les ports d'entrée-sortie, ainsi qu'une ALU, mais RAM et ALU sont traités comme des périphériques avec lesquels on communique, ils ne sont pas intégrés au processeur.
Niveau micro-architecture, il incorporait une unité de calcul logique et un circuit comparateur. Le comparateur était un circuit comparateur série des plus basiques, qui était utilisé pour les instructions de branchement et associées. L'unité de calcul logique gérait des incrémentations/décrémentation, des décalages, les opérations logiques et quelques autres. L'unité de calcul logique était bit-slicée, à savoir conçue en assemblant 8 ALU de 1 bit chacune, enchainées en série. Le tout était combiné à des circuits de ''carry skip''.
[[File:Unité de calcul du HP nanonprocessor.png|centre|vignette|upright=2|Unité de calcul du HP nanoprocessor]]
Son unité de décodage d'instruction était très simple, essentiellement basée sur des portes NOR, grâce à un encodage efficace des instructions machine. Le ''program counter'' fait 11 bits, ce qui permet d'adresser une ROM de 2 kibioctets. Le ''program counter'' était relié à un circuit incrémenteur qui gérait les isntructions SKIP (il pouvait incrémenter le ''program counter'' par pas de 1 ou de 2 en cas de SKIP). Le processeur contient aussi deux registres, qui servent en quelque sorte de pile d'adresse de retour. Un premier registre mémorise l'adresse de retour d'une fonction, l'autre mémorise le ''program counter'' lors d'une interruption, pour savoir où brancher à la fin de l'interruption.
[[File:HP nanoprocessor.png|centre|vignette|upright=2.5|HP nanoprocessor]]
Fait intéressant, le concepteur du processeur a gracieusement donné les masques utilisés pour graver le silicium du processeur au site [https://www.cpushack.com/ CPU Shack]. Les masques en question sont disponibles ici :
* [https://www.cpushack.com/2020/08/20/hp-nanoprocessor-mask-set/ HP NanoProcessor Mask Set]
* [https://www.cpushack.com/2020/08/09/the-forgotten-ones-hp-nanoprocessor/ The Forgotten Ones: HP Nanoprocessor]
Les masques ont été analysés par Ken Shirrif dans cet article de blog :
* [https://www.righto.com/2020/09/hp-nanoprocessor-part-ii-reverse.html HP Nanoprocessor part II: Reverse-engineering the circuits from the masks]
==Les processeurs 8/16 bits à architecture Von Neumann==
L'usage d'une architecture Harvard est une solution pour adresser plus de mémoire avec des CPU 8 bits. Mais plusieurs microprocesseurs commerciaux n'utilisaient pas cette solution. À la place, c'était des architectures Von Neumann, mais qui étaient capables de gérer des adresses de 16 bits. Les données faisaient 8 bits, les registres faisaient 8 bits, mais quelques techniques permettaient de gérer des adresses de 16 bits. Nous parlerons de '''processeurs 8/16 bits''' pour les désigner, et nous allons les étudier à part.
Un point important est que la gestion d'adresses de 16 bits permet d'adresser 64 kibioctets, qui peuvent être remplis avec de la RAM et de la ROM. On a donc le meilleur des mondes : 64 kibioctets de mémoire, mais avec des données de 8 bits et les économies de circuit qui vont avec. L'avantage est que le processeur peut maintenant gérer une vraie pile d'appel, pas seulement une pile d'adresse de retour. Il lui suffit pour cela d'intégrer un pointeur de pile codé sur 16 bits.
===Les modes d'adressage par page des CPU Motorola===
Les processeurs Motorola 8 bits étaient des processeurs 8 bits avec un bus d'adresse de 16 bits. C'était des processeurs à accumulateur incorporant deux registres d'indice, un registre d'état, un pointeur de pile, et un ''program counter''. Tous les registres sont reliés au bus d'adresse, sauf le registre d'état et l’accumulateur. Tous les registres font 8 bits, sauf le ''program counter''. La pile est câblée pour être dans un bloc de 256 octets compris entre l'adresse 1 0000 0000 et l'adresse 1 1111 1111, ce qui fait que son adressage se fait avec un seul octet.
[[File:6502-architecture.svg|centre|vignette|upright=1.5|Architecture simplifiée du 6502.</br> X et Y : registres d'indice ;</br> S : le pointeur de pile ;</br> A : accumulateur ;</br>P : registre d'état.</br>]]
Les processeurs Motorola 8 bits utilisaient une méthode simple pour adresser 64 kibioctets de RAM, avec des registres de 8 bits. Pour cela, ils utilisaient une variante de l'adressage base + décalage. Elle améliore l'adressage absolu, qui intègre l'adresse à lire/écrire dans l'instruction elle-même. L'adresse en question est de 8 bits et n'encode que les 8 bits de poids faible de l'adresse, les 8 bits de poids fort sont dans un '''registre de page''' adressé implicitement. L'adresse finale est obtenue en concaténant ce registre avec l'adresse mémoire intégrée dans l’instruction. Le résultat est que la mémoire était découpée en blocs de 256 consécutifs, chacun pouvant servir de fenêtre de 256 octets. Une page est réservée pour la pile, la seconde, comme dit plus haut.
Formellement, ce mode d'adressage a des ressemblances avec la commutation de banques, une technique qu'on verra dans les chapitres sur l'espace d'adressage et la mémoire virtuelle. Mais ce n'en est pas du tout : le registre de page est utilisé uniquement pour les accès mémoire avec le mode d'adressage base + décalage, mais pas pour les autres accès mémoire, qui gèrent des adresses complètes. Notons que l'usage d'un registre de page dédié fait que celui-ci est adressé implicitement.
Il faut noter que la technique a été utilisée sur des processeurs 16 bits, pour contourner la petite taille des instructions. Un exemple est celui du HP 2100, un processeur 16 bits. Il avait un registre de page de 5 bits et encodait 10 bits d'adresse dans ses instructions. Ses instructions d'accès mémoire disposaient d'un bit qui choisit quel mode d'adressage utiliser. S'il était à 0, l'adressage absolu était utilisé, le registre de page n'était pas utilisé. Mais s'il était à 1, le registre de page était utilisé pour calculer l'adresse.
Une évolution de l'adressage précédent est le '''mode page direct'''. Avec lui, le registre de page est étendu et contient une adresse mémoire complète. L'adresse finale n'est pas obtenue par concaténation, mais en additionnant le registre de page avec l'adresse fournie par adressage absolu + décalage. Un exemple est celui des premiers processeurs Motorola, qui géraient des adresses courtes de 8 bits. L'adresse courte de 8 bits correspondait non pas aux 256 premiers octets de la mémoire, mais à une fenêtre de 256 octets déplaçable en mémoire. La position de la fenêtre de 256 octets était spécifiée par le registre de page de 16 bits, qui précisait l'adresse du début de la fenêtre, celle de sa première donnée.
Il s'agit donc formellement d'adressage base + décalage, à un détail près : il n'y a qu'un seul registre de base. Le fait que ce registre de base soit unique fait qu'il est adressé implicitement, on n'a pas à encoder le numéro/noms de registre dans l'instruction. Le registre de base est utilisé uniquement pour l'adressage absolu, pas pour les autres accès mémoire. S'il y a des ressemblances avec la segmentation, une technique de mémoire virtuelle qu'on abordera dans quelques chapitres, ce n'en est pas vu que le registre de base est utilisé seulement pour un mode d'adressage bien précis.
===Le ''pseudo-aliasing'' des registres des processeurs Intel x86===
Voyons maintenant le cas des anciens processeurs 8 bits d'Intel à savoir l'Intel 4004, 4040, 8008 et 8080. Le Z80, un processeur inspiré des CPU Intel 8 bits, est aussi concerné. Avant de poursuivre, parlons des registres de ces processeurs. Les premiers CPU Intel incorporaient 7 registres de 8 bits nommés A, B, C, D, E, F, H, L, SP. Ils correspondent respectivement à : l'accumulateur A ; six registres nommés B, C, D, E, H et L ; le registre d'état F ; le pointeur de pile SP. Le Z80 ajoute deux registres d'indice X et Y. De plus, le Z80 dispose de registres d'interruption, qui sont en quelque sorte des copies des registres A, B, C, D, E, F, H, L. Le tout est illustré dans le tableau ci-dessous.
{|class="wikitable" style="text-align:center;"
|-
!
! Registres des CPU Intel
! Registres supplémentaires du Z80
|-
! Accumulateur
| A
| A'
|-
! Registre d'état
| F
| F'
|-
! Registres généraux
| B, C, D, E, H, L
| B', C', D', E', H', L'
|-
! Pointeur de pile
| colspan="2" | SP (sauf pour le 8008)
|-
! Registres d'indice
|
| X et Y
|}
Le 8008 incorpore une pile d'appel de 7 adresses, dans le processeur lui-même. Il en est de la même avec le 4004 et le 4040, comme on le verra dans la section sur les processeurs 4 bits. Mais le 8080 et le 8085 ont remplacé le tout par un simple pointeur de pile, afin d'avoir une véritable pile d'appel. Autant c'est impossible d'avoir une pile d'appel avec seulement 256 octets de mémoire, autant on peut se le permettre avec 65 536 adresses.
Pour gérer des adresses de 16 bits, ils auraient pu utiliser des registres d'adresse séparés, mais on préféré un système de '''pseudo-''aliasing'' de registres'''. Formellement, c'est un système qui concatène deux registres 8 bits pour obtenir une adresse de 16 bits. L’appariement a lieu lors de certaines opérations bien précises, qui n'ont de sens que pour les adresses : la lecture/écriture en mémoire, et l'incrémentation.
Il y avait cependant des contraintes quant aux paires de registres possibles, toutes les paires de registres n'étaient pas autorisées. Les CPU concernés sont donc des processeurs hybrides accumulateur-registre généraux. L'accumulateur ne peut pas être appairé, seuls les registres généraux le peuvent. Le Z80 autorise plus de paires que les CPU Intel. Voici les paires de registres qui pouvaient servir d'adresse 16 bits :
* Les CPU 8008 d'Intel autorisait une seule paire formée des registres H et L.
* Les autres processeurs, à savoir le 8080, le 8085 et le Z80, autorisaient : les paires BC, DE et HL.
Le 8008 ne gérait que des opérations sur 8 bits. Mais le 8080 et le 8085 ont ajouté des instructions 16 bits qui agissaient sur des paires de registre, que le Z80 a repris. Une paire de registres est considérée comme un registre unique de 16 bits pour certaines opérations arithmétiques, dont l'incrémentation. Voici la liste des instructions concernées :
* INC et DEC pour l'incrémentation et la décrémentation ;
* DAD : additionne le registre HL avec une autre paire (Hl inclus) ;
* LXI : copie une constante immédiate dans une paire de registres ;
* LHLD : lit 16 depuis la mémoire et l'enregistre dans une paire de registres ;
* SHLD : copie 16 bits depuis une paire de registres et l'enregistre en mémoire ;
* PUSH et POP : empile ou dépilent une paire de registre sur la pile ;
* XTHL : échange la paire HL avec les 16 bits au sommet de la pile d'appel ;
* XCHG : échange le contenu de la paire HL et DE.
Pour résumer, le processeur avait des instructions LOAD, STORE, PUSH et POP adaptées pour gérer des paires de registre. De plus, l'instruction XCHG permettait d’échanger le contenu des paires DE et HL. L'instruction a été étendue sur les processeurs 16 bits pour échanger tous les registres. Mais l'implémentation était alors différente. L'incrémentation sur une paire de 16 bit était très utile, car les adresses sont souvent incrémentées quand on parcours un tableau. Ces instructions nous donnent quelques indices sur ce qu'il y a dans le processeur.
Le système de pseudo-aliasing a un impact sur le banc de registre. Le banc de registre regroupe les registres généraux et le pointeur de pile, mais ne contient pas l'accumulateur. Les contraintes sur les paires de registres possibles ne s'expliquent que d'une seule manière : le banc de registre contient des registres de 16 bits, une paire de registres 8 bits est mémorisée dans un registre unique. Il faut donc faire une différence entre les registres architecturaux de 8 bits, et les registres réels de 16 bits.
Le banc de registre a un port de 8 bits pour les données, qui est fabriqué à partir d'un port 16 bits auquel on a rajouté un multiplexeur pour choisir soit l'octet de poids faible, soit l'octet de poids fort. Le bus de données fait 8 bits, ce qui fait que les instructions LOAD, STORE, PUSH et POP pour paires 16 bits sont réalisées en deux fois : on lit/écrit l'octet de poids faible, puis celui de poids fort. Par contre, le bus d'adresse fait bien 16 bits. Cela suggère que le banc de registre dispose d'un port de 16 bits dédié aux adresses, en plus du port de données 8 bits.
[[File:Architecture d'un CPU 8-16 bits avec un banc de registre double port.png|centre|vignette|upright=2|Architecture d'un CPU 8-16 bits avec un banc de registre double port]]
L'incrémentation d'une paire 16 bits ne coute rien à implémenter, ou presque. En effet, le processeur incorpore un incrémenteur 16 bits pour le ''program counter'', qui est relié au bus d'adresse. L'idée est de rentabiliser cet incrémenteur, en lui permettant d'incrémenter des données/adresses de 16 bits obtenues via pseudo-aliasing. De même, il peut être utilisé pour incrémenter le pointeur de pile, voire un compteur de rafraichissement mémoire (pour rappel, le rafraîchissement mémoire demande de balayer la mémoire d'adresse en adresse et été fait par le CPU à l'époque). Pour cela, il suffit de connecter le ''program counter'', le banc de registre, et l'incrémenteur, via un bus dédié.
[[File:Calcul d'adresse par ALU dédiée avec PC séparé.png|centre|vignette|upright=2|Calcul d'adresse par ALU dédiée avec PC séparé]]
Notez qu'on peut encore simplifier le tout en placant le ''program counter'' dans le banc de registre, ce qui ne gênera pas le travail de l'incrémenteur mais simplifiera le câblage au bus d'adresse. Ce n'était pas systématique, certains processeurs mettaient le ''program counter'' dans le banc de registre, d'autres non.
: Inclure le ''program counter'' dans le banc de registre permet parfois de remplir un vide. Par exemple, sur un processeur avec 12 registres, le banc de registre devrait faire idéalement 16 registres, inclure le ''program counter'' dedans fait monter le tout à 13.
[[File:Architecture d'un CPU 8-16 bits.png|centre|vignette|upright=2|Architecture d'un CPU 8-16 bits]]
Les processeurs Intel 8 bits, à savoir le 8008, le 8080 et le 8085 ; mettaient le ''program counter'' dans le banc de registre. Vous avez donc toutes les armes pour comprendre leur micro-architecture. Par exemple, voici la micro-architecture du processeur 8080. Remarquez le banc de registre, qui contient tous les registres sauf l'accumulateur et le registre. Il a deux ports : un pour les adresses et un pour les données. Notez le dé-multiplexeur sur le port de donnée. Pour le reste, il s'agit d'une architecture à accumulateur hybride des plus classiques.
[[File:Intel 8080 arch.svg|centre|vignette|upright=3|Microarchitecture de l'Intel 8080.]]
Le Z80 est un processeur inspiré du design des processeurs Intel 8 bits, mais avec pas mal d'améliorations. Un point particulier de ce processeur est son banc de registre. Il contient tous les registres du processeur, y compris l'accumulateur et le registre d'état ! Les seuls registres en-dehors du banc de registre sont le ''program counter'' et un compteur de rafraichissement mémoire IR.
Un autre point particulier est que les registres dans le banc de registres avaient une copie séparée accessible uniquement pour les interruptions, via fenêtrage de registres. Et l'accumulateur et le registre d'état étant dans le banc de registre, il y avait deux accumulateurs et deux registres d'état. Les registres A, B, C, D, E et F étaient dupliqués, par le pointeur de pile ni les registres d'indice. Les copies des registres étaient nommées A', B', C', D', E' et F'.
Le Z80 supportait des instructions d'échange de registre en plus des CPU Intel 8 bits. L'instruction EX peut échanger soit le contenu des paires D,E et H,F, soit la paire A,F avec la paire A',F'. L'instruction EXX échange les paires BC, DE, HL avec les paires BC', DE', HL'. En faisant cela, le programmeur pouvait utiliser deux fois plus de registres généraux s'il n'utilisait pas les interruptions. L'échange de paires se fait sans copies de registres, mais simplement en modifiant l'adresse envoyée sur le banc de registre. Pour cela, plusieurs bascules mémorisent des bits qui indiquent si les paires ont été échangées ou non. Il y a une bascule pour les paires DE , HL ; une autre pour les paires A,F et paire A',F', une dernière pour l'instruction EXX. En combinant ces bascules avec les noms de registres envoyés par le séquenceur, on peut échanger les paires de registres.
==Le cas particulier des processeurs 4 bits : le 4004 d'Intel==
L'Intel 4004 était le tout premier micro-processeur. Il s'agissait d'un microprocesseur de 4 bits, basé sur une architecture à accumulateur. Il disposait d'un accumulateur et de 16 registres d'indice, tous de 4 bits. Il faisait des calculs sur des données de 4 bits, appelées des nibbles. Cependant, sur ses 46 instructions machines supportées, 41 agissaient sur des opérandes de 8 bits, les 5 restantes sur des opérandes de 16 bits. Simplement, les calculs se faisaient en deux fois, en échangeant des données entre mémoire RAM et accumulateur.
Le 4004 est un circuit intégré avec peu de broches. Il dispose notamment d'un bus de données/adresse, qui est multiplexé, c’est-à-dire qu'il sert alternativement de bus de données et de bus d'adresse selon les besoins. Le bus de commande mémoire fait 5 bits, dont 4 pour les chips de RAM, un pour la ROM. Les adresses sont codées sur 12 bits, les données sur 4 et les instructions sur 8 bits. L'envoi d'une adresse sur le bus se fait en plusieurs fois, de même que la lecture d'une instruction. Il s'agit là d'une adaptation pour outrepasser les limitations d'un processeur 4 bit.
[[File:Intel 4004 processor pinout.png|centre|vignette|upright=2|Broches de l'Intel 4004. Nous verrons à quoi elles servent plus bas.]]
===L'espace d'adressage de l'Intel 4004===
Les adresses du processeur sont sur 12 bits, ce qui fait 4096 adresses différentes. Elles regroupent à la fois la ROM et la mémoire RAM, vu que l'architecture est une sorte de mélange bizarre entre une architecture Von Neumann et Harvard. Le processeur gère bien deux espaces d'adressage séparés, mais la RAM et la ROM sont reliés au même bus. La sortie CM-ROM du processeur indique si l'adresse envoyée correspond à la RAM ou la ROM. Un circuit de décodage d'adresse active ou désactive la RAM selon la valeur de ce bit, l'inverse pour la ROM, en agissant sur leurs bits Chip Select. Seule la RAM ou la ROM répondent alors à l'adresse.
Pour ce qui est de la RAM, le circuit de décodage d'adresse pouvait gérer au maximum 1024 adresses différentes, chacune contenant un nibble. Pour cela, le CPU 4004 était relié à une ou plusieurs RAM externes, des Intel 4002. Chaque Intel 4002 contenait 64 nibbles de données, plus 16 nibbles de statut qu'on ne détaillera pas ici. Les nibbles de statut étaient accessibles en utilisant des instructions d'entrée-sortie, donc pas avec des lectures/écritures mémoire. Les 64 nibbles de données sont découpés en 4 groupes de 16 nibbles. Le CPU pouvait être relié à maximum 16 Intel 4002, ce qui fait 1024 nibbles de données et 256 nibbles de statut. L'ensemble permet de remplir l'espace d'adressage de 1024 adresses.
===Le registre de page et le pseudo-aliasing des registres===
Sélectionner une adresse mémoire utilisait un mélange entre pseudo-aliasing et registre de page. Pour les données, les 1024 adresses étaient découpées en 4 pages de 256 adresses. Pour la ROM, les 4096 adresses étaient découpées en 16 pages de 256 adresses. Localiser une donnée dans une page ne requiert que 8 bits, 2/4 bits supplémentaires permettent de sélectionner la page voulue. Le registre de page était dans le processeur lui-même, et était relié aux sorties du processeur nommées CM-RAM 0, 1, 2 et 3. Les 4 sorties encodaient un nombre qui permet de sélectionner le numéro de page voulu.
Le registre de page fait 5 bits : un pour distinguer RAM et ROM, 4 bits pour sélectionner la page voulue. L'avantage est que la carte mère gère au maximum 16 chips de RAM, ce qui colle parfaitement avec les 4 utilisés pour sélectionner une page. Un chip de RAM correspond à une page, et chacun est activé ou désactivé suivant la page sélectionnée. Pour cela, il suffit d'ajouter un décodeur sur la carte mère, qui prend les 4 bits du registre de page et fournit les signaux Chip Select aux différents chips de RAM.
Reste alors à utiliser les 8 bits d'adresse à l'intérieur d'un chip de RAM. Le 4004 permettait de concaténer deux registres d'indice de 4 bits pour former une adresse de 8 bits. Les instructions d'accès mémoire pouvaient ainsi préciser une paire de registre d'indice pour préciser quelle adresse lire/écrire. Idem pour les branchements indirects : le processeur supportait une instruction de branchement indirect qui précisait l'adresse dans une paire de registres d'indice. Les registres d'indice sont donc assez mal nommés sur cette architecture, vu qu'ils peuvent servir soit de registre d'indice, soit de demi-registre d'adresse. Il s'agit là du système de pseudo-aliasing des registres, mais appliqué aux registres d'indice.
L'Intel 4004 gérait deux instructions pour gérer les adresses mémoires. La première, l'instruction DCL (''Designate Command Line'') configure le registre de page. Elle prend en entrée un numéro de page et le copie dans le registre de page. L'opérande peut provenir d'un registre d'indice ou de l'accumulateur. La seconde, l'instruction SRC (''Send Register Control'') concatène deux registres d'indice pour obtenir une adresse de 8 bits. Un accès mémoire se fait donc en maximum trois instructions : une qui configure le registre de page si ce n'est pas déjà fait, une instruction SRC pour envoyer l'adresse, et une troisième instruction qui dit s'il faut faire une lecture ou une écriture.
===La microarchitecture de l'Intel 4004===
Il incorporait une pile d'adresse de retour intégrée au processeur. La pile d'adresse acceptait exactement 3 adresses maximum. Elle était regroupée avec le ''program counter'' dans un banc de registre, de 4 registres. Le ''program counter'' et le pointeur de pile faisaient chacun 12 bits, soit trois nibble. Ils étaient incrémentés par un incrémenteur dédié.
SI on omet le registre de page et la pile d'adresse, le 4004 est une architecture à accumulateur des plus classiques, avec un bus interne unique, un banc de registre pour les registres d'indices, un accumulateur relié à une unité de calcul. Les registres d'indice étaient dans un banc de registre séparés, car ils faisaient 4 bits chacun, contrairement au pointeur de pile et le ''program counter''. Un détail important est que les bancs de registres du 4004 étaient implémentés avec de la DRAM, et non des registres usuels fabriqués avec des bascules 1 bit.
[[File:Microarchitecture de l'Intel 4004.png|centre|vignette|upright=2.5|Microarchitecture de l'Intel 4004]]
<noinclude>
{{NavChapitre | book=Fonctionnement d'un ordinateur
| prev=Les architectures à pile et mémoire-mémoire
| prevText=Les architectures à pile et mémoire-mémoire
| next=Les processeurs de traitement du signal
| nextText=Les processeurs de traitement du signal
}}
</noinclude>
cnds9da0wrwig8qty56yey44czjk4r9
765695
765694
2026-05-01T16:54:38Z
Mewtow
31375
/* Les microcontrôleurs PIC */
765695
wikitext
text/x-wiki
Nous avons déjà abordé la notion de processeur 8, 16, 32, 64 bits. Elle désigne la taille des registres généraux, ou de l'accumulateur. De nos jours, les processeurs 32 et 64 bits sont la norme, mais les premiers micro-processeurs étaient des processeurs 4 et 8, avant de passer rapidement au 16 bits. La raison est que leur budget en transistor limité faisait qu'on ne pouvait pas utiliser une ALU trop grande : une ALU 8 bit prend deux fois moins de place et de transistors qu'une ALU 16 bits. Cependant, les processeurs 8 bits avaient de sérieuses limitations qui étaient compensées par diverses solutions. Dans ce chapitre, nous allons faire une revue rapide des processeurs 8 bits et de leurs fonctionnalités.
La principale limitation des CPU 8 bits était l'adressage : des registres de 8 bits limitaient l'espace d'adressage à seulement 256 adresses, soit à peine 256 octets ! Intuitivement, on se dit que 256 octets est purement impraticable, on ne peut rien faire d'intéressant avec seulement 256 de RAM + ROM. Et c'est partiellement vrai. L'adage veut que 16 bits est la taille minimale intéressante, la limite à partir de laquelle on a assez de mémoire RAM/ROM pour coder des applications intéressantes. Mais 256 octets de RAM est largement suffisant sur de nombreux systèmes embarqués simples s'en accommodent : des caisses enregistreuses, des systèmes de régulation de feu de circulation, etc.
Pour les applications demandant plus de mémoire RAM, les CPU de l'époque contournaient la limitation de 256 octets de RAM avec de nombreux stratagèmes. Dans ce qui va suivre, nous allons séparer les CPU 8 bits selon qu'ils utilisent une architecture Harvard ou une architecture Von Neumann. La raison est qu'une architecture Harvard permet en soi de contourner partiellement ce problème d'adressage. Les choses sont plus compliquées avec une architecture Von Neumann.
==Les processeurs 8/16 bits à architecture Harvard ==
La première solution est d'utiliser une architecture Harvard. Le processeur 8 bit a alors deux espaces d'adressage : un pour la RAM, un autre pour la ROM. Et les deux utilisent des adresses de taille différente. La ROM est reliée à un bus d'adresse de 16 bits, alors que la RAM est elle connectée à un bus d'adresse de 8 bits. La RAM est donc limitée à 256 octets, alors que la ROM peut monter jusqu'à 64 kibioctets. Mine de rien, faire ainsi est largement suffisant.
Les processeurs de l'époque intégraient parfois les 256 octets de RAM directement dans le processeur. Beaucoup en implémentaient moins, avec par exemple seulement 64 octets de RAM, ou 32 octets, ou 128 octets. L'avantage est que cela éliminait le bus d'adresse des données et ne laissait que le bus d'adresse pour la ROM. On économisait ainsi beaucoup de broches sur le circuit intégré du CPU. Et pour les applications demandant plus de RAM, on pouvait ajouter un circuit séparé qui permettait d'adresser une RAM plus grande. Mais cela sera plus clair avec un exemple.
===Les microcontrôleurs PIC===
Les '''microcontrôleurs PIC''' regroupent des microcontrôleurs allant de microcontrôleurs 8 bit aux performances très faible, à des microcontrôleurs 32 bits bien plus puissants. Les microcontrôleurs PIC sont très utilisés dans l'embarqué ou d'informatique industrielle. Ils sont vendu à des volumes assez impressionnants, plusieurs millions par an. Et si vous avez ou êtes en train de faire des études d'électronique, je parie que vous les avez déjà vu en classe, ou que ce ne saurait tarder. Dans ce qui suit, nous allons nous concentrer sur les microcontrôleurs PIC 8 bits, à savoir les PIC 16, 16 et 18. Les PIC 24, qui sont des microcontrôleurs 16 bits, ne seront pas abordés.
Les microcontrôleurs PIC 8 bits incorporent une mémoire RAM très petite, ainsi qu'une architecture Harvard, comme dit plus haut. La mémoire RAM des microcontrôleurs PIC est très petite, elle dépasse rarement la centaine d'adresse. Pour donner un exemple, le PIC16F84 a une RAM composée de 68 "registres" de 8 bits. Le terme "registres" devrait vous faire tiquer, mais il s'agit bien d'une mémoire SRAM séparée. Simplement, la documentation des PIC qualifie cette mémoire SRAM de "registres", et il faut admettre que la différence entre banc de registre et SRAM séparée est un peu floue.
[[File:DocPIC16F84 3.png|centre|vignette|upright=3|Espaces d'adressage du PIC16F84.]]
Un détail est que la SRAM n'a qu'un seul port qui sert à la fois pour les lectures et écritures. Pour compenser, les PIC sont des architectures à accumulateur, où une opérande est lue depuis la SRAM, l'autre depuis l'accumulateur. Leur implémentation de l'accumulateur ajoute une petite subtilité : le résultat d'une opération arithmétique peut être enregistré ailleurs que dans l'accumulateur. Le résultat peut aussi remplacer la seconde opérande, celle lue en mémoire RAM. Dit autrement, le résultat est enregistré dans l'adresse mémoire source. Les instructions de calcul ont le choix : un bit dans leur encodage précise où enregistrer le résultat.
{|
|-
|[[File:DocPIC16F84 4.png|centre|vignette|upright=2|Microarchitecture simplifiée d'un microcontroleur PIC (ici, un 16F84).]]
|[[File:DocPIC16F84 5.png|centre|vignette|upright=2|Microarchitecture simplifiée d'un microcontroleur PIC (ici, un 16F84), avec les branchements directs.]]
|}
Outre l'accumulateur, les PIC disposent de registres de contrôle, d'un ''program counter'', d'un registre d'état, et d'un pointeur de pile. Le registre d'état contient un registre séparé pour la retenue de l'addition/soustraction. Ce dernier est très important, vu qu'il est nécessaire pour les additions/soustractions sur des opérandes de 16 bits. Le processeur a beau être un CPU 8 bits, il peut être utilisé pour faire des calculs 16 bits, la performance est alors amoindrie, mais ce n'est pas un problème pour les applications d'un tel microcontroleur.
Un détail assez original est que les registres précédents sont mappés en mémoire, à quelques exceptions près ! En clair, on peut y accéder en lisant/écrivant à une adresse mémoire bien précise. Les seules registres qui ne sont pas mappés en mémoire sont l'accumulateur, la pile d'appel, et les registres d'entrée-sortie. Les registres d'entrée-sortie permettent de lire ou écrire sur un port d'entrée-sortie ou de lire un ''timer''. En clair, les PIC ont un espace d'adressage séparé pour les entrées-sorties.
[[File:DocPIC16F84.png|centre|vignette|upright=2|DocPIC16F84]]
Le processeur de ces microcontrôleurs a un jeu d'instruction propriétaire, le jeu d'instruction PIC. Les instructions PIC sont très petites. Les premières versions du jeu d'instruction utilisaient des instructions codées sur 12 bits, dont 5 pour l'adresse mémoire de la seconde opérande. Pour les branchements, 3 bits étaient utilisés pour l'opcode, 9 pour l'adresse de destination. Par la suite, les instructions ont été étendues à 13 bits sur les PIC1670, puis à 14, 15 et 16 bits. Les adresses ont alors été élargies, ce qui permet d'adresser en peu plus de mémoire RAM.
Les instructions se limitent à des additions/soustractions, des opérations bit à bit,des branchements, des instructions LOAD/STORE, ainsi que des opérations de manipulation de bit. Il y a une instruction pour mettre une adresse à zéro, qui peut aussi mettre à zéro l’accumulateur.
Pour ce qui est des branchements, les PIC n'ont pas d'instructions de branchement conditionnels, ils font avec une SKIP instruction et des branchements inconditionnels. Par contre, ils ont des branchements pour les appels et retour de fonction. Mieux que ça, ils intègrent une pile d'appel d'environ 8 adresses de retour. Pour donner une idée, l'adresse de retour est encodée sur 10 bits sur les PIC16F84.
Pour les instructions de manipulation de bit, il y a des instructions pour tester/masquer un bit dans une opérande, 4 en tout ( mettre à 0, mettre à 1, tester si bit = 1, tester si bit = 0). Les instructions qui testent un bit prennent leur opérande dans l'accumulateur. Il y a aussi deux instructions de rotation à gauche et droite, qui tiennent compte de la retenue mémorisée dans le registre d'état. Mentionnons aussi une instruction pour inverser deux ''nibbles'' dans un octet.
Les PIC ont aussi des instructions d'incrémentation et de décrémentation, un peu spéciales. Ces dernières regroupent : une incrémentation normale, une décrémentation normale, une décrémentation fusionnée avec une instruction SKIP, et une incrémentation fusionnée avec une instruction SKIP. Les deux dernières incrémentent/décrémentent l'accumulateur et SKIP l'instruction suivante si le résultat est zéro. Elles permettent de fortement simplifier l'implémentation des boucles qui s'exécutent tant que leur compteur atteint zéro.
Les PIC gèrent l'adressage absolu et indirect. L'adressage absolu, celui où l'adresse est intégrée dans l'instruction, est très simple à implémenter. Les adresses prennent moins d'un octet, vu que la taille de la RAM est très petite, les adresses sont très courtes, les intégrer dans des instructions elles-mêmes courtes n'est pas un problème. L'adresse est encodée sur 5 à 7 bits, selon le modèle, ce qui permet d'adresser entre 32 et 128 octets.
: Les PIC 18 peuvent adresser plus de 256 octets de RAM en utilisant la commutation de banques, une technique qui sera abordée dans plusieurs chapitres.
Pour l'adressage indirect, les PIC intègrent un registre d'adresse dédié. Il s'agit du registre FSR, qui mémorise l'adresse à lire/écrire. Il est possible de copier un pointeur dedans, qui provient soit de l'accumulateur, soit de la mémoire SRAM. Dans les deux cas, la donnée adressée est copiée dans un registre INDR, qui sert de registre d’interfaçage mémoire avec le bus de données. Le registre FSR est directement connecté sur le bus d'adresse. Les modèles de base se débrouillent avec un registre FSR et un registre INDR, mais les modèles plus performants ont deux ou trois copies de chaque registre. Les modèles PIC18 ajoutent aussi des instructions LOAD/STORE avec les modes d'adressage à post- ou pré-incrément/décrément, et le mode d'adressage "Base + Indice + Décalage".
Avec tout ce qu'on vient de dire, vous devriez pouvoir comprendre la microarchitecture d'un PIC, qui est résumée dans ce schéma.
[[File:DocPIC16F84 all.png|centre|vignette|upright=2.5|Microarchitecture du PIC16F84.]]
===Le Fairchild F8 et la console de jeu Fairchild Channel F===
Un autre exemple est la Fairchild F8 de la défunte entreprise Fairchild Semiconductor. Il incorpore un processeur 8 bits, c'est à dire que le processeur fait des calculs sur des entiers de 8 bits maximum, une mémoire RAM de 64 octets, ainsi qu'une mémoire ROM de 1 kibioctet. Les 64 octets de RAM sont certes très peu, mais c'est suffisant pour certaines applications simples, comme les caisses automatiques de l'époque, ou des applications embarquées. Et de toute façon, il est possible d'ajouter de la mémoire RAM supplémentaire si les 64 octets de RAM intégrée ne suffisent pas. Le système était donc modulaire, adaptable selon les besoins, peu cher pour son implémentation minimale sans RAM en plus.
Vu qu'il s'agit d'un des tout premiers ordinateurs, il est sorti à une époque où la technologie était rudimentaire. À cette époque, le processeur était composé de pièces détachées qu'il fallait souder ensemble pour obtenir un processeur fonctionnel. Ce n'est que plus tard qu'est apparu le micro-processeur, qui regroupe un processeur complet dans un seul circuit intégré. Le résultat est que le processeur du Fairchild F8 est coupé en deux, l'unité de calcul et l'unité de contrôle sont placés dans des pièces détachées séparés.
Le microcontrôleur est composé de trois à quatre pièces détachées, certaines étant optionnelles. La première est le '''3850 CPU''', qui regroupe l'unité de calcul et la mémoire RAM intégrée. La seconde est le PSU (''3851 Program Storage Unit''), qui regroupe la mémoire ROM et l'unité de contrôle, ''program counter'' inclut. S'il y a besoin d'utiliser plus de RAM, il faut ajouter un circuit d’interface mémoire, qui est au choix le ''3852 Dynamic Memory Interface'' (DMI) ou le ''3853 Static Memory Interface'', le premier étant connecté à une mémoire de type DRAM, l'autre à une SRAM (nous verrons ce que sont les DRAM et les SRAM dans le prochain chapitre).
[[File:Fairchild F8.png|centre|vignette|upright=2|Fairchild F8]]
Le système minimal est composé d'un PSU et d'un 3850, sans les circuits d'interface mémoire. Le tout donne un système avec un processeur 8 bit, 64 octets de RAM et 1 kibioctet de ROM, les deux mémoires étant intégrées dans le "processeur". Le processeur gérait 4 entrées-sorties, chacune étant reliée avec un bus de 8 bit au processeur. Au passage, en 1977, Mostek a créé un microcontrôleur qui regroupe un PSU et un 3850 : le Mostek 3870. Le système minimal n'avait pas de bus d'adresse, vu que la RAM était intégrée au processeur. C'est les 3852 et 3853 qui ajoutaient un bus d'adresse. Ils ajoutent un bus d'adresse de 16 bits, ce qui permet d'adresser 64 kibioctets de RAM.
[[File:Fairchild-Channel-F.jpg|vignette|un Fairchild Channel F]]
Le Fairchild F8 a été utilisé dans la Fairchild Channel F, une des toute première console de seconde génération, à savoir des consoles qui utilisaient des cartouches de jeu. Avant les consoles de seconde génération, les consoles étaient non-programmables. Elles étaient conçues pour faire tourner un jeu précis, aucun autre, le jeu étant implémenté dans leurs circuits.
La Fairchild Channel F est composé du système minimal, auquel on a ajouté une carte son rudimentaire et 2 kibioctets de mémoire vidéo. La mémoire vidéo sert uniquement pour afficher des images à l'écran : on écrit l'image à afficher dedans, un circuit vidéo se charge de l'afficher à l'écran automatiquement. Le processeur ne fait qu'écrire dans cette RAM vidéo, il ne peut pas en lire le contenu. De la RAM supplémentaire peut cependant être ajoutée dans les cartouches de jeu.
===L'usage d'une architecture Harvard modifiée : les consoles 8 bits===
Pour encore améliorer la situation, il est possible d'utiliser une architecture Harvard modifiée, qui permet de lire des données depuis la mémoire ROM. Cela réduit encore plus les besoins en mémoire RAM. Les constantes manipulées par le programme sont mémorisées en ROM, lues depuis la ROM, au lieu d'être chargées en RAM. Les consoles de jeu utilisaient beaucoup de stratagème.
L'exemple type est celui des consoles 8 bits avec des graphismes en 2D. La cartouche de jeu contenait une ROM, qui mémorisait le code du jeu, les niveaux, les sprites et autres données graphiques. Leur carte graphique lisait directement les ''sprites'' depuis la mémoire ROM, sans avoir à les charger en mémoire vidéo. La mémoire vidéo se contentait de mémoriser le reste des informations graphiques, ainsi que des pointeurs vers les ''sprites'' en ROM. En conséquence, les consoles 8 bits n'avaient pas besoin de beaucoup de RAM, vu qu'une grande partie des données utiles étaient dans une ROM directement accessible par le processeur. A l'opposé, les micro-ordinateurs devaient copier les données d'un jeu depuis une disquette dans la mémoire RAM, ce qui demandait d'avoir plus de RAM.
Le passage au support CD sur les consoles 32 bits a eu la même conséquence. Le processeur ne pouvant pas lire directement le CD à sa guise, il fallait copier les données du CD en RAM. D'où l'apparition de temps de chargement assez longs, inexistants sur support cartouche.
Avec ce genre de stratagèmes, 256 octets de RAM est largement suffisant sur de nombreux systèmes, à condition qu'on ait assez de ROM pour coder un programme digne de ce nom. Par exemple, de nombreux systèmes embarqués simples s'en accommodent : des caisses enregistreuses, des systèmes de régulation de feu de circulation, etc.
===Le HP Nanoprocessor : un processeur sans ALU===
Un dernier exemple est celui du processeur HP Nanoprocessor, de l'entreprise HP. Il a été commercialisé en 1974, en même temps que les premiers micro-processeurs d'Intel. Tous les processeurs de l'époque étaient des processeurs 8 bits et le HP Nanoprocessor ne faisait pas exception. Ce n'était pas un processeur haute performance, il était destiné à des applications d'informatique industrielle ou embarquée. D'ailleurs, il utilisait des transistors de type metal-gate, peu performants, là où ses contemporains utilisait des transistors en silicium, plus performants.
Mais une caractéristique qui rend cela encore plus claire est qu'il n'y a pas d'ALU ! En effet, ce processeur est incapable de faire des additions, des soustractions ou autres opérations simples ! Il est cependant capable d'effectuer des incrémentations et décrémentations, des décalages, des opérations logiques comme des ET/OU/NON/XOR et bien d'autres. Il supporte en tout 48 instructions, avec un support limité des modes d'adressage indirects. Les instructions de branchement étaient des instructions SKIP, il n'y avait pas d'instructions de branchement généralistes.
Pour ce qui est des registres, il disposait de 16 registres de 8 bits et d'un accumulateur. Niveau mémoire, il était relié à une mémoire ROM, rien de plus. Il n'avait de RAM supplémentaire qu'on pouvait lui adjoindre, il devait se débrouiller avec seulement ses registres. Et cela ne posait pas de problèmes pour son usage. Seul le mode d'adressage indirect à registre est supporté, il n'y a pas de registres d'indices. Ce mode d'adressage permet de lire des données en mémoire ROM, la ROM pouvant contenir des tableaux de valeurs constantes.
: Il est possible de lui adjoindre de la RAM via les ports d'entrée-sortie, ainsi qu'une ALU, mais RAM et ALU sont traités comme des périphériques avec lesquels on communique, ils ne sont pas intégrés au processeur.
Niveau micro-architecture, il incorporait une unité de calcul logique et un circuit comparateur. Le comparateur était un circuit comparateur série des plus basiques, qui était utilisé pour les instructions de branchement et associées. L'unité de calcul logique gérait des incrémentations/décrémentation, des décalages, les opérations logiques et quelques autres. L'unité de calcul logique était bit-slicée, à savoir conçue en assemblant 8 ALU de 1 bit chacune, enchainées en série. Le tout était combiné à des circuits de ''carry skip''.
[[File:Unité de calcul du HP nanonprocessor.png|centre|vignette|upright=2|Unité de calcul du HP nanoprocessor]]
Son unité de décodage d'instruction était très simple, essentiellement basée sur des portes NOR, grâce à un encodage efficace des instructions machine. Le ''program counter'' fait 11 bits, ce qui permet d'adresser une ROM de 2 kibioctets. Le ''program counter'' était relié à un circuit incrémenteur qui gérait les isntructions SKIP (il pouvait incrémenter le ''program counter'' par pas de 1 ou de 2 en cas de SKIP). Le processeur contient aussi deux registres, qui servent en quelque sorte de pile d'adresse de retour. Un premier registre mémorise l'adresse de retour d'une fonction, l'autre mémorise le ''program counter'' lors d'une interruption, pour savoir où brancher à la fin de l'interruption.
[[File:HP nanoprocessor.png|centre|vignette|upright=2.5|HP nanoprocessor]]
Fait intéressant, le concepteur du processeur a gracieusement donné les masques utilisés pour graver le silicium du processeur au site [https://www.cpushack.com/ CPU Shack]. Les masques en question sont disponibles ici :
* [https://www.cpushack.com/2020/08/20/hp-nanoprocessor-mask-set/ HP NanoProcessor Mask Set]
* [https://www.cpushack.com/2020/08/09/the-forgotten-ones-hp-nanoprocessor/ The Forgotten Ones: HP Nanoprocessor]
Les masques ont été analysés par Ken Shirrif dans cet article de blog :
* [https://www.righto.com/2020/09/hp-nanoprocessor-part-ii-reverse.html HP Nanoprocessor part II: Reverse-engineering the circuits from the masks]
==Les processeurs 8/16 bits à architecture Von Neumann==
L'usage d'une architecture Harvard est une solution pour adresser plus de mémoire avec des CPU 8 bits. Mais plusieurs microprocesseurs commerciaux n'utilisaient pas cette solution. À la place, c'était des architectures Von Neumann, mais qui étaient capables de gérer des adresses de 16 bits. Les données faisaient 8 bits, les registres faisaient 8 bits, mais quelques techniques permettaient de gérer des adresses de 16 bits. Nous parlerons de '''processeurs 8/16 bits''' pour les désigner, et nous allons les étudier à part.
Un point important est que la gestion d'adresses de 16 bits permet d'adresser 64 kibioctets, qui peuvent être remplis avec de la RAM et de la ROM. On a donc le meilleur des mondes : 64 kibioctets de mémoire, mais avec des données de 8 bits et les économies de circuit qui vont avec. L'avantage est que le processeur peut maintenant gérer une vraie pile d'appel, pas seulement une pile d'adresse de retour. Il lui suffit pour cela d'intégrer un pointeur de pile codé sur 16 bits.
===Les modes d'adressage par page des CPU Motorola===
Les processeurs Motorola 8 bits étaient des processeurs 8 bits avec un bus d'adresse de 16 bits. C'était des processeurs à accumulateur incorporant deux registres d'indice, un registre d'état, un pointeur de pile, et un ''program counter''. Tous les registres sont reliés au bus d'adresse, sauf le registre d'état et l’accumulateur. Tous les registres font 8 bits, sauf le ''program counter''. La pile est câblée pour être dans un bloc de 256 octets compris entre l'adresse 1 0000 0000 et l'adresse 1 1111 1111, ce qui fait que son adressage se fait avec un seul octet.
[[File:6502-architecture.svg|centre|vignette|upright=1.5|Architecture simplifiée du 6502.</br> X et Y : registres d'indice ;</br> S : le pointeur de pile ;</br> A : accumulateur ;</br>P : registre d'état.</br>]]
Les processeurs Motorola 8 bits utilisaient une méthode simple pour adresser 64 kibioctets de RAM, avec des registres de 8 bits. Pour cela, ils utilisaient une variante de l'adressage base + décalage. Elle améliore l'adressage absolu, qui intègre l'adresse à lire/écrire dans l'instruction elle-même. L'adresse en question est de 8 bits et n'encode que les 8 bits de poids faible de l'adresse, les 8 bits de poids fort sont dans un '''registre de page''' adressé implicitement. L'adresse finale est obtenue en concaténant ce registre avec l'adresse mémoire intégrée dans l’instruction. Le résultat est que la mémoire était découpée en blocs de 256 consécutifs, chacun pouvant servir de fenêtre de 256 octets. Une page est réservée pour la pile, la seconde, comme dit plus haut.
Formellement, ce mode d'adressage a des ressemblances avec la commutation de banques, une technique qu'on verra dans les chapitres sur l'espace d'adressage et la mémoire virtuelle. Mais ce n'en est pas du tout : le registre de page est utilisé uniquement pour les accès mémoire avec le mode d'adressage base + décalage, mais pas pour les autres accès mémoire, qui gèrent des adresses complètes. Notons que l'usage d'un registre de page dédié fait que celui-ci est adressé implicitement.
Il faut noter que la technique a été utilisée sur des processeurs 16 bits, pour contourner la petite taille des instructions. Un exemple est celui du HP 2100, un processeur 16 bits. Il avait un registre de page de 5 bits et encodait 10 bits d'adresse dans ses instructions. Ses instructions d'accès mémoire disposaient d'un bit qui choisit quel mode d'adressage utiliser. S'il était à 0, l'adressage absolu était utilisé, le registre de page n'était pas utilisé. Mais s'il était à 1, le registre de page était utilisé pour calculer l'adresse.
Une évolution de l'adressage précédent est le '''mode page direct'''. Avec lui, le registre de page est étendu et contient une adresse mémoire complète. L'adresse finale n'est pas obtenue par concaténation, mais en additionnant le registre de page avec l'adresse fournie par adressage absolu + décalage. Un exemple est celui des premiers processeurs Motorola, qui géraient des adresses courtes de 8 bits. L'adresse courte de 8 bits correspondait non pas aux 256 premiers octets de la mémoire, mais à une fenêtre de 256 octets déplaçable en mémoire. La position de la fenêtre de 256 octets était spécifiée par le registre de page de 16 bits, qui précisait l'adresse du début de la fenêtre, celle de sa première donnée.
Il s'agit donc formellement d'adressage base + décalage, à un détail près : il n'y a qu'un seul registre de base. Le fait que ce registre de base soit unique fait qu'il est adressé implicitement, on n'a pas à encoder le numéro/noms de registre dans l'instruction. Le registre de base est utilisé uniquement pour l'adressage absolu, pas pour les autres accès mémoire. S'il y a des ressemblances avec la segmentation, une technique de mémoire virtuelle qu'on abordera dans quelques chapitres, ce n'en est pas vu que le registre de base est utilisé seulement pour un mode d'adressage bien précis.
===Le ''pseudo-aliasing'' des registres des processeurs Intel x86===
Voyons maintenant le cas des anciens processeurs 8 bits d'Intel à savoir l'Intel 4004, 4040, 8008 et 8080. Le Z80, un processeur inspiré des CPU Intel 8 bits, est aussi concerné. Avant de poursuivre, parlons des registres de ces processeurs. Les premiers CPU Intel incorporaient 7 registres de 8 bits nommés A, B, C, D, E, F, H, L, SP. Ils correspondent respectivement à : l'accumulateur A ; six registres nommés B, C, D, E, H et L ; le registre d'état F ; le pointeur de pile SP. Le Z80 ajoute deux registres d'indice X et Y. De plus, le Z80 dispose de registres d'interruption, qui sont en quelque sorte des copies des registres A, B, C, D, E, F, H, L. Le tout est illustré dans le tableau ci-dessous.
{|class="wikitable" style="text-align:center;"
|-
!
! Registres des CPU Intel
! Registres supplémentaires du Z80
|-
! Accumulateur
| A
| A'
|-
! Registre d'état
| F
| F'
|-
! Registres généraux
| B, C, D, E, H, L
| B', C', D', E', H', L'
|-
! Pointeur de pile
| colspan="2" | SP (sauf pour le 8008)
|-
! Registres d'indice
|
| X et Y
|}
Le 8008 incorpore une pile d'appel de 7 adresses, dans le processeur lui-même. Il en est de la même avec le 4004 et le 4040, comme on le verra dans la section sur les processeurs 4 bits. Mais le 8080 et le 8085 ont remplacé le tout par un simple pointeur de pile, afin d'avoir une véritable pile d'appel. Autant c'est impossible d'avoir une pile d'appel avec seulement 256 octets de mémoire, autant on peut se le permettre avec 65 536 adresses.
Pour gérer des adresses de 16 bits, ils auraient pu utiliser des registres d'adresse séparés, mais on préféré un système de '''pseudo-''aliasing'' de registres'''. Formellement, c'est un système qui concatène deux registres 8 bits pour obtenir une adresse de 16 bits. L’appariement a lieu lors de certaines opérations bien précises, qui n'ont de sens que pour les adresses : la lecture/écriture en mémoire, et l'incrémentation.
Il y avait cependant des contraintes quant aux paires de registres possibles, toutes les paires de registres n'étaient pas autorisées. Les CPU concernés sont donc des processeurs hybrides accumulateur-registre généraux. L'accumulateur ne peut pas être appairé, seuls les registres généraux le peuvent. Le Z80 autorise plus de paires que les CPU Intel. Voici les paires de registres qui pouvaient servir d'adresse 16 bits :
* Les CPU 8008 d'Intel autorisait une seule paire formée des registres H et L.
* Les autres processeurs, à savoir le 8080, le 8085 et le Z80, autorisaient : les paires BC, DE et HL.
Le 8008 ne gérait que des opérations sur 8 bits. Mais le 8080 et le 8085 ont ajouté des instructions 16 bits qui agissaient sur des paires de registre, que le Z80 a repris. Une paire de registres est considérée comme un registre unique de 16 bits pour certaines opérations arithmétiques, dont l'incrémentation. Voici la liste des instructions concernées :
* INC et DEC pour l'incrémentation et la décrémentation ;
* DAD : additionne le registre HL avec une autre paire (Hl inclus) ;
* LXI : copie une constante immédiate dans une paire de registres ;
* LHLD : lit 16 depuis la mémoire et l'enregistre dans une paire de registres ;
* SHLD : copie 16 bits depuis une paire de registres et l'enregistre en mémoire ;
* PUSH et POP : empile ou dépilent une paire de registre sur la pile ;
* XTHL : échange la paire HL avec les 16 bits au sommet de la pile d'appel ;
* XCHG : échange le contenu de la paire HL et DE.
Pour résumer, le processeur avait des instructions LOAD, STORE, PUSH et POP adaptées pour gérer des paires de registre. De plus, l'instruction XCHG permettait d’échanger le contenu des paires DE et HL. L'instruction a été étendue sur les processeurs 16 bits pour échanger tous les registres. Mais l'implémentation était alors différente. L'incrémentation sur une paire de 16 bit était très utile, car les adresses sont souvent incrémentées quand on parcours un tableau. Ces instructions nous donnent quelques indices sur ce qu'il y a dans le processeur.
Le système de pseudo-aliasing a un impact sur le banc de registre. Le banc de registre regroupe les registres généraux et le pointeur de pile, mais ne contient pas l'accumulateur. Les contraintes sur les paires de registres possibles ne s'expliquent que d'une seule manière : le banc de registre contient des registres de 16 bits, une paire de registres 8 bits est mémorisée dans un registre unique. Il faut donc faire une différence entre les registres architecturaux de 8 bits, et les registres réels de 16 bits.
Le banc de registre a un port de 8 bits pour les données, qui est fabriqué à partir d'un port 16 bits auquel on a rajouté un multiplexeur pour choisir soit l'octet de poids faible, soit l'octet de poids fort. Le bus de données fait 8 bits, ce qui fait que les instructions LOAD, STORE, PUSH et POP pour paires 16 bits sont réalisées en deux fois : on lit/écrit l'octet de poids faible, puis celui de poids fort. Par contre, le bus d'adresse fait bien 16 bits. Cela suggère que le banc de registre dispose d'un port de 16 bits dédié aux adresses, en plus du port de données 8 bits.
[[File:Architecture d'un CPU 8-16 bits avec un banc de registre double port.png|centre|vignette|upright=2|Architecture d'un CPU 8-16 bits avec un banc de registre double port]]
L'incrémentation d'une paire 16 bits ne coute rien à implémenter, ou presque. En effet, le processeur incorpore un incrémenteur 16 bits pour le ''program counter'', qui est relié au bus d'adresse. L'idée est de rentabiliser cet incrémenteur, en lui permettant d'incrémenter des données/adresses de 16 bits obtenues via pseudo-aliasing. De même, il peut être utilisé pour incrémenter le pointeur de pile, voire un compteur de rafraichissement mémoire (pour rappel, le rafraîchissement mémoire demande de balayer la mémoire d'adresse en adresse et été fait par le CPU à l'époque). Pour cela, il suffit de connecter le ''program counter'', le banc de registre, et l'incrémenteur, via un bus dédié.
[[File:Calcul d'adresse par ALU dédiée avec PC séparé.png|centre|vignette|upright=2|Calcul d'adresse par ALU dédiée avec PC séparé]]
Notez qu'on peut encore simplifier le tout en placant le ''program counter'' dans le banc de registre, ce qui ne gênera pas le travail de l'incrémenteur mais simplifiera le câblage au bus d'adresse. Ce n'était pas systématique, certains processeurs mettaient le ''program counter'' dans le banc de registre, d'autres non.
: Inclure le ''program counter'' dans le banc de registre permet parfois de remplir un vide. Par exemple, sur un processeur avec 12 registres, le banc de registre devrait faire idéalement 16 registres, inclure le ''program counter'' dedans fait monter le tout à 13.
[[File:Architecture d'un CPU 8-16 bits.png|centre|vignette|upright=2|Architecture d'un CPU 8-16 bits]]
Les processeurs Intel 8 bits, à savoir le 8008, le 8080 et le 8085 ; mettaient le ''program counter'' dans le banc de registre. Vous avez donc toutes les armes pour comprendre leur micro-architecture. Par exemple, voici la micro-architecture du processeur 8080. Remarquez le banc de registre, qui contient tous les registres sauf l'accumulateur et le registre. Il a deux ports : un pour les adresses et un pour les données. Notez le dé-multiplexeur sur le port de donnée. Pour le reste, il s'agit d'une architecture à accumulateur hybride des plus classiques.
[[File:Intel 8080 arch.svg|centre|vignette|upright=3|Microarchitecture de l'Intel 8080.]]
Le Z80 est un processeur inspiré du design des processeurs Intel 8 bits, mais avec pas mal d'améliorations. Un point particulier de ce processeur est son banc de registre. Il contient tous les registres du processeur, y compris l'accumulateur et le registre d'état ! Les seuls registres en-dehors du banc de registre sont le ''program counter'' et un compteur de rafraichissement mémoire IR.
Un autre point particulier est que les registres dans le banc de registres avaient une copie séparée accessible uniquement pour les interruptions, via fenêtrage de registres. Et l'accumulateur et le registre d'état étant dans le banc de registre, il y avait deux accumulateurs et deux registres d'état. Les registres A, B, C, D, E et F étaient dupliqués, par le pointeur de pile ni les registres d'indice. Les copies des registres étaient nommées A', B', C', D', E' et F'.
Le Z80 supportait des instructions d'échange de registre en plus des CPU Intel 8 bits. L'instruction EX peut échanger soit le contenu des paires D,E et H,F, soit la paire A,F avec la paire A',F'. L'instruction EXX échange les paires BC, DE, HL avec les paires BC', DE', HL'. En faisant cela, le programmeur pouvait utiliser deux fois plus de registres généraux s'il n'utilisait pas les interruptions. L'échange de paires se fait sans copies de registres, mais simplement en modifiant l'adresse envoyée sur le banc de registre. Pour cela, plusieurs bascules mémorisent des bits qui indiquent si les paires ont été échangées ou non. Il y a une bascule pour les paires DE , HL ; une autre pour les paires A,F et paire A',F', une dernière pour l'instruction EXX. En combinant ces bascules avec les noms de registres envoyés par le séquenceur, on peut échanger les paires de registres.
==Le cas particulier des processeurs 4 bits : le 4004 d'Intel==
L'Intel 4004 était le tout premier micro-processeur. Il s'agissait d'un microprocesseur de 4 bits, basé sur une architecture à accumulateur. Il disposait d'un accumulateur et de 16 registres d'indice, tous de 4 bits. Il faisait des calculs sur des données de 4 bits, appelées des nibbles. Cependant, sur ses 46 instructions machines supportées, 41 agissaient sur des opérandes de 8 bits, les 5 restantes sur des opérandes de 16 bits. Simplement, les calculs se faisaient en deux fois, en échangeant des données entre mémoire RAM et accumulateur.
Le 4004 est un circuit intégré avec peu de broches. Il dispose notamment d'un bus de données/adresse, qui est multiplexé, c’est-à-dire qu'il sert alternativement de bus de données et de bus d'adresse selon les besoins. Le bus de commande mémoire fait 5 bits, dont 4 pour les chips de RAM, un pour la ROM. Les adresses sont codées sur 12 bits, les données sur 4 et les instructions sur 8 bits. L'envoi d'une adresse sur le bus se fait en plusieurs fois, de même que la lecture d'une instruction. Il s'agit là d'une adaptation pour outrepasser les limitations d'un processeur 4 bit.
[[File:Intel 4004 processor pinout.png|centre|vignette|upright=2|Broches de l'Intel 4004. Nous verrons à quoi elles servent plus bas.]]
===L'espace d'adressage de l'Intel 4004===
Les adresses du processeur sont sur 12 bits, ce qui fait 4096 adresses différentes. Elles regroupent à la fois la ROM et la mémoire RAM, vu que l'architecture est une sorte de mélange bizarre entre une architecture Von Neumann et Harvard. Le processeur gère bien deux espaces d'adressage séparés, mais la RAM et la ROM sont reliés au même bus. La sortie CM-ROM du processeur indique si l'adresse envoyée correspond à la RAM ou la ROM. Un circuit de décodage d'adresse active ou désactive la RAM selon la valeur de ce bit, l'inverse pour la ROM, en agissant sur leurs bits Chip Select. Seule la RAM ou la ROM répondent alors à l'adresse.
Pour ce qui est de la RAM, le circuit de décodage d'adresse pouvait gérer au maximum 1024 adresses différentes, chacune contenant un nibble. Pour cela, le CPU 4004 était relié à une ou plusieurs RAM externes, des Intel 4002. Chaque Intel 4002 contenait 64 nibbles de données, plus 16 nibbles de statut qu'on ne détaillera pas ici. Les nibbles de statut étaient accessibles en utilisant des instructions d'entrée-sortie, donc pas avec des lectures/écritures mémoire. Les 64 nibbles de données sont découpés en 4 groupes de 16 nibbles. Le CPU pouvait être relié à maximum 16 Intel 4002, ce qui fait 1024 nibbles de données et 256 nibbles de statut. L'ensemble permet de remplir l'espace d'adressage de 1024 adresses.
===Le registre de page et le pseudo-aliasing des registres===
Sélectionner une adresse mémoire utilisait un mélange entre pseudo-aliasing et registre de page. Pour les données, les 1024 adresses étaient découpées en 4 pages de 256 adresses. Pour la ROM, les 4096 adresses étaient découpées en 16 pages de 256 adresses. Localiser une donnée dans une page ne requiert que 8 bits, 2/4 bits supplémentaires permettent de sélectionner la page voulue. Le registre de page était dans le processeur lui-même, et était relié aux sorties du processeur nommées CM-RAM 0, 1, 2 et 3. Les 4 sorties encodaient un nombre qui permet de sélectionner le numéro de page voulu.
Le registre de page fait 5 bits : un pour distinguer RAM et ROM, 4 bits pour sélectionner la page voulue. L'avantage est que la carte mère gère au maximum 16 chips de RAM, ce qui colle parfaitement avec les 4 utilisés pour sélectionner une page. Un chip de RAM correspond à une page, et chacun est activé ou désactivé suivant la page sélectionnée. Pour cela, il suffit d'ajouter un décodeur sur la carte mère, qui prend les 4 bits du registre de page et fournit les signaux Chip Select aux différents chips de RAM.
Reste alors à utiliser les 8 bits d'adresse à l'intérieur d'un chip de RAM. Le 4004 permettait de concaténer deux registres d'indice de 4 bits pour former une adresse de 8 bits. Les instructions d'accès mémoire pouvaient ainsi préciser une paire de registre d'indice pour préciser quelle adresse lire/écrire. Idem pour les branchements indirects : le processeur supportait une instruction de branchement indirect qui précisait l'adresse dans une paire de registres d'indice. Les registres d'indice sont donc assez mal nommés sur cette architecture, vu qu'ils peuvent servir soit de registre d'indice, soit de demi-registre d'adresse. Il s'agit là du système de pseudo-aliasing des registres, mais appliqué aux registres d'indice.
L'Intel 4004 gérait deux instructions pour gérer les adresses mémoires. La première, l'instruction DCL (''Designate Command Line'') configure le registre de page. Elle prend en entrée un numéro de page et le copie dans le registre de page. L'opérande peut provenir d'un registre d'indice ou de l'accumulateur. La seconde, l'instruction SRC (''Send Register Control'') concatène deux registres d'indice pour obtenir une adresse de 8 bits. Un accès mémoire se fait donc en maximum trois instructions : une qui configure le registre de page si ce n'est pas déjà fait, une instruction SRC pour envoyer l'adresse, et une troisième instruction qui dit s'il faut faire une lecture ou une écriture.
===La microarchitecture de l'Intel 4004===
Il incorporait une pile d'adresse de retour intégrée au processeur. La pile d'adresse acceptait exactement 3 adresses maximum. Elle était regroupée avec le ''program counter'' dans un banc de registre, de 4 registres. Le ''program counter'' et le pointeur de pile faisaient chacun 12 bits, soit trois nibble. Ils étaient incrémentés par un incrémenteur dédié.
SI on omet le registre de page et la pile d'adresse, le 4004 est une architecture à accumulateur des plus classiques, avec un bus interne unique, un banc de registre pour les registres d'indices, un accumulateur relié à une unité de calcul. Les registres d'indice étaient dans un banc de registre séparés, car ils faisaient 4 bits chacun, contrairement au pointeur de pile et le ''program counter''. Un détail important est que les bancs de registres du 4004 étaient implémentés avec de la DRAM, et non des registres usuels fabriqués avec des bascules 1 bit.
[[File:Microarchitecture de l'Intel 4004.png|centre|vignette|upright=2.5|Microarchitecture de l'Intel 4004]]
<noinclude>
{{NavChapitre | book=Fonctionnement d'un ordinateur
| prev=Les architectures à pile et mémoire-mémoire
| prevText=Les architectures à pile et mémoire-mémoire
| next=Les processeurs de traitement du signal
| nextText=Les processeurs de traitement du signal
}}
</noinclude>
8u4r2079ci1ow48o34rn0ii7ex8kv4d
765696
765695
2026-05-01T16:55:59Z
Mewtow
31375
/* Les microcontrôleurs PIC */
765696
wikitext
text/x-wiki
Nous avons déjà abordé la notion de processeur 8, 16, 32, 64 bits. Elle désigne la taille des registres généraux, ou de l'accumulateur. De nos jours, les processeurs 32 et 64 bits sont la norme, mais les premiers micro-processeurs étaient des processeurs 4 et 8, avant de passer rapidement au 16 bits. La raison est que leur budget en transistor limité faisait qu'on ne pouvait pas utiliser une ALU trop grande : une ALU 8 bit prend deux fois moins de place et de transistors qu'une ALU 16 bits. Cependant, les processeurs 8 bits avaient de sérieuses limitations qui étaient compensées par diverses solutions. Dans ce chapitre, nous allons faire une revue rapide des processeurs 8 bits et de leurs fonctionnalités.
La principale limitation des CPU 8 bits était l'adressage : des registres de 8 bits limitaient l'espace d'adressage à seulement 256 adresses, soit à peine 256 octets ! Intuitivement, on se dit que 256 octets est purement impraticable, on ne peut rien faire d'intéressant avec seulement 256 de RAM + ROM. Et c'est partiellement vrai. L'adage veut que 16 bits est la taille minimale intéressante, la limite à partir de laquelle on a assez de mémoire RAM/ROM pour coder des applications intéressantes. Mais 256 octets de RAM est largement suffisant sur de nombreux systèmes embarqués simples s'en accommodent : des caisses enregistreuses, des systèmes de régulation de feu de circulation, etc.
Pour les applications demandant plus de mémoire RAM, les CPU de l'époque contournaient la limitation de 256 octets de RAM avec de nombreux stratagèmes. Dans ce qui va suivre, nous allons séparer les CPU 8 bits selon qu'ils utilisent une architecture Harvard ou une architecture Von Neumann. La raison est qu'une architecture Harvard permet en soi de contourner partiellement ce problème d'adressage. Les choses sont plus compliquées avec une architecture Von Neumann.
==Les processeurs 8/16 bits à architecture Harvard ==
La première solution est d'utiliser une architecture Harvard. Le processeur 8 bit a alors deux espaces d'adressage : un pour la RAM, un autre pour la ROM. Et les deux utilisent des adresses de taille différente. La ROM est reliée à un bus d'adresse de 16 bits, alors que la RAM est elle connectée à un bus d'adresse de 8 bits. La RAM est donc limitée à 256 octets, alors que la ROM peut monter jusqu'à 64 kibioctets. Mine de rien, faire ainsi est largement suffisant.
Les processeurs de l'époque intégraient parfois les 256 octets de RAM directement dans le processeur. Beaucoup en implémentaient moins, avec par exemple seulement 64 octets de RAM, ou 32 octets, ou 128 octets. L'avantage est que cela éliminait le bus d'adresse des données et ne laissait que le bus d'adresse pour la ROM. On économisait ainsi beaucoup de broches sur le circuit intégré du CPU. Et pour les applications demandant plus de RAM, on pouvait ajouter un circuit séparé qui permettait d'adresser une RAM plus grande. Mais cela sera plus clair avec un exemple.
===Les microcontrôleurs PIC===
Les '''microcontrôleurs PIC''' regroupent des microcontrôleurs allant de microcontrôleurs 8 bit aux performances très faible, à des microcontrôleurs 32 bits bien plus puissants. Les microcontrôleurs PIC sont très utilisés dans l'embarqué ou d'informatique industrielle. Ils sont vendu à des volumes assez impressionnants, plusieurs millions par an. Et si vous avez ou êtes en train de faire des études d'électronique, je parie que vous les avez déjà vu en classe, ou que ce ne saurait tarder. Dans ce qui suit, nous allons nous concentrer sur les microcontrôleurs PIC 8 bits, à savoir les PIC 16, 16 et 18. Les PIC 24, qui sont des microcontrôleurs 16 bits, ne seront pas abordés.
Les microcontrôleurs PIC 8 bits incorporent une mémoire RAM très petite, ainsi qu'une architecture Harvard, comme dit plus haut. La mémoire ROM des PIC va de 1024 instructions à 4096 instructions. En comparaison, la mémoire RAM des microcontrôleurs PIC ne peut pas dépasser 256 adresses, et elle est encore plus petite en pratique sur certains modèles. Pour donner un exemple, le PIC16F84 a une RAM composée de 68 "registres" de 8 bits. Le terme "registres" devrait vous faire tiquer, mais il s'agit bien d'une mémoire SRAM séparée. Simplement, la documentation des PIC qualifie cette mémoire SRAM de "registres", et il faut admettre que la différence entre banc de registre et SRAM séparée est un peu floue.
[[File:DocPIC16F84 3.png|centre|vignette|upright=3|Espaces d'adressage du PIC16F84.]]
Un détail est que la SRAM n'a qu'un seul port qui sert à la fois pour les lectures et écritures. Pour compenser, les PIC sont des architectures à accumulateur, où une opérande est lue depuis la SRAM, l'autre depuis l'accumulateur. Leur implémentation de l'accumulateur ajoute une petite subtilité : le résultat d'une opération arithmétique peut être enregistré ailleurs que dans l'accumulateur. Le résultat peut aussi remplacer la seconde opérande, celle lue en mémoire RAM. Dit autrement, le résultat est enregistré dans l'adresse mémoire source. Les instructions de calcul ont le choix : un bit dans leur encodage précise où enregistrer le résultat.
{|
|-
|[[File:DocPIC16F84 4.png|centre|vignette|upright=2|Microarchitecture simplifiée d'un microcontroleur PIC (ici, un 16F84).]]
|[[File:DocPIC16F84 5.png|centre|vignette|upright=2|Microarchitecture simplifiée d'un microcontroleur PIC (ici, un 16F84), avec les branchements directs.]]
|}
Outre l'accumulateur, les PIC disposent de registres de contrôle, d'un ''program counter'', d'un registre d'état, et d'un pointeur de pile. Le registre d'état contient un registre séparé pour la retenue de l'addition/soustraction. Ce dernier est très important, vu qu'il est nécessaire pour les additions/soustractions sur des opérandes de 16 bits. Le processeur a beau être un CPU 8 bits, il peut être utilisé pour faire des calculs 16 bits, la performance est alors amoindrie, mais ce n'est pas un problème pour les applications d'un tel microcontroleur.
Un détail assez original est que les registres précédents sont mappés en mémoire, à quelques exceptions près ! En clair, on peut y accéder en lisant/écrivant à une adresse mémoire bien précise. Les seules registres qui ne sont pas mappés en mémoire sont l'accumulateur, la pile d'appel, et les registres d'entrée-sortie. Les registres d'entrée-sortie permettent de lire ou écrire sur un port d'entrée-sortie ou de lire un ''timer''. En clair, les PIC ont un espace d'adressage séparé pour les entrées-sorties.
[[File:DocPIC16F84.png|centre|vignette|upright=2|DocPIC16F84]]
Le processeur de ces microcontrôleurs a un jeu d'instruction propriétaire, le jeu d'instruction PIC. Les instructions PIC sont très petites. Les premières versions du jeu d'instruction utilisaient des instructions codées sur 12 bits, dont 5 pour l'adresse mémoire de la seconde opérande. Pour les branchements, 3 bits étaient utilisés pour l'opcode, 9 pour l'adresse de destination. Par la suite, les instructions ont été étendues à 13 bits sur les PIC1670, puis à 14, 15 et 16 bits. Les adresses ont alors été élargies, ce qui permet d'adresser en peu plus de mémoire RAM.
Les instructions se limitent à des additions/soustractions, des opérations bit à bit,des branchements, des instructions LOAD/STORE, ainsi que des opérations de manipulation de bit. Il y a une instruction pour mettre une adresse à zéro, qui peut aussi mettre à zéro l’accumulateur.
Pour ce qui est des branchements, les PIC n'ont pas d'instructions de branchement conditionnels, ils font avec une SKIP instruction et des branchements inconditionnels. Par contre, ils ont des branchements pour les appels et retour de fonction. Mieux que ça, ils intègrent une pile d'appel d'environ 8 adresses de retour. Pour donner une idée, l'adresse de retour est encodée sur 10 bits sur les PIC16F84.
Pour les instructions de manipulation de bit, il y a des instructions pour tester/masquer un bit dans une opérande, 4 en tout ( mettre à 0, mettre à 1, tester si bit = 1, tester si bit = 0). Les instructions qui testent un bit prennent leur opérande dans l'accumulateur. Il y a aussi deux instructions de rotation à gauche et droite, qui tiennent compte de la retenue mémorisée dans le registre d'état. Mentionnons aussi une instruction pour inverser deux ''nibbles'' dans un octet.
Les PIC ont aussi des instructions d'incrémentation et de décrémentation, un peu spéciales. Ces dernières regroupent : une incrémentation normale, une décrémentation normale, une décrémentation fusionnée avec une instruction SKIP, et une incrémentation fusionnée avec une instruction SKIP. Les deux dernières incrémentent/décrémentent l'accumulateur et SKIP l'instruction suivante si le résultat est zéro. Elles permettent de fortement simplifier l'implémentation des boucles qui s'exécutent tant que leur compteur atteint zéro.
Les PIC gèrent l'adressage absolu et indirect. L'adressage absolu, celui où l'adresse est intégrée dans l'instruction, est très simple à implémenter. Les adresses prennent moins d'un octet, vu que la taille de la RAM est très petite, les adresses sont très courtes, les intégrer dans des instructions elles-mêmes courtes n'est pas un problème. L'adresse est encodée sur 5 à 7 bits, selon le modèle, ce qui permet d'adresser entre 32 et 128 octets.
: Les PIC 18 peuvent adresser plus de 256 octets de RAM en utilisant la commutation de banques, une technique qui sera abordée dans plusieurs chapitres.
Pour l'adressage indirect, les PIC intègrent un registre d'adresse dédié. Il s'agit du registre FSR, qui mémorise l'adresse à lire/écrire. Il est possible de copier un pointeur dedans, qui provient soit de l'accumulateur, soit de la mémoire SRAM. Dans les deux cas, la donnée adressée est copiée dans un registre INDR, qui sert de registre d’interfaçage mémoire avec le bus de données. Le registre FSR est directement connecté sur le bus d'adresse. Les modèles de base se débrouillent avec un registre FSR et un registre INDR, mais les modèles plus performants ont deux ou trois copies de chaque registre. Les modèles PIC18 ajoutent aussi des instructions LOAD/STORE avec les modes d'adressage à post- ou pré-incrément/décrément, et le mode d'adressage "Base + Indice + Décalage".
Avec tout ce qu'on vient de dire, vous devriez pouvoir comprendre la microarchitecture d'un PIC, qui est résumée dans ce schéma.
[[File:DocPIC16F84 all.png|centre|vignette|upright=2.5|Microarchitecture du PIC16F84.]]
===Le Fairchild F8 et la console de jeu Fairchild Channel F===
Un autre exemple est la Fairchild F8 de la défunte entreprise Fairchild Semiconductor. Il incorpore un processeur 8 bits, c'est à dire que le processeur fait des calculs sur des entiers de 8 bits maximum, une mémoire RAM de 64 octets, ainsi qu'une mémoire ROM de 1 kibioctet. Les 64 octets de RAM sont certes très peu, mais c'est suffisant pour certaines applications simples, comme les caisses automatiques de l'époque, ou des applications embarquées. Et de toute façon, il est possible d'ajouter de la mémoire RAM supplémentaire si les 64 octets de RAM intégrée ne suffisent pas. Le système était donc modulaire, adaptable selon les besoins, peu cher pour son implémentation minimale sans RAM en plus.
Vu qu'il s'agit d'un des tout premiers ordinateurs, il est sorti à une époque où la technologie était rudimentaire. À cette époque, le processeur était composé de pièces détachées qu'il fallait souder ensemble pour obtenir un processeur fonctionnel. Ce n'est que plus tard qu'est apparu le micro-processeur, qui regroupe un processeur complet dans un seul circuit intégré. Le résultat est que le processeur du Fairchild F8 est coupé en deux, l'unité de calcul et l'unité de contrôle sont placés dans des pièces détachées séparés.
Le microcontrôleur est composé de trois à quatre pièces détachées, certaines étant optionnelles. La première est le '''3850 CPU''', qui regroupe l'unité de calcul et la mémoire RAM intégrée. La seconde est le PSU (''3851 Program Storage Unit''), qui regroupe la mémoire ROM et l'unité de contrôle, ''program counter'' inclut. S'il y a besoin d'utiliser plus de RAM, il faut ajouter un circuit d’interface mémoire, qui est au choix le ''3852 Dynamic Memory Interface'' (DMI) ou le ''3853 Static Memory Interface'', le premier étant connecté à une mémoire de type DRAM, l'autre à une SRAM (nous verrons ce que sont les DRAM et les SRAM dans le prochain chapitre).
[[File:Fairchild F8.png|centre|vignette|upright=2|Fairchild F8]]
Le système minimal est composé d'un PSU et d'un 3850, sans les circuits d'interface mémoire. Le tout donne un système avec un processeur 8 bit, 64 octets de RAM et 1 kibioctet de ROM, les deux mémoires étant intégrées dans le "processeur". Le processeur gérait 4 entrées-sorties, chacune étant reliée avec un bus de 8 bit au processeur. Au passage, en 1977, Mostek a créé un microcontrôleur qui regroupe un PSU et un 3850 : le Mostek 3870. Le système minimal n'avait pas de bus d'adresse, vu que la RAM était intégrée au processeur. C'est les 3852 et 3853 qui ajoutaient un bus d'adresse. Ils ajoutent un bus d'adresse de 16 bits, ce qui permet d'adresser 64 kibioctets de RAM.
[[File:Fairchild-Channel-F.jpg|vignette|un Fairchild Channel F]]
Le Fairchild F8 a été utilisé dans la Fairchild Channel F, une des toute première console de seconde génération, à savoir des consoles qui utilisaient des cartouches de jeu. Avant les consoles de seconde génération, les consoles étaient non-programmables. Elles étaient conçues pour faire tourner un jeu précis, aucun autre, le jeu étant implémenté dans leurs circuits.
La Fairchild Channel F est composé du système minimal, auquel on a ajouté une carte son rudimentaire et 2 kibioctets de mémoire vidéo. La mémoire vidéo sert uniquement pour afficher des images à l'écran : on écrit l'image à afficher dedans, un circuit vidéo se charge de l'afficher à l'écran automatiquement. Le processeur ne fait qu'écrire dans cette RAM vidéo, il ne peut pas en lire le contenu. De la RAM supplémentaire peut cependant être ajoutée dans les cartouches de jeu.
===L'usage d'une architecture Harvard modifiée : les consoles 8 bits===
Pour encore améliorer la situation, il est possible d'utiliser une architecture Harvard modifiée, qui permet de lire des données depuis la mémoire ROM. Cela réduit encore plus les besoins en mémoire RAM. Les constantes manipulées par le programme sont mémorisées en ROM, lues depuis la ROM, au lieu d'être chargées en RAM. Les consoles de jeu utilisaient beaucoup de stratagème.
L'exemple type est celui des consoles 8 bits avec des graphismes en 2D. La cartouche de jeu contenait une ROM, qui mémorisait le code du jeu, les niveaux, les sprites et autres données graphiques. Leur carte graphique lisait directement les ''sprites'' depuis la mémoire ROM, sans avoir à les charger en mémoire vidéo. La mémoire vidéo se contentait de mémoriser le reste des informations graphiques, ainsi que des pointeurs vers les ''sprites'' en ROM. En conséquence, les consoles 8 bits n'avaient pas besoin de beaucoup de RAM, vu qu'une grande partie des données utiles étaient dans une ROM directement accessible par le processeur. A l'opposé, les micro-ordinateurs devaient copier les données d'un jeu depuis une disquette dans la mémoire RAM, ce qui demandait d'avoir plus de RAM.
Le passage au support CD sur les consoles 32 bits a eu la même conséquence. Le processeur ne pouvant pas lire directement le CD à sa guise, il fallait copier les données du CD en RAM. D'où l'apparition de temps de chargement assez longs, inexistants sur support cartouche.
Avec ce genre de stratagèmes, 256 octets de RAM est largement suffisant sur de nombreux systèmes, à condition qu'on ait assez de ROM pour coder un programme digne de ce nom. Par exemple, de nombreux systèmes embarqués simples s'en accommodent : des caisses enregistreuses, des systèmes de régulation de feu de circulation, etc.
===Le HP Nanoprocessor : un processeur sans ALU===
Un dernier exemple est celui du processeur HP Nanoprocessor, de l'entreprise HP. Il a été commercialisé en 1974, en même temps que les premiers micro-processeurs d'Intel. Tous les processeurs de l'époque étaient des processeurs 8 bits et le HP Nanoprocessor ne faisait pas exception. Ce n'était pas un processeur haute performance, il était destiné à des applications d'informatique industrielle ou embarquée. D'ailleurs, il utilisait des transistors de type metal-gate, peu performants, là où ses contemporains utilisait des transistors en silicium, plus performants.
Mais une caractéristique qui rend cela encore plus claire est qu'il n'y a pas d'ALU ! En effet, ce processeur est incapable de faire des additions, des soustractions ou autres opérations simples ! Il est cependant capable d'effectuer des incrémentations et décrémentations, des décalages, des opérations logiques comme des ET/OU/NON/XOR et bien d'autres. Il supporte en tout 48 instructions, avec un support limité des modes d'adressage indirects. Les instructions de branchement étaient des instructions SKIP, il n'y avait pas d'instructions de branchement généralistes.
Pour ce qui est des registres, il disposait de 16 registres de 8 bits et d'un accumulateur. Niveau mémoire, il était relié à une mémoire ROM, rien de plus. Il n'avait de RAM supplémentaire qu'on pouvait lui adjoindre, il devait se débrouiller avec seulement ses registres. Et cela ne posait pas de problèmes pour son usage. Seul le mode d'adressage indirect à registre est supporté, il n'y a pas de registres d'indices. Ce mode d'adressage permet de lire des données en mémoire ROM, la ROM pouvant contenir des tableaux de valeurs constantes.
: Il est possible de lui adjoindre de la RAM via les ports d'entrée-sortie, ainsi qu'une ALU, mais RAM et ALU sont traités comme des périphériques avec lesquels on communique, ils ne sont pas intégrés au processeur.
Niveau micro-architecture, il incorporait une unité de calcul logique et un circuit comparateur. Le comparateur était un circuit comparateur série des plus basiques, qui était utilisé pour les instructions de branchement et associées. L'unité de calcul logique gérait des incrémentations/décrémentation, des décalages, les opérations logiques et quelques autres. L'unité de calcul logique était bit-slicée, à savoir conçue en assemblant 8 ALU de 1 bit chacune, enchainées en série. Le tout était combiné à des circuits de ''carry skip''.
[[File:Unité de calcul du HP nanonprocessor.png|centre|vignette|upright=2|Unité de calcul du HP nanoprocessor]]
Son unité de décodage d'instruction était très simple, essentiellement basée sur des portes NOR, grâce à un encodage efficace des instructions machine. Le ''program counter'' fait 11 bits, ce qui permet d'adresser une ROM de 2 kibioctets. Le ''program counter'' était relié à un circuit incrémenteur qui gérait les isntructions SKIP (il pouvait incrémenter le ''program counter'' par pas de 1 ou de 2 en cas de SKIP). Le processeur contient aussi deux registres, qui servent en quelque sorte de pile d'adresse de retour. Un premier registre mémorise l'adresse de retour d'une fonction, l'autre mémorise le ''program counter'' lors d'une interruption, pour savoir où brancher à la fin de l'interruption.
[[File:HP nanoprocessor.png|centre|vignette|upright=2.5|HP nanoprocessor]]
Fait intéressant, le concepteur du processeur a gracieusement donné les masques utilisés pour graver le silicium du processeur au site [https://www.cpushack.com/ CPU Shack]. Les masques en question sont disponibles ici :
* [https://www.cpushack.com/2020/08/20/hp-nanoprocessor-mask-set/ HP NanoProcessor Mask Set]
* [https://www.cpushack.com/2020/08/09/the-forgotten-ones-hp-nanoprocessor/ The Forgotten Ones: HP Nanoprocessor]
Les masques ont été analysés par Ken Shirrif dans cet article de blog :
* [https://www.righto.com/2020/09/hp-nanoprocessor-part-ii-reverse.html HP Nanoprocessor part II: Reverse-engineering the circuits from the masks]
==Les processeurs 8/16 bits à architecture Von Neumann==
L'usage d'une architecture Harvard est une solution pour adresser plus de mémoire avec des CPU 8 bits. Mais plusieurs microprocesseurs commerciaux n'utilisaient pas cette solution. À la place, c'était des architectures Von Neumann, mais qui étaient capables de gérer des adresses de 16 bits. Les données faisaient 8 bits, les registres faisaient 8 bits, mais quelques techniques permettaient de gérer des adresses de 16 bits. Nous parlerons de '''processeurs 8/16 bits''' pour les désigner, et nous allons les étudier à part.
Un point important est que la gestion d'adresses de 16 bits permet d'adresser 64 kibioctets, qui peuvent être remplis avec de la RAM et de la ROM. On a donc le meilleur des mondes : 64 kibioctets de mémoire, mais avec des données de 8 bits et les économies de circuit qui vont avec. L'avantage est que le processeur peut maintenant gérer une vraie pile d'appel, pas seulement une pile d'adresse de retour. Il lui suffit pour cela d'intégrer un pointeur de pile codé sur 16 bits.
===Les modes d'adressage par page des CPU Motorola===
Les processeurs Motorola 8 bits étaient des processeurs 8 bits avec un bus d'adresse de 16 bits. C'était des processeurs à accumulateur incorporant deux registres d'indice, un registre d'état, un pointeur de pile, et un ''program counter''. Tous les registres sont reliés au bus d'adresse, sauf le registre d'état et l’accumulateur. Tous les registres font 8 bits, sauf le ''program counter''. La pile est câblée pour être dans un bloc de 256 octets compris entre l'adresse 1 0000 0000 et l'adresse 1 1111 1111, ce qui fait que son adressage se fait avec un seul octet.
[[File:6502-architecture.svg|centre|vignette|upright=1.5|Architecture simplifiée du 6502.</br> X et Y : registres d'indice ;</br> S : le pointeur de pile ;</br> A : accumulateur ;</br>P : registre d'état.</br>]]
Les processeurs Motorola 8 bits utilisaient une méthode simple pour adresser 64 kibioctets de RAM, avec des registres de 8 bits. Pour cela, ils utilisaient une variante de l'adressage base + décalage. Elle améliore l'adressage absolu, qui intègre l'adresse à lire/écrire dans l'instruction elle-même. L'adresse en question est de 8 bits et n'encode que les 8 bits de poids faible de l'adresse, les 8 bits de poids fort sont dans un '''registre de page''' adressé implicitement. L'adresse finale est obtenue en concaténant ce registre avec l'adresse mémoire intégrée dans l’instruction. Le résultat est que la mémoire était découpée en blocs de 256 consécutifs, chacun pouvant servir de fenêtre de 256 octets. Une page est réservée pour la pile, la seconde, comme dit plus haut.
Formellement, ce mode d'adressage a des ressemblances avec la commutation de banques, une technique qu'on verra dans les chapitres sur l'espace d'adressage et la mémoire virtuelle. Mais ce n'en est pas du tout : le registre de page est utilisé uniquement pour les accès mémoire avec le mode d'adressage base + décalage, mais pas pour les autres accès mémoire, qui gèrent des adresses complètes. Notons que l'usage d'un registre de page dédié fait que celui-ci est adressé implicitement.
Il faut noter que la technique a été utilisée sur des processeurs 16 bits, pour contourner la petite taille des instructions. Un exemple est celui du HP 2100, un processeur 16 bits. Il avait un registre de page de 5 bits et encodait 10 bits d'adresse dans ses instructions. Ses instructions d'accès mémoire disposaient d'un bit qui choisit quel mode d'adressage utiliser. S'il était à 0, l'adressage absolu était utilisé, le registre de page n'était pas utilisé. Mais s'il était à 1, le registre de page était utilisé pour calculer l'adresse.
Une évolution de l'adressage précédent est le '''mode page direct'''. Avec lui, le registre de page est étendu et contient une adresse mémoire complète. L'adresse finale n'est pas obtenue par concaténation, mais en additionnant le registre de page avec l'adresse fournie par adressage absolu + décalage. Un exemple est celui des premiers processeurs Motorola, qui géraient des adresses courtes de 8 bits. L'adresse courte de 8 bits correspondait non pas aux 256 premiers octets de la mémoire, mais à une fenêtre de 256 octets déplaçable en mémoire. La position de la fenêtre de 256 octets était spécifiée par le registre de page de 16 bits, qui précisait l'adresse du début de la fenêtre, celle de sa première donnée.
Il s'agit donc formellement d'adressage base + décalage, à un détail près : il n'y a qu'un seul registre de base. Le fait que ce registre de base soit unique fait qu'il est adressé implicitement, on n'a pas à encoder le numéro/noms de registre dans l'instruction. Le registre de base est utilisé uniquement pour l'adressage absolu, pas pour les autres accès mémoire. S'il y a des ressemblances avec la segmentation, une technique de mémoire virtuelle qu'on abordera dans quelques chapitres, ce n'en est pas vu que le registre de base est utilisé seulement pour un mode d'adressage bien précis.
===Le ''pseudo-aliasing'' des registres des processeurs Intel x86===
Voyons maintenant le cas des anciens processeurs 8 bits d'Intel à savoir l'Intel 4004, 4040, 8008 et 8080. Le Z80, un processeur inspiré des CPU Intel 8 bits, est aussi concerné. Avant de poursuivre, parlons des registres de ces processeurs. Les premiers CPU Intel incorporaient 7 registres de 8 bits nommés A, B, C, D, E, F, H, L, SP. Ils correspondent respectivement à : l'accumulateur A ; six registres nommés B, C, D, E, H et L ; le registre d'état F ; le pointeur de pile SP. Le Z80 ajoute deux registres d'indice X et Y. De plus, le Z80 dispose de registres d'interruption, qui sont en quelque sorte des copies des registres A, B, C, D, E, F, H, L. Le tout est illustré dans le tableau ci-dessous.
{|class="wikitable" style="text-align:center;"
|-
!
! Registres des CPU Intel
! Registres supplémentaires du Z80
|-
! Accumulateur
| A
| A'
|-
! Registre d'état
| F
| F'
|-
! Registres généraux
| B, C, D, E, H, L
| B', C', D', E', H', L'
|-
! Pointeur de pile
| colspan="2" | SP (sauf pour le 8008)
|-
! Registres d'indice
|
| X et Y
|}
Le 8008 incorpore une pile d'appel de 7 adresses, dans le processeur lui-même. Il en est de la même avec le 4004 et le 4040, comme on le verra dans la section sur les processeurs 4 bits. Mais le 8080 et le 8085 ont remplacé le tout par un simple pointeur de pile, afin d'avoir une véritable pile d'appel. Autant c'est impossible d'avoir une pile d'appel avec seulement 256 octets de mémoire, autant on peut se le permettre avec 65 536 adresses.
Pour gérer des adresses de 16 bits, ils auraient pu utiliser des registres d'adresse séparés, mais on préféré un système de '''pseudo-''aliasing'' de registres'''. Formellement, c'est un système qui concatène deux registres 8 bits pour obtenir une adresse de 16 bits. L’appariement a lieu lors de certaines opérations bien précises, qui n'ont de sens que pour les adresses : la lecture/écriture en mémoire, et l'incrémentation.
Il y avait cependant des contraintes quant aux paires de registres possibles, toutes les paires de registres n'étaient pas autorisées. Les CPU concernés sont donc des processeurs hybrides accumulateur-registre généraux. L'accumulateur ne peut pas être appairé, seuls les registres généraux le peuvent. Le Z80 autorise plus de paires que les CPU Intel. Voici les paires de registres qui pouvaient servir d'adresse 16 bits :
* Les CPU 8008 d'Intel autorisait une seule paire formée des registres H et L.
* Les autres processeurs, à savoir le 8080, le 8085 et le Z80, autorisaient : les paires BC, DE et HL.
Le 8008 ne gérait que des opérations sur 8 bits. Mais le 8080 et le 8085 ont ajouté des instructions 16 bits qui agissaient sur des paires de registre, que le Z80 a repris. Une paire de registres est considérée comme un registre unique de 16 bits pour certaines opérations arithmétiques, dont l'incrémentation. Voici la liste des instructions concernées :
* INC et DEC pour l'incrémentation et la décrémentation ;
* DAD : additionne le registre HL avec une autre paire (Hl inclus) ;
* LXI : copie une constante immédiate dans une paire de registres ;
* LHLD : lit 16 depuis la mémoire et l'enregistre dans une paire de registres ;
* SHLD : copie 16 bits depuis une paire de registres et l'enregistre en mémoire ;
* PUSH et POP : empile ou dépilent une paire de registre sur la pile ;
* XTHL : échange la paire HL avec les 16 bits au sommet de la pile d'appel ;
* XCHG : échange le contenu de la paire HL et DE.
Pour résumer, le processeur avait des instructions LOAD, STORE, PUSH et POP adaptées pour gérer des paires de registre. De plus, l'instruction XCHG permettait d’échanger le contenu des paires DE et HL. L'instruction a été étendue sur les processeurs 16 bits pour échanger tous les registres. Mais l'implémentation était alors différente. L'incrémentation sur une paire de 16 bit était très utile, car les adresses sont souvent incrémentées quand on parcours un tableau. Ces instructions nous donnent quelques indices sur ce qu'il y a dans le processeur.
Le système de pseudo-aliasing a un impact sur le banc de registre. Le banc de registre regroupe les registres généraux et le pointeur de pile, mais ne contient pas l'accumulateur. Les contraintes sur les paires de registres possibles ne s'expliquent que d'une seule manière : le banc de registre contient des registres de 16 bits, une paire de registres 8 bits est mémorisée dans un registre unique. Il faut donc faire une différence entre les registres architecturaux de 8 bits, et les registres réels de 16 bits.
Le banc de registre a un port de 8 bits pour les données, qui est fabriqué à partir d'un port 16 bits auquel on a rajouté un multiplexeur pour choisir soit l'octet de poids faible, soit l'octet de poids fort. Le bus de données fait 8 bits, ce qui fait que les instructions LOAD, STORE, PUSH et POP pour paires 16 bits sont réalisées en deux fois : on lit/écrit l'octet de poids faible, puis celui de poids fort. Par contre, le bus d'adresse fait bien 16 bits. Cela suggère que le banc de registre dispose d'un port de 16 bits dédié aux adresses, en plus du port de données 8 bits.
[[File:Architecture d'un CPU 8-16 bits avec un banc de registre double port.png|centre|vignette|upright=2|Architecture d'un CPU 8-16 bits avec un banc de registre double port]]
L'incrémentation d'une paire 16 bits ne coute rien à implémenter, ou presque. En effet, le processeur incorpore un incrémenteur 16 bits pour le ''program counter'', qui est relié au bus d'adresse. L'idée est de rentabiliser cet incrémenteur, en lui permettant d'incrémenter des données/adresses de 16 bits obtenues via pseudo-aliasing. De même, il peut être utilisé pour incrémenter le pointeur de pile, voire un compteur de rafraichissement mémoire (pour rappel, le rafraîchissement mémoire demande de balayer la mémoire d'adresse en adresse et été fait par le CPU à l'époque). Pour cela, il suffit de connecter le ''program counter'', le banc de registre, et l'incrémenteur, via un bus dédié.
[[File:Calcul d'adresse par ALU dédiée avec PC séparé.png|centre|vignette|upright=2|Calcul d'adresse par ALU dédiée avec PC séparé]]
Notez qu'on peut encore simplifier le tout en placant le ''program counter'' dans le banc de registre, ce qui ne gênera pas le travail de l'incrémenteur mais simplifiera le câblage au bus d'adresse. Ce n'était pas systématique, certains processeurs mettaient le ''program counter'' dans le banc de registre, d'autres non.
: Inclure le ''program counter'' dans le banc de registre permet parfois de remplir un vide. Par exemple, sur un processeur avec 12 registres, le banc de registre devrait faire idéalement 16 registres, inclure le ''program counter'' dedans fait monter le tout à 13.
[[File:Architecture d'un CPU 8-16 bits.png|centre|vignette|upright=2|Architecture d'un CPU 8-16 bits]]
Les processeurs Intel 8 bits, à savoir le 8008, le 8080 et le 8085 ; mettaient le ''program counter'' dans le banc de registre. Vous avez donc toutes les armes pour comprendre leur micro-architecture. Par exemple, voici la micro-architecture du processeur 8080. Remarquez le banc de registre, qui contient tous les registres sauf l'accumulateur et le registre. Il a deux ports : un pour les adresses et un pour les données. Notez le dé-multiplexeur sur le port de donnée. Pour le reste, il s'agit d'une architecture à accumulateur hybride des plus classiques.
[[File:Intel 8080 arch.svg|centre|vignette|upright=3|Microarchitecture de l'Intel 8080.]]
Le Z80 est un processeur inspiré du design des processeurs Intel 8 bits, mais avec pas mal d'améliorations. Un point particulier de ce processeur est son banc de registre. Il contient tous les registres du processeur, y compris l'accumulateur et le registre d'état ! Les seuls registres en-dehors du banc de registre sont le ''program counter'' et un compteur de rafraichissement mémoire IR.
Un autre point particulier est que les registres dans le banc de registres avaient une copie séparée accessible uniquement pour les interruptions, via fenêtrage de registres. Et l'accumulateur et le registre d'état étant dans le banc de registre, il y avait deux accumulateurs et deux registres d'état. Les registres A, B, C, D, E et F étaient dupliqués, par le pointeur de pile ni les registres d'indice. Les copies des registres étaient nommées A', B', C', D', E' et F'.
Le Z80 supportait des instructions d'échange de registre en plus des CPU Intel 8 bits. L'instruction EX peut échanger soit le contenu des paires D,E et H,F, soit la paire A,F avec la paire A',F'. L'instruction EXX échange les paires BC, DE, HL avec les paires BC', DE', HL'. En faisant cela, le programmeur pouvait utiliser deux fois plus de registres généraux s'il n'utilisait pas les interruptions. L'échange de paires se fait sans copies de registres, mais simplement en modifiant l'adresse envoyée sur le banc de registre. Pour cela, plusieurs bascules mémorisent des bits qui indiquent si les paires ont été échangées ou non. Il y a une bascule pour les paires DE , HL ; une autre pour les paires A,F et paire A',F', une dernière pour l'instruction EXX. En combinant ces bascules avec les noms de registres envoyés par le séquenceur, on peut échanger les paires de registres.
==Le cas particulier des processeurs 4 bits : le 4004 d'Intel==
L'Intel 4004 était le tout premier micro-processeur. Il s'agissait d'un microprocesseur de 4 bits, basé sur une architecture à accumulateur. Il disposait d'un accumulateur et de 16 registres d'indice, tous de 4 bits. Il faisait des calculs sur des données de 4 bits, appelées des nibbles. Cependant, sur ses 46 instructions machines supportées, 41 agissaient sur des opérandes de 8 bits, les 5 restantes sur des opérandes de 16 bits. Simplement, les calculs se faisaient en deux fois, en échangeant des données entre mémoire RAM et accumulateur.
Le 4004 est un circuit intégré avec peu de broches. Il dispose notamment d'un bus de données/adresse, qui est multiplexé, c’est-à-dire qu'il sert alternativement de bus de données et de bus d'adresse selon les besoins. Le bus de commande mémoire fait 5 bits, dont 4 pour les chips de RAM, un pour la ROM. Les adresses sont codées sur 12 bits, les données sur 4 et les instructions sur 8 bits. L'envoi d'une adresse sur le bus se fait en plusieurs fois, de même que la lecture d'une instruction. Il s'agit là d'une adaptation pour outrepasser les limitations d'un processeur 4 bit.
[[File:Intel 4004 processor pinout.png|centre|vignette|upright=2|Broches de l'Intel 4004. Nous verrons à quoi elles servent plus bas.]]
===L'espace d'adressage de l'Intel 4004===
Les adresses du processeur sont sur 12 bits, ce qui fait 4096 adresses différentes. Elles regroupent à la fois la ROM et la mémoire RAM, vu que l'architecture est une sorte de mélange bizarre entre une architecture Von Neumann et Harvard. Le processeur gère bien deux espaces d'adressage séparés, mais la RAM et la ROM sont reliés au même bus. La sortie CM-ROM du processeur indique si l'adresse envoyée correspond à la RAM ou la ROM. Un circuit de décodage d'adresse active ou désactive la RAM selon la valeur de ce bit, l'inverse pour la ROM, en agissant sur leurs bits Chip Select. Seule la RAM ou la ROM répondent alors à l'adresse.
Pour ce qui est de la RAM, le circuit de décodage d'adresse pouvait gérer au maximum 1024 adresses différentes, chacune contenant un nibble. Pour cela, le CPU 4004 était relié à une ou plusieurs RAM externes, des Intel 4002. Chaque Intel 4002 contenait 64 nibbles de données, plus 16 nibbles de statut qu'on ne détaillera pas ici. Les nibbles de statut étaient accessibles en utilisant des instructions d'entrée-sortie, donc pas avec des lectures/écritures mémoire. Les 64 nibbles de données sont découpés en 4 groupes de 16 nibbles. Le CPU pouvait être relié à maximum 16 Intel 4002, ce qui fait 1024 nibbles de données et 256 nibbles de statut. L'ensemble permet de remplir l'espace d'adressage de 1024 adresses.
===Le registre de page et le pseudo-aliasing des registres===
Sélectionner une adresse mémoire utilisait un mélange entre pseudo-aliasing et registre de page. Pour les données, les 1024 adresses étaient découpées en 4 pages de 256 adresses. Pour la ROM, les 4096 adresses étaient découpées en 16 pages de 256 adresses. Localiser une donnée dans une page ne requiert que 8 bits, 2/4 bits supplémentaires permettent de sélectionner la page voulue. Le registre de page était dans le processeur lui-même, et était relié aux sorties du processeur nommées CM-RAM 0, 1, 2 et 3. Les 4 sorties encodaient un nombre qui permet de sélectionner le numéro de page voulu.
Le registre de page fait 5 bits : un pour distinguer RAM et ROM, 4 bits pour sélectionner la page voulue. L'avantage est que la carte mère gère au maximum 16 chips de RAM, ce qui colle parfaitement avec les 4 utilisés pour sélectionner une page. Un chip de RAM correspond à une page, et chacun est activé ou désactivé suivant la page sélectionnée. Pour cela, il suffit d'ajouter un décodeur sur la carte mère, qui prend les 4 bits du registre de page et fournit les signaux Chip Select aux différents chips de RAM.
Reste alors à utiliser les 8 bits d'adresse à l'intérieur d'un chip de RAM. Le 4004 permettait de concaténer deux registres d'indice de 4 bits pour former une adresse de 8 bits. Les instructions d'accès mémoire pouvaient ainsi préciser une paire de registre d'indice pour préciser quelle adresse lire/écrire. Idem pour les branchements indirects : le processeur supportait une instruction de branchement indirect qui précisait l'adresse dans une paire de registres d'indice. Les registres d'indice sont donc assez mal nommés sur cette architecture, vu qu'ils peuvent servir soit de registre d'indice, soit de demi-registre d'adresse. Il s'agit là du système de pseudo-aliasing des registres, mais appliqué aux registres d'indice.
L'Intel 4004 gérait deux instructions pour gérer les adresses mémoires. La première, l'instruction DCL (''Designate Command Line'') configure le registre de page. Elle prend en entrée un numéro de page et le copie dans le registre de page. L'opérande peut provenir d'un registre d'indice ou de l'accumulateur. La seconde, l'instruction SRC (''Send Register Control'') concatène deux registres d'indice pour obtenir une adresse de 8 bits. Un accès mémoire se fait donc en maximum trois instructions : une qui configure le registre de page si ce n'est pas déjà fait, une instruction SRC pour envoyer l'adresse, et une troisième instruction qui dit s'il faut faire une lecture ou une écriture.
===La microarchitecture de l'Intel 4004===
Il incorporait une pile d'adresse de retour intégrée au processeur. La pile d'adresse acceptait exactement 3 adresses maximum. Elle était regroupée avec le ''program counter'' dans un banc de registre, de 4 registres. Le ''program counter'' et le pointeur de pile faisaient chacun 12 bits, soit trois nibble. Ils étaient incrémentés par un incrémenteur dédié.
SI on omet le registre de page et la pile d'adresse, le 4004 est une architecture à accumulateur des plus classiques, avec un bus interne unique, un banc de registre pour les registres d'indices, un accumulateur relié à une unité de calcul. Les registres d'indice étaient dans un banc de registre séparés, car ils faisaient 4 bits chacun, contrairement au pointeur de pile et le ''program counter''. Un détail important est que les bancs de registres du 4004 étaient implémentés avec de la DRAM, et non des registres usuels fabriqués avec des bascules 1 bit.
[[File:Microarchitecture de l'Intel 4004.png|centre|vignette|upright=2.5|Microarchitecture de l'Intel 4004]]
<noinclude>
{{NavChapitre | book=Fonctionnement d'un ordinateur
| prev=Les architectures à pile et mémoire-mémoire
| prevText=Les architectures à pile et mémoire-mémoire
| next=Les processeurs de traitement du signal
| nextText=Les processeurs de traitement du signal
}}
</noinclude>
7yazsz3tr55dd2jt6i4cywc1q8msqna
765697
765696
2026-05-01T16:58:37Z
Mewtow
31375
/* Les microcontrôleurs PIC */
765697
wikitext
text/x-wiki
Nous avons déjà abordé la notion de processeur 8, 16, 32, 64 bits. Elle désigne la taille des registres généraux, ou de l'accumulateur. De nos jours, les processeurs 32 et 64 bits sont la norme, mais les premiers micro-processeurs étaient des processeurs 4 et 8, avant de passer rapidement au 16 bits. La raison est que leur budget en transistor limité faisait qu'on ne pouvait pas utiliser une ALU trop grande : une ALU 8 bit prend deux fois moins de place et de transistors qu'une ALU 16 bits. Cependant, les processeurs 8 bits avaient de sérieuses limitations qui étaient compensées par diverses solutions. Dans ce chapitre, nous allons faire une revue rapide des processeurs 8 bits et de leurs fonctionnalités.
La principale limitation des CPU 8 bits était l'adressage : des registres de 8 bits limitaient l'espace d'adressage à seulement 256 adresses, soit à peine 256 octets ! Intuitivement, on se dit que 256 octets est purement impraticable, on ne peut rien faire d'intéressant avec seulement 256 de RAM + ROM. Et c'est partiellement vrai. L'adage veut que 16 bits est la taille minimale intéressante, la limite à partir de laquelle on a assez de mémoire RAM/ROM pour coder des applications intéressantes. Mais 256 octets de RAM est largement suffisant sur de nombreux systèmes embarqués simples s'en accommodent : des caisses enregistreuses, des systèmes de régulation de feu de circulation, etc.
Pour les applications demandant plus de mémoire RAM, les CPU de l'époque contournaient la limitation de 256 octets de RAM avec de nombreux stratagèmes. Dans ce qui va suivre, nous allons séparer les CPU 8 bits selon qu'ils utilisent une architecture Harvard ou une architecture Von Neumann. La raison est qu'une architecture Harvard permet en soi de contourner partiellement ce problème d'adressage. Les choses sont plus compliquées avec une architecture Von Neumann.
==Les processeurs 8/16 bits à architecture Harvard ==
La première solution est d'utiliser une architecture Harvard. Le processeur 8 bit a alors deux espaces d'adressage : un pour la RAM, un autre pour la ROM. Et les deux utilisent des adresses de taille différente. La ROM est reliée à un bus d'adresse de 16 bits, alors que la RAM est elle connectée à un bus d'adresse de 8 bits. La RAM est donc limitée à 256 octets, alors que la ROM peut monter jusqu'à 64 kibioctets. Mine de rien, faire ainsi est largement suffisant.
Les processeurs de l'époque intégraient parfois les 256 octets de RAM directement dans le processeur. Beaucoup en implémentaient moins, avec par exemple seulement 64 octets de RAM, ou 32 octets, ou 128 octets. L'avantage est que cela éliminait le bus d'adresse des données et ne laissait que le bus d'adresse pour la ROM. On économisait ainsi beaucoup de broches sur le circuit intégré du CPU. Et pour les applications demandant plus de RAM, on pouvait ajouter un circuit séparé qui permettait d'adresser une RAM plus grande. Mais cela sera plus clair avec un exemple.
===Les microcontrôleurs PIC===
Les '''microcontrôleurs PIC''' regroupent des microcontrôleurs allant de microcontrôleurs 8 bit aux performances très faible, à des microcontrôleurs 32 bits bien plus puissants. Les microcontrôleurs PIC sont très utilisés dans l'embarqué ou d'informatique industrielle. Ils sont vendu à des volumes assez impressionnants, plusieurs millions par an. Et si vous avez ou êtes en train de faire des études d'électronique, je parie que vous les avez déjà vu en classe, ou que ce ne saurait tarder. Dans ce qui suit, nous allons nous concentrer sur les microcontrôleurs PIC 8 bits, à savoir les PIC 16, 16 et 18. Les PIC 24, qui sont des microcontrôleurs 16 bits, ne seront pas abordés.
Les microcontrôleurs PIC 8 bits incorporent une mémoire RAM très petite, ainsi qu'une architecture Harvard, comme dit plus haut. La mémoire ROM des PIC va de 1024 instructions à 4096 instructions. En comparaison, la mémoire RAM des microcontrôleurs PIC ne peut pas dépasser 256 adresses, et elle est encore plus petite en pratique sur certains modèles. Pour donner un exemple, le PIC16F84 a une RAM composée de 68 "registres" de 8 bits. Le terme "registres" devrait vous faire tiquer, mais il s'agit bien d'une mémoire SRAM séparée. Simplement, la documentation des PIC qualifie cette mémoire SRAM de "registres", et il faut admettre que la différence entre banc de registre et SRAM séparée est un peu floue.
[[File:DocPIC16F84 3.png|centre|vignette|upright=3|Espaces d'adressage du PIC16F84.]]
Un détail est que la SRAM n'a qu'un seul port qui sert à la fois pour les lectures et écritures. Pour compenser, les PIC sont des architectures à accumulateur, où une opérande est lue depuis la SRAM, l'autre depuis l'accumulateur. Leur implémentation de l'accumulateur ajoute une petite subtilité : le résultat d'une opération arithmétique peut être enregistré ailleurs que dans l'accumulateur. Le résultat peut aussi remplacer la seconde opérande, celle lue en mémoire RAM. Dit autrement, le résultat est enregistré dans l'adresse mémoire source. Les instructions de calcul ont le choix : un bit dans leur encodage précise où enregistrer le résultat.
{|
|-
|[[File:DocPIC16F84 4.png|centre|vignette|upright=2|Microarchitecture simplifiée d'un microcontroleur PIC (ici, un 16F84).]]
|[[File:DocPIC16F84 5.png|centre|vignette|upright=2|Microarchitecture simplifiée d'un microcontroleur PIC (ici, un 16F84), avec les branchements directs.]]
|}
Outre l'accumulateur, les PIC disposent de registres de contrôle, d'un ''program counter'', d'un registre d'état, et d'un pointeur de pile. Le registre d'état contient un registre séparé pour la retenue de l'addition/soustraction. Un détail assez original est que les registres précédents sont mappés en mémoire, à quelques exceptions près ! En clair, on peut y accéder en lisant/écrivant à une adresse mémoire bien précise. Les seules registres qui ne sont pas mappés en mémoire sont l'accumulateur, la pile d'appel, et les registres d'entrée-sortie. Les registres d'entrée-sortie permettent de lire ou écrire sur un port d'entrée-sortie ou de lire un ''timer''. En clair, les PIC ont un espace d'adressage séparé pour les entrées-sorties.
[[File:DocPIC16F84.png|centre|vignette|upright=2|DocPIC16F84]]
Le processeur de ces microcontrôleurs a un jeu d'instruction propriétaire, le jeu d'instruction PIC. Les instructions PIC sont très petites. Les premières versions du jeu d'instruction utilisaient des instructions codées sur 12 bits, dont 5 pour l'adresse mémoire de la seconde opérande. Pour les branchements, 3 bits étaient utilisés pour l'opcode, 9 pour l'adresse de destination. Par la suite, les instructions ont été étendues à 13 bits sur les PIC1670, puis à 14, 15 et 16 bits. Les adresses ont alors été élargies, ce qui permet d'adresser en peu plus de mémoire RAM.
Les instructions se limitent à des additions/soustractions, des opérations bit à bit,des branchements, des instructions LOAD/STORE, ainsi que des opérations de manipulation de bit. Il y a une instruction pour mettre une adresse à zéro, qui peut aussi mettre à zéro l’accumulateur.
Pour ce qui est des branchements, les PIC n'ont pas d'instructions de branchement conditionnels, ils font avec une SKIP instruction et des branchements inconditionnels. Par contre, ils ont des branchements pour les appels et retour de fonction. Mieux que ça, ils intègrent une pile d'appel d'environ 8 adresses de retour. Pour donner une idée, l'adresse de retour est encodée sur 10 bits sur les PIC16F84.
Pour les instructions de manipulation de bit, il y a des instructions pour tester/masquer un bit dans une opérande, 4 en tout ( mettre à 0, mettre à 1, tester si bit = 1, tester si bit = 0). Les instructions qui testent un bit prennent leur opérande dans l'accumulateur. Il y a aussi deux instructions de rotation à gauche et droite, qui tiennent compte de la retenue mémorisée dans le registre d'état. Mentionnons aussi une instruction pour inverser deux ''nibbles'' dans un octet.
Les PIC ont aussi des instructions d'incrémentation et de décrémentation, un peu spéciales. Ces dernières regroupent : une incrémentation normale, une décrémentation normale, une décrémentation fusionnée avec une instruction SKIP, et une incrémentation fusionnée avec une instruction SKIP. Les deux dernières incrémentent/décrémentent l'accumulateur et SKIP l'instruction suivante si le résultat est zéro. Elles permettent de fortement simplifier l'implémentation des boucles qui s'exécutent tant que leur compteur atteint zéro.
Les modèles haute performance ajoutent des instructions d'addition avec retenue entrante, idem pour la soustraction. De telles instructions ssont très utiles pour faire des additions/soustractions sur des opérandes de 16 bits. Le processeur a beau être un CPU 8 bits, il peut être utilisé pour faire des calculs 16 bits, la performance est alors amoindrie, mais ce n'est pas un problème pour les applications d'un tel microcontroleur.
Les PIC gèrent l'adressage absolu et indirect. L'adressage absolu, celui où l'adresse est intégrée dans l'instruction, est très simple à implémenter. Les adresses prennent moins d'un octet, vu que la taille de la RAM est très petite, les adresses sont très courtes, les intégrer dans des instructions elles-mêmes courtes n'est pas un problème. L'adresse est encodée sur 5 à 7 bits, selon le modèle, ce qui permet d'adresser entre 32 et 128 octets.
: Les PIC 18 peuvent adresser plus de 256 octets de RAM en utilisant la commutation de banques, une technique qui sera abordée dans plusieurs chapitres.
Pour l'adressage indirect, les PIC intègrent un registre d'adresse dédié. Il s'agit du registre FSR, qui mémorise l'adresse à lire/écrire. Il est possible de copier un pointeur dedans, qui provient soit de l'accumulateur, soit de la mémoire SRAM. Dans les deux cas, la donnée adressée est copiée dans un registre INDR, qui sert de registre d’interfaçage mémoire avec le bus de données. Le registre FSR est directement connecté sur le bus d'adresse. Les modèles de base se débrouillent avec un registre FSR et un registre INDR, mais les modèles plus performants ont deux ou trois copies de chaque registre. Les modèles PIC18 ajoutent aussi des instructions LOAD/STORE avec les modes d'adressage à post- ou pré-incrément/décrément, et le mode d'adressage "Base + Indice + Décalage".
Avec tout ce qu'on vient de dire, vous devriez pouvoir comprendre la microarchitecture d'un PIC, qui est résumée dans ce schéma.
[[File:DocPIC16F84 all.png|centre|vignette|upright=2.5|Microarchitecture du PIC16F84.]]
===Le Fairchild F8 et la console de jeu Fairchild Channel F===
Un autre exemple est la Fairchild F8 de la défunte entreprise Fairchild Semiconductor. Il incorpore un processeur 8 bits, c'est à dire que le processeur fait des calculs sur des entiers de 8 bits maximum, une mémoire RAM de 64 octets, ainsi qu'une mémoire ROM de 1 kibioctet. Les 64 octets de RAM sont certes très peu, mais c'est suffisant pour certaines applications simples, comme les caisses automatiques de l'époque, ou des applications embarquées. Et de toute façon, il est possible d'ajouter de la mémoire RAM supplémentaire si les 64 octets de RAM intégrée ne suffisent pas. Le système était donc modulaire, adaptable selon les besoins, peu cher pour son implémentation minimale sans RAM en plus.
Vu qu'il s'agit d'un des tout premiers ordinateurs, il est sorti à une époque où la technologie était rudimentaire. À cette époque, le processeur était composé de pièces détachées qu'il fallait souder ensemble pour obtenir un processeur fonctionnel. Ce n'est que plus tard qu'est apparu le micro-processeur, qui regroupe un processeur complet dans un seul circuit intégré. Le résultat est que le processeur du Fairchild F8 est coupé en deux, l'unité de calcul et l'unité de contrôle sont placés dans des pièces détachées séparés.
Le microcontrôleur est composé de trois à quatre pièces détachées, certaines étant optionnelles. La première est le '''3850 CPU''', qui regroupe l'unité de calcul et la mémoire RAM intégrée. La seconde est le PSU (''3851 Program Storage Unit''), qui regroupe la mémoire ROM et l'unité de contrôle, ''program counter'' inclut. S'il y a besoin d'utiliser plus de RAM, il faut ajouter un circuit d’interface mémoire, qui est au choix le ''3852 Dynamic Memory Interface'' (DMI) ou le ''3853 Static Memory Interface'', le premier étant connecté à une mémoire de type DRAM, l'autre à une SRAM (nous verrons ce que sont les DRAM et les SRAM dans le prochain chapitre).
[[File:Fairchild F8.png|centre|vignette|upright=2|Fairchild F8]]
Le système minimal est composé d'un PSU et d'un 3850, sans les circuits d'interface mémoire. Le tout donne un système avec un processeur 8 bit, 64 octets de RAM et 1 kibioctet de ROM, les deux mémoires étant intégrées dans le "processeur". Le processeur gérait 4 entrées-sorties, chacune étant reliée avec un bus de 8 bit au processeur. Au passage, en 1977, Mostek a créé un microcontrôleur qui regroupe un PSU et un 3850 : le Mostek 3870. Le système minimal n'avait pas de bus d'adresse, vu que la RAM était intégrée au processeur. C'est les 3852 et 3853 qui ajoutaient un bus d'adresse. Ils ajoutent un bus d'adresse de 16 bits, ce qui permet d'adresser 64 kibioctets de RAM.
[[File:Fairchild-Channel-F.jpg|vignette|un Fairchild Channel F]]
Le Fairchild F8 a été utilisé dans la Fairchild Channel F, une des toute première console de seconde génération, à savoir des consoles qui utilisaient des cartouches de jeu. Avant les consoles de seconde génération, les consoles étaient non-programmables. Elles étaient conçues pour faire tourner un jeu précis, aucun autre, le jeu étant implémenté dans leurs circuits.
La Fairchild Channel F est composé du système minimal, auquel on a ajouté une carte son rudimentaire et 2 kibioctets de mémoire vidéo. La mémoire vidéo sert uniquement pour afficher des images à l'écran : on écrit l'image à afficher dedans, un circuit vidéo se charge de l'afficher à l'écran automatiquement. Le processeur ne fait qu'écrire dans cette RAM vidéo, il ne peut pas en lire le contenu. De la RAM supplémentaire peut cependant être ajoutée dans les cartouches de jeu.
===L'usage d'une architecture Harvard modifiée : les consoles 8 bits===
Pour encore améliorer la situation, il est possible d'utiliser une architecture Harvard modifiée, qui permet de lire des données depuis la mémoire ROM. Cela réduit encore plus les besoins en mémoire RAM. Les constantes manipulées par le programme sont mémorisées en ROM, lues depuis la ROM, au lieu d'être chargées en RAM. Les consoles de jeu utilisaient beaucoup de stratagème.
L'exemple type est celui des consoles 8 bits avec des graphismes en 2D. La cartouche de jeu contenait une ROM, qui mémorisait le code du jeu, les niveaux, les sprites et autres données graphiques. Leur carte graphique lisait directement les ''sprites'' depuis la mémoire ROM, sans avoir à les charger en mémoire vidéo. La mémoire vidéo se contentait de mémoriser le reste des informations graphiques, ainsi que des pointeurs vers les ''sprites'' en ROM. En conséquence, les consoles 8 bits n'avaient pas besoin de beaucoup de RAM, vu qu'une grande partie des données utiles étaient dans une ROM directement accessible par le processeur. A l'opposé, les micro-ordinateurs devaient copier les données d'un jeu depuis une disquette dans la mémoire RAM, ce qui demandait d'avoir plus de RAM.
Le passage au support CD sur les consoles 32 bits a eu la même conséquence. Le processeur ne pouvant pas lire directement le CD à sa guise, il fallait copier les données du CD en RAM. D'où l'apparition de temps de chargement assez longs, inexistants sur support cartouche.
Avec ce genre de stratagèmes, 256 octets de RAM est largement suffisant sur de nombreux systèmes, à condition qu'on ait assez de ROM pour coder un programme digne de ce nom. Par exemple, de nombreux systèmes embarqués simples s'en accommodent : des caisses enregistreuses, des systèmes de régulation de feu de circulation, etc.
===Le HP Nanoprocessor : un processeur sans ALU===
Un dernier exemple est celui du processeur HP Nanoprocessor, de l'entreprise HP. Il a été commercialisé en 1974, en même temps que les premiers micro-processeurs d'Intel. Tous les processeurs de l'époque étaient des processeurs 8 bits et le HP Nanoprocessor ne faisait pas exception. Ce n'était pas un processeur haute performance, il était destiné à des applications d'informatique industrielle ou embarquée. D'ailleurs, il utilisait des transistors de type metal-gate, peu performants, là où ses contemporains utilisait des transistors en silicium, plus performants.
Mais une caractéristique qui rend cela encore plus claire est qu'il n'y a pas d'ALU ! En effet, ce processeur est incapable de faire des additions, des soustractions ou autres opérations simples ! Il est cependant capable d'effectuer des incrémentations et décrémentations, des décalages, des opérations logiques comme des ET/OU/NON/XOR et bien d'autres. Il supporte en tout 48 instructions, avec un support limité des modes d'adressage indirects. Les instructions de branchement étaient des instructions SKIP, il n'y avait pas d'instructions de branchement généralistes.
Pour ce qui est des registres, il disposait de 16 registres de 8 bits et d'un accumulateur. Niveau mémoire, il était relié à une mémoire ROM, rien de plus. Il n'avait de RAM supplémentaire qu'on pouvait lui adjoindre, il devait se débrouiller avec seulement ses registres. Et cela ne posait pas de problèmes pour son usage. Seul le mode d'adressage indirect à registre est supporté, il n'y a pas de registres d'indices. Ce mode d'adressage permet de lire des données en mémoire ROM, la ROM pouvant contenir des tableaux de valeurs constantes.
: Il est possible de lui adjoindre de la RAM via les ports d'entrée-sortie, ainsi qu'une ALU, mais RAM et ALU sont traités comme des périphériques avec lesquels on communique, ils ne sont pas intégrés au processeur.
Niveau micro-architecture, il incorporait une unité de calcul logique et un circuit comparateur. Le comparateur était un circuit comparateur série des plus basiques, qui était utilisé pour les instructions de branchement et associées. L'unité de calcul logique gérait des incrémentations/décrémentation, des décalages, les opérations logiques et quelques autres. L'unité de calcul logique était bit-slicée, à savoir conçue en assemblant 8 ALU de 1 bit chacune, enchainées en série. Le tout était combiné à des circuits de ''carry skip''.
[[File:Unité de calcul du HP nanonprocessor.png|centre|vignette|upright=2|Unité de calcul du HP nanoprocessor]]
Son unité de décodage d'instruction était très simple, essentiellement basée sur des portes NOR, grâce à un encodage efficace des instructions machine. Le ''program counter'' fait 11 bits, ce qui permet d'adresser une ROM de 2 kibioctets. Le ''program counter'' était relié à un circuit incrémenteur qui gérait les isntructions SKIP (il pouvait incrémenter le ''program counter'' par pas de 1 ou de 2 en cas de SKIP). Le processeur contient aussi deux registres, qui servent en quelque sorte de pile d'adresse de retour. Un premier registre mémorise l'adresse de retour d'une fonction, l'autre mémorise le ''program counter'' lors d'une interruption, pour savoir où brancher à la fin de l'interruption.
[[File:HP nanoprocessor.png|centre|vignette|upright=2.5|HP nanoprocessor]]
Fait intéressant, le concepteur du processeur a gracieusement donné les masques utilisés pour graver le silicium du processeur au site [https://www.cpushack.com/ CPU Shack]. Les masques en question sont disponibles ici :
* [https://www.cpushack.com/2020/08/20/hp-nanoprocessor-mask-set/ HP NanoProcessor Mask Set]
* [https://www.cpushack.com/2020/08/09/the-forgotten-ones-hp-nanoprocessor/ The Forgotten Ones: HP Nanoprocessor]
Les masques ont été analysés par Ken Shirrif dans cet article de blog :
* [https://www.righto.com/2020/09/hp-nanoprocessor-part-ii-reverse.html HP Nanoprocessor part II: Reverse-engineering the circuits from the masks]
==Les processeurs 8/16 bits à architecture Von Neumann==
L'usage d'une architecture Harvard est une solution pour adresser plus de mémoire avec des CPU 8 bits. Mais plusieurs microprocesseurs commerciaux n'utilisaient pas cette solution. À la place, c'était des architectures Von Neumann, mais qui étaient capables de gérer des adresses de 16 bits. Les données faisaient 8 bits, les registres faisaient 8 bits, mais quelques techniques permettaient de gérer des adresses de 16 bits. Nous parlerons de '''processeurs 8/16 bits''' pour les désigner, et nous allons les étudier à part.
Un point important est que la gestion d'adresses de 16 bits permet d'adresser 64 kibioctets, qui peuvent être remplis avec de la RAM et de la ROM. On a donc le meilleur des mondes : 64 kibioctets de mémoire, mais avec des données de 8 bits et les économies de circuit qui vont avec. L'avantage est que le processeur peut maintenant gérer une vraie pile d'appel, pas seulement une pile d'adresse de retour. Il lui suffit pour cela d'intégrer un pointeur de pile codé sur 16 bits.
===Les modes d'adressage par page des CPU Motorola===
Les processeurs Motorola 8 bits étaient des processeurs 8 bits avec un bus d'adresse de 16 bits. C'était des processeurs à accumulateur incorporant deux registres d'indice, un registre d'état, un pointeur de pile, et un ''program counter''. Tous les registres sont reliés au bus d'adresse, sauf le registre d'état et l’accumulateur. Tous les registres font 8 bits, sauf le ''program counter''. La pile est câblée pour être dans un bloc de 256 octets compris entre l'adresse 1 0000 0000 et l'adresse 1 1111 1111, ce qui fait que son adressage se fait avec un seul octet.
[[File:6502-architecture.svg|centre|vignette|upright=1.5|Architecture simplifiée du 6502.</br> X et Y : registres d'indice ;</br> S : le pointeur de pile ;</br> A : accumulateur ;</br>P : registre d'état.</br>]]
Les processeurs Motorola 8 bits utilisaient une méthode simple pour adresser 64 kibioctets de RAM, avec des registres de 8 bits. Pour cela, ils utilisaient une variante de l'adressage base + décalage. Elle améliore l'adressage absolu, qui intègre l'adresse à lire/écrire dans l'instruction elle-même. L'adresse en question est de 8 bits et n'encode que les 8 bits de poids faible de l'adresse, les 8 bits de poids fort sont dans un '''registre de page''' adressé implicitement. L'adresse finale est obtenue en concaténant ce registre avec l'adresse mémoire intégrée dans l’instruction. Le résultat est que la mémoire était découpée en blocs de 256 consécutifs, chacun pouvant servir de fenêtre de 256 octets. Une page est réservée pour la pile, la seconde, comme dit plus haut.
Formellement, ce mode d'adressage a des ressemblances avec la commutation de banques, une technique qu'on verra dans les chapitres sur l'espace d'adressage et la mémoire virtuelle. Mais ce n'en est pas du tout : le registre de page est utilisé uniquement pour les accès mémoire avec le mode d'adressage base + décalage, mais pas pour les autres accès mémoire, qui gèrent des adresses complètes. Notons que l'usage d'un registre de page dédié fait que celui-ci est adressé implicitement.
Il faut noter que la technique a été utilisée sur des processeurs 16 bits, pour contourner la petite taille des instructions. Un exemple est celui du HP 2100, un processeur 16 bits. Il avait un registre de page de 5 bits et encodait 10 bits d'adresse dans ses instructions. Ses instructions d'accès mémoire disposaient d'un bit qui choisit quel mode d'adressage utiliser. S'il était à 0, l'adressage absolu était utilisé, le registre de page n'était pas utilisé. Mais s'il était à 1, le registre de page était utilisé pour calculer l'adresse.
Une évolution de l'adressage précédent est le '''mode page direct'''. Avec lui, le registre de page est étendu et contient une adresse mémoire complète. L'adresse finale n'est pas obtenue par concaténation, mais en additionnant le registre de page avec l'adresse fournie par adressage absolu + décalage. Un exemple est celui des premiers processeurs Motorola, qui géraient des adresses courtes de 8 bits. L'adresse courte de 8 bits correspondait non pas aux 256 premiers octets de la mémoire, mais à une fenêtre de 256 octets déplaçable en mémoire. La position de la fenêtre de 256 octets était spécifiée par le registre de page de 16 bits, qui précisait l'adresse du début de la fenêtre, celle de sa première donnée.
Il s'agit donc formellement d'adressage base + décalage, à un détail près : il n'y a qu'un seul registre de base. Le fait que ce registre de base soit unique fait qu'il est adressé implicitement, on n'a pas à encoder le numéro/noms de registre dans l'instruction. Le registre de base est utilisé uniquement pour l'adressage absolu, pas pour les autres accès mémoire. S'il y a des ressemblances avec la segmentation, une technique de mémoire virtuelle qu'on abordera dans quelques chapitres, ce n'en est pas vu que le registre de base est utilisé seulement pour un mode d'adressage bien précis.
===Le ''pseudo-aliasing'' des registres des processeurs Intel x86===
Voyons maintenant le cas des anciens processeurs 8 bits d'Intel à savoir l'Intel 4004, 4040, 8008 et 8080. Le Z80, un processeur inspiré des CPU Intel 8 bits, est aussi concerné. Avant de poursuivre, parlons des registres de ces processeurs. Les premiers CPU Intel incorporaient 7 registres de 8 bits nommés A, B, C, D, E, F, H, L, SP. Ils correspondent respectivement à : l'accumulateur A ; six registres nommés B, C, D, E, H et L ; le registre d'état F ; le pointeur de pile SP. Le Z80 ajoute deux registres d'indice X et Y. De plus, le Z80 dispose de registres d'interruption, qui sont en quelque sorte des copies des registres A, B, C, D, E, F, H, L. Le tout est illustré dans le tableau ci-dessous.
{|class="wikitable" style="text-align:center;"
|-
!
! Registres des CPU Intel
! Registres supplémentaires du Z80
|-
! Accumulateur
| A
| A'
|-
! Registre d'état
| F
| F'
|-
! Registres généraux
| B, C, D, E, H, L
| B', C', D', E', H', L'
|-
! Pointeur de pile
| colspan="2" | SP (sauf pour le 8008)
|-
! Registres d'indice
|
| X et Y
|}
Le 8008 incorpore une pile d'appel de 7 adresses, dans le processeur lui-même. Il en est de la même avec le 4004 et le 4040, comme on le verra dans la section sur les processeurs 4 bits. Mais le 8080 et le 8085 ont remplacé le tout par un simple pointeur de pile, afin d'avoir une véritable pile d'appel. Autant c'est impossible d'avoir une pile d'appel avec seulement 256 octets de mémoire, autant on peut se le permettre avec 65 536 adresses.
Pour gérer des adresses de 16 bits, ils auraient pu utiliser des registres d'adresse séparés, mais on préféré un système de '''pseudo-''aliasing'' de registres'''. Formellement, c'est un système qui concatène deux registres 8 bits pour obtenir une adresse de 16 bits. L’appariement a lieu lors de certaines opérations bien précises, qui n'ont de sens que pour les adresses : la lecture/écriture en mémoire, et l'incrémentation.
Il y avait cependant des contraintes quant aux paires de registres possibles, toutes les paires de registres n'étaient pas autorisées. Les CPU concernés sont donc des processeurs hybrides accumulateur-registre généraux. L'accumulateur ne peut pas être appairé, seuls les registres généraux le peuvent. Le Z80 autorise plus de paires que les CPU Intel. Voici les paires de registres qui pouvaient servir d'adresse 16 bits :
* Les CPU 8008 d'Intel autorisait une seule paire formée des registres H et L.
* Les autres processeurs, à savoir le 8080, le 8085 et le Z80, autorisaient : les paires BC, DE et HL.
Le 8008 ne gérait que des opérations sur 8 bits. Mais le 8080 et le 8085 ont ajouté des instructions 16 bits qui agissaient sur des paires de registre, que le Z80 a repris. Une paire de registres est considérée comme un registre unique de 16 bits pour certaines opérations arithmétiques, dont l'incrémentation. Voici la liste des instructions concernées :
* INC et DEC pour l'incrémentation et la décrémentation ;
* DAD : additionne le registre HL avec une autre paire (Hl inclus) ;
* LXI : copie une constante immédiate dans une paire de registres ;
* LHLD : lit 16 depuis la mémoire et l'enregistre dans une paire de registres ;
* SHLD : copie 16 bits depuis une paire de registres et l'enregistre en mémoire ;
* PUSH et POP : empile ou dépilent une paire de registre sur la pile ;
* XTHL : échange la paire HL avec les 16 bits au sommet de la pile d'appel ;
* XCHG : échange le contenu de la paire HL et DE.
Pour résumer, le processeur avait des instructions LOAD, STORE, PUSH et POP adaptées pour gérer des paires de registre. De plus, l'instruction XCHG permettait d’échanger le contenu des paires DE et HL. L'instruction a été étendue sur les processeurs 16 bits pour échanger tous les registres. Mais l'implémentation était alors différente. L'incrémentation sur une paire de 16 bit était très utile, car les adresses sont souvent incrémentées quand on parcours un tableau. Ces instructions nous donnent quelques indices sur ce qu'il y a dans le processeur.
Le système de pseudo-aliasing a un impact sur le banc de registre. Le banc de registre regroupe les registres généraux et le pointeur de pile, mais ne contient pas l'accumulateur. Les contraintes sur les paires de registres possibles ne s'expliquent que d'une seule manière : le banc de registre contient des registres de 16 bits, une paire de registres 8 bits est mémorisée dans un registre unique. Il faut donc faire une différence entre les registres architecturaux de 8 bits, et les registres réels de 16 bits.
Le banc de registre a un port de 8 bits pour les données, qui est fabriqué à partir d'un port 16 bits auquel on a rajouté un multiplexeur pour choisir soit l'octet de poids faible, soit l'octet de poids fort. Le bus de données fait 8 bits, ce qui fait que les instructions LOAD, STORE, PUSH et POP pour paires 16 bits sont réalisées en deux fois : on lit/écrit l'octet de poids faible, puis celui de poids fort. Par contre, le bus d'adresse fait bien 16 bits. Cela suggère que le banc de registre dispose d'un port de 16 bits dédié aux adresses, en plus du port de données 8 bits.
[[File:Architecture d'un CPU 8-16 bits avec un banc de registre double port.png|centre|vignette|upright=2|Architecture d'un CPU 8-16 bits avec un banc de registre double port]]
L'incrémentation d'une paire 16 bits ne coute rien à implémenter, ou presque. En effet, le processeur incorpore un incrémenteur 16 bits pour le ''program counter'', qui est relié au bus d'adresse. L'idée est de rentabiliser cet incrémenteur, en lui permettant d'incrémenter des données/adresses de 16 bits obtenues via pseudo-aliasing. De même, il peut être utilisé pour incrémenter le pointeur de pile, voire un compteur de rafraichissement mémoire (pour rappel, le rafraîchissement mémoire demande de balayer la mémoire d'adresse en adresse et été fait par le CPU à l'époque). Pour cela, il suffit de connecter le ''program counter'', le banc de registre, et l'incrémenteur, via un bus dédié.
[[File:Calcul d'adresse par ALU dédiée avec PC séparé.png|centre|vignette|upright=2|Calcul d'adresse par ALU dédiée avec PC séparé]]
Notez qu'on peut encore simplifier le tout en placant le ''program counter'' dans le banc de registre, ce qui ne gênera pas le travail de l'incrémenteur mais simplifiera le câblage au bus d'adresse. Ce n'était pas systématique, certains processeurs mettaient le ''program counter'' dans le banc de registre, d'autres non.
: Inclure le ''program counter'' dans le banc de registre permet parfois de remplir un vide. Par exemple, sur un processeur avec 12 registres, le banc de registre devrait faire idéalement 16 registres, inclure le ''program counter'' dedans fait monter le tout à 13.
[[File:Architecture d'un CPU 8-16 bits.png|centre|vignette|upright=2|Architecture d'un CPU 8-16 bits]]
Les processeurs Intel 8 bits, à savoir le 8008, le 8080 et le 8085 ; mettaient le ''program counter'' dans le banc de registre. Vous avez donc toutes les armes pour comprendre leur micro-architecture. Par exemple, voici la micro-architecture du processeur 8080. Remarquez le banc de registre, qui contient tous les registres sauf l'accumulateur et le registre. Il a deux ports : un pour les adresses et un pour les données. Notez le dé-multiplexeur sur le port de donnée. Pour le reste, il s'agit d'une architecture à accumulateur hybride des plus classiques.
[[File:Intel 8080 arch.svg|centre|vignette|upright=3|Microarchitecture de l'Intel 8080.]]
Le Z80 est un processeur inspiré du design des processeurs Intel 8 bits, mais avec pas mal d'améliorations. Un point particulier de ce processeur est son banc de registre. Il contient tous les registres du processeur, y compris l'accumulateur et le registre d'état ! Les seuls registres en-dehors du banc de registre sont le ''program counter'' et un compteur de rafraichissement mémoire IR.
Un autre point particulier est que les registres dans le banc de registres avaient une copie séparée accessible uniquement pour les interruptions, via fenêtrage de registres. Et l'accumulateur et le registre d'état étant dans le banc de registre, il y avait deux accumulateurs et deux registres d'état. Les registres A, B, C, D, E et F étaient dupliqués, par le pointeur de pile ni les registres d'indice. Les copies des registres étaient nommées A', B', C', D', E' et F'.
Le Z80 supportait des instructions d'échange de registre en plus des CPU Intel 8 bits. L'instruction EX peut échanger soit le contenu des paires D,E et H,F, soit la paire A,F avec la paire A',F'. L'instruction EXX échange les paires BC, DE, HL avec les paires BC', DE', HL'. En faisant cela, le programmeur pouvait utiliser deux fois plus de registres généraux s'il n'utilisait pas les interruptions. L'échange de paires se fait sans copies de registres, mais simplement en modifiant l'adresse envoyée sur le banc de registre. Pour cela, plusieurs bascules mémorisent des bits qui indiquent si les paires ont été échangées ou non. Il y a une bascule pour les paires DE , HL ; une autre pour les paires A,F et paire A',F', une dernière pour l'instruction EXX. En combinant ces bascules avec les noms de registres envoyés par le séquenceur, on peut échanger les paires de registres.
==Le cas particulier des processeurs 4 bits : le 4004 d'Intel==
L'Intel 4004 était le tout premier micro-processeur. Il s'agissait d'un microprocesseur de 4 bits, basé sur une architecture à accumulateur. Il disposait d'un accumulateur et de 16 registres d'indice, tous de 4 bits. Il faisait des calculs sur des données de 4 bits, appelées des nibbles. Cependant, sur ses 46 instructions machines supportées, 41 agissaient sur des opérandes de 8 bits, les 5 restantes sur des opérandes de 16 bits. Simplement, les calculs se faisaient en deux fois, en échangeant des données entre mémoire RAM et accumulateur.
Le 4004 est un circuit intégré avec peu de broches. Il dispose notamment d'un bus de données/adresse, qui est multiplexé, c’est-à-dire qu'il sert alternativement de bus de données et de bus d'adresse selon les besoins. Le bus de commande mémoire fait 5 bits, dont 4 pour les chips de RAM, un pour la ROM. Les adresses sont codées sur 12 bits, les données sur 4 et les instructions sur 8 bits. L'envoi d'une adresse sur le bus se fait en plusieurs fois, de même que la lecture d'une instruction. Il s'agit là d'une adaptation pour outrepasser les limitations d'un processeur 4 bit.
[[File:Intel 4004 processor pinout.png|centre|vignette|upright=2|Broches de l'Intel 4004. Nous verrons à quoi elles servent plus bas.]]
===L'espace d'adressage de l'Intel 4004===
Les adresses du processeur sont sur 12 bits, ce qui fait 4096 adresses différentes. Elles regroupent à la fois la ROM et la mémoire RAM, vu que l'architecture est une sorte de mélange bizarre entre une architecture Von Neumann et Harvard. Le processeur gère bien deux espaces d'adressage séparés, mais la RAM et la ROM sont reliés au même bus. La sortie CM-ROM du processeur indique si l'adresse envoyée correspond à la RAM ou la ROM. Un circuit de décodage d'adresse active ou désactive la RAM selon la valeur de ce bit, l'inverse pour la ROM, en agissant sur leurs bits Chip Select. Seule la RAM ou la ROM répondent alors à l'adresse.
Pour ce qui est de la RAM, le circuit de décodage d'adresse pouvait gérer au maximum 1024 adresses différentes, chacune contenant un nibble. Pour cela, le CPU 4004 était relié à une ou plusieurs RAM externes, des Intel 4002. Chaque Intel 4002 contenait 64 nibbles de données, plus 16 nibbles de statut qu'on ne détaillera pas ici. Les nibbles de statut étaient accessibles en utilisant des instructions d'entrée-sortie, donc pas avec des lectures/écritures mémoire. Les 64 nibbles de données sont découpés en 4 groupes de 16 nibbles. Le CPU pouvait être relié à maximum 16 Intel 4002, ce qui fait 1024 nibbles de données et 256 nibbles de statut. L'ensemble permet de remplir l'espace d'adressage de 1024 adresses.
===Le registre de page et le pseudo-aliasing des registres===
Sélectionner une adresse mémoire utilisait un mélange entre pseudo-aliasing et registre de page. Pour les données, les 1024 adresses étaient découpées en 4 pages de 256 adresses. Pour la ROM, les 4096 adresses étaient découpées en 16 pages de 256 adresses. Localiser une donnée dans une page ne requiert que 8 bits, 2/4 bits supplémentaires permettent de sélectionner la page voulue. Le registre de page était dans le processeur lui-même, et était relié aux sorties du processeur nommées CM-RAM 0, 1, 2 et 3. Les 4 sorties encodaient un nombre qui permet de sélectionner le numéro de page voulu.
Le registre de page fait 5 bits : un pour distinguer RAM et ROM, 4 bits pour sélectionner la page voulue. L'avantage est que la carte mère gère au maximum 16 chips de RAM, ce qui colle parfaitement avec les 4 utilisés pour sélectionner une page. Un chip de RAM correspond à une page, et chacun est activé ou désactivé suivant la page sélectionnée. Pour cela, il suffit d'ajouter un décodeur sur la carte mère, qui prend les 4 bits du registre de page et fournit les signaux Chip Select aux différents chips de RAM.
Reste alors à utiliser les 8 bits d'adresse à l'intérieur d'un chip de RAM. Le 4004 permettait de concaténer deux registres d'indice de 4 bits pour former une adresse de 8 bits. Les instructions d'accès mémoire pouvaient ainsi préciser une paire de registre d'indice pour préciser quelle adresse lire/écrire. Idem pour les branchements indirects : le processeur supportait une instruction de branchement indirect qui précisait l'adresse dans une paire de registres d'indice. Les registres d'indice sont donc assez mal nommés sur cette architecture, vu qu'ils peuvent servir soit de registre d'indice, soit de demi-registre d'adresse. Il s'agit là du système de pseudo-aliasing des registres, mais appliqué aux registres d'indice.
L'Intel 4004 gérait deux instructions pour gérer les adresses mémoires. La première, l'instruction DCL (''Designate Command Line'') configure le registre de page. Elle prend en entrée un numéro de page et le copie dans le registre de page. L'opérande peut provenir d'un registre d'indice ou de l'accumulateur. La seconde, l'instruction SRC (''Send Register Control'') concatène deux registres d'indice pour obtenir une adresse de 8 bits. Un accès mémoire se fait donc en maximum trois instructions : une qui configure le registre de page si ce n'est pas déjà fait, une instruction SRC pour envoyer l'adresse, et une troisième instruction qui dit s'il faut faire une lecture ou une écriture.
===La microarchitecture de l'Intel 4004===
Il incorporait une pile d'adresse de retour intégrée au processeur. La pile d'adresse acceptait exactement 3 adresses maximum. Elle était regroupée avec le ''program counter'' dans un banc de registre, de 4 registres. Le ''program counter'' et le pointeur de pile faisaient chacun 12 bits, soit trois nibble. Ils étaient incrémentés par un incrémenteur dédié.
SI on omet le registre de page et la pile d'adresse, le 4004 est une architecture à accumulateur des plus classiques, avec un bus interne unique, un banc de registre pour les registres d'indices, un accumulateur relié à une unité de calcul. Les registres d'indice étaient dans un banc de registre séparés, car ils faisaient 4 bits chacun, contrairement au pointeur de pile et le ''program counter''. Un détail important est que les bancs de registres du 4004 étaient implémentés avec de la DRAM, et non des registres usuels fabriqués avec des bascules 1 bit.
[[File:Microarchitecture de l'Intel 4004.png|centre|vignette|upright=2.5|Microarchitecture de l'Intel 4004]]
<noinclude>
{{NavChapitre | book=Fonctionnement d'un ordinateur
| prev=Les architectures à pile et mémoire-mémoire
| prevText=Les architectures à pile et mémoire-mémoire
| next=Les processeurs de traitement du signal
| nextText=Les processeurs de traitement du signal
}}
</noinclude>
mpjvvjuxx4uaczos8grpjqt35kx6s1f
765698
765697
2026-05-01T16:59:27Z
Mewtow
31375
/* Les microcontrôleurs PIC */
765698
wikitext
text/x-wiki
Nous avons déjà abordé la notion de processeur 8, 16, 32, 64 bits. Elle désigne la taille des registres généraux, ou de l'accumulateur. De nos jours, les processeurs 32 et 64 bits sont la norme, mais les premiers micro-processeurs étaient des processeurs 4 et 8, avant de passer rapidement au 16 bits. La raison est que leur budget en transistor limité faisait qu'on ne pouvait pas utiliser une ALU trop grande : une ALU 8 bit prend deux fois moins de place et de transistors qu'une ALU 16 bits. Cependant, les processeurs 8 bits avaient de sérieuses limitations qui étaient compensées par diverses solutions. Dans ce chapitre, nous allons faire une revue rapide des processeurs 8 bits et de leurs fonctionnalités.
La principale limitation des CPU 8 bits était l'adressage : des registres de 8 bits limitaient l'espace d'adressage à seulement 256 adresses, soit à peine 256 octets ! Intuitivement, on se dit que 256 octets est purement impraticable, on ne peut rien faire d'intéressant avec seulement 256 de RAM + ROM. Et c'est partiellement vrai. L'adage veut que 16 bits est la taille minimale intéressante, la limite à partir de laquelle on a assez de mémoire RAM/ROM pour coder des applications intéressantes. Mais 256 octets de RAM est largement suffisant sur de nombreux systèmes embarqués simples s'en accommodent : des caisses enregistreuses, des systèmes de régulation de feu de circulation, etc.
Pour les applications demandant plus de mémoire RAM, les CPU de l'époque contournaient la limitation de 256 octets de RAM avec de nombreux stratagèmes. Dans ce qui va suivre, nous allons séparer les CPU 8 bits selon qu'ils utilisent une architecture Harvard ou une architecture Von Neumann. La raison est qu'une architecture Harvard permet en soi de contourner partiellement ce problème d'adressage. Les choses sont plus compliquées avec une architecture Von Neumann.
==Les processeurs 8/16 bits à architecture Harvard ==
La première solution est d'utiliser une architecture Harvard. Le processeur 8 bit a alors deux espaces d'adressage : un pour la RAM, un autre pour la ROM. Et les deux utilisent des adresses de taille différente. La ROM est reliée à un bus d'adresse de 16 bits, alors que la RAM est elle connectée à un bus d'adresse de 8 bits. La RAM est donc limitée à 256 octets, alors que la ROM peut monter jusqu'à 64 kibioctets. Mine de rien, faire ainsi est largement suffisant.
Les processeurs de l'époque intégraient parfois les 256 octets de RAM directement dans le processeur. Beaucoup en implémentaient moins, avec par exemple seulement 64 octets de RAM, ou 32 octets, ou 128 octets. L'avantage est que cela éliminait le bus d'adresse des données et ne laissait que le bus d'adresse pour la ROM. On économisait ainsi beaucoup de broches sur le circuit intégré du CPU. Et pour les applications demandant plus de RAM, on pouvait ajouter un circuit séparé qui permettait d'adresser une RAM plus grande. Mais cela sera plus clair avec un exemple.
===Les microcontrôleurs PIC===
Les '''microcontrôleurs PIC''' regroupent des microcontrôleurs allant de microcontrôleurs 8 bit aux performances très faible, à des microcontrôleurs 32 bits bien plus puissants. Les microcontrôleurs PIC sont très utilisés dans l'embarqué ou d'informatique industrielle. Ils sont vendu à des volumes assez impressionnants, plusieurs millions par an. Et si vous avez ou êtes en train de faire des études d'électronique, je parie que vous les avez déjà vu en classe, ou que ce ne saurait tarder. Dans ce qui suit, nous allons nous concentrer sur les microcontrôleurs PIC 8 bits, à savoir les PIC 16, 16 et 18. Les PIC 24, qui sont des microcontrôleurs 16 bits, ne seront pas abordés.
Les microcontrôleurs PIC 8 bits incorporent une mémoire RAM très petite, ainsi qu'une architecture Harvard, comme dit plus haut. La mémoire ROM des PIC va de 1024 instructions à 4096 instructions. En comparaison, la mémoire RAM des microcontrôleurs PIC ne peut pas dépasser 256 adresses, et elle est encore plus petite en pratique sur certains modèles. Pour donner un exemple, le PIC16F84 a une RAM composée de 68 "registres" de 8 bits. Le terme "registres" devrait vous faire tiquer, mais il s'agit bien d'une mémoire SRAM séparée. Simplement, la documentation des PIC qualifie cette mémoire SRAM de "registres", et il faut admettre que la différence entre banc de registre et SRAM séparée est un peu floue.
: Les PIC 18 peuvent adresser plus de 256 octets de RAM en utilisant la commutation de banques, une technique qui sera abordée dans plusieurs chapitres.
[[File:DocPIC16F84 3.png|centre|vignette|upright=3|Espaces d'adressage du PIC16F84.]]
Un détail est que la SRAM n'a qu'un seul port qui sert à la fois pour les lectures et écritures. Pour compenser, les PIC sont des architectures à accumulateur, où une opérande est lue depuis la SRAM, l'autre depuis l'accumulateur. Leur implémentation de l'accumulateur ajoute une petite subtilité : le résultat d'une opération arithmétique peut être enregistré ailleurs que dans l'accumulateur. Le résultat peut aussi remplacer la seconde opérande, celle lue en mémoire RAM. Dit autrement, le résultat est enregistré dans l'adresse mémoire source. Les instructions de calcul ont le choix : un bit dans leur encodage précise où enregistrer le résultat.
{|
|-
|[[File:DocPIC16F84 4.png|centre|vignette|upright=2|Microarchitecture simplifiée d'un microcontroleur PIC (ici, un 16F84).]]
|[[File:DocPIC16F84 5.png|centre|vignette|upright=2|Microarchitecture simplifiée d'un microcontroleur PIC (ici, un 16F84), avec les branchements directs.]]
|}
Les PIC incorporent une pile d'appel allant de 2 à 8 niveaux, suivant les modèles. Outre l'accumulateur, les PIC disposent de registres de contrôle, d'un ''program counter'', d'un registre d'état, et d'un pointeur de pile. Le registre d'état contient un registre séparé pour la retenue de l'addition/soustraction. Un détail assez original est que les registres précédents sont mappés en mémoire, à quelques exceptions près ! En clair, on peut y accéder en lisant/écrivant à une adresse mémoire bien précise. Les seules registres qui ne sont pas mappés en mémoire sont l'accumulateur, la pile d'appel, et les registres d'entrée-sortie. Les registres d'entrée-sortie permettent de lire ou écrire sur un port d'entrée-sortie ou de lire un ''timer''. En clair, les PIC ont un espace d'adressage séparé pour les entrées-sorties.
[[File:DocPIC16F84.png|centre|vignette|upright=2|DocPIC16F84]]
Le processeur de ces microcontrôleurs a un jeu d'instruction propriétaire, le jeu d'instruction PIC. Les instructions PIC sont très petites. Les premières versions du jeu d'instruction utilisaient des instructions codées sur 12 bits, dont 5 pour l'adresse mémoire de la seconde opérande. Pour les branchements, 3 bits étaient utilisés pour l'opcode, 9 pour l'adresse de destination. Par la suite, les instructions ont été étendues à 13 bits sur les PIC1670, puis à 14, 15 et 16 bits. Les adresses ont alors été élargies, ce qui permet d'adresser en peu plus de mémoire RAM.
Les instructions se limitent à des additions/soustractions, des opérations bit à bit,des branchements, des instructions LOAD/STORE, ainsi que des opérations de manipulation de bit. Il y a une instruction pour mettre une adresse à zéro, qui peut aussi mettre à zéro l’accumulateur.
Pour ce qui est des branchements, les PIC n'ont pas d'instructions de branchement conditionnels, ils font avec une SKIP instruction et des branchements inconditionnels. Par contre, ils ont des branchements pour les appels et retour de fonction. Mieux que ça, ils intègrent une pile d'appel d'environ 8 adresses de retour. Pour donner une idée, l'adresse de retour est encodée sur 10 bits sur les PIC16F84.
Pour les instructions de manipulation de bit, il y a des instructions pour tester/masquer un bit dans une opérande, 4 en tout ( mettre à 0, mettre à 1, tester si bit = 1, tester si bit = 0). Les instructions qui testent un bit prennent leur opérande dans l'accumulateur. Il y a aussi deux instructions de rotation à gauche et droite, qui tiennent compte de la retenue mémorisée dans le registre d'état. Mentionnons aussi une instruction pour inverser deux ''nibbles'' dans un octet.
Les PIC ont aussi des instructions d'incrémentation et de décrémentation, un peu spéciales. Ces dernières regroupent : une incrémentation normale, une décrémentation normale, une décrémentation fusionnée avec une instruction SKIP, et une incrémentation fusionnée avec une instruction SKIP. Les deux dernières incrémentent/décrémentent l'accumulateur et SKIP l'instruction suivante si le résultat est zéro. Elles permettent de fortement simplifier l'implémentation des boucles qui s'exécutent tant que leur compteur atteint zéro.
Les modèles haute performance ajoutent des instructions d'addition avec retenue entrante, idem pour la soustraction. De telles instructions ssont très utiles pour faire des additions/soustractions sur des opérandes de 16 bits. Le processeur a beau être un CPU 8 bits, il peut être utilisé pour faire des calculs 16 bits, la performance est alors amoindrie, mais ce n'est pas un problème pour les applications d'un tel microcontroleur.
Les PIC gèrent l'adressage absolu et indirect. L'adressage absolu, celui où l'adresse est intégrée dans l'instruction, est très simple à implémenter. Les adresses prennent moins d'un octet, vu que la taille de la RAM est très petite, les adresses sont très courtes, les intégrer dans des instructions elles-mêmes courtes n'est pas un problème. L'adresse est encodée sur 5 à 7 bits, selon le modèle, ce qui permet d'adresser entre 32 et 128 octets.
Pour l'adressage indirect, les PIC intègrent un registre d'adresse dédié. Il s'agit du registre FSR, qui mémorise l'adresse à lire/écrire. Il est possible de copier un pointeur dedans, qui provient soit de l'accumulateur, soit de la mémoire SRAM. Dans les deux cas, la donnée adressée est copiée dans un registre INDR, qui sert de registre d’interfaçage mémoire avec le bus de données. Le registre FSR est directement connecté sur le bus d'adresse. Les modèles de base se débrouillent avec un registre FSR et un registre INDR, mais les modèles plus performants ont deux ou trois copies de chaque registre. Les modèles PIC18 ajoutent aussi des instructions LOAD/STORE avec les modes d'adressage à post- ou pré-incrément/décrément, et le mode d'adressage "Base + Indice + Décalage".
Avec tout ce qu'on vient de dire, vous devriez pouvoir comprendre la microarchitecture d'un PIC, qui est résumée dans ce schéma.
[[File:DocPIC16F84 all.png|centre|vignette|upright=2.5|Microarchitecture du PIC16F84.]]
===Le Fairchild F8 et la console de jeu Fairchild Channel F===
Un autre exemple est la Fairchild F8 de la défunte entreprise Fairchild Semiconductor. Il incorpore un processeur 8 bits, c'est à dire que le processeur fait des calculs sur des entiers de 8 bits maximum, une mémoire RAM de 64 octets, ainsi qu'une mémoire ROM de 1 kibioctet. Les 64 octets de RAM sont certes très peu, mais c'est suffisant pour certaines applications simples, comme les caisses automatiques de l'époque, ou des applications embarquées. Et de toute façon, il est possible d'ajouter de la mémoire RAM supplémentaire si les 64 octets de RAM intégrée ne suffisent pas. Le système était donc modulaire, adaptable selon les besoins, peu cher pour son implémentation minimale sans RAM en plus.
Vu qu'il s'agit d'un des tout premiers ordinateurs, il est sorti à une époque où la technologie était rudimentaire. À cette époque, le processeur était composé de pièces détachées qu'il fallait souder ensemble pour obtenir un processeur fonctionnel. Ce n'est que plus tard qu'est apparu le micro-processeur, qui regroupe un processeur complet dans un seul circuit intégré. Le résultat est que le processeur du Fairchild F8 est coupé en deux, l'unité de calcul et l'unité de contrôle sont placés dans des pièces détachées séparés.
Le microcontrôleur est composé de trois à quatre pièces détachées, certaines étant optionnelles. La première est le '''3850 CPU''', qui regroupe l'unité de calcul et la mémoire RAM intégrée. La seconde est le PSU (''3851 Program Storage Unit''), qui regroupe la mémoire ROM et l'unité de contrôle, ''program counter'' inclut. S'il y a besoin d'utiliser plus de RAM, il faut ajouter un circuit d’interface mémoire, qui est au choix le ''3852 Dynamic Memory Interface'' (DMI) ou le ''3853 Static Memory Interface'', le premier étant connecté à une mémoire de type DRAM, l'autre à une SRAM (nous verrons ce que sont les DRAM et les SRAM dans le prochain chapitre).
[[File:Fairchild F8.png|centre|vignette|upright=2|Fairchild F8]]
Le système minimal est composé d'un PSU et d'un 3850, sans les circuits d'interface mémoire. Le tout donne un système avec un processeur 8 bit, 64 octets de RAM et 1 kibioctet de ROM, les deux mémoires étant intégrées dans le "processeur". Le processeur gérait 4 entrées-sorties, chacune étant reliée avec un bus de 8 bit au processeur. Au passage, en 1977, Mostek a créé un microcontrôleur qui regroupe un PSU et un 3850 : le Mostek 3870. Le système minimal n'avait pas de bus d'adresse, vu que la RAM était intégrée au processeur. C'est les 3852 et 3853 qui ajoutaient un bus d'adresse. Ils ajoutent un bus d'adresse de 16 bits, ce qui permet d'adresser 64 kibioctets de RAM.
[[File:Fairchild-Channel-F.jpg|vignette|un Fairchild Channel F]]
Le Fairchild F8 a été utilisé dans la Fairchild Channel F, une des toute première console de seconde génération, à savoir des consoles qui utilisaient des cartouches de jeu. Avant les consoles de seconde génération, les consoles étaient non-programmables. Elles étaient conçues pour faire tourner un jeu précis, aucun autre, le jeu étant implémenté dans leurs circuits.
La Fairchild Channel F est composé du système minimal, auquel on a ajouté une carte son rudimentaire et 2 kibioctets de mémoire vidéo. La mémoire vidéo sert uniquement pour afficher des images à l'écran : on écrit l'image à afficher dedans, un circuit vidéo se charge de l'afficher à l'écran automatiquement. Le processeur ne fait qu'écrire dans cette RAM vidéo, il ne peut pas en lire le contenu. De la RAM supplémentaire peut cependant être ajoutée dans les cartouches de jeu.
===L'usage d'une architecture Harvard modifiée : les consoles 8 bits===
Pour encore améliorer la situation, il est possible d'utiliser une architecture Harvard modifiée, qui permet de lire des données depuis la mémoire ROM. Cela réduit encore plus les besoins en mémoire RAM. Les constantes manipulées par le programme sont mémorisées en ROM, lues depuis la ROM, au lieu d'être chargées en RAM. Les consoles de jeu utilisaient beaucoup de stratagème.
L'exemple type est celui des consoles 8 bits avec des graphismes en 2D. La cartouche de jeu contenait une ROM, qui mémorisait le code du jeu, les niveaux, les sprites et autres données graphiques. Leur carte graphique lisait directement les ''sprites'' depuis la mémoire ROM, sans avoir à les charger en mémoire vidéo. La mémoire vidéo se contentait de mémoriser le reste des informations graphiques, ainsi que des pointeurs vers les ''sprites'' en ROM. En conséquence, les consoles 8 bits n'avaient pas besoin de beaucoup de RAM, vu qu'une grande partie des données utiles étaient dans une ROM directement accessible par le processeur. A l'opposé, les micro-ordinateurs devaient copier les données d'un jeu depuis une disquette dans la mémoire RAM, ce qui demandait d'avoir plus de RAM.
Le passage au support CD sur les consoles 32 bits a eu la même conséquence. Le processeur ne pouvant pas lire directement le CD à sa guise, il fallait copier les données du CD en RAM. D'où l'apparition de temps de chargement assez longs, inexistants sur support cartouche.
Avec ce genre de stratagèmes, 256 octets de RAM est largement suffisant sur de nombreux systèmes, à condition qu'on ait assez de ROM pour coder un programme digne de ce nom. Par exemple, de nombreux systèmes embarqués simples s'en accommodent : des caisses enregistreuses, des systèmes de régulation de feu de circulation, etc.
===Le HP Nanoprocessor : un processeur sans ALU===
Un dernier exemple est celui du processeur HP Nanoprocessor, de l'entreprise HP. Il a été commercialisé en 1974, en même temps que les premiers micro-processeurs d'Intel. Tous les processeurs de l'époque étaient des processeurs 8 bits et le HP Nanoprocessor ne faisait pas exception. Ce n'était pas un processeur haute performance, il était destiné à des applications d'informatique industrielle ou embarquée. D'ailleurs, il utilisait des transistors de type metal-gate, peu performants, là où ses contemporains utilisait des transistors en silicium, plus performants.
Mais une caractéristique qui rend cela encore plus claire est qu'il n'y a pas d'ALU ! En effet, ce processeur est incapable de faire des additions, des soustractions ou autres opérations simples ! Il est cependant capable d'effectuer des incrémentations et décrémentations, des décalages, des opérations logiques comme des ET/OU/NON/XOR et bien d'autres. Il supporte en tout 48 instructions, avec un support limité des modes d'adressage indirects. Les instructions de branchement étaient des instructions SKIP, il n'y avait pas d'instructions de branchement généralistes.
Pour ce qui est des registres, il disposait de 16 registres de 8 bits et d'un accumulateur. Niveau mémoire, il était relié à une mémoire ROM, rien de plus. Il n'avait de RAM supplémentaire qu'on pouvait lui adjoindre, il devait se débrouiller avec seulement ses registres. Et cela ne posait pas de problèmes pour son usage. Seul le mode d'adressage indirect à registre est supporté, il n'y a pas de registres d'indices. Ce mode d'adressage permet de lire des données en mémoire ROM, la ROM pouvant contenir des tableaux de valeurs constantes.
: Il est possible de lui adjoindre de la RAM via les ports d'entrée-sortie, ainsi qu'une ALU, mais RAM et ALU sont traités comme des périphériques avec lesquels on communique, ils ne sont pas intégrés au processeur.
Niveau micro-architecture, il incorporait une unité de calcul logique et un circuit comparateur. Le comparateur était un circuit comparateur série des plus basiques, qui était utilisé pour les instructions de branchement et associées. L'unité de calcul logique gérait des incrémentations/décrémentation, des décalages, les opérations logiques et quelques autres. L'unité de calcul logique était bit-slicée, à savoir conçue en assemblant 8 ALU de 1 bit chacune, enchainées en série. Le tout était combiné à des circuits de ''carry skip''.
[[File:Unité de calcul du HP nanonprocessor.png|centre|vignette|upright=2|Unité de calcul du HP nanoprocessor]]
Son unité de décodage d'instruction était très simple, essentiellement basée sur des portes NOR, grâce à un encodage efficace des instructions machine. Le ''program counter'' fait 11 bits, ce qui permet d'adresser une ROM de 2 kibioctets. Le ''program counter'' était relié à un circuit incrémenteur qui gérait les isntructions SKIP (il pouvait incrémenter le ''program counter'' par pas de 1 ou de 2 en cas de SKIP). Le processeur contient aussi deux registres, qui servent en quelque sorte de pile d'adresse de retour. Un premier registre mémorise l'adresse de retour d'une fonction, l'autre mémorise le ''program counter'' lors d'une interruption, pour savoir où brancher à la fin de l'interruption.
[[File:HP nanoprocessor.png|centre|vignette|upright=2.5|HP nanoprocessor]]
Fait intéressant, le concepteur du processeur a gracieusement donné les masques utilisés pour graver le silicium du processeur au site [https://www.cpushack.com/ CPU Shack]. Les masques en question sont disponibles ici :
* [https://www.cpushack.com/2020/08/20/hp-nanoprocessor-mask-set/ HP NanoProcessor Mask Set]
* [https://www.cpushack.com/2020/08/09/the-forgotten-ones-hp-nanoprocessor/ The Forgotten Ones: HP Nanoprocessor]
Les masques ont été analysés par Ken Shirrif dans cet article de blog :
* [https://www.righto.com/2020/09/hp-nanoprocessor-part-ii-reverse.html HP Nanoprocessor part II: Reverse-engineering the circuits from the masks]
==Les processeurs 8/16 bits à architecture Von Neumann==
L'usage d'une architecture Harvard est une solution pour adresser plus de mémoire avec des CPU 8 bits. Mais plusieurs microprocesseurs commerciaux n'utilisaient pas cette solution. À la place, c'était des architectures Von Neumann, mais qui étaient capables de gérer des adresses de 16 bits. Les données faisaient 8 bits, les registres faisaient 8 bits, mais quelques techniques permettaient de gérer des adresses de 16 bits. Nous parlerons de '''processeurs 8/16 bits''' pour les désigner, et nous allons les étudier à part.
Un point important est que la gestion d'adresses de 16 bits permet d'adresser 64 kibioctets, qui peuvent être remplis avec de la RAM et de la ROM. On a donc le meilleur des mondes : 64 kibioctets de mémoire, mais avec des données de 8 bits et les économies de circuit qui vont avec. L'avantage est que le processeur peut maintenant gérer une vraie pile d'appel, pas seulement une pile d'adresse de retour. Il lui suffit pour cela d'intégrer un pointeur de pile codé sur 16 bits.
===Les modes d'adressage par page des CPU Motorola===
Les processeurs Motorola 8 bits étaient des processeurs 8 bits avec un bus d'adresse de 16 bits. C'était des processeurs à accumulateur incorporant deux registres d'indice, un registre d'état, un pointeur de pile, et un ''program counter''. Tous les registres sont reliés au bus d'adresse, sauf le registre d'état et l’accumulateur. Tous les registres font 8 bits, sauf le ''program counter''. La pile est câblée pour être dans un bloc de 256 octets compris entre l'adresse 1 0000 0000 et l'adresse 1 1111 1111, ce qui fait que son adressage se fait avec un seul octet.
[[File:6502-architecture.svg|centre|vignette|upright=1.5|Architecture simplifiée du 6502.</br> X et Y : registres d'indice ;</br> S : le pointeur de pile ;</br> A : accumulateur ;</br>P : registre d'état.</br>]]
Les processeurs Motorola 8 bits utilisaient une méthode simple pour adresser 64 kibioctets de RAM, avec des registres de 8 bits. Pour cela, ils utilisaient une variante de l'adressage base + décalage. Elle améliore l'adressage absolu, qui intègre l'adresse à lire/écrire dans l'instruction elle-même. L'adresse en question est de 8 bits et n'encode que les 8 bits de poids faible de l'adresse, les 8 bits de poids fort sont dans un '''registre de page''' adressé implicitement. L'adresse finale est obtenue en concaténant ce registre avec l'adresse mémoire intégrée dans l’instruction. Le résultat est que la mémoire était découpée en blocs de 256 consécutifs, chacun pouvant servir de fenêtre de 256 octets. Une page est réservée pour la pile, la seconde, comme dit plus haut.
Formellement, ce mode d'adressage a des ressemblances avec la commutation de banques, une technique qu'on verra dans les chapitres sur l'espace d'adressage et la mémoire virtuelle. Mais ce n'en est pas du tout : le registre de page est utilisé uniquement pour les accès mémoire avec le mode d'adressage base + décalage, mais pas pour les autres accès mémoire, qui gèrent des adresses complètes. Notons que l'usage d'un registre de page dédié fait que celui-ci est adressé implicitement.
Il faut noter que la technique a été utilisée sur des processeurs 16 bits, pour contourner la petite taille des instructions. Un exemple est celui du HP 2100, un processeur 16 bits. Il avait un registre de page de 5 bits et encodait 10 bits d'adresse dans ses instructions. Ses instructions d'accès mémoire disposaient d'un bit qui choisit quel mode d'adressage utiliser. S'il était à 0, l'adressage absolu était utilisé, le registre de page n'était pas utilisé. Mais s'il était à 1, le registre de page était utilisé pour calculer l'adresse.
Une évolution de l'adressage précédent est le '''mode page direct'''. Avec lui, le registre de page est étendu et contient une adresse mémoire complète. L'adresse finale n'est pas obtenue par concaténation, mais en additionnant le registre de page avec l'adresse fournie par adressage absolu + décalage. Un exemple est celui des premiers processeurs Motorola, qui géraient des adresses courtes de 8 bits. L'adresse courte de 8 bits correspondait non pas aux 256 premiers octets de la mémoire, mais à une fenêtre de 256 octets déplaçable en mémoire. La position de la fenêtre de 256 octets était spécifiée par le registre de page de 16 bits, qui précisait l'adresse du début de la fenêtre, celle de sa première donnée.
Il s'agit donc formellement d'adressage base + décalage, à un détail près : il n'y a qu'un seul registre de base. Le fait que ce registre de base soit unique fait qu'il est adressé implicitement, on n'a pas à encoder le numéro/noms de registre dans l'instruction. Le registre de base est utilisé uniquement pour l'adressage absolu, pas pour les autres accès mémoire. S'il y a des ressemblances avec la segmentation, une technique de mémoire virtuelle qu'on abordera dans quelques chapitres, ce n'en est pas vu que le registre de base est utilisé seulement pour un mode d'adressage bien précis.
===Le ''pseudo-aliasing'' des registres des processeurs Intel x86===
Voyons maintenant le cas des anciens processeurs 8 bits d'Intel à savoir l'Intel 4004, 4040, 8008 et 8080. Le Z80, un processeur inspiré des CPU Intel 8 bits, est aussi concerné. Avant de poursuivre, parlons des registres de ces processeurs. Les premiers CPU Intel incorporaient 7 registres de 8 bits nommés A, B, C, D, E, F, H, L, SP. Ils correspondent respectivement à : l'accumulateur A ; six registres nommés B, C, D, E, H et L ; le registre d'état F ; le pointeur de pile SP. Le Z80 ajoute deux registres d'indice X et Y. De plus, le Z80 dispose de registres d'interruption, qui sont en quelque sorte des copies des registres A, B, C, D, E, F, H, L. Le tout est illustré dans le tableau ci-dessous.
{|class="wikitable" style="text-align:center;"
|-
!
! Registres des CPU Intel
! Registres supplémentaires du Z80
|-
! Accumulateur
| A
| A'
|-
! Registre d'état
| F
| F'
|-
! Registres généraux
| B, C, D, E, H, L
| B', C', D', E', H', L'
|-
! Pointeur de pile
| colspan="2" | SP (sauf pour le 8008)
|-
! Registres d'indice
|
| X et Y
|}
Le 8008 incorpore une pile d'appel de 7 adresses, dans le processeur lui-même. Il en est de la même avec le 4004 et le 4040, comme on le verra dans la section sur les processeurs 4 bits. Mais le 8080 et le 8085 ont remplacé le tout par un simple pointeur de pile, afin d'avoir une véritable pile d'appel. Autant c'est impossible d'avoir une pile d'appel avec seulement 256 octets de mémoire, autant on peut se le permettre avec 65 536 adresses.
Pour gérer des adresses de 16 bits, ils auraient pu utiliser des registres d'adresse séparés, mais on préféré un système de '''pseudo-''aliasing'' de registres'''. Formellement, c'est un système qui concatène deux registres 8 bits pour obtenir une adresse de 16 bits. L’appariement a lieu lors de certaines opérations bien précises, qui n'ont de sens que pour les adresses : la lecture/écriture en mémoire, et l'incrémentation.
Il y avait cependant des contraintes quant aux paires de registres possibles, toutes les paires de registres n'étaient pas autorisées. Les CPU concernés sont donc des processeurs hybrides accumulateur-registre généraux. L'accumulateur ne peut pas être appairé, seuls les registres généraux le peuvent. Le Z80 autorise plus de paires que les CPU Intel. Voici les paires de registres qui pouvaient servir d'adresse 16 bits :
* Les CPU 8008 d'Intel autorisait une seule paire formée des registres H et L.
* Les autres processeurs, à savoir le 8080, le 8085 et le Z80, autorisaient : les paires BC, DE et HL.
Le 8008 ne gérait que des opérations sur 8 bits. Mais le 8080 et le 8085 ont ajouté des instructions 16 bits qui agissaient sur des paires de registre, que le Z80 a repris. Une paire de registres est considérée comme un registre unique de 16 bits pour certaines opérations arithmétiques, dont l'incrémentation. Voici la liste des instructions concernées :
* INC et DEC pour l'incrémentation et la décrémentation ;
* DAD : additionne le registre HL avec une autre paire (Hl inclus) ;
* LXI : copie une constante immédiate dans une paire de registres ;
* LHLD : lit 16 depuis la mémoire et l'enregistre dans une paire de registres ;
* SHLD : copie 16 bits depuis une paire de registres et l'enregistre en mémoire ;
* PUSH et POP : empile ou dépilent une paire de registre sur la pile ;
* XTHL : échange la paire HL avec les 16 bits au sommet de la pile d'appel ;
* XCHG : échange le contenu de la paire HL et DE.
Pour résumer, le processeur avait des instructions LOAD, STORE, PUSH et POP adaptées pour gérer des paires de registre. De plus, l'instruction XCHG permettait d’échanger le contenu des paires DE et HL. L'instruction a été étendue sur les processeurs 16 bits pour échanger tous les registres. Mais l'implémentation était alors différente. L'incrémentation sur une paire de 16 bit était très utile, car les adresses sont souvent incrémentées quand on parcours un tableau. Ces instructions nous donnent quelques indices sur ce qu'il y a dans le processeur.
Le système de pseudo-aliasing a un impact sur le banc de registre. Le banc de registre regroupe les registres généraux et le pointeur de pile, mais ne contient pas l'accumulateur. Les contraintes sur les paires de registres possibles ne s'expliquent que d'une seule manière : le banc de registre contient des registres de 16 bits, une paire de registres 8 bits est mémorisée dans un registre unique. Il faut donc faire une différence entre les registres architecturaux de 8 bits, et les registres réels de 16 bits.
Le banc de registre a un port de 8 bits pour les données, qui est fabriqué à partir d'un port 16 bits auquel on a rajouté un multiplexeur pour choisir soit l'octet de poids faible, soit l'octet de poids fort. Le bus de données fait 8 bits, ce qui fait que les instructions LOAD, STORE, PUSH et POP pour paires 16 bits sont réalisées en deux fois : on lit/écrit l'octet de poids faible, puis celui de poids fort. Par contre, le bus d'adresse fait bien 16 bits. Cela suggère que le banc de registre dispose d'un port de 16 bits dédié aux adresses, en plus du port de données 8 bits.
[[File:Architecture d'un CPU 8-16 bits avec un banc de registre double port.png|centre|vignette|upright=2|Architecture d'un CPU 8-16 bits avec un banc de registre double port]]
L'incrémentation d'une paire 16 bits ne coute rien à implémenter, ou presque. En effet, le processeur incorpore un incrémenteur 16 bits pour le ''program counter'', qui est relié au bus d'adresse. L'idée est de rentabiliser cet incrémenteur, en lui permettant d'incrémenter des données/adresses de 16 bits obtenues via pseudo-aliasing. De même, il peut être utilisé pour incrémenter le pointeur de pile, voire un compteur de rafraichissement mémoire (pour rappel, le rafraîchissement mémoire demande de balayer la mémoire d'adresse en adresse et été fait par le CPU à l'époque). Pour cela, il suffit de connecter le ''program counter'', le banc de registre, et l'incrémenteur, via un bus dédié.
[[File:Calcul d'adresse par ALU dédiée avec PC séparé.png|centre|vignette|upright=2|Calcul d'adresse par ALU dédiée avec PC séparé]]
Notez qu'on peut encore simplifier le tout en placant le ''program counter'' dans le banc de registre, ce qui ne gênera pas le travail de l'incrémenteur mais simplifiera le câblage au bus d'adresse. Ce n'était pas systématique, certains processeurs mettaient le ''program counter'' dans le banc de registre, d'autres non.
: Inclure le ''program counter'' dans le banc de registre permet parfois de remplir un vide. Par exemple, sur un processeur avec 12 registres, le banc de registre devrait faire idéalement 16 registres, inclure le ''program counter'' dedans fait monter le tout à 13.
[[File:Architecture d'un CPU 8-16 bits.png|centre|vignette|upright=2|Architecture d'un CPU 8-16 bits]]
Les processeurs Intel 8 bits, à savoir le 8008, le 8080 et le 8085 ; mettaient le ''program counter'' dans le banc de registre. Vous avez donc toutes les armes pour comprendre leur micro-architecture. Par exemple, voici la micro-architecture du processeur 8080. Remarquez le banc de registre, qui contient tous les registres sauf l'accumulateur et le registre. Il a deux ports : un pour les adresses et un pour les données. Notez le dé-multiplexeur sur le port de donnée. Pour le reste, il s'agit d'une architecture à accumulateur hybride des plus classiques.
[[File:Intel 8080 arch.svg|centre|vignette|upright=3|Microarchitecture de l'Intel 8080.]]
Le Z80 est un processeur inspiré du design des processeurs Intel 8 bits, mais avec pas mal d'améliorations. Un point particulier de ce processeur est son banc de registre. Il contient tous les registres du processeur, y compris l'accumulateur et le registre d'état ! Les seuls registres en-dehors du banc de registre sont le ''program counter'' et un compteur de rafraichissement mémoire IR.
Un autre point particulier est que les registres dans le banc de registres avaient une copie séparée accessible uniquement pour les interruptions, via fenêtrage de registres. Et l'accumulateur et le registre d'état étant dans le banc de registre, il y avait deux accumulateurs et deux registres d'état. Les registres A, B, C, D, E et F étaient dupliqués, par le pointeur de pile ni les registres d'indice. Les copies des registres étaient nommées A', B', C', D', E' et F'.
Le Z80 supportait des instructions d'échange de registre en plus des CPU Intel 8 bits. L'instruction EX peut échanger soit le contenu des paires D,E et H,F, soit la paire A,F avec la paire A',F'. L'instruction EXX échange les paires BC, DE, HL avec les paires BC', DE', HL'. En faisant cela, le programmeur pouvait utiliser deux fois plus de registres généraux s'il n'utilisait pas les interruptions. L'échange de paires se fait sans copies de registres, mais simplement en modifiant l'adresse envoyée sur le banc de registre. Pour cela, plusieurs bascules mémorisent des bits qui indiquent si les paires ont été échangées ou non. Il y a une bascule pour les paires DE , HL ; une autre pour les paires A,F et paire A',F', une dernière pour l'instruction EXX. En combinant ces bascules avec les noms de registres envoyés par le séquenceur, on peut échanger les paires de registres.
==Le cas particulier des processeurs 4 bits : le 4004 d'Intel==
L'Intel 4004 était le tout premier micro-processeur. Il s'agissait d'un microprocesseur de 4 bits, basé sur une architecture à accumulateur. Il disposait d'un accumulateur et de 16 registres d'indice, tous de 4 bits. Il faisait des calculs sur des données de 4 bits, appelées des nibbles. Cependant, sur ses 46 instructions machines supportées, 41 agissaient sur des opérandes de 8 bits, les 5 restantes sur des opérandes de 16 bits. Simplement, les calculs se faisaient en deux fois, en échangeant des données entre mémoire RAM et accumulateur.
Le 4004 est un circuit intégré avec peu de broches. Il dispose notamment d'un bus de données/adresse, qui est multiplexé, c’est-à-dire qu'il sert alternativement de bus de données et de bus d'adresse selon les besoins. Le bus de commande mémoire fait 5 bits, dont 4 pour les chips de RAM, un pour la ROM. Les adresses sont codées sur 12 bits, les données sur 4 et les instructions sur 8 bits. L'envoi d'une adresse sur le bus se fait en plusieurs fois, de même que la lecture d'une instruction. Il s'agit là d'une adaptation pour outrepasser les limitations d'un processeur 4 bit.
[[File:Intel 4004 processor pinout.png|centre|vignette|upright=2|Broches de l'Intel 4004. Nous verrons à quoi elles servent plus bas.]]
===L'espace d'adressage de l'Intel 4004===
Les adresses du processeur sont sur 12 bits, ce qui fait 4096 adresses différentes. Elles regroupent à la fois la ROM et la mémoire RAM, vu que l'architecture est une sorte de mélange bizarre entre une architecture Von Neumann et Harvard. Le processeur gère bien deux espaces d'adressage séparés, mais la RAM et la ROM sont reliés au même bus. La sortie CM-ROM du processeur indique si l'adresse envoyée correspond à la RAM ou la ROM. Un circuit de décodage d'adresse active ou désactive la RAM selon la valeur de ce bit, l'inverse pour la ROM, en agissant sur leurs bits Chip Select. Seule la RAM ou la ROM répondent alors à l'adresse.
Pour ce qui est de la RAM, le circuit de décodage d'adresse pouvait gérer au maximum 1024 adresses différentes, chacune contenant un nibble. Pour cela, le CPU 4004 était relié à une ou plusieurs RAM externes, des Intel 4002. Chaque Intel 4002 contenait 64 nibbles de données, plus 16 nibbles de statut qu'on ne détaillera pas ici. Les nibbles de statut étaient accessibles en utilisant des instructions d'entrée-sortie, donc pas avec des lectures/écritures mémoire. Les 64 nibbles de données sont découpés en 4 groupes de 16 nibbles. Le CPU pouvait être relié à maximum 16 Intel 4002, ce qui fait 1024 nibbles de données et 256 nibbles de statut. L'ensemble permet de remplir l'espace d'adressage de 1024 adresses.
===Le registre de page et le pseudo-aliasing des registres===
Sélectionner une adresse mémoire utilisait un mélange entre pseudo-aliasing et registre de page. Pour les données, les 1024 adresses étaient découpées en 4 pages de 256 adresses. Pour la ROM, les 4096 adresses étaient découpées en 16 pages de 256 adresses. Localiser une donnée dans une page ne requiert que 8 bits, 2/4 bits supplémentaires permettent de sélectionner la page voulue. Le registre de page était dans le processeur lui-même, et était relié aux sorties du processeur nommées CM-RAM 0, 1, 2 et 3. Les 4 sorties encodaient un nombre qui permet de sélectionner le numéro de page voulu.
Le registre de page fait 5 bits : un pour distinguer RAM et ROM, 4 bits pour sélectionner la page voulue. L'avantage est que la carte mère gère au maximum 16 chips de RAM, ce qui colle parfaitement avec les 4 utilisés pour sélectionner une page. Un chip de RAM correspond à une page, et chacun est activé ou désactivé suivant la page sélectionnée. Pour cela, il suffit d'ajouter un décodeur sur la carte mère, qui prend les 4 bits du registre de page et fournit les signaux Chip Select aux différents chips de RAM.
Reste alors à utiliser les 8 bits d'adresse à l'intérieur d'un chip de RAM. Le 4004 permettait de concaténer deux registres d'indice de 4 bits pour former une adresse de 8 bits. Les instructions d'accès mémoire pouvaient ainsi préciser une paire de registre d'indice pour préciser quelle adresse lire/écrire. Idem pour les branchements indirects : le processeur supportait une instruction de branchement indirect qui précisait l'adresse dans une paire de registres d'indice. Les registres d'indice sont donc assez mal nommés sur cette architecture, vu qu'ils peuvent servir soit de registre d'indice, soit de demi-registre d'adresse. Il s'agit là du système de pseudo-aliasing des registres, mais appliqué aux registres d'indice.
L'Intel 4004 gérait deux instructions pour gérer les adresses mémoires. La première, l'instruction DCL (''Designate Command Line'') configure le registre de page. Elle prend en entrée un numéro de page et le copie dans le registre de page. L'opérande peut provenir d'un registre d'indice ou de l'accumulateur. La seconde, l'instruction SRC (''Send Register Control'') concatène deux registres d'indice pour obtenir une adresse de 8 bits. Un accès mémoire se fait donc en maximum trois instructions : une qui configure le registre de page si ce n'est pas déjà fait, une instruction SRC pour envoyer l'adresse, et une troisième instruction qui dit s'il faut faire une lecture ou une écriture.
===La microarchitecture de l'Intel 4004===
Il incorporait une pile d'adresse de retour intégrée au processeur. La pile d'adresse acceptait exactement 3 adresses maximum. Elle était regroupée avec le ''program counter'' dans un banc de registre, de 4 registres. Le ''program counter'' et le pointeur de pile faisaient chacun 12 bits, soit trois nibble. Ils étaient incrémentés par un incrémenteur dédié.
SI on omet le registre de page et la pile d'adresse, le 4004 est une architecture à accumulateur des plus classiques, avec un bus interne unique, un banc de registre pour les registres d'indices, un accumulateur relié à une unité de calcul. Les registres d'indice étaient dans un banc de registre séparés, car ils faisaient 4 bits chacun, contrairement au pointeur de pile et le ''program counter''. Un détail important est que les bancs de registres du 4004 étaient implémentés avec de la DRAM, et non des registres usuels fabriqués avec des bascules 1 bit.
[[File:Microarchitecture de l'Intel 4004.png|centre|vignette|upright=2.5|Microarchitecture de l'Intel 4004]]
<noinclude>
{{NavChapitre | book=Fonctionnement d'un ordinateur
| prev=Les architectures à pile et mémoire-mémoire
| prevText=Les architectures à pile et mémoire-mémoire
| next=Les processeurs de traitement du signal
| nextText=Les processeurs de traitement du signal
}}
</noinclude>
fwkkclsyzn2aj5jdepxqlvozlb9bm8p
765699
765698
2026-05-01T17:03:56Z
Mewtow
31375
/* Les microcontrôleurs PIC */
765699
wikitext
text/x-wiki
Nous avons déjà abordé la notion de processeur 8, 16, 32, 64 bits. Elle désigne la taille des registres généraux, ou de l'accumulateur. De nos jours, les processeurs 32 et 64 bits sont la norme, mais les premiers micro-processeurs étaient des processeurs 4 et 8, avant de passer rapidement au 16 bits. La raison est que leur budget en transistor limité faisait qu'on ne pouvait pas utiliser une ALU trop grande : une ALU 8 bit prend deux fois moins de place et de transistors qu'une ALU 16 bits. Cependant, les processeurs 8 bits avaient de sérieuses limitations qui étaient compensées par diverses solutions. Dans ce chapitre, nous allons faire une revue rapide des processeurs 8 bits et de leurs fonctionnalités.
La principale limitation des CPU 8 bits était l'adressage : des registres de 8 bits limitaient l'espace d'adressage à seulement 256 adresses, soit à peine 256 octets ! Intuitivement, on se dit que 256 octets est purement impraticable, on ne peut rien faire d'intéressant avec seulement 256 de RAM + ROM. Et c'est partiellement vrai. L'adage veut que 16 bits est la taille minimale intéressante, la limite à partir de laquelle on a assez de mémoire RAM/ROM pour coder des applications intéressantes. Mais 256 octets de RAM est largement suffisant sur de nombreux systèmes embarqués simples s'en accommodent : des caisses enregistreuses, des systèmes de régulation de feu de circulation, etc.
Pour les applications demandant plus de mémoire RAM, les CPU de l'époque contournaient la limitation de 256 octets de RAM avec de nombreux stratagèmes. Dans ce qui va suivre, nous allons séparer les CPU 8 bits selon qu'ils utilisent une architecture Harvard ou une architecture Von Neumann. La raison est qu'une architecture Harvard permet en soi de contourner partiellement ce problème d'adressage. Les choses sont plus compliquées avec une architecture Von Neumann.
==Les processeurs 8/16 bits à architecture Harvard ==
La première solution est d'utiliser une architecture Harvard. Le processeur 8 bit a alors deux espaces d'adressage : un pour la RAM, un autre pour la ROM. Et les deux utilisent des adresses de taille différente. La ROM est reliée à un bus d'adresse de 16 bits, alors que la RAM est elle connectée à un bus d'adresse de 8 bits. La RAM est donc limitée à 256 octets, alors que la ROM peut monter jusqu'à 64 kibioctets. Mine de rien, faire ainsi est largement suffisant.
Les processeurs de l'époque intégraient parfois les 256 octets de RAM directement dans le processeur. Beaucoup en implémentaient moins, avec par exemple seulement 64 octets de RAM, ou 32 octets, ou 128 octets. L'avantage est que cela éliminait le bus d'adresse des données et ne laissait que le bus d'adresse pour la ROM. On économisait ainsi beaucoup de broches sur le circuit intégré du CPU. Et pour les applications demandant plus de RAM, on pouvait ajouter un circuit séparé qui permettait d'adresser une RAM plus grande. Mais cela sera plus clair avec un exemple.
===Les microcontrôleurs PIC===
Les '''microcontrôleurs PIC''' regroupent des microcontrôleurs allant de microcontrôleurs 8 bit aux performances très faible, à des microcontrôleurs 32 bits bien plus puissants. Les microcontrôleurs PIC sont très utilisés dans l'embarqué ou d'informatique industrielle. Ils sont vendu à des volumes assez impressionnants, plusieurs millions par an. Et si vous avez ou êtes en train de faire des études d'électronique, je parie que vous les avez déjà vu en classe, ou que ce ne saurait tarder. Dans ce qui suit, nous allons nous concentrer sur les microcontrôleurs PIC 8 bits, à savoir les PIC 16, 16 et 18. Les PIC 24, qui sont des microcontrôleurs 16 bits, ne seront pas abordés.
Les microcontrôleurs PIC 8 bits incorporent une mémoire RAM très petite, ainsi qu'une architecture Harvard, comme dit plus haut. La mémoire ROM des PIC va de 1024 instructions à 4096 instructions. En comparaison, la mémoire RAM des microcontrôleurs PIC ne peut pas dépasser 256 adresses, et elle est encore plus petite en pratique sur certains modèles. Pour donner un exemple, le PIC16F84 a une RAM composée de 68 "registres" de 8 bits. Le terme "registres" devrait vous faire tiquer, mais il s'agit bien d'une mémoire SRAM séparée. Simplement, la documentation des PIC qualifie cette mémoire SRAM de "registres", et il faut admettre que la différence entre banc de registre et SRAM séparée est un peu floue.
: Les PIC 18 peuvent adresser plus de 256 octets de RAM en utilisant la commutation de banques, une technique qui sera abordée dans plusieurs chapitres.
[[File:DocPIC16F84 3.png|centre|vignette|upright=3|Espaces d'adressage du PIC16F84.]]
Un détail est que la SRAM n'a qu'un seul port qui sert à la fois pour les lectures et écritures. Pour compenser, les PIC sont des architectures à accumulateur, où une opérande est lue depuis la SRAM, l'autre depuis l'accumulateur. Leur implémentation de l'accumulateur ajoute une petite subtilité : le résultat d'une opération arithmétique peut être enregistré ailleurs que dans l'accumulateur. Le résultat peut aussi remplacer la seconde opérande, celle lue en mémoire RAM. Dit autrement, le résultat est enregistré dans l'adresse mémoire source. Les instructions de calcul ont le choix : un bit dans leur encodage précise où enregistrer le résultat.
{|
|-
|[[File:DocPIC16F84 4.png|centre|vignette|upright=2|Microarchitecture simplifiée d'un microcontroleur PIC (ici, un 16F84).]]
|[[File:DocPIC16F84 5.png|centre|vignette|upright=2|Microarchitecture simplifiée d'un microcontroleur PIC (ici, un 16F84), avec les branchements directs.]]
|}
Les PIC incorporent une pile d'appel allant de 2 à 8 niveaux, suivant les modèles. Outre l'accumulateur, les PIC disposent de registres de contrôle, d'un ''program counter'', d'un registre d'état, et d'un pointeur de pile. Le registre d'état contient un registre séparé pour la retenue de l'addition/soustraction. Un détail assez original est que les registres précédents sont mappés en mémoire, à quelques exceptions près ! En clair, on peut y accéder en lisant/écrivant à une adresse mémoire bien précise. Les seules registres qui ne sont pas mappés en mémoire sont l'accumulateur, la pile d'appel, et les registres d'entrée-sortie. Les registres d'entrée-sortie permettent de lire ou écrire sur un port d'entrée-sortie ou de lire un ''timer''. En clair, les PIC ont un espace d'adressage séparé pour les entrées-sorties.
[[File:DocPIC16F84.png|centre|vignette|upright=2|DocPIC16F84]]
Le processeur de ces microcontrôleurs a un jeu d'instruction propriétaire, le jeu d'instruction PIC. Les instructions PIC sont très petites. Les premières versions du jeu d'instruction utilisaient des instructions codées sur 12 bits, dont 5 pour l'adresse mémoire de la seconde opérande. Pour les branchements, 3 bits étaient utilisés pour l'opcode, 9 pour l'adresse de destination. Par la suite, les instructions ont été étendues à 13 bits sur les PIC1670, puis à 14, 15 et 16 bits. Les adresses ont alors été élargies, ce qui permet d'adresser en peu plus de mémoire RAM.
Les instructions se limitent à des additions/soustractions, des opérations bit à bit,des branchements, des instructions LOAD/STORE, ainsi que des opérations de manipulation de bit. Il y a une instruction pour mettre une adresse à zéro, qui peut aussi mettre à zéro l’accumulateur.
Pour ce qui est des branchements, les PIC n'ont pas d'instructions de branchement conditionnels, ils font avec une SKIP instruction et des branchements inconditionnels. Par contre, ils ont des branchements pour les appels et retour de fonction. Mieux que ça, ils intègrent une pile d'appel d'environ 8 adresses de retour. Pour donner une idée, l'adresse de retour est encodée sur 10 bits sur les PIC16F84.
Pour les instructions de manipulation de bit, il y a des instructions pour tester/masquer un bit dans une opérande, 4 en tout ( mettre à 0, mettre à 1, tester si bit = 1, tester si bit = 0). Les instructions qui testent un bit prennent leur opérande dans l'accumulateur. Il y a aussi deux instructions de rotation à gauche et droite, qui tiennent compte de la retenue mémorisée dans le registre d'état. Mentionnons aussi une instruction pour inverser deux ''nibbles'' dans un octet.
Les PIC ont aussi des instructions d'incrémentation et de décrémentation, un peu spéciales. Ces dernières regroupent : une incrémentation normale, une décrémentation normale, une décrémentation fusionnée avec une instruction SKIP, et une incrémentation fusionnée avec une instruction SKIP. Les deux dernières incrémentent/décrémentent l'accumulateur et SKIP l'instruction suivante si le résultat est zéro. Elles permettent de fortement simplifier l'implémentation des boucles qui s'exécutent tant que leur compteur atteint zéro.
Les modèles haute performance ajoutent des instructions d'addition avec retenue entrante, idem pour la soustraction. De telles instructions ssont très utiles pour faire des additions/soustractions sur des opérandes de 16 bits. Le processeur a beau être un CPU 8 bits, il peut être utilisé pour faire des calculs 16 bits, la performance est alors amoindrie, mais ce n'est pas un problème pour les applications d'un tel microcontroleur.
Les PIC gèrent l'adressage absolu et immédiat, mais pas plus. L'adressage absolu, celui où l'adresse est intégrée dans l'instruction, est très simple à implémenter. Les adresses prennent moins d'un octet, vu que la taille de la RAM est très petite, les adresses sont très courtes, les intégrer dans des instructions elles-mêmes courtes n'est pas un problème. L'adresse est encodée sur 5 à 7 bits, selon le modèle, ce qui permet d'adresser entre 32 et 128 octets.
Les PIC ne supportent pas l'adressage indirect, mais peuvent l'émuler grâce à un '''registre d'adresse''' dédié. Il s'agit du registre FSR, qui mémorise l'adresse à lire/écrire. Il est possible de copier un pointeur dedans, qui provient soit de l'accumulateur, soit de la mémoire SRAM. Dans les deux cas, la donnée adressée est lue ou écrite dans un registre INDR, est un registre d’interfaçage rendu adressable. Le registre FSR est directement connecté sur le bus d'adresse.
Les modèles de base se débrouillent avec un registre FSR et un registre INDR, mais les modèles plus performants ont deux ou trois copies de chaque registre. Les modèles PIC18 ajoutent aussi des instructions LOAD/STORE qui émulent les modes d'adressage à post- ou pré-incrément/décrément, et le mode d'adressage "Base + Indice + Décalage", encore une fois en utilisant les registres FSR et INDR.
Avec tout ce qu'on vient de dire, vous devriez pouvoir comprendre la microarchitecture d'un PIC, qui est résumée dans ce schéma.
[[File:DocPIC16F84 all.png|centre|vignette|upright=2.5|Microarchitecture du PIC16F84.]]
===Le Fairchild F8 et la console de jeu Fairchild Channel F===
Un autre exemple est la Fairchild F8 de la défunte entreprise Fairchild Semiconductor. Il incorpore un processeur 8 bits, c'est à dire que le processeur fait des calculs sur des entiers de 8 bits maximum, une mémoire RAM de 64 octets, ainsi qu'une mémoire ROM de 1 kibioctet. Les 64 octets de RAM sont certes très peu, mais c'est suffisant pour certaines applications simples, comme les caisses automatiques de l'époque, ou des applications embarquées. Et de toute façon, il est possible d'ajouter de la mémoire RAM supplémentaire si les 64 octets de RAM intégrée ne suffisent pas. Le système était donc modulaire, adaptable selon les besoins, peu cher pour son implémentation minimale sans RAM en plus.
Vu qu'il s'agit d'un des tout premiers ordinateurs, il est sorti à une époque où la technologie était rudimentaire. À cette époque, le processeur était composé de pièces détachées qu'il fallait souder ensemble pour obtenir un processeur fonctionnel. Ce n'est que plus tard qu'est apparu le micro-processeur, qui regroupe un processeur complet dans un seul circuit intégré. Le résultat est que le processeur du Fairchild F8 est coupé en deux, l'unité de calcul et l'unité de contrôle sont placés dans des pièces détachées séparés.
Le microcontrôleur est composé de trois à quatre pièces détachées, certaines étant optionnelles. La première est le '''3850 CPU''', qui regroupe l'unité de calcul et la mémoire RAM intégrée. La seconde est le PSU (''3851 Program Storage Unit''), qui regroupe la mémoire ROM et l'unité de contrôle, ''program counter'' inclut. S'il y a besoin d'utiliser plus de RAM, il faut ajouter un circuit d’interface mémoire, qui est au choix le ''3852 Dynamic Memory Interface'' (DMI) ou le ''3853 Static Memory Interface'', le premier étant connecté à une mémoire de type DRAM, l'autre à une SRAM (nous verrons ce que sont les DRAM et les SRAM dans le prochain chapitre).
[[File:Fairchild F8.png|centre|vignette|upright=2|Fairchild F8]]
Le système minimal est composé d'un PSU et d'un 3850, sans les circuits d'interface mémoire. Le tout donne un système avec un processeur 8 bit, 64 octets de RAM et 1 kibioctet de ROM, les deux mémoires étant intégrées dans le "processeur". Le processeur gérait 4 entrées-sorties, chacune étant reliée avec un bus de 8 bit au processeur. Au passage, en 1977, Mostek a créé un microcontrôleur qui regroupe un PSU et un 3850 : le Mostek 3870. Le système minimal n'avait pas de bus d'adresse, vu que la RAM était intégrée au processeur. C'est les 3852 et 3853 qui ajoutaient un bus d'adresse. Ils ajoutent un bus d'adresse de 16 bits, ce qui permet d'adresser 64 kibioctets de RAM.
[[File:Fairchild-Channel-F.jpg|vignette|un Fairchild Channel F]]
Le Fairchild F8 a été utilisé dans la Fairchild Channel F, une des toute première console de seconde génération, à savoir des consoles qui utilisaient des cartouches de jeu. Avant les consoles de seconde génération, les consoles étaient non-programmables. Elles étaient conçues pour faire tourner un jeu précis, aucun autre, le jeu étant implémenté dans leurs circuits.
La Fairchild Channel F est composé du système minimal, auquel on a ajouté une carte son rudimentaire et 2 kibioctets de mémoire vidéo. La mémoire vidéo sert uniquement pour afficher des images à l'écran : on écrit l'image à afficher dedans, un circuit vidéo se charge de l'afficher à l'écran automatiquement. Le processeur ne fait qu'écrire dans cette RAM vidéo, il ne peut pas en lire le contenu. De la RAM supplémentaire peut cependant être ajoutée dans les cartouches de jeu.
===L'usage d'une architecture Harvard modifiée : les consoles 8 bits===
Pour encore améliorer la situation, il est possible d'utiliser une architecture Harvard modifiée, qui permet de lire des données depuis la mémoire ROM. Cela réduit encore plus les besoins en mémoire RAM. Les constantes manipulées par le programme sont mémorisées en ROM, lues depuis la ROM, au lieu d'être chargées en RAM. Les consoles de jeu utilisaient beaucoup de stratagème.
L'exemple type est celui des consoles 8 bits avec des graphismes en 2D. La cartouche de jeu contenait une ROM, qui mémorisait le code du jeu, les niveaux, les sprites et autres données graphiques. Leur carte graphique lisait directement les ''sprites'' depuis la mémoire ROM, sans avoir à les charger en mémoire vidéo. La mémoire vidéo se contentait de mémoriser le reste des informations graphiques, ainsi que des pointeurs vers les ''sprites'' en ROM. En conséquence, les consoles 8 bits n'avaient pas besoin de beaucoup de RAM, vu qu'une grande partie des données utiles étaient dans une ROM directement accessible par le processeur. A l'opposé, les micro-ordinateurs devaient copier les données d'un jeu depuis une disquette dans la mémoire RAM, ce qui demandait d'avoir plus de RAM.
Le passage au support CD sur les consoles 32 bits a eu la même conséquence. Le processeur ne pouvant pas lire directement le CD à sa guise, il fallait copier les données du CD en RAM. D'où l'apparition de temps de chargement assez longs, inexistants sur support cartouche.
Avec ce genre de stratagèmes, 256 octets de RAM est largement suffisant sur de nombreux systèmes, à condition qu'on ait assez de ROM pour coder un programme digne de ce nom. Par exemple, de nombreux systèmes embarqués simples s'en accommodent : des caisses enregistreuses, des systèmes de régulation de feu de circulation, etc.
===Le HP Nanoprocessor : un processeur sans ALU===
Un dernier exemple est celui du processeur HP Nanoprocessor, de l'entreprise HP. Il a été commercialisé en 1974, en même temps que les premiers micro-processeurs d'Intel. Tous les processeurs de l'époque étaient des processeurs 8 bits et le HP Nanoprocessor ne faisait pas exception. Ce n'était pas un processeur haute performance, il était destiné à des applications d'informatique industrielle ou embarquée. D'ailleurs, il utilisait des transistors de type metal-gate, peu performants, là où ses contemporains utilisait des transistors en silicium, plus performants.
Mais une caractéristique qui rend cela encore plus claire est qu'il n'y a pas d'ALU ! En effet, ce processeur est incapable de faire des additions, des soustractions ou autres opérations simples ! Il est cependant capable d'effectuer des incrémentations et décrémentations, des décalages, des opérations logiques comme des ET/OU/NON/XOR et bien d'autres. Il supporte en tout 48 instructions, avec un support limité des modes d'adressage indirects. Les instructions de branchement étaient des instructions SKIP, il n'y avait pas d'instructions de branchement généralistes.
Pour ce qui est des registres, il disposait de 16 registres de 8 bits et d'un accumulateur. Niveau mémoire, il était relié à une mémoire ROM, rien de plus. Il n'avait de RAM supplémentaire qu'on pouvait lui adjoindre, il devait se débrouiller avec seulement ses registres. Et cela ne posait pas de problèmes pour son usage. Seul le mode d'adressage indirect à registre est supporté, il n'y a pas de registres d'indices. Ce mode d'adressage permet de lire des données en mémoire ROM, la ROM pouvant contenir des tableaux de valeurs constantes.
: Il est possible de lui adjoindre de la RAM via les ports d'entrée-sortie, ainsi qu'une ALU, mais RAM et ALU sont traités comme des périphériques avec lesquels on communique, ils ne sont pas intégrés au processeur.
Niveau micro-architecture, il incorporait une unité de calcul logique et un circuit comparateur. Le comparateur était un circuit comparateur série des plus basiques, qui était utilisé pour les instructions de branchement et associées. L'unité de calcul logique gérait des incrémentations/décrémentation, des décalages, les opérations logiques et quelques autres. L'unité de calcul logique était bit-slicée, à savoir conçue en assemblant 8 ALU de 1 bit chacune, enchainées en série. Le tout était combiné à des circuits de ''carry skip''.
[[File:Unité de calcul du HP nanonprocessor.png|centre|vignette|upright=2|Unité de calcul du HP nanoprocessor]]
Son unité de décodage d'instruction était très simple, essentiellement basée sur des portes NOR, grâce à un encodage efficace des instructions machine. Le ''program counter'' fait 11 bits, ce qui permet d'adresser une ROM de 2 kibioctets. Le ''program counter'' était relié à un circuit incrémenteur qui gérait les isntructions SKIP (il pouvait incrémenter le ''program counter'' par pas de 1 ou de 2 en cas de SKIP). Le processeur contient aussi deux registres, qui servent en quelque sorte de pile d'adresse de retour. Un premier registre mémorise l'adresse de retour d'une fonction, l'autre mémorise le ''program counter'' lors d'une interruption, pour savoir où brancher à la fin de l'interruption.
[[File:HP nanoprocessor.png|centre|vignette|upright=2.5|HP nanoprocessor]]
Fait intéressant, le concepteur du processeur a gracieusement donné les masques utilisés pour graver le silicium du processeur au site [https://www.cpushack.com/ CPU Shack]. Les masques en question sont disponibles ici :
* [https://www.cpushack.com/2020/08/20/hp-nanoprocessor-mask-set/ HP NanoProcessor Mask Set]
* [https://www.cpushack.com/2020/08/09/the-forgotten-ones-hp-nanoprocessor/ The Forgotten Ones: HP Nanoprocessor]
Les masques ont été analysés par Ken Shirrif dans cet article de blog :
* [https://www.righto.com/2020/09/hp-nanoprocessor-part-ii-reverse.html HP Nanoprocessor part II: Reverse-engineering the circuits from the masks]
==Les processeurs 8/16 bits à architecture Von Neumann==
L'usage d'une architecture Harvard est une solution pour adresser plus de mémoire avec des CPU 8 bits. Mais plusieurs microprocesseurs commerciaux n'utilisaient pas cette solution. À la place, c'était des architectures Von Neumann, mais qui étaient capables de gérer des adresses de 16 bits. Les données faisaient 8 bits, les registres faisaient 8 bits, mais quelques techniques permettaient de gérer des adresses de 16 bits. Nous parlerons de '''processeurs 8/16 bits''' pour les désigner, et nous allons les étudier à part.
Un point important est que la gestion d'adresses de 16 bits permet d'adresser 64 kibioctets, qui peuvent être remplis avec de la RAM et de la ROM. On a donc le meilleur des mondes : 64 kibioctets de mémoire, mais avec des données de 8 bits et les économies de circuit qui vont avec. L'avantage est que le processeur peut maintenant gérer une vraie pile d'appel, pas seulement une pile d'adresse de retour. Il lui suffit pour cela d'intégrer un pointeur de pile codé sur 16 bits.
===Les modes d'adressage par page des CPU Motorola===
Les processeurs Motorola 8 bits étaient des processeurs 8 bits avec un bus d'adresse de 16 bits. C'était des processeurs à accumulateur incorporant deux registres d'indice, un registre d'état, un pointeur de pile, et un ''program counter''. Tous les registres sont reliés au bus d'adresse, sauf le registre d'état et l’accumulateur. Tous les registres font 8 bits, sauf le ''program counter''. La pile est câblée pour être dans un bloc de 256 octets compris entre l'adresse 1 0000 0000 et l'adresse 1 1111 1111, ce qui fait que son adressage se fait avec un seul octet.
[[File:6502-architecture.svg|centre|vignette|upright=1.5|Architecture simplifiée du 6502.</br> X et Y : registres d'indice ;</br> S : le pointeur de pile ;</br> A : accumulateur ;</br>P : registre d'état.</br>]]
Les processeurs Motorola 8 bits utilisaient une méthode simple pour adresser 64 kibioctets de RAM, avec des registres de 8 bits. Pour cela, ils utilisaient une variante de l'adressage base + décalage. Elle améliore l'adressage absolu, qui intègre l'adresse à lire/écrire dans l'instruction elle-même. L'adresse en question est de 8 bits et n'encode que les 8 bits de poids faible de l'adresse, les 8 bits de poids fort sont dans un '''registre de page''' adressé implicitement. L'adresse finale est obtenue en concaténant ce registre avec l'adresse mémoire intégrée dans l’instruction. Le résultat est que la mémoire était découpée en blocs de 256 consécutifs, chacun pouvant servir de fenêtre de 256 octets. Une page est réservée pour la pile, la seconde, comme dit plus haut.
Formellement, ce mode d'adressage a des ressemblances avec la commutation de banques, une technique qu'on verra dans les chapitres sur l'espace d'adressage et la mémoire virtuelle. Mais ce n'en est pas du tout : le registre de page est utilisé uniquement pour les accès mémoire avec le mode d'adressage base + décalage, mais pas pour les autres accès mémoire, qui gèrent des adresses complètes. Notons que l'usage d'un registre de page dédié fait que celui-ci est adressé implicitement.
Il faut noter que la technique a été utilisée sur des processeurs 16 bits, pour contourner la petite taille des instructions. Un exemple est celui du HP 2100, un processeur 16 bits. Il avait un registre de page de 5 bits et encodait 10 bits d'adresse dans ses instructions. Ses instructions d'accès mémoire disposaient d'un bit qui choisit quel mode d'adressage utiliser. S'il était à 0, l'adressage absolu était utilisé, le registre de page n'était pas utilisé. Mais s'il était à 1, le registre de page était utilisé pour calculer l'adresse.
Une évolution de l'adressage précédent est le '''mode page direct'''. Avec lui, le registre de page est étendu et contient une adresse mémoire complète. L'adresse finale n'est pas obtenue par concaténation, mais en additionnant le registre de page avec l'adresse fournie par adressage absolu + décalage. Un exemple est celui des premiers processeurs Motorola, qui géraient des adresses courtes de 8 bits. L'adresse courte de 8 bits correspondait non pas aux 256 premiers octets de la mémoire, mais à une fenêtre de 256 octets déplaçable en mémoire. La position de la fenêtre de 256 octets était spécifiée par le registre de page de 16 bits, qui précisait l'adresse du début de la fenêtre, celle de sa première donnée.
Il s'agit donc formellement d'adressage base + décalage, à un détail près : il n'y a qu'un seul registre de base. Le fait que ce registre de base soit unique fait qu'il est adressé implicitement, on n'a pas à encoder le numéro/noms de registre dans l'instruction. Le registre de base est utilisé uniquement pour l'adressage absolu, pas pour les autres accès mémoire. S'il y a des ressemblances avec la segmentation, une technique de mémoire virtuelle qu'on abordera dans quelques chapitres, ce n'en est pas vu que le registre de base est utilisé seulement pour un mode d'adressage bien précis.
===Le ''pseudo-aliasing'' des registres des processeurs Intel x86===
Voyons maintenant le cas des anciens processeurs 8 bits d'Intel à savoir l'Intel 4004, 4040, 8008 et 8080. Le Z80, un processeur inspiré des CPU Intel 8 bits, est aussi concerné. Avant de poursuivre, parlons des registres de ces processeurs. Les premiers CPU Intel incorporaient 7 registres de 8 bits nommés A, B, C, D, E, F, H, L, SP. Ils correspondent respectivement à : l'accumulateur A ; six registres nommés B, C, D, E, H et L ; le registre d'état F ; le pointeur de pile SP. Le Z80 ajoute deux registres d'indice X et Y. De plus, le Z80 dispose de registres d'interruption, qui sont en quelque sorte des copies des registres A, B, C, D, E, F, H, L. Le tout est illustré dans le tableau ci-dessous.
{|class="wikitable" style="text-align:center;"
|-
!
! Registres des CPU Intel
! Registres supplémentaires du Z80
|-
! Accumulateur
| A
| A'
|-
! Registre d'état
| F
| F'
|-
! Registres généraux
| B, C, D, E, H, L
| B', C', D', E', H', L'
|-
! Pointeur de pile
| colspan="2" | SP (sauf pour le 8008)
|-
! Registres d'indice
|
| X et Y
|}
Le 8008 incorpore une pile d'appel de 7 adresses, dans le processeur lui-même. Il en est de la même avec le 4004 et le 4040, comme on le verra dans la section sur les processeurs 4 bits. Mais le 8080 et le 8085 ont remplacé le tout par un simple pointeur de pile, afin d'avoir une véritable pile d'appel. Autant c'est impossible d'avoir une pile d'appel avec seulement 256 octets de mémoire, autant on peut se le permettre avec 65 536 adresses.
Pour gérer des adresses de 16 bits, ils auraient pu utiliser des registres d'adresse séparés, mais on préféré un système de '''pseudo-''aliasing'' de registres'''. Formellement, c'est un système qui concatène deux registres 8 bits pour obtenir une adresse de 16 bits. L’appariement a lieu lors de certaines opérations bien précises, qui n'ont de sens que pour les adresses : la lecture/écriture en mémoire, et l'incrémentation.
Il y avait cependant des contraintes quant aux paires de registres possibles, toutes les paires de registres n'étaient pas autorisées. Les CPU concernés sont donc des processeurs hybrides accumulateur-registre généraux. L'accumulateur ne peut pas être appairé, seuls les registres généraux le peuvent. Le Z80 autorise plus de paires que les CPU Intel. Voici les paires de registres qui pouvaient servir d'adresse 16 bits :
* Les CPU 8008 d'Intel autorisait une seule paire formée des registres H et L.
* Les autres processeurs, à savoir le 8080, le 8085 et le Z80, autorisaient : les paires BC, DE et HL.
Le 8008 ne gérait que des opérations sur 8 bits. Mais le 8080 et le 8085 ont ajouté des instructions 16 bits qui agissaient sur des paires de registre, que le Z80 a repris. Une paire de registres est considérée comme un registre unique de 16 bits pour certaines opérations arithmétiques, dont l'incrémentation. Voici la liste des instructions concernées :
* INC et DEC pour l'incrémentation et la décrémentation ;
* DAD : additionne le registre HL avec une autre paire (Hl inclus) ;
* LXI : copie une constante immédiate dans une paire de registres ;
* LHLD : lit 16 depuis la mémoire et l'enregistre dans une paire de registres ;
* SHLD : copie 16 bits depuis une paire de registres et l'enregistre en mémoire ;
* PUSH et POP : empile ou dépilent une paire de registre sur la pile ;
* XTHL : échange la paire HL avec les 16 bits au sommet de la pile d'appel ;
* XCHG : échange le contenu de la paire HL et DE.
Pour résumer, le processeur avait des instructions LOAD, STORE, PUSH et POP adaptées pour gérer des paires de registre. De plus, l'instruction XCHG permettait d’échanger le contenu des paires DE et HL. L'instruction a été étendue sur les processeurs 16 bits pour échanger tous les registres. Mais l'implémentation était alors différente. L'incrémentation sur une paire de 16 bit était très utile, car les adresses sont souvent incrémentées quand on parcours un tableau. Ces instructions nous donnent quelques indices sur ce qu'il y a dans le processeur.
Le système de pseudo-aliasing a un impact sur le banc de registre. Le banc de registre regroupe les registres généraux et le pointeur de pile, mais ne contient pas l'accumulateur. Les contraintes sur les paires de registres possibles ne s'expliquent que d'une seule manière : le banc de registre contient des registres de 16 bits, une paire de registres 8 bits est mémorisée dans un registre unique. Il faut donc faire une différence entre les registres architecturaux de 8 bits, et les registres réels de 16 bits.
Le banc de registre a un port de 8 bits pour les données, qui est fabriqué à partir d'un port 16 bits auquel on a rajouté un multiplexeur pour choisir soit l'octet de poids faible, soit l'octet de poids fort. Le bus de données fait 8 bits, ce qui fait que les instructions LOAD, STORE, PUSH et POP pour paires 16 bits sont réalisées en deux fois : on lit/écrit l'octet de poids faible, puis celui de poids fort. Par contre, le bus d'adresse fait bien 16 bits. Cela suggère que le banc de registre dispose d'un port de 16 bits dédié aux adresses, en plus du port de données 8 bits.
[[File:Architecture d'un CPU 8-16 bits avec un banc de registre double port.png|centre|vignette|upright=2|Architecture d'un CPU 8-16 bits avec un banc de registre double port]]
L'incrémentation d'une paire 16 bits ne coute rien à implémenter, ou presque. En effet, le processeur incorpore un incrémenteur 16 bits pour le ''program counter'', qui est relié au bus d'adresse. L'idée est de rentabiliser cet incrémenteur, en lui permettant d'incrémenter des données/adresses de 16 bits obtenues via pseudo-aliasing. De même, il peut être utilisé pour incrémenter le pointeur de pile, voire un compteur de rafraichissement mémoire (pour rappel, le rafraîchissement mémoire demande de balayer la mémoire d'adresse en adresse et été fait par le CPU à l'époque). Pour cela, il suffit de connecter le ''program counter'', le banc de registre, et l'incrémenteur, via un bus dédié.
[[File:Calcul d'adresse par ALU dédiée avec PC séparé.png|centre|vignette|upright=2|Calcul d'adresse par ALU dédiée avec PC séparé]]
Notez qu'on peut encore simplifier le tout en placant le ''program counter'' dans le banc de registre, ce qui ne gênera pas le travail de l'incrémenteur mais simplifiera le câblage au bus d'adresse. Ce n'était pas systématique, certains processeurs mettaient le ''program counter'' dans le banc de registre, d'autres non.
: Inclure le ''program counter'' dans le banc de registre permet parfois de remplir un vide. Par exemple, sur un processeur avec 12 registres, le banc de registre devrait faire idéalement 16 registres, inclure le ''program counter'' dedans fait monter le tout à 13.
[[File:Architecture d'un CPU 8-16 bits.png|centre|vignette|upright=2|Architecture d'un CPU 8-16 bits]]
Les processeurs Intel 8 bits, à savoir le 8008, le 8080 et le 8085 ; mettaient le ''program counter'' dans le banc de registre. Vous avez donc toutes les armes pour comprendre leur micro-architecture. Par exemple, voici la micro-architecture du processeur 8080. Remarquez le banc de registre, qui contient tous les registres sauf l'accumulateur et le registre. Il a deux ports : un pour les adresses et un pour les données. Notez le dé-multiplexeur sur le port de donnée. Pour le reste, il s'agit d'une architecture à accumulateur hybride des plus classiques.
[[File:Intel 8080 arch.svg|centre|vignette|upright=3|Microarchitecture de l'Intel 8080.]]
Le Z80 est un processeur inspiré du design des processeurs Intel 8 bits, mais avec pas mal d'améliorations. Un point particulier de ce processeur est son banc de registre. Il contient tous les registres du processeur, y compris l'accumulateur et le registre d'état ! Les seuls registres en-dehors du banc de registre sont le ''program counter'' et un compteur de rafraichissement mémoire IR.
Un autre point particulier est que les registres dans le banc de registres avaient une copie séparée accessible uniquement pour les interruptions, via fenêtrage de registres. Et l'accumulateur et le registre d'état étant dans le banc de registre, il y avait deux accumulateurs et deux registres d'état. Les registres A, B, C, D, E et F étaient dupliqués, par le pointeur de pile ni les registres d'indice. Les copies des registres étaient nommées A', B', C', D', E' et F'.
Le Z80 supportait des instructions d'échange de registre en plus des CPU Intel 8 bits. L'instruction EX peut échanger soit le contenu des paires D,E et H,F, soit la paire A,F avec la paire A',F'. L'instruction EXX échange les paires BC, DE, HL avec les paires BC', DE', HL'. En faisant cela, le programmeur pouvait utiliser deux fois plus de registres généraux s'il n'utilisait pas les interruptions. L'échange de paires se fait sans copies de registres, mais simplement en modifiant l'adresse envoyée sur le banc de registre. Pour cela, plusieurs bascules mémorisent des bits qui indiquent si les paires ont été échangées ou non. Il y a une bascule pour les paires DE , HL ; une autre pour les paires A,F et paire A',F', une dernière pour l'instruction EXX. En combinant ces bascules avec les noms de registres envoyés par le séquenceur, on peut échanger les paires de registres.
==Le cas particulier des processeurs 4 bits : le 4004 d'Intel==
L'Intel 4004 était le tout premier micro-processeur. Il s'agissait d'un microprocesseur de 4 bits, basé sur une architecture à accumulateur. Il disposait d'un accumulateur et de 16 registres d'indice, tous de 4 bits. Il faisait des calculs sur des données de 4 bits, appelées des nibbles. Cependant, sur ses 46 instructions machines supportées, 41 agissaient sur des opérandes de 8 bits, les 5 restantes sur des opérandes de 16 bits. Simplement, les calculs se faisaient en deux fois, en échangeant des données entre mémoire RAM et accumulateur.
Le 4004 est un circuit intégré avec peu de broches. Il dispose notamment d'un bus de données/adresse, qui est multiplexé, c’est-à-dire qu'il sert alternativement de bus de données et de bus d'adresse selon les besoins. Le bus de commande mémoire fait 5 bits, dont 4 pour les chips de RAM, un pour la ROM. Les adresses sont codées sur 12 bits, les données sur 4 et les instructions sur 8 bits. L'envoi d'une adresse sur le bus se fait en plusieurs fois, de même que la lecture d'une instruction. Il s'agit là d'une adaptation pour outrepasser les limitations d'un processeur 4 bit.
[[File:Intel 4004 processor pinout.png|centre|vignette|upright=2|Broches de l'Intel 4004. Nous verrons à quoi elles servent plus bas.]]
===L'espace d'adressage de l'Intel 4004===
Les adresses du processeur sont sur 12 bits, ce qui fait 4096 adresses différentes. Elles regroupent à la fois la ROM et la mémoire RAM, vu que l'architecture est une sorte de mélange bizarre entre une architecture Von Neumann et Harvard. Le processeur gère bien deux espaces d'adressage séparés, mais la RAM et la ROM sont reliés au même bus. La sortie CM-ROM du processeur indique si l'adresse envoyée correspond à la RAM ou la ROM. Un circuit de décodage d'adresse active ou désactive la RAM selon la valeur de ce bit, l'inverse pour la ROM, en agissant sur leurs bits Chip Select. Seule la RAM ou la ROM répondent alors à l'adresse.
Pour ce qui est de la RAM, le circuit de décodage d'adresse pouvait gérer au maximum 1024 adresses différentes, chacune contenant un nibble. Pour cela, le CPU 4004 était relié à une ou plusieurs RAM externes, des Intel 4002. Chaque Intel 4002 contenait 64 nibbles de données, plus 16 nibbles de statut qu'on ne détaillera pas ici. Les nibbles de statut étaient accessibles en utilisant des instructions d'entrée-sortie, donc pas avec des lectures/écritures mémoire. Les 64 nibbles de données sont découpés en 4 groupes de 16 nibbles. Le CPU pouvait être relié à maximum 16 Intel 4002, ce qui fait 1024 nibbles de données et 256 nibbles de statut. L'ensemble permet de remplir l'espace d'adressage de 1024 adresses.
===Le registre de page et le pseudo-aliasing des registres===
Sélectionner une adresse mémoire utilisait un mélange entre pseudo-aliasing et registre de page. Pour les données, les 1024 adresses étaient découpées en 4 pages de 256 adresses. Pour la ROM, les 4096 adresses étaient découpées en 16 pages de 256 adresses. Localiser une donnée dans une page ne requiert que 8 bits, 2/4 bits supplémentaires permettent de sélectionner la page voulue. Le registre de page était dans le processeur lui-même, et était relié aux sorties du processeur nommées CM-RAM 0, 1, 2 et 3. Les 4 sorties encodaient un nombre qui permet de sélectionner le numéro de page voulu.
Le registre de page fait 5 bits : un pour distinguer RAM et ROM, 4 bits pour sélectionner la page voulue. L'avantage est que la carte mère gère au maximum 16 chips de RAM, ce qui colle parfaitement avec les 4 utilisés pour sélectionner une page. Un chip de RAM correspond à une page, et chacun est activé ou désactivé suivant la page sélectionnée. Pour cela, il suffit d'ajouter un décodeur sur la carte mère, qui prend les 4 bits du registre de page et fournit les signaux Chip Select aux différents chips de RAM.
Reste alors à utiliser les 8 bits d'adresse à l'intérieur d'un chip de RAM. Le 4004 permettait de concaténer deux registres d'indice de 4 bits pour former une adresse de 8 bits. Les instructions d'accès mémoire pouvaient ainsi préciser une paire de registre d'indice pour préciser quelle adresse lire/écrire. Idem pour les branchements indirects : le processeur supportait une instruction de branchement indirect qui précisait l'adresse dans une paire de registres d'indice. Les registres d'indice sont donc assez mal nommés sur cette architecture, vu qu'ils peuvent servir soit de registre d'indice, soit de demi-registre d'adresse. Il s'agit là du système de pseudo-aliasing des registres, mais appliqué aux registres d'indice.
L'Intel 4004 gérait deux instructions pour gérer les adresses mémoires. La première, l'instruction DCL (''Designate Command Line'') configure le registre de page. Elle prend en entrée un numéro de page et le copie dans le registre de page. L'opérande peut provenir d'un registre d'indice ou de l'accumulateur. La seconde, l'instruction SRC (''Send Register Control'') concatène deux registres d'indice pour obtenir une adresse de 8 bits. Un accès mémoire se fait donc en maximum trois instructions : une qui configure le registre de page si ce n'est pas déjà fait, une instruction SRC pour envoyer l'adresse, et une troisième instruction qui dit s'il faut faire une lecture ou une écriture.
===La microarchitecture de l'Intel 4004===
Il incorporait une pile d'adresse de retour intégrée au processeur. La pile d'adresse acceptait exactement 3 adresses maximum. Elle était regroupée avec le ''program counter'' dans un banc de registre, de 4 registres. Le ''program counter'' et le pointeur de pile faisaient chacun 12 bits, soit trois nibble. Ils étaient incrémentés par un incrémenteur dédié.
SI on omet le registre de page et la pile d'adresse, le 4004 est une architecture à accumulateur des plus classiques, avec un bus interne unique, un banc de registre pour les registres d'indices, un accumulateur relié à une unité de calcul. Les registres d'indice étaient dans un banc de registre séparés, car ils faisaient 4 bits chacun, contrairement au pointeur de pile et le ''program counter''. Un détail important est que les bancs de registres du 4004 étaient implémentés avec de la DRAM, et non des registres usuels fabriqués avec des bascules 1 bit.
[[File:Microarchitecture de l'Intel 4004.png|centre|vignette|upright=2.5|Microarchitecture de l'Intel 4004]]
<noinclude>
{{NavChapitre | book=Fonctionnement d'un ordinateur
| prev=Les architectures à pile et mémoire-mémoire
| prevText=Les architectures à pile et mémoire-mémoire
| next=Les processeurs de traitement du signal
| nextText=Les processeurs de traitement du signal
}}
</noinclude>
93metw8hgtk8fcx4tvk9s8ioxtjnrhq
765700
765699
2026-05-01T17:14:41Z
Mewtow
31375
/* Les microcontrôleurs PIC */
765700
wikitext
text/x-wiki
Nous avons déjà abordé la notion de processeur 8, 16, 32, 64 bits. Elle désigne la taille des registres généraux, ou de l'accumulateur. De nos jours, les processeurs 32 et 64 bits sont la norme, mais les premiers micro-processeurs étaient des processeurs 4 et 8, avant de passer rapidement au 16 bits. La raison est que leur budget en transistor limité faisait qu'on ne pouvait pas utiliser une ALU trop grande : une ALU 8 bit prend deux fois moins de place et de transistors qu'une ALU 16 bits. Cependant, les processeurs 8 bits avaient de sérieuses limitations qui étaient compensées par diverses solutions. Dans ce chapitre, nous allons faire une revue rapide des processeurs 8 bits et de leurs fonctionnalités.
La principale limitation des CPU 8 bits était l'adressage : des registres de 8 bits limitaient l'espace d'adressage à seulement 256 adresses, soit à peine 256 octets ! Intuitivement, on se dit que 256 octets est purement impraticable, on ne peut rien faire d'intéressant avec seulement 256 de RAM + ROM. Et c'est partiellement vrai. L'adage veut que 16 bits est la taille minimale intéressante, la limite à partir de laquelle on a assez de mémoire RAM/ROM pour coder des applications intéressantes. Mais 256 octets de RAM est largement suffisant sur de nombreux systèmes embarqués simples s'en accommodent : des caisses enregistreuses, des systèmes de régulation de feu de circulation, etc.
Pour les applications demandant plus de mémoire RAM, les CPU de l'époque contournaient la limitation de 256 octets de RAM avec de nombreux stratagèmes. Dans ce qui va suivre, nous allons séparer les CPU 8 bits selon qu'ils utilisent une architecture Harvard ou une architecture Von Neumann. La raison est qu'une architecture Harvard permet en soi de contourner partiellement ce problème d'adressage. Les choses sont plus compliquées avec une architecture Von Neumann.
==Les processeurs 8/16 bits à architecture Harvard ==
La première solution est d'utiliser une architecture Harvard. Le processeur 8 bit a alors deux espaces d'adressage : un pour la RAM, un autre pour la ROM. Et les deux utilisent des adresses de taille différente. La ROM est reliée à un bus d'adresse de 16 bits, alors que la RAM est elle connectée à un bus d'adresse de 8 bits. La RAM est donc limitée à 256 octets, alors que la ROM peut monter jusqu'à 64 kibioctets. Mine de rien, faire ainsi est largement suffisant.
Les processeurs de l'époque intégraient parfois les 256 octets de RAM directement dans le processeur. Beaucoup en implémentaient moins, avec par exemple seulement 64 octets de RAM, ou 32 octets, ou 128 octets. L'avantage est que cela éliminait le bus d'adresse des données et ne laissait que le bus d'adresse pour la ROM. On économisait ainsi beaucoup de broches sur le circuit intégré du CPU. Et pour les applications demandant plus de RAM, on pouvait ajouter un circuit séparé qui permettait d'adresser une RAM plus grande. Mais cela sera plus clair avec un exemple.
===Les microcontrôleurs PIC===
Les '''microcontrôleurs PIC''' regroupent des microcontrôleurs allant de microcontrôleurs 8 bit aux performances très faible, à des microcontrôleurs 32 bits bien plus puissants. Les microcontrôleurs PIC sont très utilisés dans l'embarqué ou d'informatique industrielle. Ils sont vendu à des volumes assez impressionnants, plusieurs millions par an. Et si vous avez ou êtes en train de faire des études d'électronique, je parie que vous les avez déjà vu en classe, ou que ce ne saurait tarder. Dans ce qui suit, nous allons nous concentrer sur les microcontrôleurs PIC 8 bits, à savoir les PIC 16, 16 et 18. Les PIC 24, qui sont des microcontrôleurs 16 bits, ne seront pas abordés.
Les microcontrôleurs PIC 8 bits incorporent une mémoire RAM très petite, ainsi qu'une architecture Harvard, comme dit plus haut. La mémoire ROM des PIC va de 1024 instructions à 4096 instructions. En comparaison, la mémoire RAM des microcontrôleurs PIC ne peut pas dépasser 256 adresses, et elle est encore plus petite en pratique sur certains modèles. Pour donner un exemple, le PIC16F84 a une RAM composée de 68 "registres" de 8 bits. Le terme "registres" devrait vous faire tiquer, mais c'est bien le terme utilisé dans la documentation des PIC. Et il faut admettre que la différence entre banc de registre et SRAM intégrée est floue, mais nous expliquerons pourquoi dans quelques paragraphes.
: Les PIC 18 peuvent adresser plus de 256 octets de RAM en utilisant la commutation de banques, une technique qui sera abordée dans plusieurs chapitres.
[[File:DocPIC16F84 3.png|centre|vignette|upright=3|Espaces d'adressage du PIC16F84.]]
Un détail est que la SRAM n'a qu'un seul port qui sert à la fois pour les lectures et écritures. Pour compenser, les PIC sont des architectures à accumulateur, où une opérande est lue depuis la SRAM, l'autre depuis l'accumulateur. Leur implémentation de l'accumulateur ajoute une petite subtilité : le résultat d'une opération arithmétique peut être enregistré ailleurs que dans l'accumulateur. Le résultat peut aussi remplacer la seconde opérande, celle lue en mémoire RAM. Dit autrement, le résultat est enregistré dans l'adresse mémoire source. Les instructions de calcul ont le choix : un bit dans leur encodage précise où enregistrer le résultat.
{|
|-
|[[File:DocPIC16F84 4.png|centre|vignette|upright=2|Microarchitecture simplifiée d'un microcontroleur PIC (ici, un 16F84).]]
|[[File:DocPIC16F84 5.png|centre|vignette|upright=2|Microarchitecture simplifiée d'un microcontroleur PIC (ici, un 16F84), avec les branchements directs.]]
|}
Les PIC incorporent une pile d'appel allant de 2 à 8 niveaux, suivant les modèles. Outre l'accumulateur, les PIC disposent de registres de contrôle, d'un ''program counter'', d'un registre d'état, et d'un pointeur de pile. Il y a aussi des registres pour les entrées et sorties. Les registres d'entrée-sortie permettent de lire ou écrire sur un port d'entrée-sortie ou de lire un ''timer''. En clair, les PIC ont un espace d'adressage séparé pour les entrées-sorties.
Un détail très important est que les registres sont mappés en mémoire, à quelques exceptions près ! En clair, on peut y accéder en lisant/écrivant à une adresse mémoire bien précise. Les seules registres qui ne sont pas mappés en mémoire sont l'accumulateur, la pile d'appel, et les registres d'entrée-sortie. Par exemple, sur les modèles 16F, l'espace d'adressage fait 128 octets, dont 32 sont réservés aux registres du processeur, ce qui fait que seules 96 octets sont adressables comme de la RAM. Mais les 128 octets sont un seul et unique SRAM dans le processeur. Ce qui explique qu'il est difficile de séparer banc de registre et RAM principale sur ce processeur : les deux sont fusionnées !
[[File:DocPIC16F84.png|centre|vignette|upright=2|DocPIC16F84]]
Le processeur de ces microcontrôleurs a un jeu d'instruction propriétaire, le jeu d'instruction PIC. Les instructions PIC sont très petites. Les premières versions du jeu d'instruction utilisaient des instructions codées sur 12 bits, dont 5 pour l'adresse mémoire de la seconde opérande. Pour les branchements, 3 bits étaient utilisés pour l'opcode, 9 pour l'adresse de destination. Par la suite, les instructions ont été étendues à 13 bits sur les PIC1670, puis à 14, 15 et 16 bits. Les adresses ont alors été élargies, ce qui permet d'adresser en peu plus de mémoire RAM.
Les instructions se limitent à des additions/soustractions, des opérations bit à bit,des branchements, des instructions LOAD/STORE, ainsi que des opérations de manipulation de bit. Il y a une instruction pour mettre une adresse à zéro, qui peut aussi mettre à zéro l’accumulateur. La plupart des modèles n'a pas d'instruction MOV pour faire une copie entre deux registres, elle n'a été intégrée que sur les modèles haute performance.
Pour ce qui est des branchements, les PIC n'ont pas d'instructions de branchement conditionnels, ils font avec une SKIP instruction et des branchements inconditionnels. Par contre, ils ont des branchements pour les appels et retour de fonction. Mieux que ça, ils intègrent une pile d'appel d'environ 8 adresses de retour. Pour donner une idée, l'adresse de retour est encodée sur 10 bits sur les PIC16F84.
Pour les instructions de manipulation de bit, il y a des instructions pour tester/masquer un bit dans une opérande, 4 en tout ( mettre à 0, mettre à 1, tester si bit = 1, tester si bit = 0). Les instructions qui testent un bit prennent leur opérande dans l'accumulateur. Il y a aussi deux instructions de rotation à gauche et droite, qui tiennent compte de la retenue mémorisée dans le registre d'état. Mentionnons aussi une instruction pour inverser deux ''nibbles'' dans un octet.
Les PIC ont aussi des instructions d'incrémentation et de décrémentation, un peu spéciales. Ces dernières regroupent : une incrémentation normale, une décrémentation normale, une décrémentation fusionnée avec une instruction SKIP, et une incrémentation fusionnée avec une instruction SKIP. Les deux dernières incrémentent/décrémentent l'accumulateur et SKIP l'instruction suivante si le résultat est zéro. Elles permettent de fortement simplifier l'implémentation des boucles qui s'exécutent tant que leur compteur atteint zéro.
Les modèles haute performance ajoutent des instructions d'addition avec retenue entrante, idem pour la soustraction. De telles instructions ssont très utiles pour faire des additions/soustractions sur des opérandes de 16 bits. Le processeur a beau être un CPU 8 bits, il peut être utilisé pour faire des calculs 16 bits, la performance est alors amoindrie, mais ce n'est pas un problème pour les applications d'un tel microcontroleur.
Les PIC gèrent l'adressage absolu et immédiat, mais pas plus. L'adressage absolu, celui où l'adresse est intégrée dans l'instruction, est très simple à implémenter. Les adresses prennent moins d'un octet, vu que la taille de la RAM est très petite, les adresses sont très courtes, les intégrer dans des instructions elles-mêmes courtes n'est pas un problème. L'adresse est encodée sur 5 à 7 bits, selon le modèle, ce qui permet d'adresser entre 32 et 128 octets.
Les PIC ne supportent pas l'adressage indirect, mais peuvent l'émuler grâce à un '''registre d'adresse''' dédié. Il s'agit du registre FSR, qui mémorise l'adresse à lire/écrire. Il est possible de copier un pointeur dedans, qui provient soit de l'accumulateur, soit de la mémoire SRAM. Dans les deux cas, la donnée adressée est lue ou écrite dans un registre INDR, est un registre d’interfaçage rendu adressable. Le registre FSR est directement connecté sur le bus d'adresse.
Les modèles de base se débrouillent avec un registre FSR et un registre INDR, mais les modèles plus performants ont deux ou trois copies de chaque registre. Les modèles PIC18 ajoutent aussi des instructions LOAD/STORE qui émulent les modes d'adressage à post- ou pré-incrément/décrément, et le mode d'adressage "Base + Indice + Décalage", encore une fois en utilisant les registres FSR et INDR.
Les modèles intiaux, comme les PIC 10 et 12, ne supportaient pas les interruptions, mais c'est chose réglé sur les modèles plus récents. Ils ont même des registres séparés pour les interruptions et les programmes normaux.
Avec tout ce qu'on vient de dire, vous devriez pouvoir comprendre la microarchitecture d'un PIC, qui est résumée dans ce schéma.
[[File:DocPIC16F84 all.png|centre|vignette|upright=2.5|Microarchitecture du PIC16F84.]]
===Le Fairchild F8 et la console de jeu Fairchild Channel F===
Un autre exemple est la Fairchild F8 de la défunte entreprise Fairchild Semiconductor. Il incorpore un processeur 8 bits, c'est à dire que le processeur fait des calculs sur des entiers de 8 bits maximum, une mémoire RAM de 64 octets, ainsi qu'une mémoire ROM de 1 kibioctet. Les 64 octets de RAM sont certes très peu, mais c'est suffisant pour certaines applications simples, comme les caisses automatiques de l'époque, ou des applications embarquées. Et de toute façon, il est possible d'ajouter de la mémoire RAM supplémentaire si les 64 octets de RAM intégrée ne suffisent pas. Le système était donc modulaire, adaptable selon les besoins, peu cher pour son implémentation minimale sans RAM en plus.
Vu qu'il s'agit d'un des tout premiers ordinateurs, il est sorti à une époque où la technologie était rudimentaire. À cette époque, le processeur était composé de pièces détachées qu'il fallait souder ensemble pour obtenir un processeur fonctionnel. Ce n'est que plus tard qu'est apparu le micro-processeur, qui regroupe un processeur complet dans un seul circuit intégré. Le résultat est que le processeur du Fairchild F8 est coupé en deux, l'unité de calcul et l'unité de contrôle sont placés dans des pièces détachées séparés.
Le microcontrôleur est composé de trois à quatre pièces détachées, certaines étant optionnelles. La première est le '''3850 CPU''', qui regroupe l'unité de calcul et la mémoire RAM intégrée. La seconde est le PSU (''3851 Program Storage Unit''), qui regroupe la mémoire ROM et l'unité de contrôle, ''program counter'' inclut. S'il y a besoin d'utiliser plus de RAM, il faut ajouter un circuit d’interface mémoire, qui est au choix le ''3852 Dynamic Memory Interface'' (DMI) ou le ''3853 Static Memory Interface'', le premier étant connecté à une mémoire de type DRAM, l'autre à une SRAM (nous verrons ce que sont les DRAM et les SRAM dans le prochain chapitre).
[[File:Fairchild F8.png|centre|vignette|upright=2|Fairchild F8]]
Le système minimal est composé d'un PSU et d'un 3850, sans les circuits d'interface mémoire. Le tout donne un système avec un processeur 8 bit, 64 octets de RAM et 1 kibioctet de ROM, les deux mémoires étant intégrées dans le "processeur". Le processeur gérait 4 entrées-sorties, chacune étant reliée avec un bus de 8 bit au processeur. Au passage, en 1977, Mostek a créé un microcontrôleur qui regroupe un PSU et un 3850 : le Mostek 3870. Le système minimal n'avait pas de bus d'adresse, vu que la RAM était intégrée au processeur. C'est les 3852 et 3853 qui ajoutaient un bus d'adresse. Ils ajoutent un bus d'adresse de 16 bits, ce qui permet d'adresser 64 kibioctets de RAM.
[[File:Fairchild-Channel-F.jpg|vignette|un Fairchild Channel F]]
Le Fairchild F8 a été utilisé dans la Fairchild Channel F, une des toute première console de seconde génération, à savoir des consoles qui utilisaient des cartouches de jeu. Avant les consoles de seconde génération, les consoles étaient non-programmables. Elles étaient conçues pour faire tourner un jeu précis, aucun autre, le jeu étant implémenté dans leurs circuits.
La Fairchild Channel F est composé du système minimal, auquel on a ajouté une carte son rudimentaire et 2 kibioctets de mémoire vidéo. La mémoire vidéo sert uniquement pour afficher des images à l'écran : on écrit l'image à afficher dedans, un circuit vidéo se charge de l'afficher à l'écran automatiquement. Le processeur ne fait qu'écrire dans cette RAM vidéo, il ne peut pas en lire le contenu. De la RAM supplémentaire peut cependant être ajoutée dans les cartouches de jeu.
===L'usage d'une architecture Harvard modifiée : les consoles 8 bits===
Pour encore améliorer la situation, il est possible d'utiliser une architecture Harvard modifiée, qui permet de lire des données depuis la mémoire ROM. Cela réduit encore plus les besoins en mémoire RAM. Les constantes manipulées par le programme sont mémorisées en ROM, lues depuis la ROM, au lieu d'être chargées en RAM. Les consoles de jeu utilisaient beaucoup de stratagème.
L'exemple type est celui des consoles 8 bits avec des graphismes en 2D. La cartouche de jeu contenait une ROM, qui mémorisait le code du jeu, les niveaux, les sprites et autres données graphiques. Leur carte graphique lisait directement les ''sprites'' depuis la mémoire ROM, sans avoir à les charger en mémoire vidéo. La mémoire vidéo se contentait de mémoriser le reste des informations graphiques, ainsi que des pointeurs vers les ''sprites'' en ROM. En conséquence, les consoles 8 bits n'avaient pas besoin de beaucoup de RAM, vu qu'une grande partie des données utiles étaient dans une ROM directement accessible par le processeur. A l'opposé, les micro-ordinateurs devaient copier les données d'un jeu depuis une disquette dans la mémoire RAM, ce qui demandait d'avoir plus de RAM.
Le passage au support CD sur les consoles 32 bits a eu la même conséquence. Le processeur ne pouvant pas lire directement le CD à sa guise, il fallait copier les données du CD en RAM. D'où l'apparition de temps de chargement assez longs, inexistants sur support cartouche.
Avec ce genre de stratagèmes, 256 octets de RAM est largement suffisant sur de nombreux systèmes, à condition qu'on ait assez de ROM pour coder un programme digne de ce nom. Par exemple, de nombreux systèmes embarqués simples s'en accommodent : des caisses enregistreuses, des systèmes de régulation de feu de circulation, etc.
===Le HP Nanoprocessor : un processeur sans ALU===
Un dernier exemple est celui du processeur HP Nanoprocessor, de l'entreprise HP. Il a été commercialisé en 1974, en même temps que les premiers micro-processeurs d'Intel. Tous les processeurs de l'époque étaient des processeurs 8 bits et le HP Nanoprocessor ne faisait pas exception. Ce n'était pas un processeur haute performance, il était destiné à des applications d'informatique industrielle ou embarquée. D'ailleurs, il utilisait des transistors de type metal-gate, peu performants, là où ses contemporains utilisait des transistors en silicium, plus performants.
Mais une caractéristique qui rend cela encore plus claire est qu'il n'y a pas d'ALU ! En effet, ce processeur est incapable de faire des additions, des soustractions ou autres opérations simples ! Il est cependant capable d'effectuer des incrémentations et décrémentations, des décalages, des opérations logiques comme des ET/OU/NON/XOR et bien d'autres. Il supporte en tout 48 instructions, avec un support limité des modes d'adressage indirects. Les instructions de branchement étaient des instructions SKIP, il n'y avait pas d'instructions de branchement généralistes.
Pour ce qui est des registres, il disposait de 16 registres de 8 bits et d'un accumulateur. Niveau mémoire, il était relié à une mémoire ROM, rien de plus. Il n'avait de RAM supplémentaire qu'on pouvait lui adjoindre, il devait se débrouiller avec seulement ses registres. Et cela ne posait pas de problèmes pour son usage. Seul le mode d'adressage indirect à registre est supporté, il n'y a pas de registres d'indices. Ce mode d'adressage permet de lire des données en mémoire ROM, la ROM pouvant contenir des tableaux de valeurs constantes.
: Il est possible de lui adjoindre de la RAM via les ports d'entrée-sortie, ainsi qu'une ALU, mais RAM et ALU sont traités comme des périphériques avec lesquels on communique, ils ne sont pas intégrés au processeur.
Niveau micro-architecture, il incorporait une unité de calcul logique et un circuit comparateur. Le comparateur était un circuit comparateur série des plus basiques, qui était utilisé pour les instructions de branchement et associées. L'unité de calcul logique gérait des incrémentations/décrémentation, des décalages, les opérations logiques et quelques autres. L'unité de calcul logique était bit-slicée, à savoir conçue en assemblant 8 ALU de 1 bit chacune, enchainées en série. Le tout était combiné à des circuits de ''carry skip''.
[[File:Unité de calcul du HP nanonprocessor.png|centre|vignette|upright=2|Unité de calcul du HP nanoprocessor]]
Son unité de décodage d'instruction était très simple, essentiellement basée sur des portes NOR, grâce à un encodage efficace des instructions machine. Le ''program counter'' fait 11 bits, ce qui permet d'adresser une ROM de 2 kibioctets. Le ''program counter'' était relié à un circuit incrémenteur qui gérait les isntructions SKIP (il pouvait incrémenter le ''program counter'' par pas de 1 ou de 2 en cas de SKIP). Le processeur contient aussi deux registres, qui servent en quelque sorte de pile d'adresse de retour. Un premier registre mémorise l'adresse de retour d'une fonction, l'autre mémorise le ''program counter'' lors d'une interruption, pour savoir où brancher à la fin de l'interruption.
[[File:HP nanoprocessor.png|centre|vignette|upright=2.5|HP nanoprocessor]]
Fait intéressant, le concepteur du processeur a gracieusement donné les masques utilisés pour graver le silicium du processeur au site [https://www.cpushack.com/ CPU Shack]. Les masques en question sont disponibles ici :
* [https://www.cpushack.com/2020/08/20/hp-nanoprocessor-mask-set/ HP NanoProcessor Mask Set]
* [https://www.cpushack.com/2020/08/09/the-forgotten-ones-hp-nanoprocessor/ The Forgotten Ones: HP Nanoprocessor]
Les masques ont été analysés par Ken Shirrif dans cet article de blog :
* [https://www.righto.com/2020/09/hp-nanoprocessor-part-ii-reverse.html HP Nanoprocessor part II: Reverse-engineering the circuits from the masks]
==Les processeurs 8/16 bits à architecture Von Neumann==
L'usage d'une architecture Harvard est une solution pour adresser plus de mémoire avec des CPU 8 bits. Mais plusieurs microprocesseurs commerciaux n'utilisaient pas cette solution. À la place, c'était des architectures Von Neumann, mais qui étaient capables de gérer des adresses de 16 bits. Les données faisaient 8 bits, les registres faisaient 8 bits, mais quelques techniques permettaient de gérer des adresses de 16 bits. Nous parlerons de '''processeurs 8/16 bits''' pour les désigner, et nous allons les étudier à part.
Un point important est que la gestion d'adresses de 16 bits permet d'adresser 64 kibioctets, qui peuvent être remplis avec de la RAM et de la ROM. On a donc le meilleur des mondes : 64 kibioctets de mémoire, mais avec des données de 8 bits et les économies de circuit qui vont avec. L'avantage est que le processeur peut maintenant gérer une vraie pile d'appel, pas seulement une pile d'adresse de retour. Il lui suffit pour cela d'intégrer un pointeur de pile codé sur 16 bits.
===Les modes d'adressage par page des CPU Motorola===
Les processeurs Motorola 8 bits étaient des processeurs 8 bits avec un bus d'adresse de 16 bits. C'était des processeurs à accumulateur incorporant deux registres d'indice, un registre d'état, un pointeur de pile, et un ''program counter''. Tous les registres sont reliés au bus d'adresse, sauf le registre d'état et l’accumulateur. Tous les registres font 8 bits, sauf le ''program counter''. La pile est câblée pour être dans un bloc de 256 octets compris entre l'adresse 1 0000 0000 et l'adresse 1 1111 1111, ce qui fait que son adressage se fait avec un seul octet.
[[File:6502-architecture.svg|centre|vignette|upright=1.5|Architecture simplifiée du 6502.</br> X et Y : registres d'indice ;</br> S : le pointeur de pile ;</br> A : accumulateur ;</br>P : registre d'état.</br>]]
Les processeurs Motorola 8 bits utilisaient une méthode simple pour adresser 64 kibioctets de RAM, avec des registres de 8 bits. Pour cela, ils utilisaient une variante de l'adressage base + décalage. Elle améliore l'adressage absolu, qui intègre l'adresse à lire/écrire dans l'instruction elle-même. L'adresse en question est de 8 bits et n'encode que les 8 bits de poids faible de l'adresse, les 8 bits de poids fort sont dans un '''registre de page''' adressé implicitement. L'adresse finale est obtenue en concaténant ce registre avec l'adresse mémoire intégrée dans l’instruction. Le résultat est que la mémoire était découpée en blocs de 256 consécutifs, chacun pouvant servir de fenêtre de 256 octets. Une page est réservée pour la pile, la seconde, comme dit plus haut.
Formellement, ce mode d'adressage a des ressemblances avec la commutation de banques, une technique qu'on verra dans les chapitres sur l'espace d'adressage et la mémoire virtuelle. Mais ce n'en est pas du tout : le registre de page est utilisé uniquement pour les accès mémoire avec le mode d'adressage base + décalage, mais pas pour les autres accès mémoire, qui gèrent des adresses complètes. Notons que l'usage d'un registre de page dédié fait que celui-ci est adressé implicitement.
Il faut noter que la technique a été utilisée sur des processeurs 16 bits, pour contourner la petite taille des instructions. Un exemple est celui du HP 2100, un processeur 16 bits. Il avait un registre de page de 5 bits et encodait 10 bits d'adresse dans ses instructions. Ses instructions d'accès mémoire disposaient d'un bit qui choisit quel mode d'adressage utiliser. S'il était à 0, l'adressage absolu était utilisé, le registre de page n'était pas utilisé. Mais s'il était à 1, le registre de page était utilisé pour calculer l'adresse.
Une évolution de l'adressage précédent est le '''mode page direct'''. Avec lui, le registre de page est étendu et contient une adresse mémoire complète. L'adresse finale n'est pas obtenue par concaténation, mais en additionnant le registre de page avec l'adresse fournie par adressage absolu + décalage. Un exemple est celui des premiers processeurs Motorola, qui géraient des adresses courtes de 8 bits. L'adresse courte de 8 bits correspondait non pas aux 256 premiers octets de la mémoire, mais à une fenêtre de 256 octets déplaçable en mémoire. La position de la fenêtre de 256 octets était spécifiée par le registre de page de 16 bits, qui précisait l'adresse du début de la fenêtre, celle de sa première donnée.
Il s'agit donc formellement d'adressage base + décalage, à un détail près : il n'y a qu'un seul registre de base. Le fait que ce registre de base soit unique fait qu'il est adressé implicitement, on n'a pas à encoder le numéro/noms de registre dans l'instruction. Le registre de base est utilisé uniquement pour l'adressage absolu, pas pour les autres accès mémoire. S'il y a des ressemblances avec la segmentation, une technique de mémoire virtuelle qu'on abordera dans quelques chapitres, ce n'en est pas vu que le registre de base est utilisé seulement pour un mode d'adressage bien précis.
===Le ''pseudo-aliasing'' des registres des processeurs Intel x86===
Voyons maintenant le cas des anciens processeurs 8 bits d'Intel à savoir l'Intel 4004, 4040, 8008 et 8080. Le Z80, un processeur inspiré des CPU Intel 8 bits, est aussi concerné. Avant de poursuivre, parlons des registres de ces processeurs. Les premiers CPU Intel incorporaient 7 registres de 8 bits nommés A, B, C, D, E, F, H, L, SP. Ils correspondent respectivement à : l'accumulateur A ; six registres nommés B, C, D, E, H et L ; le registre d'état F ; le pointeur de pile SP. Le Z80 ajoute deux registres d'indice X et Y. De plus, le Z80 dispose de registres d'interruption, qui sont en quelque sorte des copies des registres A, B, C, D, E, F, H, L. Le tout est illustré dans le tableau ci-dessous.
{|class="wikitable" style="text-align:center;"
|-
!
! Registres des CPU Intel
! Registres supplémentaires du Z80
|-
! Accumulateur
| A
| A'
|-
! Registre d'état
| F
| F'
|-
! Registres généraux
| B, C, D, E, H, L
| B', C', D', E', H', L'
|-
! Pointeur de pile
| colspan="2" | SP (sauf pour le 8008)
|-
! Registres d'indice
|
| X et Y
|}
Le 8008 incorpore une pile d'appel de 7 adresses, dans le processeur lui-même. Il en est de la même avec le 4004 et le 4040, comme on le verra dans la section sur les processeurs 4 bits. Mais le 8080 et le 8085 ont remplacé le tout par un simple pointeur de pile, afin d'avoir une véritable pile d'appel. Autant c'est impossible d'avoir une pile d'appel avec seulement 256 octets de mémoire, autant on peut se le permettre avec 65 536 adresses.
Pour gérer des adresses de 16 bits, ils auraient pu utiliser des registres d'adresse séparés, mais on préféré un système de '''pseudo-''aliasing'' de registres'''. Formellement, c'est un système qui concatène deux registres 8 bits pour obtenir une adresse de 16 bits. L’appariement a lieu lors de certaines opérations bien précises, qui n'ont de sens que pour les adresses : la lecture/écriture en mémoire, et l'incrémentation.
Il y avait cependant des contraintes quant aux paires de registres possibles, toutes les paires de registres n'étaient pas autorisées. Les CPU concernés sont donc des processeurs hybrides accumulateur-registre généraux. L'accumulateur ne peut pas être appairé, seuls les registres généraux le peuvent. Le Z80 autorise plus de paires que les CPU Intel. Voici les paires de registres qui pouvaient servir d'adresse 16 bits :
* Les CPU 8008 d'Intel autorisait une seule paire formée des registres H et L.
* Les autres processeurs, à savoir le 8080, le 8085 et le Z80, autorisaient : les paires BC, DE et HL.
Le 8008 ne gérait que des opérations sur 8 bits. Mais le 8080 et le 8085 ont ajouté des instructions 16 bits qui agissaient sur des paires de registre, que le Z80 a repris. Une paire de registres est considérée comme un registre unique de 16 bits pour certaines opérations arithmétiques, dont l'incrémentation. Voici la liste des instructions concernées :
* INC et DEC pour l'incrémentation et la décrémentation ;
* DAD : additionne le registre HL avec une autre paire (Hl inclus) ;
* LXI : copie une constante immédiate dans une paire de registres ;
* LHLD : lit 16 depuis la mémoire et l'enregistre dans une paire de registres ;
* SHLD : copie 16 bits depuis une paire de registres et l'enregistre en mémoire ;
* PUSH et POP : empile ou dépilent une paire de registre sur la pile ;
* XTHL : échange la paire HL avec les 16 bits au sommet de la pile d'appel ;
* XCHG : échange le contenu de la paire HL et DE.
Pour résumer, le processeur avait des instructions LOAD, STORE, PUSH et POP adaptées pour gérer des paires de registre. De plus, l'instruction XCHG permettait d’échanger le contenu des paires DE et HL. L'instruction a été étendue sur les processeurs 16 bits pour échanger tous les registres. Mais l'implémentation était alors différente. L'incrémentation sur une paire de 16 bit était très utile, car les adresses sont souvent incrémentées quand on parcours un tableau. Ces instructions nous donnent quelques indices sur ce qu'il y a dans le processeur.
Le système de pseudo-aliasing a un impact sur le banc de registre. Le banc de registre regroupe les registres généraux et le pointeur de pile, mais ne contient pas l'accumulateur. Les contraintes sur les paires de registres possibles ne s'expliquent que d'une seule manière : le banc de registre contient des registres de 16 bits, une paire de registres 8 bits est mémorisée dans un registre unique. Il faut donc faire une différence entre les registres architecturaux de 8 bits, et les registres réels de 16 bits.
Le banc de registre a un port de 8 bits pour les données, qui est fabriqué à partir d'un port 16 bits auquel on a rajouté un multiplexeur pour choisir soit l'octet de poids faible, soit l'octet de poids fort. Le bus de données fait 8 bits, ce qui fait que les instructions LOAD, STORE, PUSH et POP pour paires 16 bits sont réalisées en deux fois : on lit/écrit l'octet de poids faible, puis celui de poids fort. Par contre, le bus d'adresse fait bien 16 bits. Cela suggère que le banc de registre dispose d'un port de 16 bits dédié aux adresses, en plus du port de données 8 bits.
[[File:Architecture d'un CPU 8-16 bits avec un banc de registre double port.png|centre|vignette|upright=2|Architecture d'un CPU 8-16 bits avec un banc de registre double port]]
L'incrémentation d'une paire 16 bits ne coute rien à implémenter, ou presque. En effet, le processeur incorpore un incrémenteur 16 bits pour le ''program counter'', qui est relié au bus d'adresse. L'idée est de rentabiliser cet incrémenteur, en lui permettant d'incrémenter des données/adresses de 16 bits obtenues via pseudo-aliasing. De même, il peut être utilisé pour incrémenter le pointeur de pile, voire un compteur de rafraichissement mémoire (pour rappel, le rafraîchissement mémoire demande de balayer la mémoire d'adresse en adresse et été fait par le CPU à l'époque). Pour cela, il suffit de connecter le ''program counter'', le banc de registre, et l'incrémenteur, via un bus dédié.
[[File:Calcul d'adresse par ALU dédiée avec PC séparé.png|centre|vignette|upright=2|Calcul d'adresse par ALU dédiée avec PC séparé]]
Notez qu'on peut encore simplifier le tout en placant le ''program counter'' dans le banc de registre, ce qui ne gênera pas le travail de l'incrémenteur mais simplifiera le câblage au bus d'adresse. Ce n'était pas systématique, certains processeurs mettaient le ''program counter'' dans le banc de registre, d'autres non.
: Inclure le ''program counter'' dans le banc de registre permet parfois de remplir un vide. Par exemple, sur un processeur avec 12 registres, le banc de registre devrait faire idéalement 16 registres, inclure le ''program counter'' dedans fait monter le tout à 13.
[[File:Architecture d'un CPU 8-16 bits.png|centre|vignette|upright=2|Architecture d'un CPU 8-16 bits]]
Les processeurs Intel 8 bits, à savoir le 8008, le 8080 et le 8085 ; mettaient le ''program counter'' dans le banc de registre. Vous avez donc toutes les armes pour comprendre leur micro-architecture. Par exemple, voici la micro-architecture du processeur 8080. Remarquez le banc de registre, qui contient tous les registres sauf l'accumulateur et le registre. Il a deux ports : un pour les adresses et un pour les données. Notez le dé-multiplexeur sur le port de donnée. Pour le reste, il s'agit d'une architecture à accumulateur hybride des plus classiques.
[[File:Intel 8080 arch.svg|centre|vignette|upright=3|Microarchitecture de l'Intel 8080.]]
Le Z80 est un processeur inspiré du design des processeurs Intel 8 bits, mais avec pas mal d'améliorations. Un point particulier de ce processeur est son banc de registre. Il contient tous les registres du processeur, y compris l'accumulateur et le registre d'état ! Les seuls registres en-dehors du banc de registre sont le ''program counter'' et un compteur de rafraichissement mémoire IR.
Un autre point particulier est que les registres dans le banc de registres avaient une copie séparée accessible uniquement pour les interruptions, via fenêtrage de registres. Et l'accumulateur et le registre d'état étant dans le banc de registre, il y avait deux accumulateurs et deux registres d'état. Les registres A, B, C, D, E et F étaient dupliqués, par le pointeur de pile ni les registres d'indice. Les copies des registres étaient nommées A', B', C', D', E' et F'.
Le Z80 supportait des instructions d'échange de registre en plus des CPU Intel 8 bits. L'instruction EX peut échanger soit le contenu des paires D,E et H,F, soit la paire A,F avec la paire A',F'. L'instruction EXX échange les paires BC, DE, HL avec les paires BC', DE', HL'. En faisant cela, le programmeur pouvait utiliser deux fois plus de registres généraux s'il n'utilisait pas les interruptions. L'échange de paires se fait sans copies de registres, mais simplement en modifiant l'adresse envoyée sur le banc de registre. Pour cela, plusieurs bascules mémorisent des bits qui indiquent si les paires ont été échangées ou non. Il y a une bascule pour les paires DE , HL ; une autre pour les paires A,F et paire A',F', une dernière pour l'instruction EXX. En combinant ces bascules avec les noms de registres envoyés par le séquenceur, on peut échanger les paires de registres.
==Le cas particulier des processeurs 4 bits : le 4004 d'Intel==
L'Intel 4004 était le tout premier micro-processeur. Il s'agissait d'un microprocesseur de 4 bits, basé sur une architecture à accumulateur. Il disposait d'un accumulateur et de 16 registres d'indice, tous de 4 bits. Il faisait des calculs sur des données de 4 bits, appelées des nibbles. Cependant, sur ses 46 instructions machines supportées, 41 agissaient sur des opérandes de 8 bits, les 5 restantes sur des opérandes de 16 bits. Simplement, les calculs se faisaient en deux fois, en échangeant des données entre mémoire RAM et accumulateur.
Le 4004 est un circuit intégré avec peu de broches. Il dispose notamment d'un bus de données/adresse, qui est multiplexé, c’est-à-dire qu'il sert alternativement de bus de données et de bus d'adresse selon les besoins. Le bus de commande mémoire fait 5 bits, dont 4 pour les chips de RAM, un pour la ROM. Les adresses sont codées sur 12 bits, les données sur 4 et les instructions sur 8 bits. L'envoi d'une adresse sur le bus se fait en plusieurs fois, de même que la lecture d'une instruction. Il s'agit là d'une adaptation pour outrepasser les limitations d'un processeur 4 bit.
[[File:Intel 4004 processor pinout.png|centre|vignette|upright=2|Broches de l'Intel 4004. Nous verrons à quoi elles servent plus bas.]]
===L'espace d'adressage de l'Intel 4004===
Les adresses du processeur sont sur 12 bits, ce qui fait 4096 adresses différentes. Elles regroupent à la fois la ROM et la mémoire RAM, vu que l'architecture est une sorte de mélange bizarre entre une architecture Von Neumann et Harvard. Le processeur gère bien deux espaces d'adressage séparés, mais la RAM et la ROM sont reliés au même bus. La sortie CM-ROM du processeur indique si l'adresse envoyée correspond à la RAM ou la ROM. Un circuit de décodage d'adresse active ou désactive la RAM selon la valeur de ce bit, l'inverse pour la ROM, en agissant sur leurs bits Chip Select. Seule la RAM ou la ROM répondent alors à l'adresse.
Pour ce qui est de la RAM, le circuit de décodage d'adresse pouvait gérer au maximum 1024 adresses différentes, chacune contenant un nibble. Pour cela, le CPU 4004 était relié à une ou plusieurs RAM externes, des Intel 4002. Chaque Intel 4002 contenait 64 nibbles de données, plus 16 nibbles de statut qu'on ne détaillera pas ici. Les nibbles de statut étaient accessibles en utilisant des instructions d'entrée-sortie, donc pas avec des lectures/écritures mémoire. Les 64 nibbles de données sont découpés en 4 groupes de 16 nibbles. Le CPU pouvait être relié à maximum 16 Intel 4002, ce qui fait 1024 nibbles de données et 256 nibbles de statut. L'ensemble permet de remplir l'espace d'adressage de 1024 adresses.
===Le registre de page et le pseudo-aliasing des registres===
Sélectionner une adresse mémoire utilisait un mélange entre pseudo-aliasing et registre de page. Pour les données, les 1024 adresses étaient découpées en 4 pages de 256 adresses. Pour la ROM, les 4096 adresses étaient découpées en 16 pages de 256 adresses. Localiser une donnée dans une page ne requiert que 8 bits, 2/4 bits supplémentaires permettent de sélectionner la page voulue. Le registre de page était dans le processeur lui-même, et était relié aux sorties du processeur nommées CM-RAM 0, 1, 2 et 3. Les 4 sorties encodaient un nombre qui permet de sélectionner le numéro de page voulu.
Le registre de page fait 5 bits : un pour distinguer RAM et ROM, 4 bits pour sélectionner la page voulue. L'avantage est que la carte mère gère au maximum 16 chips de RAM, ce qui colle parfaitement avec les 4 utilisés pour sélectionner une page. Un chip de RAM correspond à une page, et chacun est activé ou désactivé suivant la page sélectionnée. Pour cela, il suffit d'ajouter un décodeur sur la carte mère, qui prend les 4 bits du registre de page et fournit les signaux Chip Select aux différents chips de RAM.
Reste alors à utiliser les 8 bits d'adresse à l'intérieur d'un chip de RAM. Le 4004 permettait de concaténer deux registres d'indice de 4 bits pour former une adresse de 8 bits. Les instructions d'accès mémoire pouvaient ainsi préciser une paire de registre d'indice pour préciser quelle adresse lire/écrire. Idem pour les branchements indirects : le processeur supportait une instruction de branchement indirect qui précisait l'adresse dans une paire de registres d'indice. Les registres d'indice sont donc assez mal nommés sur cette architecture, vu qu'ils peuvent servir soit de registre d'indice, soit de demi-registre d'adresse. Il s'agit là du système de pseudo-aliasing des registres, mais appliqué aux registres d'indice.
L'Intel 4004 gérait deux instructions pour gérer les adresses mémoires. La première, l'instruction DCL (''Designate Command Line'') configure le registre de page. Elle prend en entrée un numéro de page et le copie dans le registre de page. L'opérande peut provenir d'un registre d'indice ou de l'accumulateur. La seconde, l'instruction SRC (''Send Register Control'') concatène deux registres d'indice pour obtenir une adresse de 8 bits. Un accès mémoire se fait donc en maximum trois instructions : une qui configure le registre de page si ce n'est pas déjà fait, une instruction SRC pour envoyer l'adresse, et une troisième instruction qui dit s'il faut faire une lecture ou une écriture.
===La microarchitecture de l'Intel 4004===
Il incorporait une pile d'adresse de retour intégrée au processeur. La pile d'adresse acceptait exactement 3 adresses maximum. Elle était regroupée avec le ''program counter'' dans un banc de registre, de 4 registres. Le ''program counter'' et le pointeur de pile faisaient chacun 12 bits, soit trois nibble. Ils étaient incrémentés par un incrémenteur dédié.
SI on omet le registre de page et la pile d'adresse, le 4004 est une architecture à accumulateur des plus classiques, avec un bus interne unique, un banc de registre pour les registres d'indices, un accumulateur relié à une unité de calcul. Les registres d'indice étaient dans un banc de registre séparés, car ils faisaient 4 bits chacun, contrairement au pointeur de pile et le ''program counter''. Un détail important est que les bancs de registres du 4004 étaient implémentés avec de la DRAM, et non des registres usuels fabriqués avec des bascules 1 bit.
[[File:Microarchitecture de l'Intel 4004.png|centre|vignette|upright=2.5|Microarchitecture de l'Intel 4004]]
<noinclude>
{{NavChapitre | book=Fonctionnement d'un ordinateur
| prev=Les architectures à pile et mémoire-mémoire
| prevText=Les architectures à pile et mémoire-mémoire
| next=Les processeurs de traitement du signal
| nextText=Les processeurs de traitement du signal
}}
</noinclude>
b3b70chx7plq5yqtt8qm4wfjqeb7z37
765701
765700
2026-05-01T17:15:42Z
Mewtow
31375
/* Les microcontrôleurs PIC */
765701
wikitext
text/x-wiki
Nous avons déjà abordé la notion de processeur 8, 16, 32, 64 bits. Elle désigne la taille des registres généraux, ou de l'accumulateur. De nos jours, les processeurs 32 et 64 bits sont la norme, mais les premiers micro-processeurs étaient des processeurs 4 et 8, avant de passer rapidement au 16 bits. La raison est que leur budget en transistor limité faisait qu'on ne pouvait pas utiliser une ALU trop grande : une ALU 8 bit prend deux fois moins de place et de transistors qu'une ALU 16 bits. Cependant, les processeurs 8 bits avaient de sérieuses limitations qui étaient compensées par diverses solutions. Dans ce chapitre, nous allons faire une revue rapide des processeurs 8 bits et de leurs fonctionnalités.
La principale limitation des CPU 8 bits était l'adressage : des registres de 8 bits limitaient l'espace d'adressage à seulement 256 adresses, soit à peine 256 octets ! Intuitivement, on se dit que 256 octets est purement impraticable, on ne peut rien faire d'intéressant avec seulement 256 de RAM + ROM. Et c'est partiellement vrai. L'adage veut que 16 bits est la taille minimale intéressante, la limite à partir de laquelle on a assez de mémoire RAM/ROM pour coder des applications intéressantes. Mais 256 octets de RAM est largement suffisant sur de nombreux systèmes embarqués simples s'en accommodent : des caisses enregistreuses, des systèmes de régulation de feu de circulation, etc.
Pour les applications demandant plus de mémoire RAM, les CPU de l'époque contournaient la limitation de 256 octets de RAM avec de nombreux stratagèmes. Dans ce qui va suivre, nous allons séparer les CPU 8 bits selon qu'ils utilisent une architecture Harvard ou une architecture Von Neumann. La raison est qu'une architecture Harvard permet en soi de contourner partiellement ce problème d'adressage. Les choses sont plus compliquées avec une architecture Von Neumann.
==Les processeurs 8/16 bits à architecture Harvard ==
La première solution est d'utiliser une architecture Harvard. Le processeur 8 bit a alors deux espaces d'adressage : un pour la RAM, un autre pour la ROM. Et les deux utilisent des adresses de taille différente. La ROM est reliée à un bus d'adresse de 16 bits, alors que la RAM est elle connectée à un bus d'adresse de 8 bits. La RAM est donc limitée à 256 octets, alors que la ROM peut monter jusqu'à 64 kibioctets. Mine de rien, faire ainsi est largement suffisant.
Les processeurs de l'époque intégraient parfois les 256 octets de RAM directement dans le processeur. Beaucoup en implémentaient moins, avec par exemple seulement 64 octets de RAM, ou 32 octets, ou 128 octets. L'avantage est que cela éliminait le bus d'adresse des données et ne laissait que le bus d'adresse pour la ROM. On économisait ainsi beaucoup de broches sur le circuit intégré du CPU. Et pour les applications demandant plus de RAM, on pouvait ajouter un circuit séparé qui permettait d'adresser une RAM plus grande. Mais cela sera plus clair avec un exemple.
===Les microcontrôleurs PIC===
Les '''microcontrôleurs PIC''' regroupent des microcontrôleurs allant de microcontrôleurs 8 bit aux performances très faible, à des microcontrôleurs 32 bits bien plus puissants. Les microcontrôleurs PIC sont très utilisés dans l'embarqué ou d'informatique industrielle. Ils sont vendu à des volumes assez impressionnants, plusieurs millions par an. Et si vous avez ou êtes en train de faire des études d'électronique, je parie que vous les avez déjà vu en classe, ou que ce ne saurait tarder. Dans ce qui suit, nous allons nous concentrer sur les microcontrôleurs PIC 8 bits, à savoir les PIC 16, 16 et 18. Les PIC 24, qui sont des microcontrôleurs 16 bits, ne seront pas abordés.
Les microcontrôleurs PIC 8 bits incorporent une mémoire RAM très petite, ainsi qu'une architecture Harvard, comme dit plus haut. La mémoire ROM des PIC va de 1024 instructions à 4096 instructions. En comparaison, la mémoire RAM des microcontrôleurs PIC ne peut pas dépasser 256 adresses, et elle est encore plus petite en pratique sur certains modèles. Pour donner un exemple, le PIC16F84 a une RAM composée de 68 "registres" de 8 bits. Le terme "registres" devrait vous faire tiquer, mais c'est bien le terme utilisé dans la documentation des PIC. Et il faut admettre que la différence entre banc de registre et SRAM intégrée est floue, mais nous expliquerons pourquoi dans quelques paragraphes.
: Les PIC 18 peuvent adresser plus de 256 octets de RAM en utilisant la commutation de banques, une technique qui sera abordée dans plusieurs chapitres.
[[File:DocPIC16F84 3.png|centre|vignette|upright=3|Espaces d'adressage du PIC16F84.]]
Un détail est que la SRAM n'a qu'un seul port qui sert à la fois pour les lectures et écritures. Pour compenser, les PIC sont des architectures à accumulateur, où une opérande est lue depuis la SRAM, l'autre depuis l'accumulateur. Leur implémentation de l'accumulateur ajoute une petite subtilité : le résultat d'une opération arithmétique peut être enregistré ailleurs que dans l'accumulateur. Le résultat peut aussi remplacer la seconde opérande, celle lue en mémoire RAM. Dit autrement, le résultat est enregistré dans l'adresse mémoire source. Les instructions de calcul ont le choix : un bit dans leur encodage précise où enregistrer le résultat.
{|
|-
|[[File:DocPIC16F84 4.png|centre|vignette|upright=2|Microarchitecture simplifiée d'un microcontroleur PIC (ici, un 16F84).]]
|[[File:DocPIC16F84 5.png|centre|vignette|upright=2|Microarchitecture simplifiée d'un microcontroleur PIC (ici, un 16F84), avec les branchements directs.]]
|}
Les PIC incorporent une pile d'appel allant de 2 à 8 niveaux, suivant les modèles. Outre l'accumulateur, les PIC disposent de registres de contrôle, d'un ''program counter'', d'un registre d'état, et d'un pointeur de pile. Il y a aussi des registres pour les entrées et sorties. Les registres d'entrée-sortie permettent de lire ou écrire sur un port d'entrée-sortie ou de lire un ''timer''. En clair, les PIC ont un espace d'adressage séparé pour les entrées-sorties.
Un détail très important est que les registres sont mappés en mémoire, à quelques exceptions près ! En clair, on peut y accéder en lisant/écrivant à une adresse mémoire bien précise. Les seules registres qui ne sont pas mappés en mémoire sont l'accumulateur, la pile d'appel, et les registres d'entrée-sortie. Par exemple, sur les modèles 16F, l'espace d'adressage fait 128 octets, dont 32 sont réservés aux registres du processeur, ce qui fait que seules 96 octets sont adressables comme de la RAM. Mais les 128 octets sont un seul et unique SRAM dans le processeur. Ce qui explique qu'il est difficile de séparer banc de registre et RAM principale sur ce processeur : les deux sont fusionnées !
: Les modèles PIC 17 ont rendu l'accumulateur mappé en mémoire RAM !
[[File:DocPIC16F84.png|centre|vignette|upright=2|DocPIC16F84]]
Le processeur de ces microcontrôleurs a un jeu d'instruction propriétaire, le jeu d'instruction PIC. Les instructions PIC sont très petites. Les premières versions du jeu d'instruction utilisaient des instructions codées sur 12 bits, dont 5 pour l'adresse mémoire de la seconde opérande. Pour les branchements, 3 bits étaient utilisés pour l'opcode, 9 pour l'adresse de destination. Par la suite, les instructions ont été étendues à 13 bits sur les PIC1670, puis à 14, 15 et 16 bits. Les adresses ont alors été élargies, ce qui permet d'adresser en peu plus de mémoire RAM.
Les instructions se limitent à des additions/soustractions, des opérations bit à bit,des branchements, des instructions LOAD/STORE, ainsi que des opérations de manipulation de bit. Il y a une instruction pour mettre une adresse à zéro, qui peut aussi mettre à zéro l’accumulateur. La plupart des modèles n'a pas d'instruction MOV pour faire une copie entre deux registres, elle n'a été intégrée que sur les modèles haute performance.
Pour ce qui est des branchements, les PIC n'ont pas d'instructions de branchement conditionnels, ils font avec une SKIP instruction et des branchements inconditionnels. Par contre, ils ont des branchements pour les appels et retour de fonction. Mieux que ça, ils intègrent une pile d'appel d'environ 8 adresses de retour. Pour donner une idée, l'adresse de retour est encodée sur 10 bits sur les PIC16F84.
Pour les instructions de manipulation de bit, il y a des instructions pour tester/masquer un bit dans une opérande, 4 en tout ( mettre à 0, mettre à 1, tester si bit = 1, tester si bit = 0). Les instructions qui testent un bit prennent leur opérande dans l'accumulateur. Il y a aussi deux instructions de rotation à gauche et droite, qui tiennent compte de la retenue mémorisée dans le registre d'état. Mentionnons aussi une instruction pour inverser deux ''nibbles'' dans un octet.
Les PIC ont aussi des instructions d'incrémentation et de décrémentation, un peu spéciales. Ces dernières regroupent : une incrémentation normale, une décrémentation normale, une décrémentation fusionnée avec une instruction SKIP, et une incrémentation fusionnée avec une instruction SKIP. Les deux dernières incrémentent/décrémentent l'accumulateur et SKIP l'instruction suivante si le résultat est zéro. Elles permettent de fortement simplifier l'implémentation des boucles qui s'exécutent tant que leur compteur atteint zéro.
Les modèles haute performance ajoutent des instructions d'addition avec retenue entrante, idem pour la soustraction. De telles instructions ssont très utiles pour faire des additions/soustractions sur des opérandes de 16 bits. Le processeur a beau être un CPU 8 bits, il peut être utilisé pour faire des calculs 16 bits, la performance est alors amoindrie, mais ce n'est pas un problème pour les applications d'un tel microcontroleur.
Les PIC gèrent l'adressage absolu et immédiat, mais pas plus. L'adressage absolu, celui où l'adresse est intégrée dans l'instruction, est très simple à implémenter. Les adresses prennent moins d'un octet, vu que la taille de la RAM est très petite, les adresses sont très courtes, les intégrer dans des instructions elles-mêmes courtes n'est pas un problème. L'adresse est encodée sur 5 à 7 bits, selon le modèle, ce qui permet d'adresser entre 32 et 128 octets.
Les PIC ne supportent pas l'adressage indirect, mais peuvent l'émuler grâce à un '''registre d'adresse''' dédié. Il s'agit du registre FSR, qui mémorise l'adresse à lire/écrire. Il est possible de copier un pointeur dedans, qui provient soit de l'accumulateur, soit de la mémoire SRAM. Dans les deux cas, la donnée adressée est lue ou écrite dans un registre INDR, est un registre d’interfaçage rendu adressable. Le registre FSR est directement connecté sur le bus d'adresse.
Les modèles de base se débrouillent avec un registre FSR et un registre INDR, mais les modèles plus performants ont deux ou trois copies de chaque registre. Les modèles PIC18 ajoutent aussi des instructions LOAD/STORE qui émulent les modes d'adressage à post- ou pré-incrément/décrément, et le mode d'adressage "Base + Indice + Décalage", encore une fois en utilisant les registres FSR et INDR.
Les modèles intiaux, comme les PIC 10 et 12, ne supportaient pas les interruptions, mais c'est chose réglé sur les modèles plus récents. Ils ont même des registres séparés pour les interruptions et les programmes normaux.
Avec tout ce qu'on vient de dire, vous devriez pouvoir comprendre la microarchitecture d'un PIC, qui est résumée dans ce schéma.
[[File:DocPIC16F84 all.png|centre|vignette|upright=2.5|Microarchitecture du PIC16F84.]]
===Le Fairchild F8 et la console de jeu Fairchild Channel F===
Un autre exemple est la Fairchild F8 de la défunte entreprise Fairchild Semiconductor. Il incorpore un processeur 8 bits, c'est à dire que le processeur fait des calculs sur des entiers de 8 bits maximum, une mémoire RAM de 64 octets, ainsi qu'une mémoire ROM de 1 kibioctet. Les 64 octets de RAM sont certes très peu, mais c'est suffisant pour certaines applications simples, comme les caisses automatiques de l'époque, ou des applications embarquées. Et de toute façon, il est possible d'ajouter de la mémoire RAM supplémentaire si les 64 octets de RAM intégrée ne suffisent pas. Le système était donc modulaire, adaptable selon les besoins, peu cher pour son implémentation minimale sans RAM en plus.
Vu qu'il s'agit d'un des tout premiers ordinateurs, il est sorti à une époque où la technologie était rudimentaire. À cette époque, le processeur était composé de pièces détachées qu'il fallait souder ensemble pour obtenir un processeur fonctionnel. Ce n'est que plus tard qu'est apparu le micro-processeur, qui regroupe un processeur complet dans un seul circuit intégré. Le résultat est que le processeur du Fairchild F8 est coupé en deux, l'unité de calcul et l'unité de contrôle sont placés dans des pièces détachées séparés.
Le microcontrôleur est composé de trois à quatre pièces détachées, certaines étant optionnelles. La première est le '''3850 CPU''', qui regroupe l'unité de calcul et la mémoire RAM intégrée. La seconde est le PSU (''3851 Program Storage Unit''), qui regroupe la mémoire ROM et l'unité de contrôle, ''program counter'' inclut. S'il y a besoin d'utiliser plus de RAM, il faut ajouter un circuit d’interface mémoire, qui est au choix le ''3852 Dynamic Memory Interface'' (DMI) ou le ''3853 Static Memory Interface'', le premier étant connecté à une mémoire de type DRAM, l'autre à une SRAM (nous verrons ce que sont les DRAM et les SRAM dans le prochain chapitre).
[[File:Fairchild F8.png|centre|vignette|upright=2|Fairchild F8]]
Le système minimal est composé d'un PSU et d'un 3850, sans les circuits d'interface mémoire. Le tout donne un système avec un processeur 8 bit, 64 octets de RAM et 1 kibioctet de ROM, les deux mémoires étant intégrées dans le "processeur". Le processeur gérait 4 entrées-sorties, chacune étant reliée avec un bus de 8 bit au processeur. Au passage, en 1977, Mostek a créé un microcontrôleur qui regroupe un PSU et un 3850 : le Mostek 3870. Le système minimal n'avait pas de bus d'adresse, vu que la RAM était intégrée au processeur. C'est les 3852 et 3853 qui ajoutaient un bus d'adresse. Ils ajoutent un bus d'adresse de 16 bits, ce qui permet d'adresser 64 kibioctets de RAM.
[[File:Fairchild-Channel-F.jpg|vignette|un Fairchild Channel F]]
Le Fairchild F8 a été utilisé dans la Fairchild Channel F, une des toute première console de seconde génération, à savoir des consoles qui utilisaient des cartouches de jeu. Avant les consoles de seconde génération, les consoles étaient non-programmables. Elles étaient conçues pour faire tourner un jeu précis, aucun autre, le jeu étant implémenté dans leurs circuits.
La Fairchild Channel F est composé du système minimal, auquel on a ajouté une carte son rudimentaire et 2 kibioctets de mémoire vidéo. La mémoire vidéo sert uniquement pour afficher des images à l'écran : on écrit l'image à afficher dedans, un circuit vidéo se charge de l'afficher à l'écran automatiquement. Le processeur ne fait qu'écrire dans cette RAM vidéo, il ne peut pas en lire le contenu. De la RAM supplémentaire peut cependant être ajoutée dans les cartouches de jeu.
===L'usage d'une architecture Harvard modifiée : les consoles 8 bits===
Pour encore améliorer la situation, il est possible d'utiliser une architecture Harvard modifiée, qui permet de lire des données depuis la mémoire ROM. Cela réduit encore plus les besoins en mémoire RAM. Les constantes manipulées par le programme sont mémorisées en ROM, lues depuis la ROM, au lieu d'être chargées en RAM. Les consoles de jeu utilisaient beaucoup de stratagème.
L'exemple type est celui des consoles 8 bits avec des graphismes en 2D. La cartouche de jeu contenait une ROM, qui mémorisait le code du jeu, les niveaux, les sprites et autres données graphiques. Leur carte graphique lisait directement les ''sprites'' depuis la mémoire ROM, sans avoir à les charger en mémoire vidéo. La mémoire vidéo se contentait de mémoriser le reste des informations graphiques, ainsi que des pointeurs vers les ''sprites'' en ROM. En conséquence, les consoles 8 bits n'avaient pas besoin de beaucoup de RAM, vu qu'une grande partie des données utiles étaient dans une ROM directement accessible par le processeur. A l'opposé, les micro-ordinateurs devaient copier les données d'un jeu depuis une disquette dans la mémoire RAM, ce qui demandait d'avoir plus de RAM.
Le passage au support CD sur les consoles 32 bits a eu la même conséquence. Le processeur ne pouvant pas lire directement le CD à sa guise, il fallait copier les données du CD en RAM. D'où l'apparition de temps de chargement assez longs, inexistants sur support cartouche.
Avec ce genre de stratagèmes, 256 octets de RAM est largement suffisant sur de nombreux systèmes, à condition qu'on ait assez de ROM pour coder un programme digne de ce nom. Par exemple, de nombreux systèmes embarqués simples s'en accommodent : des caisses enregistreuses, des systèmes de régulation de feu de circulation, etc.
===Le HP Nanoprocessor : un processeur sans ALU===
Un dernier exemple est celui du processeur HP Nanoprocessor, de l'entreprise HP. Il a été commercialisé en 1974, en même temps que les premiers micro-processeurs d'Intel. Tous les processeurs de l'époque étaient des processeurs 8 bits et le HP Nanoprocessor ne faisait pas exception. Ce n'était pas un processeur haute performance, il était destiné à des applications d'informatique industrielle ou embarquée. D'ailleurs, il utilisait des transistors de type metal-gate, peu performants, là où ses contemporains utilisait des transistors en silicium, plus performants.
Mais une caractéristique qui rend cela encore plus claire est qu'il n'y a pas d'ALU ! En effet, ce processeur est incapable de faire des additions, des soustractions ou autres opérations simples ! Il est cependant capable d'effectuer des incrémentations et décrémentations, des décalages, des opérations logiques comme des ET/OU/NON/XOR et bien d'autres. Il supporte en tout 48 instructions, avec un support limité des modes d'adressage indirects. Les instructions de branchement étaient des instructions SKIP, il n'y avait pas d'instructions de branchement généralistes.
Pour ce qui est des registres, il disposait de 16 registres de 8 bits et d'un accumulateur. Niveau mémoire, il était relié à une mémoire ROM, rien de plus. Il n'avait de RAM supplémentaire qu'on pouvait lui adjoindre, il devait se débrouiller avec seulement ses registres. Et cela ne posait pas de problèmes pour son usage. Seul le mode d'adressage indirect à registre est supporté, il n'y a pas de registres d'indices. Ce mode d'adressage permet de lire des données en mémoire ROM, la ROM pouvant contenir des tableaux de valeurs constantes.
: Il est possible de lui adjoindre de la RAM via les ports d'entrée-sortie, ainsi qu'une ALU, mais RAM et ALU sont traités comme des périphériques avec lesquels on communique, ils ne sont pas intégrés au processeur.
Niveau micro-architecture, il incorporait une unité de calcul logique et un circuit comparateur. Le comparateur était un circuit comparateur série des plus basiques, qui était utilisé pour les instructions de branchement et associées. L'unité de calcul logique gérait des incrémentations/décrémentation, des décalages, les opérations logiques et quelques autres. L'unité de calcul logique était bit-slicée, à savoir conçue en assemblant 8 ALU de 1 bit chacune, enchainées en série. Le tout était combiné à des circuits de ''carry skip''.
[[File:Unité de calcul du HP nanonprocessor.png|centre|vignette|upright=2|Unité de calcul du HP nanoprocessor]]
Son unité de décodage d'instruction était très simple, essentiellement basée sur des portes NOR, grâce à un encodage efficace des instructions machine. Le ''program counter'' fait 11 bits, ce qui permet d'adresser une ROM de 2 kibioctets. Le ''program counter'' était relié à un circuit incrémenteur qui gérait les isntructions SKIP (il pouvait incrémenter le ''program counter'' par pas de 1 ou de 2 en cas de SKIP). Le processeur contient aussi deux registres, qui servent en quelque sorte de pile d'adresse de retour. Un premier registre mémorise l'adresse de retour d'une fonction, l'autre mémorise le ''program counter'' lors d'une interruption, pour savoir où brancher à la fin de l'interruption.
[[File:HP nanoprocessor.png|centre|vignette|upright=2.5|HP nanoprocessor]]
Fait intéressant, le concepteur du processeur a gracieusement donné les masques utilisés pour graver le silicium du processeur au site [https://www.cpushack.com/ CPU Shack]. Les masques en question sont disponibles ici :
* [https://www.cpushack.com/2020/08/20/hp-nanoprocessor-mask-set/ HP NanoProcessor Mask Set]
* [https://www.cpushack.com/2020/08/09/the-forgotten-ones-hp-nanoprocessor/ The Forgotten Ones: HP Nanoprocessor]
Les masques ont été analysés par Ken Shirrif dans cet article de blog :
* [https://www.righto.com/2020/09/hp-nanoprocessor-part-ii-reverse.html HP Nanoprocessor part II: Reverse-engineering the circuits from the masks]
==Les processeurs 8/16 bits à architecture Von Neumann==
L'usage d'une architecture Harvard est une solution pour adresser plus de mémoire avec des CPU 8 bits. Mais plusieurs microprocesseurs commerciaux n'utilisaient pas cette solution. À la place, c'était des architectures Von Neumann, mais qui étaient capables de gérer des adresses de 16 bits. Les données faisaient 8 bits, les registres faisaient 8 bits, mais quelques techniques permettaient de gérer des adresses de 16 bits. Nous parlerons de '''processeurs 8/16 bits''' pour les désigner, et nous allons les étudier à part.
Un point important est que la gestion d'adresses de 16 bits permet d'adresser 64 kibioctets, qui peuvent être remplis avec de la RAM et de la ROM. On a donc le meilleur des mondes : 64 kibioctets de mémoire, mais avec des données de 8 bits et les économies de circuit qui vont avec. L'avantage est que le processeur peut maintenant gérer une vraie pile d'appel, pas seulement une pile d'adresse de retour. Il lui suffit pour cela d'intégrer un pointeur de pile codé sur 16 bits.
===Les modes d'adressage par page des CPU Motorola===
Les processeurs Motorola 8 bits étaient des processeurs 8 bits avec un bus d'adresse de 16 bits. C'était des processeurs à accumulateur incorporant deux registres d'indice, un registre d'état, un pointeur de pile, et un ''program counter''. Tous les registres sont reliés au bus d'adresse, sauf le registre d'état et l’accumulateur. Tous les registres font 8 bits, sauf le ''program counter''. La pile est câblée pour être dans un bloc de 256 octets compris entre l'adresse 1 0000 0000 et l'adresse 1 1111 1111, ce qui fait que son adressage se fait avec un seul octet.
[[File:6502-architecture.svg|centre|vignette|upright=1.5|Architecture simplifiée du 6502.</br> X et Y : registres d'indice ;</br> S : le pointeur de pile ;</br> A : accumulateur ;</br>P : registre d'état.</br>]]
Les processeurs Motorola 8 bits utilisaient une méthode simple pour adresser 64 kibioctets de RAM, avec des registres de 8 bits. Pour cela, ils utilisaient une variante de l'adressage base + décalage. Elle améliore l'adressage absolu, qui intègre l'adresse à lire/écrire dans l'instruction elle-même. L'adresse en question est de 8 bits et n'encode que les 8 bits de poids faible de l'adresse, les 8 bits de poids fort sont dans un '''registre de page''' adressé implicitement. L'adresse finale est obtenue en concaténant ce registre avec l'adresse mémoire intégrée dans l’instruction. Le résultat est que la mémoire était découpée en blocs de 256 consécutifs, chacun pouvant servir de fenêtre de 256 octets. Une page est réservée pour la pile, la seconde, comme dit plus haut.
Formellement, ce mode d'adressage a des ressemblances avec la commutation de banques, une technique qu'on verra dans les chapitres sur l'espace d'adressage et la mémoire virtuelle. Mais ce n'en est pas du tout : le registre de page est utilisé uniquement pour les accès mémoire avec le mode d'adressage base + décalage, mais pas pour les autres accès mémoire, qui gèrent des adresses complètes. Notons que l'usage d'un registre de page dédié fait que celui-ci est adressé implicitement.
Il faut noter que la technique a été utilisée sur des processeurs 16 bits, pour contourner la petite taille des instructions. Un exemple est celui du HP 2100, un processeur 16 bits. Il avait un registre de page de 5 bits et encodait 10 bits d'adresse dans ses instructions. Ses instructions d'accès mémoire disposaient d'un bit qui choisit quel mode d'adressage utiliser. S'il était à 0, l'adressage absolu était utilisé, le registre de page n'était pas utilisé. Mais s'il était à 1, le registre de page était utilisé pour calculer l'adresse.
Une évolution de l'adressage précédent est le '''mode page direct'''. Avec lui, le registre de page est étendu et contient une adresse mémoire complète. L'adresse finale n'est pas obtenue par concaténation, mais en additionnant le registre de page avec l'adresse fournie par adressage absolu + décalage. Un exemple est celui des premiers processeurs Motorola, qui géraient des adresses courtes de 8 bits. L'adresse courte de 8 bits correspondait non pas aux 256 premiers octets de la mémoire, mais à une fenêtre de 256 octets déplaçable en mémoire. La position de la fenêtre de 256 octets était spécifiée par le registre de page de 16 bits, qui précisait l'adresse du début de la fenêtre, celle de sa première donnée.
Il s'agit donc formellement d'adressage base + décalage, à un détail près : il n'y a qu'un seul registre de base. Le fait que ce registre de base soit unique fait qu'il est adressé implicitement, on n'a pas à encoder le numéro/noms de registre dans l'instruction. Le registre de base est utilisé uniquement pour l'adressage absolu, pas pour les autres accès mémoire. S'il y a des ressemblances avec la segmentation, une technique de mémoire virtuelle qu'on abordera dans quelques chapitres, ce n'en est pas vu que le registre de base est utilisé seulement pour un mode d'adressage bien précis.
===Le ''pseudo-aliasing'' des registres des processeurs Intel x86===
Voyons maintenant le cas des anciens processeurs 8 bits d'Intel à savoir l'Intel 4004, 4040, 8008 et 8080. Le Z80, un processeur inspiré des CPU Intel 8 bits, est aussi concerné. Avant de poursuivre, parlons des registres de ces processeurs. Les premiers CPU Intel incorporaient 7 registres de 8 bits nommés A, B, C, D, E, F, H, L, SP. Ils correspondent respectivement à : l'accumulateur A ; six registres nommés B, C, D, E, H et L ; le registre d'état F ; le pointeur de pile SP. Le Z80 ajoute deux registres d'indice X et Y. De plus, le Z80 dispose de registres d'interruption, qui sont en quelque sorte des copies des registres A, B, C, D, E, F, H, L. Le tout est illustré dans le tableau ci-dessous.
{|class="wikitable" style="text-align:center;"
|-
!
! Registres des CPU Intel
! Registres supplémentaires du Z80
|-
! Accumulateur
| A
| A'
|-
! Registre d'état
| F
| F'
|-
! Registres généraux
| B, C, D, E, H, L
| B', C', D', E', H', L'
|-
! Pointeur de pile
| colspan="2" | SP (sauf pour le 8008)
|-
! Registres d'indice
|
| X et Y
|}
Le 8008 incorpore une pile d'appel de 7 adresses, dans le processeur lui-même. Il en est de la même avec le 4004 et le 4040, comme on le verra dans la section sur les processeurs 4 bits. Mais le 8080 et le 8085 ont remplacé le tout par un simple pointeur de pile, afin d'avoir une véritable pile d'appel. Autant c'est impossible d'avoir une pile d'appel avec seulement 256 octets de mémoire, autant on peut se le permettre avec 65 536 adresses.
Pour gérer des adresses de 16 bits, ils auraient pu utiliser des registres d'adresse séparés, mais on préféré un système de '''pseudo-''aliasing'' de registres'''. Formellement, c'est un système qui concatène deux registres 8 bits pour obtenir une adresse de 16 bits. L’appariement a lieu lors de certaines opérations bien précises, qui n'ont de sens que pour les adresses : la lecture/écriture en mémoire, et l'incrémentation.
Il y avait cependant des contraintes quant aux paires de registres possibles, toutes les paires de registres n'étaient pas autorisées. Les CPU concernés sont donc des processeurs hybrides accumulateur-registre généraux. L'accumulateur ne peut pas être appairé, seuls les registres généraux le peuvent. Le Z80 autorise plus de paires que les CPU Intel. Voici les paires de registres qui pouvaient servir d'adresse 16 bits :
* Les CPU 8008 d'Intel autorisait une seule paire formée des registres H et L.
* Les autres processeurs, à savoir le 8080, le 8085 et le Z80, autorisaient : les paires BC, DE et HL.
Le 8008 ne gérait que des opérations sur 8 bits. Mais le 8080 et le 8085 ont ajouté des instructions 16 bits qui agissaient sur des paires de registre, que le Z80 a repris. Une paire de registres est considérée comme un registre unique de 16 bits pour certaines opérations arithmétiques, dont l'incrémentation. Voici la liste des instructions concernées :
* INC et DEC pour l'incrémentation et la décrémentation ;
* DAD : additionne le registre HL avec une autre paire (Hl inclus) ;
* LXI : copie une constante immédiate dans une paire de registres ;
* LHLD : lit 16 depuis la mémoire et l'enregistre dans une paire de registres ;
* SHLD : copie 16 bits depuis une paire de registres et l'enregistre en mémoire ;
* PUSH et POP : empile ou dépilent une paire de registre sur la pile ;
* XTHL : échange la paire HL avec les 16 bits au sommet de la pile d'appel ;
* XCHG : échange le contenu de la paire HL et DE.
Pour résumer, le processeur avait des instructions LOAD, STORE, PUSH et POP adaptées pour gérer des paires de registre. De plus, l'instruction XCHG permettait d’échanger le contenu des paires DE et HL. L'instruction a été étendue sur les processeurs 16 bits pour échanger tous les registres. Mais l'implémentation était alors différente. L'incrémentation sur une paire de 16 bit était très utile, car les adresses sont souvent incrémentées quand on parcours un tableau. Ces instructions nous donnent quelques indices sur ce qu'il y a dans le processeur.
Le système de pseudo-aliasing a un impact sur le banc de registre. Le banc de registre regroupe les registres généraux et le pointeur de pile, mais ne contient pas l'accumulateur. Les contraintes sur les paires de registres possibles ne s'expliquent que d'une seule manière : le banc de registre contient des registres de 16 bits, une paire de registres 8 bits est mémorisée dans un registre unique. Il faut donc faire une différence entre les registres architecturaux de 8 bits, et les registres réels de 16 bits.
Le banc de registre a un port de 8 bits pour les données, qui est fabriqué à partir d'un port 16 bits auquel on a rajouté un multiplexeur pour choisir soit l'octet de poids faible, soit l'octet de poids fort. Le bus de données fait 8 bits, ce qui fait que les instructions LOAD, STORE, PUSH et POP pour paires 16 bits sont réalisées en deux fois : on lit/écrit l'octet de poids faible, puis celui de poids fort. Par contre, le bus d'adresse fait bien 16 bits. Cela suggère que le banc de registre dispose d'un port de 16 bits dédié aux adresses, en plus du port de données 8 bits.
[[File:Architecture d'un CPU 8-16 bits avec un banc de registre double port.png|centre|vignette|upright=2|Architecture d'un CPU 8-16 bits avec un banc de registre double port]]
L'incrémentation d'une paire 16 bits ne coute rien à implémenter, ou presque. En effet, le processeur incorpore un incrémenteur 16 bits pour le ''program counter'', qui est relié au bus d'adresse. L'idée est de rentabiliser cet incrémenteur, en lui permettant d'incrémenter des données/adresses de 16 bits obtenues via pseudo-aliasing. De même, il peut être utilisé pour incrémenter le pointeur de pile, voire un compteur de rafraichissement mémoire (pour rappel, le rafraîchissement mémoire demande de balayer la mémoire d'adresse en adresse et été fait par le CPU à l'époque). Pour cela, il suffit de connecter le ''program counter'', le banc de registre, et l'incrémenteur, via un bus dédié.
[[File:Calcul d'adresse par ALU dédiée avec PC séparé.png|centre|vignette|upright=2|Calcul d'adresse par ALU dédiée avec PC séparé]]
Notez qu'on peut encore simplifier le tout en placant le ''program counter'' dans le banc de registre, ce qui ne gênera pas le travail de l'incrémenteur mais simplifiera le câblage au bus d'adresse. Ce n'était pas systématique, certains processeurs mettaient le ''program counter'' dans le banc de registre, d'autres non.
: Inclure le ''program counter'' dans le banc de registre permet parfois de remplir un vide. Par exemple, sur un processeur avec 12 registres, le banc de registre devrait faire idéalement 16 registres, inclure le ''program counter'' dedans fait monter le tout à 13.
[[File:Architecture d'un CPU 8-16 bits.png|centre|vignette|upright=2|Architecture d'un CPU 8-16 bits]]
Les processeurs Intel 8 bits, à savoir le 8008, le 8080 et le 8085 ; mettaient le ''program counter'' dans le banc de registre. Vous avez donc toutes les armes pour comprendre leur micro-architecture. Par exemple, voici la micro-architecture du processeur 8080. Remarquez le banc de registre, qui contient tous les registres sauf l'accumulateur et le registre. Il a deux ports : un pour les adresses et un pour les données. Notez le dé-multiplexeur sur le port de donnée. Pour le reste, il s'agit d'une architecture à accumulateur hybride des plus classiques.
[[File:Intel 8080 arch.svg|centre|vignette|upright=3|Microarchitecture de l'Intel 8080.]]
Le Z80 est un processeur inspiré du design des processeurs Intel 8 bits, mais avec pas mal d'améliorations. Un point particulier de ce processeur est son banc de registre. Il contient tous les registres du processeur, y compris l'accumulateur et le registre d'état ! Les seuls registres en-dehors du banc de registre sont le ''program counter'' et un compteur de rafraichissement mémoire IR.
Un autre point particulier est que les registres dans le banc de registres avaient une copie séparée accessible uniquement pour les interruptions, via fenêtrage de registres. Et l'accumulateur et le registre d'état étant dans le banc de registre, il y avait deux accumulateurs et deux registres d'état. Les registres A, B, C, D, E et F étaient dupliqués, par le pointeur de pile ni les registres d'indice. Les copies des registres étaient nommées A', B', C', D', E' et F'.
Le Z80 supportait des instructions d'échange de registre en plus des CPU Intel 8 bits. L'instruction EX peut échanger soit le contenu des paires D,E et H,F, soit la paire A,F avec la paire A',F'. L'instruction EXX échange les paires BC, DE, HL avec les paires BC', DE', HL'. En faisant cela, le programmeur pouvait utiliser deux fois plus de registres généraux s'il n'utilisait pas les interruptions. L'échange de paires se fait sans copies de registres, mais simplement en modifiant l'adresse envoyée sur le banc de registre. Pour cela, plusieurs bascules mémorisent des bits qui indiquent si les paires ont été échangées ou non. Il y a une bascule pour les paires DE , HL ; une autre pour les paires A,F et paire A',F', une dernière pour l'instruction EXX. En combinant ces bascules avec les noms de registres envoyés par le séquenceur, on peut échanger les paires de registres.
==Le cas particulier des processeurs 4 bits : le 4004 d'Intel==
L'Intel 4004 était le tout premier micro-processeur. Il s'agissait d'un microprocesseur de 4 bits, basé sur une architecture à accumulateur. Il disposait d'un accumulateur et de 16 registres d'indice, tous de 4 bits. Il faisait des calculs sur des données de 4 bits, appelées des nibbles. Cependant, sur ses 46 instructions machines supportées, 41 agissaient sur des opérandes de 8 bits, les 5 restantes sur des opérandes de 16 bits. Simplement, les calculs se faisaient en deux fois, en échangeant des données entre mémoire RAM et accumulateur.
Le 4004 est un circuit intégré avec peu de broches. Il dispose notamment d'un bus de données/adresse, qui est multiplexé, c’est-à-dire qu'il sert alternativement de bus de données et de bus d'adresse selon les besoins. Le bus de commande mémoire fait 5 bits, dont 4 pour les chips de RAM, un pour la ROM. Les adresses sont codées sur 12 bits, les données sur 4 et les instructions sur 8 bits. L'envoi d'une adresse sur le bus se fait en plusieurs fois, de même que la lecture d'une instruction. Il s'agit là d'une adaptation pour outrepasser les limitations d'un processeur 4 bit.
[[File:Intel 4004 processor pinout.png|centre|vignette|upright=2|Broches de l'Intel 4004. Nous verrons à quoi elles servent plus bas.]]
===L'espace d'adressage de l'Intel 4004===
Les adresses du processeur sont sur 12 bits, ce qui fait 4096 adresses différentes. Elles regroupent à la fois la ROM et la mémoire RAM, vu que l'architecture est une sorte de mélange bizarre entre une architecture Von Neumann et Harvard. Le processeur gère bien deux espaces d'adressage séparés, mais la RAM et la ROM sont reliés au même bus. La sortie CM-ROM du processeur indique si l'adresse envoyée correspond à la RAM ou la ROM. Un circuit de décodage d'adresse active ou désactive la RAM selon la valeur de ce bit, l'inverse pour la ROM, en agissant sur leurs bits Chip Select. Seule la RAM ou la ROM répondent alors à l'adresse.
Pour ce qui est de la RAM, le circuit de décodage d'adresse pouvait gérer au maximum 1024 adresses différentes, chacune contenant un nibble. Pour cela, le CPU 4004 était relié à une ou plusieurs RAM externes, des Intel 4002. Chaque Intel 4002 contenait 64 nibbles de données, plus 16 nibbles de statut qu'on ne détaillera pas ici. Les nibbles de statut étaient accessibles en utilisant des instructions d'entrée-sortie, donc pas avec des lectures/écritures mémoire. Les 64 nibbles de données sont découpés en 4 groupes de 16 nibbles. Le CPU pouvait être relié à maximum 16 Intel 4002, ce qui fait 1024 nibbles de données et 256 nibbles de statut. L'ensemble permet de remplir l'espace d'adressage de 1024 adresses.
===Le registre de page et le pseudo-aliasing des registres===
Sélectionner une adresse mémoire utilisait un mélange entre pseudo-aliasing et registre de page. Pour les données, les 1024 adresses étaient découpées en 4 pages de 256 adresses. Pour la ROM, les 4096 adresses étaient découpées en 16 pages de 256 adresses. Localiser une donnée dans une page ne requiert que 8 bits, 2/4 bits supplémentaires permettent de sélectionner la page voulue. Le registre de page était dans le processeur lui-même, et était relié aux sorties du processeur nommées CM-RAM 0, 1, 2 et 3. Les 4 sorties encodaient un nombre qui permet de sélectionner le numéro de page voulu.
Le registre de page fait 5 bits : un pour distinguer RAM et ROM, 4 bits pour sélectionner la page voulue. L'avantage est que la carte mère gère au maximum 16 chips de RAM, ce qui colle parfaitement avec les 4 utilisés pour sélectionner une page. Un chip de RAM correspond à une page, et chacun est activé ou désactivé suivant la page sélectionnée. Pour cela, il suffit d'ajouter un décodeur sur la carte mère, qui prend les 4 bits du registre de page et fournit les signaux Chip Select aux différents chips de RAM.
Reste alors à utiliser les 8 bits d'adresse à l'intérieur d'un chip de RAM. Le 4004 permettait de concaténer deux registres d'indice de 4 bits pour former une adresse de 8 bits. Les instructions d'accès mémoire pouvaient ainsi préciser une paire de registre d'indice pour préciser quelle adresse lire/écrire. Idem pour les branchements indirects : le processeur supportait une instruction de branchement indirect qui précisait l'adresse dans une paire de registres d'indice. Les registres d'indice sont donc assez mal nommés sur cette architecture, vu qu'ils peuvent servir soit de registre d'indice, soit de demi-registre d'adresse. Il s'agit là du système de pseudo-aliasing des registres, mais appliqué aux registres d'indice.
L'Intel 4004 gérait deux instructions pour gérer les adresses mémoires. La première, l'instruction DCL (''Designate Command Line'') configure le registre de page. Elle prend en entrée un numéro de page et le copie dans le registre de page. L'opérande peut provenir d'un registre d'indice ou de l'accumulateur. La seconde, l'instruction SRC (''Send Register Control'') concatène deux registres d'indice pour obtenir une adresse de 8 bits. Un accès mémoire se fait donc en maximum trois instructions : une qui configure le registre de page si ce n'est pas déjà fait, une instruction SRC pour envoyer l'adresse, et une troisième instruction qui dit s'il faut faire une lecture ou une écriture.
===La microarchitecture de l'Intel 4004===
Il incorporait une pile d'adresse de retour intégrée au processeur. La pile d'adresse acceptait exactement 3 adresses maximum. Elle était regroupée avec le ''program counter'' dans un banc de registre, de 4 registres. Le ''program counter'' et le pointeur de pile faisaient chacun 12 bits, soit trois nibble. Ils étaient incrémentés par un incrémenteur dédié.
SI on omet le registre de page et la pile d'adresse, le 4004 est une architecture à accumulateur des plus classiques, avec un bus interne unique, un banc de registre pour les registres d'indices, un accumulateur relié à une unité de calcul. Les registres d'indice étaient dans un banc de registre séparés, car ils faisaient 4 bits chacun, contrairement au pointeur de pile et le ''program counter''. Un détail important est que les bancs de registres du 4004 étaient implémentés avec de la DRAM, et non des registres usuels fabriqués avec des bascules 1 bit.
[[File:Microarchitecture de l'Intel 4004.png|centre|vignette|upright=2.5|Microarchitecture de l'Intel 4004]]
<noinclude>
{{NavChapitre | book=Fonctionnement d'un ordinateur
| prev=Les architectures à pile et mémoire-mémoire
| prevText=Les architectures à pile et mémoire-mémoire
| next=Les processeurs de traitement du signal
| nextText=Les processeurs de traitement du signal
}}
</noinclude>
r3tal8bxy2tqsj3y84juczm36too0vf
765702
765701
2026-05-01T17:25:52Z
Mewtow
31375
/* Les microcontrôleurs PIC */
765702
wikitext
text/x-wiki
Nous avons déjà abordé la notion de processeur 8, 16, 32, 64 bits. Elle désigne la taille des registres généraux, ou de l'accumulateur. De nos jours, les processeurs 32 et 64 bits sont la norme, mais les premiers micro-processeurs étaient des processeurs 4 et 8, avant de passer rapidement au 16 bits. La raison est que leur budget en transistor limité faisait qu'on ne pouvait pas utiliser une ALU trop grande : une ALU 8 bit prend deux fois moins de place et de transistors qu'une ALU 16 bits. Cependant, les processeurs 8 bits avaient de sérieuses limitations qui étaient compensées par diverses solutions. Dans ce chapitre, nous allons faire une revue rapide des processeurs 8 bits et de leurs fonctionnalités.
La principale limitation des CPU 8 bits était l'adressage : des registres de 8 bits limitaient l'espace d'adressage à seulement 256 adresses, soit à peine 256 octets ! Intuitivement, on se dit que 256 octets est purement impraticable, on ne peut rien faire d'intéressant avec seulement 256 de RAM + ROM. Et c'est partiellement vrai. L'adage veut que 16 bits est la taille minimale intéressante, la limite à partir de laquelle on a assez de mémoire RAM/ROM pour coder des applications intéressantes. Mais 256 octets de RAM est largement suffisant sur de nombreux systèmes embarqués simples s'en accommodent : des caisses enregistreuses, des systèmes de régulation de feu de circulation, etc.
Pour les applications demandant plus de mémoire RAM, les CPU de l'époque contournaient la limitation de 256 octets de RAM avec de nombreux stratagèmes. Dans ce qui va suivre, nous allons séparer les CPU 8 bits selon qu'ils utilisent une architecture Harvard ou une architecture Von Neumann. La raison est qu'une architecture Harvard permet en soi de contourner partiellement ce problème d'adressage. Les choses sont plus compliquées avec une architecture Von Neumann.
==Les processeurs 8/16 bits à architecture Harvard ==
La première solution est d'utiliser une architecture Harvard. Le processeur 8 bit a alors deux espaces d'adressage : un pour la RAM, un autre pour la ROM. Et les deux utilisent des adresses de taille différente. La ROM est reliée à un bus d'adresse de 16 bits, alors que la RAM est elle connectée à un bus d'adresse de 8 bits. La RAM est donc limitée à 256 octets, alors que la ROM peut monter jusqu'à 64 kibioctets. Mine de rien, faire ainsi est largement suffisant.
Les processeurs de l'époque intégraient parfois les 256 octets de RAM directement dans le processeur. Beaucoup en implémentaient moins, avec par exemple seulement 64 octets de RAM, ou 32 octets, ou 128 octets. L'avantage est que cela éliminait le bus d'adresse des données et ne laissait que le bus d'adresse pour la ROM. On économisait ainsi beaucoup de broches sur le circuit intégré du CPU. Et pour les applications demandant plus de RAM, on pouvait ajouter un circuit séparé qui permettait d'adresser une RAM plus grande. Mais cela sera plus clair avec un exemple.
===Les microcontrôleurs PIC===
Les '''microcontrôleurs PIC''' regroupent des microcontrôleurs allant de microcontrôleurs 8 bit aux performances très faible, à des microcontrôleurs 32 bits bien plus puissants. Les microcontrôleurs PIC sont très utilisés dans l'embarqué ou d'informatique industrielle. Ils sont vendu à des volumes assez impressionnants, plusieurs millions par an. Et si vous avez ou êtes en train de faire des études d'électronique, je parie que vous les avez déjà vu en classe, ou que ce ne saurait tarder. Dans ce qui suit, nous allons nous concentrer sur les microcontrôleurs PIC 8 bits, à savoir les PIC 16, 16 et 18. Les PIC 24, qui sont des microcontrôleurs 16 bits, ne seront pas abordés.
Les microcontrôleurs PIC 8 bits incorporent une mémoire RAM très petite, ainsi qu'une architecture Harvard, comme dit plus haut. La mémoire ROM des PIC va de 1024 instructions à 4096 instructions. En comparaison, la mémoire RAM des microcontrôleurs PIC ne peut pas dépasser 256 adresses, et elle est encore plus petite en pratique sur certains modèles. Pour donner un exemple, le PIC16F84 a une RAM composée de 68 "registres" de 8 bits. Le terme "registres" devrait vous faire tiquer, mais c'est bien le terme utilisé dans la documentation des PIC. Et il faut admettre que la différence entre banc de registre et SRAM intégrée est floue, mais nous expliquerons pourquoi dans quelques paragraphes.
: Les PIC 18 peuvent adresser plus de 256 octets de RAM en utilisant la commutation de banques, une technique qui sera abordée dans plusieurs chapitres.
[[File:DocPIC16F84 3.png|centre|vignette|upright=3|Espaces d'adressage du PIC16F84.]]
Un détail est que la SRAM n'a qu'un seul port qui sert à la fois pour les lectures et écritures. Pour compenser, les PIC sont des architectures à accumulateur, où une opérande est lue depuis la SRAM, l'autre depuis l'accumulateur. Leur implémentation de l'accumulateur ajoute une petite subtilité : le résultat d'une opération arithmétique peut être enregistré ailleurs que dans l'accumulateur. Le résultat peut aussi remplacer la seconde opérande, celle lue en mémoire RAM. Dit autrement, le résultat est enregistré dans l'adresse mémoire source. Les instructions de calcul ont le choix : un bit dans leur encodage précise où enregistrer le résultat.
{|
|-
|[[File:DocPIC16F84 4.png|centre|vignette|upright=2|Microarchitecture simplifiée d'un microcontroleur PIC (ici, un 16F84).]]
|[[File:DocPIC16F84 5.png|centre|vignette|upright=2|Microarchitecture simplifiée d'un microcontroleur PIC (ici, un 16F84), avec les branchements directs.]]
|}
Les PIC incorporent une pile d'appel allant de 2 à 8 niveaux, suivant les modèles. Outre l'accumulateur, les PIC disposent de registres de contrôle, d'un ''program counter'', d'un registre d'état, et d'un pointeur de pile. Il y a aussi des registres pour les entrées et sorties. Les registres d'entrée-sortie permettent de lire ou écrire sur un port d'entrée-sortie ou de lire un ''timer''. En clair, les PIC ont un espace d'adressage séparé pour les entrées-sorties.
Un détail très important est que les registres sont mappés en mémoire, à quelques exceptions près ! En clair, on peut y accéder en lisant/écrivant à une adresse mémoire bien précise. Les seules registres qui ne sont pas mappés en mémoire sont l'accumulateur, la pile d'appel, et les registres d'entrée-sortie. Par exemple, sur les modèles 16F, l'espace d'adressage fait 128 octets, dont 32 sont réservés aux registres du processeur, ce qui fait que seules 96 octets sont adressables comme de la RAM. Mais les 128 octets sont un seul et unique SRAM dans le processeur. Ce qui explique qu'il est difficile de séparer banc de registre et RAM principale sur ce processeur : les deux sont fusionnées !
: Les modèles PIC 17 ont rendu l'accumulateur mappé en mémoire RAM !
[[File:DocPIC16F84.png|centre|vignette|upright=2|DocPIC16F84]]
Le processeur de ces microcontrôleurs a un jeu d'instruction propriétaire, le jeu d'instruction PIC. Les instructions PIC sont très petites. Les premières versions du jeu d'instruction utilisaient des instructions codées sur 12 bits, dont 5 pour l'adresse mémoire de la seconde opérande. Pour les branchements, 3 bits étaient utilisés pour l'opcode, 9 pour l'adresse de destination. Par la suite, les instructions ont été étendues à 13 bits sur les PIC1670, puis à 14, 15 et 16 bits. Les adresses ont alors été élargies, ce qui permet d'adresser en peu plus de mémoire RAM.
Les instructions se limitent à des additions/soustractions, des opérations bit à bit,des branchements, des instructions LOAD/STORE, ainsi que des opérations de manipulation de bit. Il y a une instruction pour mettre une adresse à zéro, qui peut aussi mettre à zéro l’accumulateur. La plupart des modèles n'a pas d'instruction MOV pour faire une copie entre deux registres, elle n'a été intégrée que sur les modèles haute performance.
Pour ce qui est des branchements, les PIC n'ont pas d'instructions de branchement conditionnels, ils font avec une SKIP instruction et des branchements inconditionnels. Par contre, ils ont des branchements pour les appels et retour de fonction. Mieux que ça, ils intègrent une pile d'appel d'environ 8 adresses de retour. Pour donner une idée, l'adresse de retour est encodée sur 10 bits sur les PIC16F84.
Pour les instructions de manipulation de bit, il y a des instructions pour tester/masquer un bit dans une opérande, 4 en tout ( mettre à 0, mettre à 1, tester si bit = 1, tester si bit = 0). Les instructions qui testent un bit prennent leur opérande dans l'accumulateur. Il y a aussi deux instructions de rotation à gauche et droite, qui tiennent compte de la retenue mémorisée dans le registre d'état. Mentionnons aussi une instruction pour inverser deux ''nibbles'' dans un octet.
Les PIC ont aussi des instructions d'incrémentation et de décrémentation, un peu spéciales. Ces dernières regroupent : une incrémentation normale, une décrémentation normale, une décrémentation fusionnée avec une instruction SKIP, et une incrémentation fusionnée avec une instruction SKIP. Les deux dernières incrémentent/décrémentent l'accumulateur et SKIP l'instruction suivante si le résultat est zéro. Elles permettent de fortement simplifier l'implémentation des boucles qui s'exécutent tant que leur compteur atteint zéro.
Les modèles haute performance ajoutent des instructions d'addition avec retenue entrante, idem pour la soustraction. De telles instructions ssont très utiles pour faire des additions/soustractions sur des opérandes de 16 bits. Le processeur a beau être un CPU 8 bits, il peut être utilisé pour faire des calculs 16 bits, la performance est alors amoindrie, mais ce n'est pas un problème pour les applications d'un tel microcontroleur.
Les modèles intiaux, comme les PIC 10 et 12, ne supportaient pas les interruptions, mais c'est chose réglé sur les modèles plus récents. Ils ont même des registres séparés pour les interruptions et les programmes normaux. De plus, ils intégrent nativement un ''watchdog timer''.
{|class="wikitable" style="text-align:center"
|+ Jeu d'instruction des dodèles PCI 16
|-
! colspan="5" | Instructions diverses
|-
| colspan="2" | 00 0000 0000 0000 || NOP || Ne fait rien
|-
| colspan="2" | 00 0000 0000 1000 || RETURN || Instruction de retour pour une fonction
|-
| colspan="2" | 00 0000 0000 1001 || NOP || Instruction de retour pour une interruption
|-
| colspan="2" | 00 0000 0110 0011 || SLEEP || Mise en veille
|-
| colspan="2" | 00 0000 0110 0100 || CLRWDT || RESET le ''watchdog timer'', intégré dans le PIC
|-
! colspan="5" | Instructions de manipulation de bit
|-
| 0100 || Position du bit dans l'opérande || Adresse mémoire || BCF || Met le bit à 1
|-
| 0101 || Position du bit dans l'opérande || Adresse mémoire || BSF || Met le bit à 0
|-
| 0110 || Position du bit dans l'opérande || Adresse mémoire || BTFSC || Teste si le bit adressé est à 1
|-
| 0111 || Position du bit dans l'opérande || Adresse mémoire || BTFSS || Teste si le bit adressé est à 0
|}
Les PIC gèrent l'adressage absolu et immédiat, mais pas plus. L'adressage absolu, celui où l'adresse est intégrée dans l'instruction, est très simple à implémenter. Les adresses prennent moins d'un octet, vu que la taille de la RAM est très petite, les adresses sont très courtes, les intégrer dans des instructions elles-mêmes courtes n'est pas un problème. L'adresse est encodée sur 5 à 7 bits, selon le modèle, ce qui permet d'adresser entre 32 et 128 octets.
Les PIC ne supportent pas l'adressage indirect, mais peuvent l'émuler grâce à un '''registre d'adresse''' dédié. Il s'agit du registre FSR, qui mémorise l'adresse à lire/écrire. Il est possible de copier un pointeur dedans, qui provient soit de l'accumulateur, soit de la mémoire SRAM. Dans les deux cas, la donnée adressée est lue ou écrite dans un registre INDR, est un registre d’interfaçage rendu adressable. Le registre FSR est directement connecté sur le bus d'adresse.
Les modèles de base se débrouillent avec un registre FSR et un registre INDR, mais les modèles plus performants ont deux ou trois copies de chaque registre. Les modèles PIC18 ajoutent aussi des instructions LOAD/STORE qui émulent les modes d'adressage à post- ou pré-incrément/décrément, et le mode d'adressage "Base + Indice + Décalage", encore une fois en utilisant les registres FSR et INDR.
Avec tout ce qu'on vient de dire, vous devriez pouvoir comprendre la microarchitecture d'un PIC, qui est résumée dans ce schéma.
[[File:DocPIC16F84 all.png|centre|vignette|upright=2.5|Microarchitecture du PIC16F84.]]
===Le Fairchild F8 et la console de jeu Fairchild Channel F===
Un autre exemple est la Fairchild F8 de la défunte entreprise Fairchild Semiconductor. Il incorpore un processeur 8 bits, c'est à dire que le processeur fait des calculs sur des entiers de 8 bits maximum, une mémoire RAM de 64 octets, ainsi qu'une mémoire ROM de 1 kibioctet. Les 64 octets de RAM sont certes très peu, mais c'est suffisant pour certaines applications simples, comme les caisses automatiques de l'époque, ou des applications embarquées. Et de toute façon, il est possible d'ajouter de la mémoire RAM supplémentaire si les 64 octets de RAM intégrée ne suffisent pas. Le système était donc modulaire, adaptable selon les besoins, peu cher pour son implémentation minimale sans RAM en plus.
Vu qu'il s'agit d'un des tout premiers ordinateurs, il est sorti à une époque où la technologie était rudimentaire. À cette époque, le processeur était composé de pièces détachées qu'il fallait souder ensemble pour obtenir un processeur fonctionnel. Ce n'est que plus tard qu'est apparu le micro-processeur, qui regroupe un processeur complet dans un seul circuit intégré. Le résultat est que le processeur du Fairchild F8 est coupé en deux, l'unité de calcul et l'unité de contrôle sont placés dans des pièces détachées séparés.
Le microcontrôleur est composé de trois à quatre pièces détachées, certaines étant optionnelles. La première est le '''3850 CPU''', qui regroupe l'unité de calcul et la mémoire RAM intégrée. La seconde est le PSU (''3851 Program Storage Unit''), qui regroupe la mémoire ROM et l'unité de contrôle, ''program counter'' inclut. S'il y a besoin d'utiliser plus de RAM, il faut ajouter un circuit d’interface mémoire, qui est au choix le ''3852 Dynamic Memory Interface'' (DMI) ou le ''3853 Static Memory Interface'', le premier étant connecté à une mémoire de type DRAM, l'autre à une SRAM (nous verrons ce que sont les DRAM et les SRAM dans le prochain chapitre).
[[File:Fairchild F8.png|centre|vignette|upright=2|Fairchild F8]]
Le système minimal est composé d'un PSU et d'un 3850, sans les circuits d'interface mémoire. Le tout donne un système avec un processeur 8 bit, 64 octets de RAM et 1 kibioctet de ROM, les deux mémoires étant intégrées dans le "processeur". Le processeur gérait 4 entrées-sorties, chacune étant reliée avec un bus de 8 bit au processeur. Au passage, en 1977, Mostek a créé un microcontrôleur qui regroupe un PSU et un 3850 : le Mostek 3870. Le système minimal n'avait pas de bus d'adresse, vu que la RAM était intégrée au processeur. C'est les 3852 et 3853 qui ajoutaient un bus d'adresse. Ils ajoutent un bus d'adresse de 16 bits, ce qui permet d'adresser 64 kibioctets de RAM.
[[File:Fairchild-Channel-F.jpg|vignette|un Fairchild Channel F]]
Le Fairchild F8 a été utilisé dans la Fairchild Channel F, une des toute première console de seconde génération, à savoir des consoles qui utilisaient des cartouches de jeu. Avant les consoles de seconde génération, les consoles étaient non-programmables. Elles étaient conçues pour faire tourner un jeu précis, aucun autre, le jeu étant implémenté dans leurs circuits.
La Fairchild Channel F est composé du système minimal, auquel on a ajouté une carte son rudimentaire et 2 kibioctets de mémoire vidéo. La mémoire vidéo sert uniquement pour afficher des images à l'écran : on écrit l'image à afficher dedans, un circuit vidéo se charge de l'afficher à l'écran automatiquement. Le processeur ne fait qu'écrire dans cette RAM vidéo, il ne peut pas en lire le contenu. De la RAM supplémentaire peut cependant être ajoutée dans les cartouches de jeu.
===L'usage d'une architecture Harvard modifiée : les consoles 8 bits===
Pour encore améliorer la situation, il est possible d'utiliser une architecture Harvard modifiée, qui permet de lire des données depuis la mémoire ROM. Cela réduit encore plus les besoins en mémoire RAM. Les constantes manipulées par le programme sont mémorisées en ROM, lues depuis la ROM, au lieu d'être chargées en RAM. Les consoles de jeu utilisaient beaucoup de stratagème.
L'exemple type est celui des consoles 8 bits avec des graphismes en 2D. La cartouche de jeu contenait une ROM, qui mémorisait le code du jeu, les niveaux, les sprites et autres données graphiques. Leur carte graphique lisait directement les ''sprites'' depuis la mémoire ROM, sans avoir à les charger en mémoire vidéo. La mémoire vidéo se contentait de mémoriser le reste des informations graphiques, ainsi que des pointeurs vers les ''sprites'' en ROM. En conséquence, les consoles 8 bits n'avaient pas besoin de beaucoup de RAM, vu qu'une grande partie des données utiles étaient dans une ROM directement accessible par le processeur. A l'opposé, les micro-ordinateurs devaient copier les données d'un jeu depuis une disquette dans la mémoire RAM, ce qui demandait d'avoir plus de RAM.
Le passage au support CD sur les consoles 32 bits a eu la même conséquence. Le processeur ne pouvant pas lire directement le CD à sa guise, il fallait copier les données du CD en RAM. D'où l'apparition de temps de chargement assez longs, inexistants sur support cartouche.
Avec ce genre de stratagèmes, 256 octets de RAM est largement suffisant sur de nombreux systèmes, à condition qu'on ait assez de ROM pour coder un programme digne de ce nom. Par exemple, de nombreux systèmes embarqués simples s'en accommodent : des caisses enregistreuses, des systèmes de régulation de feu de circulation, etc.
===Le HP Nanoprocessor : un processeur sans ALU===
Un dernier exemple est celui du processeur HP Nanoprocessor, de l'entreprise HP. Il a été commercialisé en 1974, en même temps que les premiers micro-processeurs d'Intel. Tous les processeurs de l'époque étaient des processeurs 8 bits et le HP Nanoprocessor ne faisait pas exception. Ce n'était pas un processeur haute performance, il était destiné à des applications d'informatique industrielle ou embarquée. D'ailleurs, il utilisait des transistors de type metal-gate, peu performants, là où ses contemporains utilisait des transistors en silicium, plus performants.
Mais une caractéristique qui rend cela encore plus claire est qu'il n'y a pas d'ALU ! En effet, ce processeur est incapable de faire des additions, des soustractions ou autres opérations simples ! Il est cependant capable d'effectuer des incrémentations et décrémentations, des décalages, des opérations logiques comme des ET/OU/NON/XOR et bien d'autres. Il supporte en tout 48 instructions, avec un support limité des modes d'adressage indirects. Les instructions de branchement étaient des instructions SKIP, il n'y avait pas d'instructions de branchement généralistes.
Pour ce qui est des registres, il disposait de 16 registres de 8 bits et d'un accumulateur. Niveau mémoire, il était relié à une mémoire ROM, rien de plus. Il n'avait de RAM supplémentaire qu'on pouvait lui adjoindre, il devait se débrouiller avec seulement ses registres. Et cela ne posait pas de problèmes pour son usage. Seul le mode d'adressage indirect à registre est supporté, il n'y a pas de registres d'indices. Ce mode d'adressage permet de lire des données en mémoire ROM, la ROM pouvant contenir des tableaux de valeurs constantes.
: Il est possible de lui adjoindre de la RAM via les ports d'entrée-sortie, ainsi qu'une ALU, mais RAM et ALU sont traités comme des périphériques avec lesquels on communique, ils ne sont pas intégrés au processeur.
Niveau micro-architecture, il incorporait une unité de calcul logique et un circuit comparateur. Le comparateur était un circuit comparateur série des plus basiques, qui était utilisé pour les instructions de branchement et associées. L'unité de calcul logique gérait des incrémentations/décrémentation, des décalages, les opérations logiques et quelques autres. L'unité de calcul logique était bit-slicée, à savoir conçue en assemblant 8 ALU de 1 bit chacune, enchainées en série. Le tout était combiné à des circuits de ''carry skip''.
[[File:Unité de calcul du HP nanonprocessor.png|centre|vignette|upright=2|Unité de calcul du HP nanoprocessor]]
Son unité de décodage d'instruction était très simple, essentiellement basée sur des portes NOR, grâce à un encodage efficace des instructions machine. Le ''program counter'' fait 11 bits, ce qui permet d'adresser une ROM de 2 kibioctets. Le ''program counter'' était relié à un circuit incrémenteur qui gérait les isntructions SKIP (il pouvait incrémenter le ''program counter'' par pas de 1 ou de 2 en cas de SKIP). Le processeur contient aussi deux registres, qui servent en quelque sorte de pile d'adresse de retour. Un premier registre mémorise l'adresse de retour d'une fonction, l'autre mémorise le ''program counter'' lors d'une interruption, pour savoir où brancher à la fin de l'interruption.
[[File:HP nanoprocessor.png|centre|vignette|upright=2.5|HP nanoprocessor]]
Fait intéressant, le concepteur du processeur a gracieusement donné les masques utilisés pour graver le silicium du processeur au site [https://www.cpushack.com/ CPU Shack]. Les masques en question sont disponibles ici :
* [https://www.cpushack.com/2020/08/20/hp-nanoprocessor-mask-set/ HP NanoProcessor Mask Set]
* [https://www.cpushack.com/2020/08/09/the-forgotten-ones-hp-nanoprocessor/ The Forgotten Ones: HP Nanoprocessor]
Les masques ont été analysés par Ken Shirrif dans cet article de blog :
* [https://www.righto.com/2020/09/hp-nanoprocessor-part-ii-reverse.html HP Nanoprocessor part II: Reverse-engineering the circuits from the masks]
==Les processeurs 8/16 bits à architecture Von Neumann==
L'usage d'une architecture Harvard est une solution pour adresser plus de mémoire avec des CPU 8 bits. Mais plusieurs microprocesseurs commerciaux n'utilisaient pas cette solution. À la place, c'était des architectures Von Neumann, mais qui étaient capables de gérer des adresses de 16 bits. Les données faisaient 8 bits, les registres faisaient 8 bits, mais quelques techniques permettaient de gérer des adresses de 16 bits. Nous parlerons de '''processeurs 8/16 bits''' pour les désigner, et nous allons les étudier à part.
Un point important est que la gestion d'adresses de 16 bits permet d'adresser 64 kibioctets, qui peuvent être remplis avec de la RAM et de la ROM. On a donc le meilleur des mondes : 64 kibioctets de mémoire, mais avec des données de 8 bits et les économies de circuit qui vont avec. L'avantage est que le processeur peut maintenant gérer une vraie pile d'appel, pas seulement une pile d'adresse de retour. Il lui suffit pour cela d'intégrer un pointeur de pile codé sur 16 bits.
===Les modes d'adressage par page des CPU Motorola===
Les processeurs Motorola 8 bits étaient des processeurs 8 bits avec un bus d'adresse de 16 bits. C'était des processeurs à accumulateur incorporant deux registres d'indice, un registre d'état, un pointeur de pile, et un ''program counter''. Tous les registres sont reliés au bus d'adresse, sauf le registre d'état et l’accumulateur. Tous les registres font 8 bits, sauf le ''program counter''. La pile est câblée pour être dans un bloc de 256 octets compris entre l'adresse 1 0000 0000 et l'adresse 1 1111 1111, ce qui fait que son adressage se fait avec un seul octet.
[[File:6502-architecture.svg|centre|vignette|upright=1.5|Architecture simplifiée du 6502.</br> X et Y : registres d'indice ;</br> S : le pointeur de pile ;</br> A : accumulateur ;</br>P : registre d'état.</br>]]
Les processeurs Motorola 8 bits utilisaient une méthode simple pour adresser 64 kibioctets de RAM, avec des registres de 8 bits. Pour cela, ils utilisaient une variante de l'adressage base + décalage. Elle améliore l'adressage absolu, qui intègre l'adresse à lire/écrire dans l'instruction elle-même. L'adresse en question est de 8 bits et n'encode que les 8 bits de poids faible de l'adresse, les 8 bits de poids fort sont dans un '''registre de page''' adressé implicitement. L'adresse finale est obtenue en concaténant ce registre avec l'adresse mémoire intégrée dans l’instruction. Le résultat est que la mémoire était découpée en blocs de 256 consécutifs, chacun pouvant servir de fenêtre de 256 octets. Une page est réservée pour la pile, la seconde, comme dit plus haut.
Formellement, ce mode d'adressage a des ressemblances avec la commutation de banques, une technique qu'on verra dans les chapitres sur l'espace d'adressage et la mémoire virtuelle. Mais ce n'en est pas du tout : le registre de page est utilisé uniquement pour les accès mémoire avec le mode d'adressage base + décalage, mais pas pour les autres accès mémoire, qui gèrent des adresses complètes. Notons que l'usage d'un registre de page dédié fait que celui-ci est adressé implicitement.
Il faut noter que la technique a été utilisée sur des processeurs 16 bits, pour contourner la petite taille des instructions. Un exemple est celui du HP 2100, un processeur 16 bits. Il avait un registre de page de 5 bits et encodait 10 bits d'adresse dans ses instructions. Ses instructions d'accès mémoire disposaient d'un bit qui choisit quel mode d'adressage utiliser. S'il était à 0, l'adressage absolu était utilisé, le registre de page n'était pas utilisé. Mais s'il était à 1, le registre de page était utilisé pour calculer l'adresse.
Une évolution de l'adressage précédent est le '''mode page direct'''. Avec lui, le registre de page est étendu et contient une adresse mémoire complète. L'adresse finale n'est pas obtenue par concaténation, mais en additionnant le registre de page avec l'adresse fournie par adressage absolu + décalage. Un exemple est celui des premiers processeurs Motorola, qui géraient des adresses courtes de 8 bits. L'adresse courte de 8 bits correspondait non pas aux 256 premiers octets de la mémoire, mais à une fenêtre de 256 octets déplaçable en mémoire. La position de la fenêtre de 256 octets était spécifiée par le registre de page de 16 bits, qui précisait l'adresse du début de la fenêtre, celle de sa première donnée.
Il s'agit donc formellement d'adressage base + décalage, à un détail près : il n'y a qu'un seul registre de base. Le fait que ce registre de base soit unique fait qu'il est adressé implicitement, on n'a pas à encoder le numéro/noms de registre dans l'instruction. Le registre de base est utilisé uniquement pour l'adressage absolu, pas pour les autres accès mémoire. S'il y a des ressemblances avec la segmentation, une technique de mémoire virtuelle qu'on abordera dans quelques chapitres, ce n'en est pas vu que le registre de base est utilisé seulement pour un mode d'adressage bien précis.
===Le ''pseudo-aliasing'' des registres des processeurs Intel x86===
Voyons maintenant le cas des anciens processeurs 8 bits d'Intel à savoir l'Intel 4004, 4040, 8008 et 8080. Le Z80, un processeur inspiré des CPU Intel 8 bits, est aussi concerné. Avant de poursuivre, parlons des registres de ces processeurs. Les premiers CPU Intel incorporaient 7 registres de 8 bits nommés A, B, C, D, E, F, H, L, SP. Ils correspondent respectivement à : l'accumulateur A ; six registres nommés B, C, D, E, H et L ; le registre d'état F ; le pointeur de pile SP. Le Z80 ajoute deux registres d'indice X et Y. De plus, le Z80 dispose de registres d'interruption, qui sont en quelque sorte des copies des registres A, B, C, D, E, F, H, L. Le tout est illustré dans le tableau ci-dessous.
{|class="wikitable" style="text-align:center;"
|-
!
! Registres des CPU Intel
! Registres supplémentaires du Z80
|-
! Accumulateur
| A
| A'
|-
! Registre d'état
| F
| F'
|-
! Registres généraux
| B, C, D, E, H, L
| B', C', D', E', H', L'
|-
! Pointeur de pile
| colspan="2" | SP (sauf pour le 8008)
|-
! Registres d'indice
|
| X et Y
|}
Le 8008 incorpore une pile d'appel de 7 adresses, dans le processeur lui-même. Il en est de la même avec le 4004 et le 4040, comme on le verra dans la section sur les processeurs 4 bits. Mais le 8080 et le 8085 ont remplacé le tout par un simple pointeur de pile, afin d'avoir une véritable pile d'appel. Autant c'est impossible d'avoir une pile d'appel avec seulement 256 octets de mémoire, autant on peut se le permettre avec 65 536 adresses.
Pour gérer des adresses de 16 bits, ils auraient pu utiliser des registres d'adresse séparés, mais on préféré un système de '''pseudo-''aliasing'' de registres'''. Formellement, c'est un système qui concatène deux registres 8 bits pour obtenir une adresse de 16 bits. L’appariement a lieu lors de certaines opérations bien précises, qui n'ont de sens que pour les adresses : la lecture/écriture en mémoire, et l'incrémentation.
Il y avait cependant des contraintes quant aux paires de registres possibles, toutes les paires de registres n'étaient pas autorisées. Les CPU concernés sont donc des processeurs hybrides accumulateur-registre généraux. L'accumulateur ne peut pas être appairé, seuls les registres généraux le peuvent. Le Z80 autorise plus de paires que les CPU Intel. Voici les paires de registres qui pouvaient servir d'adresse 16 bits :
* Les CPU 8008 d'Intel autorisait une seule paire formée des registres H et L.
* Les autres processeurs, à savoir le 8080, le 8085 et le Z80, autorisaient : les paires BC, DE et HL.
Le 8008 ne gérait que des opérations sur 8 bits. Mais le 8080 et le 8085 ont ajouté des instructions 16 bits qui agissaient sur des paires de registre, que le Z80 a repris. Une paire de registres est considérée comme un registre unique de 16 bits pour certaines opérations arithmétiques, dont l'incrémentation. Voici la liste des instructions concernées :
* INC et DEC pour l'incrémentation et la décrémentation ;
* DAD : additionne le registre HL avec une autre paire (Hl inclus) ;
* LXI : copie une constante immédiate dans une paire de registres ;
* LHLD : lit 16 depuis la mémoire et l'enregistre dans une paire de registres ;
* SHLD : copie 16 bits depuis une paire de registres et l'enregistre en mémoire ;
* PUSH et POP : empile ou dépilent une paire de registre sur la pile ;
* XTHL : échange la paire HL avec les 16 bits au sommet de la pile d'appel ;
* XCHG : échange le contenu de la paire HL et DE.
Pour résumer, le processeur avait des instructions LOAD, STORE, PUSH et POP adaptées pour gérer des paires de registre. De plus, l'instruction XCHG permettait d’échanger le contenu des paires DE et HL. L'instruction a été étendue sur les processeurs 16 bits pour échanger tous les registres. Mais l'implémentation était alors différente. L'incrémentation sur une paire de 16 bit était très utile, car les adresses sont souvent incrémentées quand on parcours un tableau. Ces instructions nous donnent quelques indices sur ce qu'il y a dans le processeur.
Le système de pseudo-aliasing a un impact sur le banc de registre. Le banc de registre regroupe les registres généraux et le pointeur de pile, mais ne contient pas l'accumulateur. Les contraintes sur les paires de registres possibles ne s'expliquent que d'une seule manière : le banc de registre contient des registres de 16 bits, une paire de registres 8 bits est mémorisée dans un registre unique. Il faut donc faire une différence entre les registres architecturaux de 8 bits, et les registres réels de 16 bits.
Le banc de registre a un port de 8 bits pour les données, qui est fabriqué à partir d'un port 16 bits auquel on a rajouté un multiplexeur pour choisir soit l'octet de poids faible, soit l'octet de poids fort. Le bus de données fait 8 bits, ce qui fait que les instructions LOAD, STORE, PUSH et POP pour paires 16 bits sont réalisées en deux fois : on lit/écrit l'octet de poids faible, puis celui de poids fort. Par contre, le bus d'adresse fait bien 16 bits. Cela suggère que le banc de registre dispose d'un port de 16 bits dédié aux adresses, en plus du port de données 8 bits.
[[File:Architecture d'un CPU 8-16 bits avec un banc de registre double port.png|centre|vignette|upright=2|Architecture d'un CPU 8-16 bits avec un banc de registre double port]]
L'incrémentation d'une paire 16 bits ne coute rien à implémenter, ou presque. En effet, le processeur incorpore un incrémenteur 16 bits pour le ''program counter'', qui est relié au bus d'adresse. L'idée est de rentabiliser cet incrémenteur, en lui permettant d'incrémenter des données/adresses de 16 bits obtenues via pseudo-aliasing. De même, il peut être utilisé pour incrémenter le pointeur de pile, voire un compteur de rafraichissement mémoire (pour rappel, le rafraîchissement mémoire demande de balayer la mémoire d'adresse en adresse et été fait par le CPU à l'époque). Pour cela, il suffit de connecter le ''program counter'', le banc de registre, et l'incrémenteur, via un bus dédié.
[[File:Calcul d'adresse par ALU dédiée avec PC séparé.png|centre|vignette|upright=2|Calcul d'adresse par ALU dédiée avec PC séparé]]
Notez qu'on peut encore simplifier le tout en placant le ''program counter'' dans le banc de registre, ce qui ne gênera pas le travail de l'incrémenteur mais simplifiera le câblage au bus d'adresse. Ce n'était pas systématique, certains processeurs mettaient le ''program counter'' dans le banc de registre, d'autres non.
: Inclure le ''program counter'' dans le banc de registre permet parfois de remplir un vide. Par exemple, sur un processeur avec 12 registres, le banc de registre devrait faire idéalement 16 registres, inclure le ''program counter'' dedans fait monter le tout à 13.
[[File:Architecture d'un CPU 8-16 bits.png|centre|vignette|upright=2|Architecture d'un CPU 8-16 bits]]
Les processeurs Intel 8 bits, à savoir le 8008, le 8080 et le 8085 ; mettaient le ''program counter'' dans le banc de registre. Vous avez donc toutes les armes pour comprendre leur micro-architecture. Par exemple, voici la micro-architecture du processeur 8080. Remarquez le banc de registre, qui contient tous les registres sauf l'accumulateur et le registre. Il a deux ports : un pour les adresses et un pour les données. Notez le dé-multiplexeur sur le port de donnée. Pour le reste, il s'agit d'une architecture à accumulateur hybride des plus classiques.
[[File:Intel 8080 arch.svg|centre|vignette|upright=3|Microarchitecture de l'Intel 8080.]]
Le Z80 est un processeur inspiré du design des processeurs Intel 8 bits, mais avec pas mal d'améliorations. Un point particulier de ce processeur est son banc de registre. Il contient tous les registres du processeur, y compris l'accumulateur et le registre d'état ! Les seuls registres en-dehors du banc de registre sont le ''program counter'' et un compteur de rafraichissement mémoire IR.
Un autre point particulier est que les registres dans le banc de registres avaient une copie séparée accessible uniquement pour les interruptions, via fenêtrage de registres. Et l'accumulateur et le registre d'état étant dans le banc de registre, il y avait deux accumulateurs et deux registres d'état. Les registres A, B, C, D, E et F étaient dupliqués, par le pointeur de pile ni les registres d'indice. Les copies des registres étaient nommées A', B', C', D', E' et F'.
Le Z80 supportait des instructions d'échange de registre en plus des CPU Intel 8 bits. L'instruction EX peut échanger soit le contenu des paires D,E et H,F, soit la paire A,F avec la paire A',F'. L'instruction EXX échange les paires BC, DE, HL avec les paires BC', DE', HL'. En faisant cela, le programmeur pouvait utiliser deux fois plus de registres généraux s'il n'utilisait pas les interruptions. L'échange de paires se fait sans copies de registres, mais simplement en modifiant l'adresse envoyée sur le banc de registre. Pour cela, plusieurs bascules mémorisent des bits qui indiquent si les paires ont été échangées ou non. Il y a une bascule pour les paires DE , HL ; une autre pour les paires A,F et paire A',F', une dernière pour l'instruction EXX. En combinant ces bascules avec les noms de registres envoyés par le séquenceur, on peut échanger les paires de registres.
==Le cas particulier des processeurs 4 bits : le 4004 d'Intel==
L'Intel 4004 était le tout premier micro-processeur. Il s'agissait d'un microprocesseur de 4 bits, basé sur une architecture à accumulateur. Il disposait d'un accumulateur et de 16 registres d'indice, tous de 4 bits. Il faisait des calculs sur des données de 4 bits, appelées des nibbles. Cependant, sur ses 46 instructions machines supportées, 41 agissaient sur des opérandes de 8 bits, les 5 restantes sur des opérandes de 16 bits. Simplement, les calculs se faisaient en deux fois, en échangeant des données entre mémoire RAM et accumulateur.
Le 4004 est un circuit intégré avec peu de broches. Il dispose notamment d'un bus de données/adresse, qui est multiplexé, c’est-à-dire qu'il sert alternativement de bus de données et de bus d'adresse selon les besoins. Le bus de commande mémoire fait 5 bits, dont 4 pour les chips de RAM, un pour la ROM. Les adresses sont codées sur 12 bits, les données sur 4 et les instructions sur 8 bits. L'envoi d'une adresse sur le bus se fait en plusieurs fois, de même que la lecture d'une instruction. Il s'agit là d'une adaptation pour outrepasser les limitations d'un processeur 4 bit.
[[File:Intel 4004 processor pinout.png|centre|vignette|upright=2|Broches de l'Intel 4004. Nous verrons à quoi elles servent plus bas.]]
===L'espace d'adressage de l'Intel 4004===
Les adresses du processeur sont sur 12 bits, ce qui fait 4096 adresses différentes. Elles regroupent à la fois la ROM et la mémoire RAM, vu que l'architecture est une sorte de mélange bizarre entre une architecture Von Neumann et Harvard. Le processeur gère bien deux espaces d'adressage séparés, mais la RAM et la ROM sont reliés au même bus. La sortie CM-ROM du processeur indique si l'adresse envoyée correspond à la RAM ou la ROM. Un circuit de décodage d'adresse active ou désactive la RAM selon la valeur de ce bit, l'inverse pour la ROM, en agissant sur leurs bits Chip Select. Seule la RAM ou la ROM répondent alors à l'adresse.
Pour ce qui est de la RAM, le circuit de décodage d'adresse pouvait gérer au maximum 1024 adresses différentes, chacune contenant un nibble. Pour cela, le CPU 4004 était relié à une ou plusieurs RAM externes, des Intel 4002. Chaque Intel 4002 contenait 64 nibbles de données, plus 16 nibbles de statut qu'on ne détaillera pas ici. Les nibbles de statut étaient accessibles en utilisant des instructions d'entrée-sortie, donc pas avec des lectures/écritures mémoire. Les 64 nibbles de données sont découpés en 4 groupes de 16 nibbles. Le CPU pouvait être relié à maximum 16 Intel 4002, ce qui fait 1024 nibbles de données et 256 nibbles de statut. L'ensemble permet de remplir l'espace d'adressage de 1024 adresses.
===Le registre de page et le pseudo-aliasing des registres===
Sélectionner une adresse mémoire utilisait un mélange entre pseudo-aliasing et registre de page. Pour les données, les 1024 adresses étaient découpées en 4 pages de 256 adresses. Pour la ROM, les 4096 adresses étaient découpées en 16 pages de 256 adresses. Localiser une donnée dans une page ne requiert que 8 bits, 2/4 bits supplémentaires permettent de sélectionner la page voulue. Le registre de page était dans le processeur lui-même, et était relié aux sorties du processeur nommées CM-RAM 0, 1, 2 et 3. Les 4 sorties encodaient un nombre qui permet de sélectionner le numéro de page voulu.
Le registre de page fait 5 bits : un pour distinguer RAM et ROM, 4 bits pour sélectionner la page voulue. L'avantage est que la carte mère gère au maximum 16 chips de RAM, ce qui colle parfaitement avec les 4 utilisés pour sélectionner une page. Un chip de RAM correspond à une page, et chacun est activé ou désactivé suivant la page sélectionnée. Pour cela, il suffit d'ajouter un décodeur sur la carte mère, qui prend les 4 bits du registre de page et fournit les signaux Chip Select aux différents chips de RAM.
Reste alors à utiliser les 8 bits d'adresse à l'intérieur d'un chip de RAM. Le 4004 permettait de concaténer deux registres d'indice de 4 bits pour former une adresse de 8 bits. Les instructions d'accès mémoire pouvaient ainsi préciser une paire de registre d'indice pour préciser quelle adresse lire/écrire. Idem pour les branchements indirects : le processeur supportait une instruction de branchement indirect qui précisait l'adresse dans une paire de registres d'indice. Les registres d'indice sont donc assez mal nommés sur cette architecture, vu qu'ils peuvent servir soit de registre d'indice, soit de demi-registre d'adresse. Il s'agit là du système de pseudo-aliasing des registres, mais appliqué aux registres d'indice.
L'Intel 4004 gérait deux instructions pour gérer les adresses mémoires. La première, l'instruction DCL (''Designate Command Line'') configure le registre de page. Elle prend en entrée un numéro de page et le copie dans le registre de page. L'opérande peut provenir d'un registre d'indice ou de l'accumulateur. La seconde, l'instruction SRC (''Send Register Control'') concatène deux registres d'indice pour obtenir une adresse de 8 bits. Un accès mémoire se fait donc en maximum trois instructions : une qui configure le registre de page si ce n'est pas déjà fait, une instruction SRC pour envoyer l'adresse, et une troisième instruction qui dit s'il faut faire une lecture ou une écriture.
===La microarchitecture de l'Intel 4004===
Il incorporait une pile d'adresse de retour intégrée au processeur. La pile d'adresse acceptait exactement 3 adresses maximum. Elle était regroupée avec le ''program counter'' dans un banc de registre, de 4 registres. Le ''program counter'' et le pointeur de pile faisaient chacun 12 bits, soit trois nibble. Ils étaient incrémentés par un incrémenteur dédié.
SI on omet le registre de page et la pile d'adresse, le 4004 est une architecture à accumulateur des plus classiques, avec un bus interne unique, un banc de registre pour les registres d'indices, un accumulateur relié à une unité de calcul. Les registres d'indice étaient dans un banc de registre séparés, car ils faisaient 4 bits chacun, contrairement au pointeur de pile et le ''program counter''. Un détail important est que les bancs de registres du 4004 étaient implémentés avec de la DRAM, et non des registres usuels fabriqués avec des bascules 1 bit.
[[File:Microarchitecture de l'Intel 4004.png|centre|vignette|upright=2.5|Microarchitecture de l'Intel 4004]]
<noinclude>
{{NavChapitre | book=Fonctionnement d'un ordinateur
| prev=Les architectures à pile et mémoire-mémoire
| prevText=Les architectures à pile et mémoire-mémoire
| next=Les processeurs de traitement du signal
| nextText=Les processeurs de traitement du signal
}}
</noinclude>
f8u3jute1llvcmtn2th49xkaaeq3u06
765703
765702
2026-05-01T17:39:01Z
Mewtow
31375
/* Les microcontrôleurs PIC */
765703
wikitext
text/x-wiki
Nous avons déjà abordé la notion de processeur 8, 16, 32, 64 bits. Elle désigne la taille des registres généraux, ou de l'accumulateur. De nos jours, les processeurs 32 et 64 bits sont la norme, mais les premiers micro-processeurs étaient des processeurs 4 et 8, avant de passer rapidement au 16 bits. La raison est que leur budget en transistor limité faisait qu'on ne pouvait pas utiliser une ALU trop grande : une ALU 8 bit prend deux fois moins de place et de transistors qu'une ALU 16 bits. Cependant, les processeurs 8 bits avaient de sérieuses limitations qui étaient compensées par diverses solutions. Dans ce chapitre, nous allons faire une revue rapide des processeurs 8 bits et de leurs fonctionnalités.
La principale limitation des CPU 8 bits était l'adressage : des registres de 8 bits limitaient l'espace d'adressage à seulement 256 adresses, soit à peine 256 octets ! Intuitivement, on se dit que 256 octets est purement impraticable, on ne peut rien faire d'intéressant avec seulement 256 de RAM + ROM. Et c'est partiellement vrai. L'adage veut que 16 bits est la taille minimale intéressante, la limite à partir de laquelle on a assez de mémoire RAM/ROM pour coder des applications intéressantes. Mais 256 octets de RAM est largement suffisant sur de nombreux systèmes embarqués simples s'en accommodent : des caisses enregistreuses, des systèmes de régulation de feu de circulation, etc.
Pour les applications demandant plus de mémoire RAM, les CPU de l'époque contournaient la limitation de 256 octets de RAM avec de nombreux stratagèmes. Dans ce qui va suivre, nous allons séparer les CPU 8 bits selon qu'ils utilisent une architecture Harvard ou une architecture Von Neumann. La raison est qu'une architecture Harvard permet en soi de contourner partiellement ce problème d'adressage. Les choses sont plus compliquées avec une architecture Von Neumann.
==Les processeurs 8/16 bits à architecture Harvard ==
La première solution est d'utiliser une architecture Harvard. Le processeur 8 bit a alors deux espaces d'adressage : un pour la RAM, un autre pour la ROM. Et les deux utilisent des adresses de taille différente. La ROM est reliée à un bus d'adresse de 16 bits, alors que la RAM est elle connectée à un bus d'adresse de 8 bits. La RAM est donc limitée à 256 octets, alors que la ROM peut monter jusqu'à 64 kibioctets. Mine de rien, faire ainsi est largement suffisant.
Les processeurs de l'époque intégraient parfois les 256 octets de RAM directement dans le processeur. Beaucoup en implémentaient moins, avec par exemple seulement 64 octets de RAM, ou 32 octets, ou 128 octets. L'avantage est que cela éliminait le bus d'adresse des données et ne laissait que le bus d'adresse pour la ROM. On économisait ainsi beaucoup de broches sur le circuit intégré du CPU. Et pour les applications demandant plus de RAM, on pouvait ajouter un circuit séparé qui permettait d'adresser une RAM plus grande. Mais cela sera plus clair avec un exemple.
===Les microcontrôleurs PIC===
Les '''microcontrôleurs PIC''' regroupent des microcontrôleurs allant de microcontrôleurs 8 bit aux performances très faible, à des microcontrôleurs 32 bits bien plus puissants. Les microcontrôleurs PIC sont très utilisés dans l'embarqué ou d'informatique industrielle. Ils sont vendu à des volumes assez impressionnants, plusieurs millions par an. Et si vous avez ou êtes en train de faire des études d'électronique, je parie que vous les avez déjà vu en classe, ou que ce ne saurait tarder. Dans ce qui suit, nous allons nous concentrer sur les microcontrôleurs PIC 8 bits, à savoir les PIC 16, 16 et 18. Les PIC 24, qui sont des microcontrôleurs 16 bits, ne seront pas abordés.
Les microcontrôleurs PIC 8 bits incorporent une mémoire RAM très petite, ainsi qu'une architecture Harvard, comme dit plus haut. La mémoire ROM des PIC va de 1024 instructions à 4096 instructions. En comparaison, la mémoire RAM des microcontrôleurs PIC ne peut pas dépasser 256 adresses, et elle est encore plus petite en pratique sur certains modèles. Pour donner un exemple, le PIC16F84 a une RAM composée de 68 "registres" de 8 bits. Le terme "registres" devrait vous faire tiquer, mais c'est bien le terme utilisé dans la documentation des PIC. Et il faut admettre que la différence entre banc de registre et SRAM intégrée est floue, mais nous expliquerons pourquoi dans quelques paragraphes.
: Les PIC 18 peuvent adresser plus de 256 octets de RAM en utilisant la commutation de banques, une technique qui sera abordée dans plusieurs chapitres.
[[File:DocPIC16F84 3.png|centre|vignette|upright=3|Espaces d'adressage du PIC16F84.]]
Un détail est que la SRAM n'a qu'un seul port qui sert à la fois pour les lectures et écritures. Pour compenser, les PIC sont des architectures à accumulateur, où une opérande est lue depuis la SRAM, l'autre depuis l'accumulateur. Leur implémentation de l'accumulateur ajoute une petite subtilité : le résultat d'une opération arithmétique peut être enregistré ailleurs que dans l'accumulateur. Le résultat peut aussi remplacer la seconde opérande, celle lue en mémoire RAM. Dit autrement, le résultat est enregistré dans l'adresse mémoire source. Les instructions de calcul ont le choix : un bit dans leur encodage précise où enregistrer le résultat.
{|
|-
|[[File:DocPIC16F84 4.png|centre|vignette|upright=2|Microarchitecture simplifiée d'un microcontroleur PIC (ici, un 16F84).]]
|[[File:DocPIC16F84 5.png|centre|vignette|upright=2|Microarchitecture simplifiée d'un microcontroleur PIC (ici, un 16F84), avec les branchements directs.]]
|}
Les PIC incorporent une pile d'appel allant de 2 à 8 niveaux, suivant les modèles. Outre l'accumulateur, les PIC disposent de registres de contrôle, d'un ''program counter'', d'un registre d'état, et d'un pointeur de pile. Il y a aussi des registres pour les entrées et sorties. Les registres d'entrée-sortie permettent de lire ou écrire sur un port d'entrée-sortie ou de lire un ''timer''. En clair, les PIC ont un espace d'adressage séparé pour les entrées-sorties.
Un détail très important est que les registres sont mappés en mémoire, à quelques exceptions près ! En clair, on peut y accéder en lisant/écrivant à une adresse mémoire bien précise. Les seules registres qui ne sont pas mappés en mémoire sont l'accumulateur, la pile d'appel, et les registres d'entrée-sortie. Par exemple, sur les modèles 16F, l'espace d'adressage fait 128 octets, dont 32 sont réservés aux registres du processeur, ce qui fait que seules 96 octets sont adressables comme de la RAM. Mais les 128 octets sont un seul et unique SRAM dans le processeur. Ce qui explique qu'il est difficile de séparer banc de registre et RAM principale sur ce processeur : les deux sont fusionnées !
: Les modèles PIC 17 ont rendu l'accumulateur mappé en mémoire RAM !
[[File:DocPIC16F84.png|centre|vignette|upright=2|DocPIC16F84]]
Le processeur de ces microcontrôleurs a un jeu d'instruction propriétaire, le jeu d'instruction PIC. Les instructions PIC sont très petites. Les premières versions du jeu d'instruction utilisaient des instructions codées sur 12 bits, dont 5 pour l'adresse mémoire de la seconde opérande. Pour les branchements, 3 bits étaient utilisés pour l'opcode, 9 pour l'adresse de destination. Par la suite, les instructions ont été étendues à 13 bits sur les PIC1670, puis à 14, 15 et 16 bits. Les adresses ont alors été élargies, ce qui permet d'adresser en peu plus de mémoire RAM.
Les instructions se limitent à des additions/soustractions, des opérations bit à bit,des branchements, des instructions LOAD/STORE, ainsi que des opérations de manipulation de bit. Il y a une instruction pour mettre une adresse à zéro, qui peut aussi mettre à zéro l’accumulateur. La plupart des modèles n'a pas d'instruction MOV pour faire une copie entre deux registres, elle n'a été intégrée que sur les modèles haute performance.
Pour ce qui est des branchements, les PIC n'ont pas d'instructions de branchement conditionnels, ils font avec une SKIP instruction et des branchements inconditionnels. Par contre, ils ont des branchements pour les appels et retour de fonction. Mieux que ça, ils intègrent une pile d'appel d'environ 8 adresses de retour. Pour donner une idée, l'adresse de retour est encodée sur 10 bits sur les PIC16F84.
Pour les instructions de manipulation de bit, il y a des instructions pour tester/masquer un bit dans une opérande, 4 en tout ( mettre à 0, mettre à 1, tester si bit = 1, tester si bit = 0). Les instructions qui testent un bit prennent leur opérande dans l'accumulateur. Il y a aussi deux instructions de rotation à gauche et droite, qui tiennent compte de la retenue mémorisée dans le registre d'état. Mentionnons aussi une instruction pour inverser deux ''nibbles'' dans un octet.
Les PIC ont aussi des instructions d'incrémentation et de décrémentation, un peu spéciales. Ces dernières regroupent : une incrémentation normale, une décrémentation normale, une décrémentation fusionnée avec une instruction SKIP, et une incrémentation fusionnée avec une instruction SKIP. Les deux dernières incrémentent/décrémentent l'accumulateur et SKIP l'instruction suivante si le résultat est zéro. Elles permettent de fortement simplifier l'implémentation des boucles qui s'exécutent tant que leur compteur atteint zéro.
Les modèles haute performance ajoutent des instructions d'addition avec retenue entrante, idem pour la soustraction. De telles instructions ssont très utiles pour faire des additions/soustractions sur des opérandes de 16 bits. Le processeur a beau être un CPU 8 bits, il peut être utilisé pour faire des calculs 16 bits, la performance est alors amoindrie, mais ce n'est pas un problème pour les applications d'un tel microcontroleur.
Les modèles intiaux, comme les PIC 10 et 12, ne supportaient pas les interruptions, mais c'est chose réglé sur les modèles plus récents. Ils ont même des registres séparés pour les interruptions et les programmes normaux. De plus, ils intégrent nativement un ''watchdog timer''.
{|class="wikitable" style="text-align:center"
|+ Jeu d'instruction des dodèles PCI 16
|-
! colspan="5" | Instructions diverses
|-
| colspan="3" | 00 0000 0000 0000 || NOP || Ne fait rien
|-
| colspan="3" | 00 0000 0000 1000 || RETURN || Instruction de retour pour une fonction
|-
| colspan="3" | 00 0000 0000 1001 || NOP || Instruction de retour pour une interruption
|-
| colspan="3" | 00 0000 0110 0011 || SLEEP || Mise en veille
|-
| colspan="3" | 00 0000 0110 0100 || CLRWDT || RESET le ''watchdog timer'', intégré dans le PIC
|-
! colspan="5" | Instructions de manipulation de bit
|-
| 0100 || Position du bit dans l'opérande || Adresse mémoire || BCF || Met le bit à 1
|-
| 0101 || Position du bit dans l'opérande || Adresse mémoire || BSF || Met le bit à 0
|-
| 0110 || Position du bit dans l'opérande || Adresse mémoire || BTFSC || Teste si le bit adressé est à 1
|-
| 0111 || Position du bit dans l'opérande || Adresse mémoire || BTFSS || Teste si le bit adressé est à 0
|-
! colspan="5" | Branchements
|-
| 100 || colspan="2" | Adresse mémoire || CALL || Appel de fonction
|-
| 100 || colspan="2" | Adresse mémoire || GOTO || Branchement inconditionnel
|-
! colspan="5" | Instructions logiques/arithmétiques avec opérande lue en mémoire RAM
! colspan="5" | le bit d indique la destination : accumulateur ou adresse mémoire
|-
| 0000001 || colspan="2" | Adresse mémoire || MOVWF || Store (accumulateur vers destination)
|-
| 000001d || rowspan="2" colspan="2" | Adresse mémoire || rowspan="2" | MOVWF || rowspan="2" | Met à zéro la destination (adresse ou registre)
|-
| 000001d || colspan="2" | Adresse mémoire || SUBWF || Soustraction
|-
| 000010d|| colspan="2" | Adresse mémoire || DECF || Décrémentation
|-
| 000100d|| colspan="2" | Adresse mémoire || IORWF || OU bit à bit
|-
| 000101d|| colspan="2" | Adresse mémoire || ANDWF || ET bit à bit
|-
| 000110d || colspan="2" | Adresse mémoire || XORWF || XOR bit à bit
|-
| 000111d || colspan="2" | Adresse mémoire || ADDWF VWF || Addition
|-
| 001000d || colspan="2" | Adresse mémoire || MOVF || LOAD
|-
| 001001d || colspan="2" | Adresse mémoire || COMF || NOT bit à bit
|-
| 001010d || colspan="2" | Adresse mémoire || INCF || Incrémentation
|-
| 001011d || colspan="2" | Adresse mémoire || DECFSZ || Décrémentation, puis instruction SKIP si résultat = 0
|-
| 001100d || colspan="2" | Adresse mémoire || RRF || Rotation à droite avec retenue entrante
|-
| 001101d || colspan="2" | Adresse mémoire || RLF || Rotation à gauche avec retenue entrante
|-
| 001110d || colspan="2" | Adresse mémoire || SWAPF || Echange deux ''niblle'' dans un octet
|-
| 001111d || colspan="2" | Adresse mémoire || INCFSZ || Incrémentation, puis instruction SKIP si résultat = 0
|}
Les PIC gèrent l'adressage absolu et immédiat, mais pas plus. L'adressage absolu, celui où l'adresse est intégrée dans l'instruction, est très simple à implémenter. Les adresses prennent moins d'un octet, vu que la taille de la RAM est très petite, les adresses sont très courtes, les intégrer dans des instructions elles-mêmes courtes n'est pas un problème. L'adresse est encodée sur 5 à 7 bits, selon le modèle, ce qui permet d'adresser entre 32 et 128 octets.
Les PIC ne supportent pas l'adressage indirect, mais peuvent l'émuler grâce à un '''registre d'adresse''' dédié. Il s'agit du registre FSR, qui mémorise l'adresse à lire/écrire. Il est possible de copier un pointeur dedans, qui provient soit de l'accumulateur, soit de la mémoire SRAM. Dans les deux cas, la donnée adressée est lue ou écrite dans un registre INDR, est un registre d’interfaçage rendu adressable. Le registre FSR est directement connecté sur le bus d'adresse.
Les modèles de base se débrouillent avec un registre FSR et un registre INDR, mais les modèles plus performants ont deux ou trois copies de chaque registre. Les modèles PIC18 ajoutent aussi des instructions LOAD/STORE qui émulent les modes d'adressage à post- ou pré-incrément/décrément, et le mode d'adressage "Base + Indice + Décalage", encore une fois en utilisant les registres FSR et INDR.
Avec tout ce qu'on vient de dire, vous devriez pouvoir comprendre la microarchitecture d'un PIC, qui est résumée dans ce schéma.
[[File:DocPIC16F84 all.png|centre|vignette|upright=2.5|Microarchitecture du PIC16F84.]]
===Le Fairchild F8 et la console de jeu Fairchild Channel F===
Un autre exemple est la Fairchild F8 de la défunte entreprise Fairchild Semiconductor. Il incorpore un processeur 8 bits, c'est à dire que le processeur fait des calculs sur des entiers de 8 bits maximum, une mémoire RAM de 64 octets, ainsi qu'une mémoire ROM de 1 kibioctet. Les 64 octets de RAM sont certes très peu, mais c'est suffisant pour certaines applications simples, comme les caisses automatiques de l'époque, ou des applications embarquées. Et de toute façon, il est possible d'ajouter de la mémoire RAM supplémentaire si les 64 octets de RAM intégrée ne suffisent pas. Le système était donc modulaire, adaptable selon les besoins, peu cher pour son implémentation minimale sans RAM en plus.
Vu qu'il s'agit d'un des tout premiers ordinateurs, il est sorti à une époque où la technologie était rudimentaire. À cette époque, le processeur était composé de pièces détachées qu'il fallait souder ensemble pour obtenir un processeur fonctionnel. Ce n'est que plus tard qu'est apparu le micro-processeur, qui regroupe un processeur complet dans un seul circuit intégré. Le résultat est que le processeur du Fairchild F8 est coupé en deux, l'unité de calcul et l'unité de contrôle sont placés dans des pièces détachées séparés.
Le microcontrôleur est composé de trois à quatre pièces détachées, certaines étant optionnelles. La première est le '''3850 CPU''', qui regroupe l'unité de calcul et la mémoire RAM intégrée. La seconde est le PSU (''3851 Program Storage Unit''), qui regroupe la mémoire ROM et l'unité de contrôle, ''program counter'' inclut. S'il y a besoin d'utiliser plus de RAM, il faut ajouter un circuit d’interface mémoire, qui est au choix le ''3852 Dynamic Memory Interface'' (DMI) ou le ''3853 Static Memory Interface'', le premier étant connecté à une mémoire de type DRAM, l'autre à une SRAM (nous verrons ce que sont les DRAM et les SRAM dans le prochain chapitre).
[[File:Fairchild F8.png|centre|vignette|upright=2|Fairchild F8]]
Le système minimal est composé d'un PSU et d'un 3850, sans les circuits d'interface mémoire. Le tout donne un système avec un processeur 8 bit, 64 octets de RAM et 1 kibioctet de ROM, les deux mémoires étant intégrées dans le "processeur". Le processeur gérait 4 entrées-sorties, chacune étant reliée avec un bus de 8 bit au processeur. Au passage, en 1977, Mostek a créé un microcontrôleur qui regroupe un PSU et un 3850 : le Mostek 3870. Le système minimal n'avait pas de bus d'adresse, vu que la RAM était intégrée au processeur. C'est les 3852 et 3853 qui ajoutaient un bus d'adresse. Ils ajoutent un bus d'adresse de 16 bits, ce qui permet d'adresser 64 kibioctets de RAM.
[[File:Fairchild-Channel-F.jpg|vignette|un Fairchild Channel F]]
Le Fairchild F8 a été utilisé dans la Fairchild Channel F, une des toute première console de seconde génération, à savoir des consoles qui utilisaient des cartouches de jeu. Avant les consoles de seconde génération, les consoles étaient non-programmables. Elles étaient conçues pour faire tourner un jeu précis, aucun autre, le jeu étant implémenté dans leurs circuits.
La Fairchild Channel F est composé du système minimal, auquel on a ajouté une carte son rudimentaire et 2 kibioctets de mémoire vidéo. La mémoire vidéo sert uniquement pour afficher des images à l'écran : on écrit l'image à afficher dedans, un circuit vidéo se charge de l'afficher à l'écran automatiquement. Le processeur ne fait qu'écrire dans cette RAM vidéo, il ne peut pas en lire le contenu. De la RAM supplémentaire peut cependant être ajoutée dans les cartouches de jeu.
===L'usage d'une architecture Harvard modifiée : les consoles 8 bits===
Pour encore améliorer la situation, il est possible d'utiliser une architecture Harvard modifiée, qui permet de lire des données depuis la mémoire ROM. Cela réduit encore plus les besoins en mémoire RAM. Les constantes manipulées par le programme sont mémorisées en ROM, lues depuis la ROM, au lieu d'être chargées en RAM. Les consoles de jeu utilisaient beaucoup de stratagème.
L'exemple type est celui des consoles 8 bits avec des graphismes en 2D. La cartouche de jeu contenait une ROM, qui mémorisait le code du jeu, les niveaux, les sprites et autres données graphiques. Leur carte graphique lisait directement les ''sprites'' depuis la mémoire ROM, sans avoir à les charger en mémoire vidéo. La mémoire vidéo se contentait de mémoriser le reste des informations graphiques, ainsi que des pointeurs vers les ''sprites'' en ROM. En conséquence, les consoles 8 bits n'avaient pas besoin de beaucoup de RAM, vu qu'une grande partie des données utiles étaient dans une ROM directement accessible par le processeur. A l'opposé, les micro-ordinateurs devaient copier les données d'un jeu depuis une disquette dans la mémoire RAM, ce qui demandait d'avoir plus de RAM.
Le passage au support CD sur les consoles 32 bits a eu la même conséquence. Le processeur ne pouvant pas lire directement le CD à sa guise, il fallait copier les données du CD en RAM. D'où l'apparition de temps de chargement assez longs, inexistants sur support cartouche.
Avec ce genre de stratagèmes, 256 octets de RAM est largement suffisant sur de nombreux systèmes, à condition qu'on ait assez de ROM pour coder un programme digne de ce nom. Par exemple, de nombreux systèmes embarqués simples s'en accommodent : des caisses enregistreuses, des systèmes de régulation de feu de circulation, etc.
===Le HP Nanoprocessor : un processeur sans ALU===
Un dernier exemple est celui du processeur HP Nanoprocessor, de l'entreprise HP. Il a été commercialisé en 1974, en même temps que les premiers micro-processeurs d'Intel. Tous les processeurs de l'époque étaient des processeurs 8 bits et le HP Nanoprocessor ne faisait pas exception. Ce n'était pas un processeur haute performance, il était destiné à des applications d'informatique industrielle ou embarquée. D'ailleurs, il utilisait des transistors de type metal-gate, peu performants, là où ses contemporains utilisait des transistors en silicium, plus performants.
Mais une caractéristique qui rend cela encore plus claire est qu'il n'y a pas d'ALU ! En effet, ce processeur est incapable de faire des additions, des soustractions ou autres opérations simples ! Il est cependant capable d'effectuer des incrémentations et décrémentations, des décalages, des opérations logiques comme des ET/OU/NON/XOR et bien d'autres. Il supporte en tout 48 instructions, avec un support limité des modes d'adressage indirects. Les instructions de branchement étaient des instructions SKIP, il n'y avait pas d'instructions de branchement généralistes.
Pour ce qui est des registres, il disposait de 16 registres de 8 bits et d'un accumulateur. Niveau mémoire, il était relié à une mémoire ROM, rien de plus. Il n'avait de RAM supplémentaire qu'on pouvait lui adjoindre, il devait se débrouiller avec seulement ses registres. Et cela ne posait pas de problèmes pour son usage. Seul le mode d'adressage indirect à registre est supporté, il n'y a pas de registres d'indices. Ce mode d'adressage permet de lire des données en mémoire ROM, la ROM pouvant contenir des tableaux de valeurs constantes.
: Il est possible de lui adjoindre de la RAM via les ports d'entrée-sortie, ainsi qu'une ALU, mais RAM et ALU sont traités comme des périphériques avec lesquels on communique, ils ne sont pas intégrés au processeur.
Niveau micro-architecture, il incorporait une unité de calcul logique et un circuit comparateur. Le comparateur était un circuit comparateur série des plus basiques, qui était utilisé pour les instructions de branchement et associées. L'unité de calcul logique gérait des incrémentations/décrémentation, des décalages, les opérations logiques et quelques autres. L'unité de calcul logique était bit-slicée, à savoir conçue en assemblant 8 ALU de 1 bit chacune, enchainées en série. Le tout était combiné à des circuits de ''carry skip''.
[[File:Unité de calcul du HP nanonprocessor.png|centre|vignette|upright=2|Unité de calcul du HP nanoprocessor]]
Son unité de décodage d'instruction était très simple, essentiellement basée sur des portes NOR, grâce à un encodage efficace des instructions machine. Le ''program counter'' fait 11 bits, ce qui permet d'adresser une ROM de 2 kibioctets. Le ''program counter'' était relié à un circuit incrémenteur qui gérait les isntructions SKIP (il pouvait incrémenter le ''program counter'' par pas de 1 ou de 2 en cas de SKIP). Le processeur contient aussi deux registres, qui servent en quelque sorte de pile d'adresse de retour. Un premier registre mémorise l'adresse de retour d'une fonction, l'autre mémorise le ''program counter'' lors d'une interruption, pour savoir où brancher à la fin de l'interruption.
[[File:HP nanoprocessor.png|centre|vignette|upright=2.5|HP nanoprocessor]]
Fait intéressant, le concepteur du processeur a gracieusement donné les masques utilisés pour graver le silicium du processeur au site [https://www.cpushack.com/ CPU Shack]. Les masques en question sont disponibles ici :
* [https://www.cpushack.com/2020/08/20/hp-nanoprocessor-mask-set/ HP NanoProcessor Mask Set]
* [https://www.cpushack.com/2020/08/09/the-forgotten-ones-hp-nanoprocessor/ The Forgotten Ones: HP Nanoprocessor]
Les masques ont été analysés par Ken Shirrif dans cet article de blog :
* [https://www.righto.com/2020/09/hp-nanoprocessor-part-ii-reverse.html HP Nanoprocessor part II: Reverse-engineering the circuits from the masks]
==Les processeurs 8/16 bits à architecture Von Neumann==
L'usage d'une architecture Harvard est une solution pour adresser plus de mémoire avec des CPU 8 bits. Mais plusieurs microprocesseurs commerciaux n'utilisaient pas cette solution. À la place, c'était des architectures Von Neumann, mais qui étaient capables de gérer des adresses de 16 bits. Les données faisaient 8 bits, les registres faisaient 8 bits, mais quelques techniques permettaient de gérer des adresses de 16 bits. Nous parlerons de '''processeurs 8/16 bits''' pour les désigner, et nous allons les étudier à part.
Un point important est que la gestion d'adresses de 16 bits permet d'adresser 64 kibioctets, qui peuvent être remplis avec de la RAM et de la ROM. On a donc le meilleur des mondes : 64 kibioctets de mémoire, mais avec des données de 8 bits et les économies de circuit qui vont avec. L'avantage est que le processeur peut maintenant gérer une vraie pile d'appel, pas seulement une pile d'adresse de retour. Il lui suffit pour cela d'intégrer un pointeur de pile codé sur 16 bits.
===Les modes d'adressage par page des CPU Motorola===
Les processeurs Motorola 8 bits étaient des processeurs 8 bits avec un bus d'adresse de 16 bits. C'était des processeurs à accumulateur incorporant deux registres d'indice, un registre d'état, un pointeur de pile, et un ''program counter''. Tous les registres sont reliés au bus d'adresse, sauf le registre d'état et l’accumulateur. Tous les registres font 8 bits, sauf le ''program counter''. La pile est câblée pour être dans un bloc de 256 octets compris entre l'adresse 1 0000 0000 et l'adresse 1 1111 1111, ce qui fait que son adressage se fait avec un seul octet.
[[File:6502-architecture.svg|centre|vignette|upright=1.5|Architecture simplifiée du 6502.</br> X et Y : registres d'indice ;</br> S : le pointeur de pile ;</br> A : accumulateur ;</br>P : registre d'état.</br>]]
Les processeurs Motorola 8 bits utilisaient une méthode simple pour adresser 64 kibioctets de RAM, avec des registres de 8 bits. Pour cela, ils utilisaient une variante de l'adressage base + décalage. Elle améliore l'adressage absolu, qui intègre l'adresse à lire/écrire dans l'instruction elle-même. L'adresse en question est de 8 bits et n'encode que les 8 bits de poids faible de l'adresse, les 8 bits de poids fort sont dans un '''registre de page''' adressé implicitement. L'adresse finale est obtenue en concaténant ce registre avec l'adresse mémoire intégrée dans l’instruction. Le résultat est que la mémoire était découpée en blocs de 256 consécutifs, chacun pouvant servir de fenêtre de 256 octets. Une page est réservée pour la pile, la seconde, comme dit plus haut.
Formellement, ce mode d'adressage a des ressemblances avec la commutation de banques, une technique qu'on verra dans les chapitres sur l'espace d'adressage et la mémoire virtuelle. Mais ce n'en est pas du tout : le registre de page est utilisé uniquement pour les accès mémoire avec le mode d'adressage base + décalage, mais pas pour les autres accès mémoire, qui gèrent des adresses complètes. Notons que l'usage d'un registre de page dédié fait que celui-ci est adressé implicitement.
Il faut noter que la technique a été utilisée sur des processeurs 16 bits, pour contourner la petite taille des instructions. Un exemple est celui du HP 2100, un processeur 16 bits. Il avait un registre de page de 5 bits et encodait 10 bits d'adresse dans ses instructions. Ses instructions d'accès mémoire disposaient d'un bit qui choisit quel mode d'adressage utiliser. S'il était à 0, l'adressage absolu était utilisé, le registre de page n'était pas utilisé. Mais s'il était à 1, le registre de page était utilisé pour calculer l'adresse.
Une évolution de l'adressage précédent est le '''mode page direct'''. Avec lui, le registre de page est étendu et contient une adresse mémoire complète. L'adresse finale n'est pas obtenue par concaténation, mais en additionnant le registre de page avec l'adresse fournie par adressage absolu + décalage. Un exemple est celui des premiers processeurs Motorola, qui géraient des adresses courtes de 8 bits. L'adresse courte de 8 bits correspondait non pas aux 256 premiers octets de la mémoire, mais à une fenêtre de 256 octets déplaçable en mémoire. La position de la fenêtre de 256 octets était spécifiée par le registre de page de 16 bits, qui précisait l'adresse du début de la fenêtre, celle de sa première donnée.
Il s'agit donc formellement d'adressage base + décalage, à un détail près : il n'y a qu'un seul registre de base. Le fait que ce registre de base soit unique fait qu'il est adressé implicitement, on n'a pas à encoder le numéro/noms de registre dans l'instruction. Le registre de base est utilisé uniquement pour l'adressage absolu, pas pour les autres accès mémoire. S'il y a des ressemblances avec la segmentation, une technique de mémoire virtuelle qu'on abordera dans quelques chapitres, ce n'en est pas vu que le registre de base est utilisé seulement pour un mode d'adressage bien précis.
===Le ''pseudo-aliasing'' des registres des processeurs Intel x86===
Voyons maintenant le cas des anciens processeurs 8 bits d'Intel à savoir l'Intel 4004, 4040, 8008 et 8080. Le Z80, un processeur inspiré des CPU Intel 8 bits, est aussi concerné. Avant de poursuivre, parlons des registres de ces processeurs. Les premiers CPU Intel incorporaient 7 registres de 8 bits nommés A, B, C, D, E, F, H, L, SP. Ils correspondent respectivement à : l'accumulateur A ; six registres nommés B, C, D, E, H et L ; le registre d'état F ; le pointeur de pile SP. Le Z80 ajoute deux registres d'indice X et Y. De plus, le Z80 dispose de registres d'interruption, qui sont en quelque sorte des copies des registres A, B, C, D, E, F, H, L. Le tout est illustré dans le tableau ci-dessous.
{|class="wikitable" style="text-align:center;"
|-
!
! Registres des CPU Intel
! Registres supplémentaires du Z80
|-
! Accumulateur
| A
| A'
|-
! Registre d'état
| F
| F'
|-
! Registres généraux
| B, C, D, E, H, L
| B', C', D', E', H', L'
|-
! Pointeur de pile
| colspan="2" | SP (sauf pour le 8008)
|-
! Registres d'indice
|
| X et Y
|}
Le 8008 incorpore une pile d'appel de 7 adresses, dans le processeur lui-même. Il en est de la même avec le 4004 et le 4040, comme on le verra dans la section sur les processeurs 4 bits. Mais le 8080 et le 8085 ont remplacé le tout par un simple pointeur de pile, afin d'avoir une véritable pile d'appel. Autant c'est impossible d'avoir une pile d'appel avec seulement 256 octets de mémoire, autant on peut se le permettre avec 65 536 adresses.
Pour gérer des adresses de 16 bits, ils auraient pu utiliser des registres d'adresse séparés, mais on préféré un système de '''pseudo-''aliasing'' de registres'''. Formellement, c'est un système qui concatène deux registres 8 bits pour obtenir une adresse de 16 bits. L’appariement a lieu lors de certaines opérations bien précises, qui n'ont de sens que pour les adresses : la lecture/écriture en mémoire, et l'incrémentation.
Il y avait cependant des contraintes quant aux paires de registres possibles, toutes les paires de registres n'étaient pas autorisées. Les CPU concernés sont donc des processeurs hybrides accumulateur-registre généraux. L'accumulateur ne peut pas être appairé, seuls les registres généraux le peuvent. Le Z80 autorise plus de paires que les CPU Intel. Voici les paires de registres qui pouvaient servir d'adresse 16 bits :
* Les CPU 8008 d'Intel autorisait une seule paire formée des registres H et L.
* Les autres processeurs, à savoir le 8080, le 8085 et le Z80, autorisaient : les paires BC, DE et HL.
Le 8008 ne gérait que des opérations sur 8 bits. Mais le 8080 et le 8085 ont ajouté des instructions 16 bits qui agissaient sur des paires de registre, que le Z80 a repris. Une paire de registres est considérée comme un registre unique de 16 bits pour certaines opérations arithmétiques, dont l'incrémentation. Voici la liste des instructions concernées :
* INC et DEC pour l'incrémentation et la décrémentation ;
* DAD : additionne le registre HL avec une autre paire (Hl inclus) ;
* LXI : copie une constante immédiate dans une paire de registres ;
* LHLD : lit 16 depuis la mémoire et l'enregistre dans une paire de registres ;
* SHLD : copie 16 bits depuis une paire de registres et l'enregistre en mémoire ;
* PUSH et POP : empile ou dépilent une paire de registre sur la pile ;
* XTHL : échange la paire HL avec les 16 bits au sommet de la pile d'appel ;
* XCHG : échange le contenu de la paire HL et DE.
Pour résumer, le processeur avait des instructions LOAD, STORE, PUSH et POP adaptées pour gérer des paires de registre. De plus, l'instruction XCHG permettait d’échanger le contenu des paires DE et HL. L'instruction a été étendue sur les processeurs 16 bits pour échanger tous les registres. Mais l'implémentation était alors différente. L'incrémentation sur une paire de 16 bit était très utile, car les adresses sont souvent incrémentées quand on parcours un tableau. Ces instructions nous donnent quelques indices sur ce qu'il y a dans le processeur.
Le système de pseudo-aliasing a un impact sur le banc de registre. Le banc de registre regroupe les registres généraux et le pointeur de pile, mais ne contient pas l'accumulateur. Les contraintes sur les paires de registres possibles ne s'expliquent que d'une seule manière : le banc de registre contient des registres de 16 bits, une paire de registres 8 bits est mémorisée dans un registre unique. Il faut donc faire une différence entre les registres architecturaux de 8 bits, et les registres réels de 16 bits.
Le banc de registre a un port de 8 bits pour les données, qui est fabriqué à partir d'un port 16 bits auquel on a rajouté un multiplexeur pour choisir soit l'octet de poids faible, soit l'octet de poids fort. Le bus de données fait 8 bits, ce qui fait que les instructions LOAD, STORE, PUSH et POP pour paires 16 bits sont réalisées en deux fois : on lit/écrit l'octet de poids faible, puis celui de poids fort. Par contre, le bus d'adresse fait bien 16 bits. Cela suggère que le banc de registre dispose d'un port de 16 bits dédié aux adresses, en plus du port de données 8 bits.
[[File:Architecture d'un CPU 8-16 bits avec un banc de registre double port.png|centre|vignette|upright=2|Architecture d'un CPU 8-16 bits avec un banc de registre double port]]
L'incrémentation d'une paire 16 bits ne coute rien à implémenter, ou presque. En effet, le processeur incorpore un incrémenteur 16 bits pour le ''program counter'', qui est relié au bus d'adresse. L'idée est de rentabiliser cet incrémenteur, en lui permettant d'incrémenter des données/adresses de 16 bits obtenues via pseudo-aliasing. De même, il peut être utilisé pour incrémenter le pointeur de pile, voire un compteur de rafraichissement mémoire (pour rappel, le rafraîchissement mémoire demande de balayer la mémoire d'adresse en adresse et été fait par le CPU à l'époque). Pour cela, il suffit de connecter le ''program counter'', le banc de registre, et l'incrémenteur, via un bus dédié.
[[File:Calcul d'adresse par ALU dédiée avec PC séparé.png|centre|vignette|upright=2|Calcul d'adresse par ALU dédiée avec PC séparé]]
Notez qu'on peut encore simplifier le tout en placant le ''program counter'' dans le banc de registre, ce qui ne gênera pas le travail de l'incrémenteur mais simplifiera le câblage au bus d'adresse. Ce n'était pas systématique, certains processeurs mettaient le ''program counter'' dans le banc de registre, d'autres non.
: Inclure le ''program counter'' dans le banc de registre permet parfois de remplir un vide. Par exemple, sur un processeur avec 12 registres, le banc de registre devrait faire idéalement 16 registres, inclure le ''program counter'' dedans fait monter le tout à 13.
[[File:Architecture d'un CPU 8-16 bits.png|centre|vignette|upright=2|Architecture d'un CPU 8-16 bits]]
Les processeurs Intel 8 bits, à savoir le 8008, le 8080 et le 8085 ; mettaient le ''program counter'' dans le banc de registre. Vous avez donc toutes les armes pour comprendre leur micro-architecture. Par exemple, voici la micro-architecture du processeur 8080. Remarquez le banc de registre, qui contient tous les registres sauf l'accumulateur et le registre. Il a deux ports : un pour les adresses et un pour les données. Notez le dé-multiplexeur sur le port de donnée. Pour le reste, il s'agit d'une architecture à accumulateur hybride des plus classiques.
[[File:Intel 8080 arch.svg|centre|vignette|upright=3|Microarchitecture de l'Intel 8080.]]
Le Z80 est un processeur inspiré du design des processeurs Intel 8 bits, mais avec pas mal d'améliorations. Un point particulier de ce processeur est son banc de registre. Il contient tous les registres du processeur, y compris l'accumulateur et le registre d'état ! Les seuls registres en-dehors du banc de registre sont le ''program counter'' et un compteur de rafraichissement mémoire IR.
Un autre point particulier est que les registres dans le banc de registres avaient une copie séparée accessible uniquement pour les interruptions, via fenêtrage de registres. Et l'accumulateur et le registre d'état étant dans le banc de registre, il y avait deux accumulateurs et deux registres d'état. Les registres A, B, C, D, E et F étaient dupliqués, par le pointeur de pile ni les registres d'indice. Les copies des registres étaient nommées A', B', C', D', E' et F'.
Le Z80 supportait des instructions d'échange de registre en plus des CPU Intel 8 bits. L'instruction EX peut échanger soit le contenu des paires D,E et H,F, soit la paire A,F avec la paire A',F'. L'instruction EXX échange les paires BC, DE, HL avec les paires BC', DE', HL'. En faisant cela, le programmeur pouvait utiliser deux fois plus de registres généraux s'il n'utilisait pas les interruptions. L'échange de paires se fait sans copies de registres, mais simplement en modifiant l'adresse envoyée sur le banc de registre. Pour cela, plusieurs bascules mémorisent des bits qui indiquent si les paires ont été échangées ou non. Il y a une bascule pour les paires DE , HL ; une autre pour les paires A,F et paire A',F', une dernière pour l'instruction EXX. En combinant ces bascules avec les noms de registres envoyés par le séquenceur, on peut échanger les paires de registres.
==Le cas particulier des processeurs 4 bits : le 4004 d'Intel==
L'Intel 4004 était le tout premier micro-processeur. Il s'agissait d'un microprocesseur de 4 bits, basé sur une architecture à accumulateur. Il disposait d'un accumulateur et de 16 registres d'indice, tous de 4 bits. Il faisait des calculs sur des données de 4 bits, appelées des nibbles. Cependant, sur ses 46 instructions machines supportées, 41 agissaient sur des opérandes de 8 bits, les 5 restantes sur des opérandes de 16 bits. Simplement, les calculs se faisaient en deux fois, en échangeant des données entre mémoire RAM et accumulateur.
Le 4004 est un circuit intégré avec peu de broches. Il dispose notamment d'un bus de données/adresse, qui est multiplexé, c’est-à-dire qu'il sert alternativement de bus de données et de bus d'adresse selon les besoins. Le bus de commande mémoire fait 5 bits, dont 4 pour les chips de RAM, un pour la ROM. Les adresses sont codées sur 12 bits, les données sur 4 et les instructions sur 8 bits. L'envoi d'une adresse sur le bus se fait en plusieurs fois, de même que la lecture d'une instruction. Il s'agit là d'une adaptation pour outrepasser les limitations d'un processeur 4 bit.
[[File:Intel 4004 processor pinout.png|centre|vignette|upright=2|Broches de l'Intel 4004. Nous verrons à quoi elles servent plus bas.]]
===L'espace d'adressage de l'Intel 4004===
Les adresses du processeur sont sur 12 bits, ce qui fait 4096 adresses différentes. Elles regroupent à la fois la ROM et la mémoire RAM, vu que l'architecture est une sorte de mélange bizarre entre une architecture Von Neumann et Harvard. Le processeur gère bien deux espaces d'adressage séparés, mais la RAM et la ROM sont reliés au même bus. La sortie CM-ROM du processeur indique si l'adresse envoyée correspond à la RAM ou la ROM. Un circuit de décodage d'adresse active ou désactive la RAM selon la valeur de ce bit, l'inverse pour la ROM, en agissant sur leurs bits Chip Select. Seule la RAM ou la ROM répondent alors à l'adresse.
Pour ce qui est de la RAM, le circuit de décodage d'adresse pouvait gérer au maximum 1024 adresses différentes, chacune contenant un nibble. Pour cela, le CPU 4004 était relié à une ou plusieurs RAM externes, des Intel 4002. Chaque Intel 4002 contenait 64 nibbles de données, plus 16 nibbles de statut qu'on ne détaillera pas ici. Les nibbles de statut étaient accessibles en utilisant des instructions d'entrée-sortie, donc pas avec des lectures/écritures mémoire. Les 64 nibbles de données sont découpés en 4 groupes de 16 nibbles. Le CPU pouvait être relié à maximum 16 Intel 4002, ce qui fait 1024 nibbles de données et 256 nibbles de statut. L'ensemble permet de remplir l'espace d'adressage de 1024 adresses.
===Le registre de page et le pseudo-aliasing des registres===
Sélectionner une adresse mémoire utilisait un mélange entre pseudo-aliasing et registre de page. Pour les données, les 1024 adresses étaient découpées en 4 pages de 256 adresses. Pour la ROM, les 4096 adresses étaient découpées en 16 pages de 256 adresses. Localiser une donnée dans une page ne requiert que 8 bits, 2/4 bits supplémentaires permettent de sélectionner la page voulue. Le registre de page était dans le processeur lui-même, et était relié aux sorties du processeur nommées CM-RAM 0, 1, 2 et 3. Les 4 sorties encodaient un nombre qui permet de sélectionner le numéro de page voulu.
Le registre de page fait 5 bits : un pour distinguer RAM et ROM, 4 bits pour sélectionner la page voulue. L'avantage est que la carte mère gère au maximum 16 chips de RAM, ce qui colle parfaitement avec les 4 utilisés pour sélectionner une page. Un chip de RAM correspond à une page, et chacun est activé ou désactivé suivant la page sélectionnée. Pour cela, il suffit d'ajouter un décodeur sur la carte mère, qui prend les 4 bits du registre de page et fournit les signaux Chip Select aux différents chips de RAM.
Reste alors à utiliser les 8 bits d'adresse à l'intérieur d'un chip de RAM. Le 4004 permettait de concaténer deux registres d'indice de 4 bits pour former une adresse de 8 bits. Les instructions d'accès mémoire pouvaient ainsi préciser une paire de registre d'indice pour préciser quelle adresse lire/écrire. Idem pour les branchements indirects : le processeur supportait une instruction de branchement indirect qui précisait l'adresse dans une paire de registres d'indice. Les registres d'indice sont donc assez mal nommés sur cette architecture, vu qu'ils peuvent servir soit de registre d'indice, soit de demi-registre d'adresse. Il s'agit là du système de pseudo-aliasing des registres, mais appliqué aux registres d'indice.
L'Intel 4004 gérait deux instructions pour gérer les adresses mémoires. La première, l'instruction DCL (''Designate Command Line'') configure le registre de page. Elle prend en entrée un numéro de page et le copie dans le registre de page. L'opérande peut provenir d'un registre d'indice ou de l'accumulateur. La seconde, l'instruction SRC (''Send Register Control'') concatène deux registres d'indice pour obtenir une adresse de 8 bits. Un accès mémoire se fait donc en maximum trois instructions : une qui configure le registre de page si ce n'est pas déjà fait, une instruction SRC pour envoyer l'adresse, et une troisième instruction qui dit s'il faut faire une lecture ou une écriture.
===La microarchitecture de l'Intel 4004===
Il incorporait une pile d'adresse de retour intégrée au processeur. La pile d'adresse acceptait exactement 3 adresses maximum. Elle était regroupée avec le ''program counter'' dans un banc de registre, de 4 registres. Le ''program counter'' et le pointeur de pile faisaient chacun 12 bits, soit trois nibble. Ils étaient incrémentés par un incrémenteur dédié.
SI on omet le registre de page et la pile d'adresse, le 4004 est une architecture à accumulateur des plus classiques, avec un bus interne unique, un banc de registre pour les registres d'indices, un accumulateur relié à une unité de calcul. Les registres d'indice étaient dans un banc de registre séparés, car ils faisaient 4 bits chacun, contrairement au pointeur de pile et le ''program counter''. Un détail important est que les bancs de registres du 4004 étaient implémentés avec de la DRAM, et non des registres usuels fabriqués avec des bascules 1 bit.
[[File:Microarchitecture de l'Intel 4004.png|centre|vignette|upright=2.5|Microarchitecture de l'Intel 4004]]
<noinclude>
{{NavChapitre | book=Fonctionnement d'un ordinateur
| prev=Les architectures à pile et mémoire-mémoire
| prevText=Les architectures à pile et mémoire-mémoire
| next=Les processeurs de traitement du signal
| nextText=Les processeurs de traitement du signal
}}
</noinclude>
jhbq48nt76mjhohb32olaalel0dfdau
765704
765703
2026-05-01T17:42:11Z
Mewtow
31375
/* Les microcontrôleurs PIC */
765704
wikitext
text/x-wiki
Nous avons déjà abordé la notion de processeur 8, 16, 32, 64 bits. Elle désigne la taille des registres généraux, ou de l'accumulateur. De nos jours, les processeurs 32 et 64 bits sont la norme, mais les premiers micro-processeurs étaient des processeurs 4 et 8, avant de passer rapidement au 16 bits. La raison est que leur budget en transistor limité faisait qu'on ne pouvait pas utiliser une ALU trop grande : une ALU 8 bit prend deux fois moins de place et de transistors qu'une ALU 16 bits. Cependant, les processeurs 8 bits avaient de sérieuses limitations qui étaient compensées par diverses solutions. Dans ce chapitre, nous allons faire une revue rapide des processeurs 8 bits et de leurs fonctionnalités.
La principale limitation des CPU 8 bits était l'adressage : des registres de 8 bits limitaient l'espace d'adressage à seulement 256 adresses, soit à peine 256 octets ! Intuitivement, on se dit que 256 octets est purement impraticable, on ne peut rien faire d'intéressant avec seulement 256 de RAM + ROM. Et c'est partiellement vrai. L'adage veut que 16 bits est la taille minimale intéressante, la limite à partir de laquelle on a assez de mémoire RAM/ROM pour coder des applications intéressantes. Mais 256 octets de RAM est largement suffisant sur de nombreux systèmes embarqués simples s'en accommodent : des caisses enregistreuses, des systèmes de régulation de feu de circulation, etc.
Pour les applications demandant plus de mémoire RAM, les CPU de l'époque contournaient la limitation de 256 octets de RAM avec de nombreux stratagèmes. Dans ce qui va suivre, nous allons séparer les CPU 8 bits selon qu'ils utilisent une architecture Harvard ou une architecture Von Neumann. La raison est qu'une architecture Harvard permet en soi de contourner partiellement ce problème d'adressage. Les choses sont plus compliquées avec une architecture Von Neumann.
==Les processeurs 8/16 bits à architecture Harvard ==
La première solution est d'utiliser une architecture Harvard. Le processeur 8 bit a alors deux espaces d'adressage : un pour la RAM, un autre pour la ROM. Et les deux utilisent des adresses de taille différente. La ROM est reliée à un bus d'adresse de 16 bits, alors que la RAM est elle connectée à un bus d'adresse de 8 bits. La RAM est donc limitée à 256 octets, alors que la ROM peut monter jusqu'à 64 kibioctets. Mine de rien, faire ainsi est largement suffisant.
Les processeurs de l'époque intégraient parfois les 256 octets de RAM directement dans le processeur. Beaucoup en implémentaient moins, avec par exemple seulement 64 octets de RAM, ou 32 octets, ou 128 octets. L'avantage est que cela éliminait le bus d'adresse des données et ne laissait que le bus d'adresse pour la ROM. On économisait ainsi beaucoup de broches sur le circuit intégré du CPU. Et pour les applications demandant plus de RAM, on pouvait ajouter un circuit séparé qui permettait d'adresser une RAM plus grande. Mais cela sera plus clair avec un exemple.
===Les microcontrôleurs PIC===
Les '''microcontrôleurs PIC''' regroupent des microcontrôleurs allant de microcontrôleurs 8 bit aux performances très faible, à des microcontrôleurs 32 bits bien plus puissants. Les microcontrôleurs PIC sont très utilisés dans l'embarqué ou d'informatique industrielle. Ils sont vendu à des volumes assez impressionnants, plusieurs millions par an. Et si vous avez ou êtes en train de faire des études d'électronique, je parie que vous les avez déjà vu en classe, ou que ce ne saurait tarder. Dans ce qui suit, nous allons nous concentrer sur les microcontrôleurs PIC 8 bits, à savoir les PIC 16, 16 et 18. Les PIC 24, qui sont des microcontrôleurs 16 bits, ne seront pas abordés.
Les microcontrôleurs PIC 8 bits incorporent une mémoire RAM très petite, ainsi qu'une architecture Harvard, comme dit plus haut. La mémoire ROM des PIC va de 1024 instructions à 4096 instructions. En comparaison, la mémoire RAM des microcontrôleurs PIC ne peut pas dépasser 256 adresses, et elle est encore plus petite en pratique sur certains modèles. Pour donner un exemple, le PIC16F84 a une RAM composée de 68 "registres" de 8 bits. Le terme "registres" devrait vous faire tiquer, mais c'est bien le terme utilisé dans la documentation des PIC. Et il faut admettre que la différence entre banc de registre et SRAM intégrée est floue, mais nous expliquerons pourquoi dans quelques paragraphes.
: Les PIC 18 peuvent adresser plus de 256 octets de RAM en utilisant la commutation de banques, une technique qui sera abordée dans plusieurs chapitres.
[[File:DocPIC16F84 3.png|centre|vignette|upright=3|Espaces d'adressage du PIC16F84.]]
Un détail est que la SRAM n'a qu'un seul port qui sert à la fois pour les lectures et écritures. Pour compenser, les PIC sont des architectures à accumulateur, où une opérande est lue depuis la SRAM, l'autre depuis l'accumulateur. Leur implémentation de l'accumulateur ajoute une petite subtilité : le résultat d'une opération arithmétique peut être enregistré ailleurs que dans l'accumulateur. Le résultat peut aussi remplacer la seconde opérande, celle lue en mémoire RAM. Dit autrement, le résultat est enregistré dans l'adresse mémoire source. Les instructions de calcul ont le choix : un bit dans leur encodage précise où enregistrer le résultat.
{|
|-
|[[File:DocPIC16F84 4.png|centre|vignette|upright=2|Microarchitecture simplifiée d'un microcontroleur PIC (ici, un 16F84).]]
|[[File:DocPIC16F84 5.png|centre|vignette|upright=2|Microarchitecture simplifiée d'un microcontroleur PIC (ici, un 16F84), avec les branchements directs.]]
|}
Les PIC incorporent une pile d'appel allant de 2 à 8 niveaux, suivant les modèles. Outre l'accumulateur, les PIC disposent de registres de contrôle, d'un ''program counter'', d'un registre d'état, et d'un pointeur de pile. Il y a aussi des registres pour les entrées et sorties. Les registres d'entrée-sortie permettent de lire ou écrire sur un port d'entrée-sortie ou de lire un ''timer''. En clair, les PIC ont un espace d'adressage séparé pour les entrées-sorties.
Un détail très important est que les registres sont mappés en mémoire, à quelques exceptions près ! En clair, on peut y accéder en lisant/écrivant à une adresse mémoire bien précise. Les seules registres qui ne sont pas mappés en mémoire sont l'accumulateur, la pile d'appel, et les registres d'entrée-sortie. Par exemple, sur les modèles 16F, l'espace d'adressage fait 128 octets, dont 32 sont réservés aux registres du processeur, ce qui fait que seules 96 octets sont adressables comme de la RAM. Mais les 128 octets sont un seul et unique SRAM dans le processeur. Ce qui explique qu'il est difficile de séparer banc de registre et RAM principale sur ce processeur : les deux sont fusionnées !
: Les modèles PIC 17 ont rendu l'accumulateur mappé en mémoire RAM !
[[File:DocPIC16F84.png|centre|vignette|upright=2|DocPIC16F84]]
Le processeur de ces microcontrôleurs a un jeu d'instruction propriétaire, le jeu d'instruction PIC. Les instructions PIC sont très petites. Les premières versions du jeu d'instruction utilisaient des instructions codées sur 12 bits, dont 5 pour l'adresse mémoire de la seconde opérande. Pour les branchements, 3 bits étaient utilisés pour l'opcode, 9 pour l'adresse de destination. Par la suite, les instructions ont été étendues à 13 bits sur les PIC1670, puis à 14, 15 et 16 bits. Les adresses ont alors été élargies, ce qui permet d'adresser en peu plus de mémoire RAM.
Les instructions se limitent à des additions/soustractions, des opérations bit à bit,des branchements, des instructions LOAD/STORE, ainsi que des opérations de manipulation de bit. Il y a une instruction pour mettre une adresse à zéro, qui peut aussi mettre à zéro l’accumulateur. La plupart des modèles n'a pas d'instruction MOV pour faire une copie entre deux registres, elle n'a été intégrée que sur les modèles haute performance.
Pour ce qui est des branchements, les PIC n'ont pas d'instructions de branchement conditionnels, ils font avec une SKIP instruction et des branchements inconditionnels. Par contre, ils ont des branchements pour les appels et retour de fonction. Mieux que ça, ils intègrent une pile d'appel d'environ 8 adresses de retour. Pour donner une idée, l'adresse de retour est encodée sur 10 bits sur les PIC16F84.
Pour les instructions de manipulation de bit, il y a des instructions pour tester/masquer un bit dans une opérande, 4 en tout ( mettre à 0, mettre à 1, tester si bit = 1, tester si bit = 0). Les instructions qui testent un bit prennent leur opérande dans l'accumulateur. Il y a aussi deux instructions de rotation à gauche et droite, qui tiennent compte de la retenue mémorisée dans le registre d'état. Mentionnons aussi une instruction pour inverser deux ''nibbles'' dans un octet.
Les PIC ont aussi des instructions d'incrémentation et de décrémentation, un peu spéciales. Ces dernières regroupent : une incrémentation normale, une décrémentation normale, une décrémentation fusionnée avec une instruction SKIP, et une incrémentation fusionnée avec une instruction SKIP. Les deux dernières incrémentent/décrémentent l'accumulateur et SKIP l'instruction suivante si le résultat est zéro. Elles permettent de fortement simplifier l'implémentation des boucles qui s'exécutent tant que leur compteur atteint zéro.
Les modèles haute performance ajoutent des instructions d'addition avec retenue entrante, idem pour la soustraction. De telles instructions ssont très utiles pour faire des additions/soustractions sur des opérandes de 16 bits. Le processeur a beau être un CPU 8 bits, il peut être utilisé pour faire des calculs 16 bits, la performance est alors amoindrie, mais ce n'est pas un problème pour les applications d'un tel microcontroleur.
Les modèles intiaux, comme les PIC 10 et 12, ne supportaient pas les interruptions, mais c'est chose réglé sur les modèles plus récents. Ils ont même des registres séparés pour les interruptions et les programmes normaux. De plus, ils intégrent nativement un ''watchdog timer''.
{|class="wikitable" style="text-align:center"
|+ Jeu d'instruction des dodèles PCI 16
|-
! colspan="5" | Instructions diverses
|-
| colspan="3" | 00 0000 0000 0000 || NOP || Ne fait rien
|-
| colspan="3" | 00 0000 0000 1000 || RETURN || Instruction de retour pour une fonction
|-
| colspan="3" | 00 0000 0000 1001 || NOP || Instruction de retour pour une interruption
|-
| colspan="3" | 00 0000 0110 0011 || SLEEP || Mise en veille
|-
| colspan="3" | 00 0000 0110 0100 || CLRWDT || RESET le ''watchdog timer'', intégré dans le PIC
|-
! colspan="5" | Instructions de manipulation de bit
|-
| 0100 || Position du bit dans l'opérande || Adresse mémoire || BCF || Met le bit à 1
|-
| 0101 || Position du bit dans l'opérande || Adresse mémoire || BSF || Met le bit à 0
|-
| 0110 || Position du bit dans l'opérande || Adresse mémoire || BTFSC || Teste si le bit adressé est à 1
|-
| 0111 || Position du bit dans l'opérande || Adresse mémoire || BTFSS || Teste si le bit adressé est à 0
|-
! colspan="5" | Branchements
|-
| 100 || colspan="2" | Adresse mémoire || CALL || Appel de fonction
|-
| 100 || colspan="2" | Adresse mémoire || GOTO || Branchement inconditionnel
|-
! colspan="5" | Instructions logiques/arithmétiques avec opérande lue en mémoire RAM
|-
! colspan="5" | le bit d indique la destination : accumulateur ou adresse mémoire
|-
| 0000001 || colspan="2" | Adresse mémoire || MOVWF || Store (accumulateur vers destination)
|-
| 000001d || rowspan="2" colspan="2" | Adresse mémoire || rowspan="2" | MOVWF || rowspan="2" | Met à zéro la destination (adresse ou registre)
|-
| 000001d || colspan="2" | Adresse mémoire || SUBWF || Soustraction
|-
| 000010d|| colspan="2" | Adresse mémoire || DECF || Décrémentation
|-
| 000100d|| colspan="2" | Adresse mémoire || IORWF || OU bit à bit
|-
| 000101d|| colspan="2" | Adresse mémoire || ANDWF || ET bit à bit
|-
| 000110d || colspan="2" | Adresse mémoire || XORWF || XOR bit à bit
|-
| 000111d || colspan="2" | Adresse mémoire || ADDWF VWF || Addition
|-
| 001000d || colspan="2" | Adresse mémoire || MOVF || LOAD
|-
| 001001d || colspan="2" | Adresse mémoire || COMF || NOT bit à bit
|-
| 001010d || colspan="2" | Adresse mémoire || INCF || Incrémentation
|-
| 001011d || colspan="2" | Adresse mémoire || DECFSZ || Décrémentation, puis instruction SKIP si résultat = 0
|-
| 001100d || colspan="2" | Adresse mémoire || RRF || Rotation à droite avec retenue entrante
|-
| 001101d || colspan="2" | Adresse mémoire || RLF || Rotation à gauche avec retenue entrante
|-
| 001110d || colspan="2" | Adresse mémoire || SWAPF || Echange deux ''niblle'' dans un octet
|-
| 001111d || colspan="2" | Adresse mémoire || INCFSZ || Incrémentation, puis instruction SKIP si résultat = 0
|-
! colspan="5" | Instructions logiques/arithmétiques avec constante immédiate
|-
| 1100xx || colspan="2" | Constante immédiate (8bits) || MOVLW || Copie constante dans accumulateur
|-
| 1101xx || colspan="2" | Constante immédiate (8bits) || RETLW || MOV fusionné avec un retour de fonction
|-
| 111000 || colspan="2" | Constante immédiate (8bits) || IORLW || OU
|-
| 111001 || colspan="2" | Constante immédiate (8bits) || ANDLW || ET
|-
| 111010 || colspan="2" | Constante immédiate (8bits) || XORLW || XOR
|-
| 11110x || colspan="2" | Constante immédiate (8bits) || SUBLW || Soustraction
|-
| 11111x || colspan="2" | Constante immédiate (8bits) || ADDLW || Addition
|}
Les PIC gèrent l'adressage absolu et immédiat, mais pas plus. L'adressage absolu, celui où l'adresse est intégrée dans l'instruction, est très simple à implémenter. Les adresses prennent moins d'un octet, vu que la taille de la RAM est très petite, les adresses sont très courtes, les intégrer dans des instructions elles-mêmes courtes n'est pas un problème. L'adresse est encodée sur 5 à 7 bits, selon le modèle, ce qui permet d'adresser entre 32 et 128 octets.
Les PIC ne supportent pas l'adressage indirect, mais peuvent l'émuler grâce à un '''registre d'adresse''' dédié. Il s'agit du registre FSR, qui mémorise l'adresse à lire/écrire. Il est possible de copier un pointeur dedans, qui provient soit de l'accumulateur, soit de la mémoire SRAM. Dans les deux cas, la donnée adressée est lue ou écrite dans un registre INDR, est un registre d’interfaçage rendu adressable. Le registre FSR est directement connecté sur le bus d'adresse.
Les modèles de base se débrouillent avec un registre FSR et un registre INDR, mais les modèles plus performants ont deux ou trois copies de chaque registre. Les modèles PIC18 ajoutent aussi des instructions LOAD/STORE qui émulent les modes d'adressage à post- ou pré-incrément/décrément, et le mode d'adressage "Base + Indice + Décalage", encore une fois en utilisant les registres FSR et INDR.
Avec tout ce qu'on vient de dire, vous devriez pouvoir comprendre la microarchitecture d'un PIC, qui est résumée dans ce schéma.
[[File:DocPIC16F84 all.png|centre|vignette|upright=2.5|Microarchitecture du PIC16F84.]]
===Le Fairchild F8 et la console de jeu Fairchild Channel F===
Un autre exemple est la Fairchild F8 de la défunte entreprise Fairchild Semiconductor. Il incorpore un processeur 8 bits, c'est à dire que le processeur fait des calculs sur des entiers de 8 bits maximum, une mémoire RAM de 64 octets, ainsi qu'une mémoire ROM de 1 kibioctet. Les 64 octets de RAM sont certes très peu, mais c'est suffisant pour certaines applications simples, comme les caisses automatiques de l'époque, ou des applications embarquées. Et de toute façon, il est possible d'ajouter de la mémoire RAM supplémentaire si les 64 octets de RAM intégrée ne suffisent pas. Le système était donc modulaire, adaptable selon les besoins, peu cher pour son implémentation minimale sans RAM en plus.
Vu qu'il s'agit d'un des tout premiers ordinateurs, il est sorti à une époque où la technologie était rudimentaire. À cette époque, le processeur était composé de pièces détachées qu'il fallait souder ensemble pour obtenir un processeur fonctionnel. Ce n'est que plus tard qu'est apparu le micro-processeur, qui regroupe un processeur complet dans un seul circuit intégré. Le résultat est que le processeur du Fairchild F8 est coupé en deux, l'unité de calcul et l'unité de contrôle sont placés dans des pièces détachées séparés.
Le microcontrôleur est composé de trois à quatre pièces détachées, certaines étant optionnelles. La première est le '''3850 CPU''', qui regroupe l'unité de calcul et la mémoire RAM intégrée. La seconde est le PSU (''3851 Program Storage Unit''), qui regroupe la mémoire ROM et l'unité de contrôle, ''program counter'' inclut. S'il y a besoin d'utiliser plus de RAM, il faut ajouter un circuit d’interface mémoire, qui est au choix le ''3852 Dynamic Memory Interface'' (DMI) ou le ''3853 Static Memory Interface'', le premier étant connecté à une mémoire de type DRAM, l'autre à une SRAM (nous verrons ce que sont les DRAM et les SRAM dans le prochain chapitre).
[[File:Fairchild F8.png|centre|vignette|upright=2|Fairchild F8]]
Le système minimal est composé d'un PSU et d'un 3850, sans les circuits d'interface mémoire. Le tout donne un système avec un processeur 8 bit, 64 octets de RAM et 1 kibioctet de ROM, les deux mémoires étant intégrées dans le "processeur". Le processeur gérait 4 entrées-sorties, chacune étant reliée avec un bus de 8 bit au processeur. Au passage, en 1977, Mostek a créé un microcontrôleur qui regroupe un PSU et un 3850 : le Mostek 3870. Le système minimal n'avait pas de bus d'adresse, vu que la RAM était intégrée au processeur. C'est les 3852 et 3853 qui ajoutaient un bus d'adresse. Ils ajoutent un bus d'adresse de 16 bits, ce qui permet d'adresser 64 kibioctets de RAM.
[[File:Fairchild-Channel-F.jpg|vignette|un Fairchild Channel F]]
Le Fairchild F8 a été utilisé dans la Fairchild Channel F, une des toute première console de seconde génération, à savoir des consoles qui utilisaient des cartouches de jeu. Avant les consoles de seconde génération, les consoles étaient non-programmables. Elles étaient conçues pour faire tourner un jeu précis, aucun autre, le jeu étant implémenté dans leurs circuits.
La Fairchild Channel F est composé du système minimal, auquel on a ajouté une carte son rudimentaire et 2 kibioctets de mémoire vidéo. La mémoire vidéo sert uniquement pour afficher des images à l'écran : on écrit l'image à afficher dedans, un circuit vidéo se charge de l'afficher à l'écran automatiquement. Le processeur ne fait qu'écrire dans cette RAM vidéo, il ne peut pas en lire le contenu. De la RAM supplémentaire peut cependant être ajoutée dans les cartouches de jeu.
===L'usage d'une architecture Harvard modifiée : les consoles 8 bits===
Pour encore améliorer la situation, il est possible d'utiliser une architecture Harvard modifiée, qui permet de lire des données depuis la mémoire ROM. Cela réduit encore plus les besoins en mémoire RAM. Les constantes manipulées par le programme sont mémorisées en ROM, lues depuis la ROM, au lieu d'être chargées en RAM. Les consoles de jeu utilisaient beaucoup de stratagème.
L'exemple type est celui des consoles 8 bits avec des graphismes en 2D. La cartouche de jeu contenait une ROM, qui mémorisait le code du jeu, les niveaux, les sprites et autres données graphiques. Leur carte graphique lisait directement les ''sprites'' depuis la mémoire ROM, sans avoir à les charger en mémoire vidéo. La mémoire vidéo se contentait de mémoriser le reste des informations graphiques, ainsi que des pointeurs vers les ''sprites'' en ROM. En conséquence, les consoles 8 bits n'avaient pas besoin de beaucoup de RAM, vu qu'une grande partie des données utiles étaient dans une ROM directement accessible par le processeur. A l'opposé, les micro-ordinateurs devaient copier les données d'un jeu depuis une disquette dans la mémoire RAM, ce qui demandait d'avoir plus de RAM.
Le passage au support CD sur les consoles 32 bits a eu la même conséquence. Le processeur ne pouvant pas lire directement le CD à sa guise, il fallait copier les données du CD en RAM. D'où l'apparition de temps de chargement assez longs, inexistants sur support cartouche.
Avec ce genre de stratagèmes, 256 octets de RAM est largement suffisant sur de nombreux systèmes, à condition qu'on ait assez de ROM pour coder un programme digne de ce nom. Par exemple, de nombreux systèmes embarqués simples s'en accommodent : des caisses enregistreuses, des systèmes de régulation de feu de circulation, etc.
===Le HP Nanoprocessor : un processeur sans ALU===
Un dernier exemple est celui du processeur HP Nanoprocessor, de l'entreprise HP. Il a été commercialisé en 1974, en même temps que les premiers micro-processeurs d'Intel. Tous les processeurs de l'époque étaient des processeurs 8 bits et le HP Nanoprocessor ne faisait pas exception. Ce n'était pas un processeur haute performance, il était destiné à des applications d'informatique industrielle ou embarquée. D'ailleurs, il utilisait des transistors de type metal-gate, peu performants, là où ses contemporains utilisait des transistors en silicium, plus performants.
Mais une caractéristique qui rend cela encore plus claire est qu'il n'y a pas d'ALU ! En effet, ce processeur est incapable de faire des additions, des soustractions ou autres opérations simples ! Il est cependant capable d'effectuer des incrémentations et décrémentations, des décalages, des opérations logiques comme des ET/OU/NON/XOR et bien d'autres. Il supporte en tout 48 instructions, avec un support limité des modes d'adressage indirects. Les instructions de branchement étaient des instructions SKIP, il n'y avait pas d'instructions de branchement généralistes.
Pour ce qui est des registres, il disposait de 16 registres de 8 bits et d'un accumulateur. Niveau mémoire, il était relié à une mémoire ROM, rien de plus. Il n'avait de RAM supplémentaire qu'on pouvait lui adjoindre, il devait se débrouiller avec seulement ses registres. Et cela ne posait pas de problèmes pour son usage. Seul le mode d'adressage indirect à registre est supporté, il n'y a pas de registres d'indices. Ce mode d'adressage permet de lire des données en mémoire ROM, la ROM pouvant contenir des tableaux de valeurs constantes.
: Il est possible de lui adjoindre de la RAM via les ports d'entrée-sortie, ainsi qu'une ALU, mais RAM et ALU sont traités comme des périphériques avec lesquels on communique, ils ne sont pas intégrés au processeur.
Niveau micro-architecture, il incorporait une unité de calcul logique et un circuit comparateur. Le comparateur était un circuit comparateur série des plus basiques, qui était utilisé pour les instructions de branchement et associées. L'unité de calcul logique gérait des incrémentations/décrémentation, des décalages, les opérations logiques et quelques autres. L'unité de calcul logique était bit-slicée, à savoir conçue en assemblant 8 ALU de 1 bit chacune, enchainées en série. Le tout était combiné à des circuits de ''carry skip''.
[[File:Unité de calcul du HP nanonprocessor.png|centre|vignette|upright=2|Unité de calcul du HP nanoprocessor]]
Son unité de décodage d'instruction était très simple, essentiellement basée sur des portes NOR, grâce à un encodage efficace des instructions machine. Le ''program counter'' fait 11 bits, ce qui permet d'adresser une ROM de 2 kibioctets. Le ''program counter'' était relié à un circuit incrémenteur qui gérait les isntructions SKIP (il pouvait incrémenter le ''program counter'' par pas de 1 ou de 2 en cas de SKIP). Le processeur contient aussi deux registres, qui servent en quelque sorte de pile d'adresse de retour. Un premier registre mémorise l'adresse de retour d'une fonction, l'autre mémorise le ''program counter'' lors d'une interruption, pour savoir où brancher à la fin de l'interruption.
[[File:HP nanoprocessor.png|centre|vignette|upright=2.5|HP nanoprocessor]]
Fait intéressant, le concepteur du processeur a gracieusement donné les masques utilisés pour graver le silicium du processeur au site [https://www.cpushack.com/ CPU Shack]. Les masques en question sont disponibles ici :
* [https://www.cpushack.com/2020/08/20/hp-nanoprocessor-mask-set/ HP NanoProcessor Mask Set]
* [https://www.cpushack.com/2020/08/09/the-forgotten-ones-hp-nanoprocessor/ The Forgotten Ones: HP Nanoprocessor]
Les masques ont été analysés par Ken Shirrif dans cet article de blog :
* [https://www.righto.com/2020/09/hp-nanoprocessor-part-ii-reverse.html HP Nanoprocessor part II: Reverse-engineering the circuits from the masks]
==Les processeurs 8/16 bits à architecture Von Neumann==
L'usage d'une architecture Harvard est une solution pour adresser plus de mémoire avec des CPU 8 bits. Mais plusieurs microprocesseurs commerciaux n'utilisaient pas cette solution. À la place, c'était des architectures Von Neumann, mais qui étaient capables de gérer des adresses de 16 bits. Les données faisaient 8 bits, les registres faisaient 8 bits, mais quelques techniques permettaient de gérer des adresses de 16 bits. Nous parlerons de '''processeurs 8/16 bits''' pour les désigner, et nous allons les étudier à part.
Un point important est que la gestion d'adresses de 16 bits permet d'adresser 64 kibioctets, qui peuvent être remplis avec de la RAM et de la ROM. On a donc le meilleur des mondes : 64 kibioctets de mémoire, mais avec des données de 8 bits et les économies de circuit qui vont avec. L'avantage est que le processeur peut maintenant gérer une vraie pile d'appel, pas seulement une pile d'adresse de retour. Il lui suffit pour cela d'intégrer un pointeur de pile codé sur 16 bits.
===Les modes d'adressage par page des CPU Motorola===
Les processeurs Motorola 8 bits étaient des processeurs 8 bits avec un bus d'adresse de 16 bits. C'était des processeurs à accumulateur incorporant deux registres d'indice, un registre d'état, un pointeur de pile, et un ''program counter''. Tous les registres sont reliés au bus d'adresse, sauf le registre d'état et l’accumulateur. Tous les registres font 8 bits, sauf le ''program counter''. La pile est câblée pour être dans un bloc de 256 octets compris entre l'adresse 1 0000 0000 et l'adresse 1 1111 1111, ce qui fait que son adressage se fait avec un seul octet.
[[File:6502-architecture.svg|centre|vignette|upright=1.5|Architecture simplifiée du 6502.</br> X et Y : registres d'indice ;</br> S : le pointeur de pile ;</br> A : accumulateur ;</br>P : registre d'état.</br>]]
Les processeurs Motorola 8 bits utilisaient une méthode simple pour adresser 64 kibioctets de RAM, avec des registres de 8 bits. Pour cela, ils utilisaient une variante de l'adressage base + décalage. Elle améliore l'adressage absolu, qui intègre l'adresse à lire/écrire dans l'instruction elle-même. L'adresse en question est de 8 bits et n'encode que les 8 bits de poids faible de l'adresse, les 8 bits de poids fort sont dans un '''registre de page''' adressé implicitement. L'adresse finale est obtenue en concaténant ce registre avec l'adresse mémoire intégrée dans l’instruction. Le résultat est que la mémoire était découpée en blocs de 256 consécutifs, chacun pouvant servir de fenêtre de 256 octets. Une page est réservée pour la pile, la seconde, comme dit plus haut.
Formellement, ce mode d'adressage a des ressemblances avec la commutation de banques, une technique qu'on verra dans les chapitres sur l'espace d'adressage et la mémoire virtuelle. Mais ce n'en est pas du tout : le registre de page est utilisé uniquement pour les accès mémoire avec le mode d'adressage base + décalage, mais pas pour les autres accès mémoire, qui gèrent des adresses complètes. Notons que l'usage d'un registre de page dédié fait que celui-ci est adressé implicitement.
Il faut noter que la technique a été utilisée sur des processeurs 16 bits, pour contourner la petite taille des instructions. Un exemple est celui du HP 2100, un processeur 16 bits. Il avait un registre de page de 5 bits et encodait 10 bits d'adresse dans ses instructions. Ses instructions d'accès mémoire disposaient d'un bit qui choisit quel mode d'adressage utiliser. S'il était à 0, l'adressage absolu était utilisé, le registre de page n'était pas utilisé. Mais s'il était à 1, le registre de page était utilisé pour calculer l'adresse.
Une évolution de l'adressage précédent est le '''mode page direct'''. Avec lui, le registre de page est étendu et contient une adresse mémoire complète. L'adresse finale n'est pas obtenue par concaténation, mais en additionnant le registre de page avec l'adresse fournie par adressage absolu + décalage. Un exemple est celui des premiers processeurs Motorola, qui géraient des adresses courtes de 8 bits. L'adresse courte de 8 bits correspondait non pas aux 256 premiers octets de la mémoire, mais à une fenêtre de 256 octets déplaçable en mémoire. La position de la fenêtre de 256 octets était spécifiée par le registre de page de 16 bits, qui précisait l'adresse du début de la fenêtre, celle de sa première donnée.
Il s'agit donc formellement d'adressage base + décalage, à un détail près : il n'y a qu'un seul registre de base. Le fait que ce registre de base soit unique fait qu'il est adressé implicitement, on n'a pas à encoder le numéro/noms de registre dans l'instruction. Le registre de base est utilisé uniquement pour l'adressage absolu, pas pour les autres accès mémoire. S'il y a des ressemblances avec la segmentation, une technique de mémoire virtuelle qu'on abordera dans quelques chapitres, ce n'en est pas vu que le registre de base est utilisé seulement pour un mode d'adressage bien précis.
===Le ''pseudo-aliasing'' des registres des processeurs Intel x86===
Voyons maintenant le cas des anciens processeurs 8 bits d'Intel à savoir l'Intel 4004, 4040, 8008 et 8080. Le Z80, un processeur inspiré des CPU Intel 8 bits, est aussi concerné. Avant de poursuivre, parlons des registres de ces processeurs. Les premiers CPU Intel incorporaient 7 registres de 8 bits nommés A, B, C, D, E, F, H, L, SP. Ils correspondent respectivement à : l'accumulateur A ; six registres nommés B, C, D, E, H et L ; le registre d'état F ; le pointeur de pile SP. Le Z80 ajoute deux registres d'indice X et Y. De plus, le Z80 dispose de registres d'interruption, qui sont en quelque sorte des copies des registres A, B, C, D, E, F, H, L. Le tout est illustré dans le tableau ci-dessous.
{|class="wikitable" style="text-align:center;"
|-
!
! Registres des CPU Intel
! Registres supplémentaires du Z80
|-
! Accumulateur
| A
| A'
|-
! Registre d'état
| F
| F'
|-
! Registres généraux
| B, C, D, E, H, L
| B', C', D', E', H', L'
|-
! Pointeur de pile
| colspan="2" | SP (sauf pour le 8008)
|-
! Registres d'indice
|
| X et Y
|}
Le 8008 incorpore une pile d'appel de 7 adresses, dans le processeur lui-même. Il en est de la même avec le 4004 et le 4040, comme on le verra dans la section sur les processeurs 4 bits. Mais le 8080 et le 8085 ont remplacé le tout par un simple pointeur de pile, afin d'avoir une véritable pile d'appel. Autant c'est impossible d'avoir une pile d'appel avec seulement 256 octets de mémoire, autant on peut se le permettre avec 65 536 adresses.
Pour gérer des adresses de 16 bits, ils auraient pu utiliser des registres d'adresse séparés, mais on préféré un système de '''pseudo-''aliasing'' de registres'''. Formellement, c'est un système qui concatène deux registres 8 bits pour obtenir une adresse de 16 bits. L’appariement a lieu lors de certaines opérations bien précises, qui n'ont de sens que pour les adresses : la lecture/écriture en mémoire, et l'incrémentation.
Il y avait cependant des contraintes quant aux paires de registres possibles, toutes les paires de registres n'étaient pas autorisées. Les CPU concernés sont donc des processeurs hybrides accumulateur-registre généraux. L'accumulateur ne peut pas être appairé, seuls les registres généraux le peuvent. Le Z80 autorise plus de paires que les CPU Intel. Voici les paires de registres qui pouvaient servir d'adresse 16 bits :
* Les CPU 8008 d'Intel autorisait une seule paire formée des registres H et L.
* Les autres processeurs, à savoir le 8080, le 8085 et le Z80, autorisaient : les paires BC, DE et HL.
Le 8008 ne gérait que des opérations sur 8 bits. Mais le 8080 et le 8085 ont ajouté des instructions 16 bits qui agissaient sur des paires de registre, que le Z80 a repris. Une paire de registres est considérée comme un registre unique de 16 bits pour certaines opérations arithmétiques, dont l'incrémentation. Voici la liste des instructions concernées :
* INC et DEC pour l'incrémentation et la décrémentation ;
* DAD : additionne le registre HL avec une autre paire (Hl inclus) ;
* LXI : copie une constante immédiate dans une paire de registres ;
* LHLD : lit 16 depuis la mémoire et l'enregistre dans une paire de registres ;
* SHLD : copie 16 bits depuis une paire de registres et l'enregistre en mémoire ;
* PUSH et POP : empile ou dépilent une paire de registre sur la pile ;
* XTHL : échange la paire HL avec les 16 bits au sommet de la pile d'appel ;
* XCHG : échange le contenu de la paire HL et DE.
Pour résumer, le processeur avait des instructions LOAD, STORE, PUSH et POP adaptées pour gérer des paires de registre. De plus, l'instruction XCHG permettait d’échanger le contenu des paires DE et HL. L'instruction a été étendue sur les processeurs 16 bits pour échanger tous les registres. Mais l'implémentation était alors différente. L'incrémentation sur une paire de 16 bit était très utile, car les adresses sont souvent incrémentées quand on parcours un tableau. Ces instructions nous donnent quelques indices sur ce qu'il y a dans le processeur.
Le système de pseudo-aliasing a un impact sur le banc de registre. Le banc de registre regroupe les registres généraux et le pointeur de pile, mais ne contient pas l'accumulateur. Les contraintes sur les paires de registres possibles ne s'expliquent que d'une seule manière : le banc de registre contient des registres de 16 bits, une paire de registres 8 bits est mémorisée dans un registre unique. Il faut donc faire une différence entre les registres architecturaux de 8 bits, et les registres réels de 16 bits.
Le banc de registre a un port de 8 bits pour les données, qui est fabriqué à partir d'un port 16 bits auquel on a rajouté un multiplexeur pour choisir soit l'octet de poids faible, soit l'octet de poids fort. Le bus de données fait 8 bits, ce qui fait que les instructions LOAD, STORE, PUSH et POP pour paires 16 bits sont réalisées en deux fois : on lit/écrit l'octet de poids faible, puis celui de poids fort. Par contre, le bus d'adresse fait bien 16 bits. Cela suggère que le banc de registre dispose d'un port de 16 bits dédié aux adresses, en plus du port de données 8 bits.
[[File:Architecture d'un CPU 8-16 bits avec un banc de registre double port.png|centre|vignette|upright=2|Architecture d'un CPU 8-16 bits avec un banc de registre double port]]
L'incrémentation d'une paire 16 bits ne coute rien à implémenter, ou presque. En effet, le processeur incorpore un incrémenteur 16 bits pour le ''program counter'', qui est relié au bus d'adresse. L'idée est de rentabiliser cet incrémenteur, en lui permettant d'incrémenter des données/adresses de 16 bits obtenues via pseudo-aliasing. De même, il peut être utilisé pour incrémenter le pointeur de pile, voire un compteur de rafraichissement mémoire (pour rappel, le rafraîchissement mémoire demande de balayer la mémoire d'adresse en adresse et été fait par le CPU à l'époque). Pour cela, il suffit de connecter le ''program counter'', le banc de registre, et l'incrémenteur, via un bus dédié.
[[File:Calcul d'adresse par ALU dédiée avec PC séparé.png|centre|vignette|upright=2|Calcul d'adresse par ALU dédiée avec PC séparé]]
Notez qu'on peut encore simplifier le tout en placant le ''program counter'' dans le banc de registre, ce qui ne gênera pas le travail de l'incrémenteur mais simplifiera le câblage au bus d'adresse. Ce n'était pas systématique, certains processeurs mettaient le ''program counter'' dans le banc de registre, d'autres non.
: Inclure le ''program counter'' dans le banc de registre permet parfois de remplir un vide. Par exemple, sur un processeur avec 12 registres, le banc de registre devrait faire idéalement 16 registres, inclure le ''program counter'' dedans fait monter le tout à 13.
[[File:Architecture d'un CPU 8-16 bits.png|centre|vignette|upright=2|Architecture d'un CPU 8-16 bits]]
Les processeurs Intel 8 bits, à savoir le 8008, le 8080 et le 8085 ; mettaient le ''program counter'' dans le banc de registre. Vous avez donc toutes les armes pour comprendre leur micro-architecture. Par exemple, voici la micro-architecture du processeur 8080. Remarquez le banc de registre, qui contient tous les registres sauf l'accumulateur et le registre. Il a deux ports : un pour les adresses et un pour les données. Notez le dé-multiplexeur sur le port de donnée. Pour le reste, il s'agit d'une architecture à accumulateur hybride des plus classiques.
[[File:Intel 8080 arch.svg|centre|vignette|upright=3|Microarchitecture de l'Intel 8080.]]
Le Z80 est un processeur inspiré du design des processeurs Intel 8 bits, mais avec pas mal d'améliorations. Un point particulier de ce processeur est son banc de registre. Il contient tous les registres du processeur, y compris l'accumulateur et le registre d'état ! Les seuls registres en-dehors du banc de registre sont le ''program counter'' et un compteur de rafraichissement mémoire IR.
Un autre point particulier est que les registres dans le banc de registres avaient une copie séparée accessible uniquement pour les interruptions, via fenêtrage de registres. Et l'accumulateur et le registre d'état étant dans le banc de registre, il y avait deux accumulateurs et deux registres d'état. Les registres A, B, C, D, E et F étaient dupliqués, par le pointeur de pile ni les registres d'indice. Les copies des registres étaient nommées A', B', C', D', E' et F'.
Le Z80 supportait des instructions d'échange de registre en plus des CPU Intel 8 bits. L'instruction EX peut échanger soit le contenu des paires D,E et H,F, soit la paire A,F avec la paire A',F'. L'instruction EXX échange les paires BC, DE, HL avec les paires BC', DE', HL'. En faisant cela, le programmeur pouvait utiliser deux fois plus de registres généraux s'il n'utilisait pas les interruptions. L'échange de paires se fait sans copies de registres, mais simplement en modifiant l'adresse envoyée sur le banc de registre. Pour cela, plusieurs bascules mémorisent des bits qui indiquent si les paires ont été échangées ou non. Il y a une bascule pour les paires DE , HL ; une autre pour les paires A,F et paire A',F', une dernière pour l'instruction EXX. En combinant ces bascules avec les noms de registres envoyés par le séquenceur, on peut échanger les paires de registres.
==Le cas particulier des processeurs 4 bits : le 4004 d'Intel==
L'Intel 4004 était le tout premier micro-processeur. Il s'agissait d'un microprocesseur de 4 bits, basé sur une architecture à accumulateur. Il disposait d'un accumulateur et de 16 registres d'indice, tous de 4 bits. Il faisait des calculs sur des données de 4 bits, appelées des nibbles. Cependant, sur ses 46 instructions machines supportées, 41 agissaient sur des opérandes de 8 bits, les 5 restantes sur des opérandes de 16 bits. Simplement, les calculs se faisaient en deux fois, en échangeant des données entre mémoire RAM et accumulateur.
Le 4004 est un circuit intégré avec peu de broches. Il dispose notamment d'un bus de données/adresse, qui est multiplexé, c’est-à-dire qu'il sert alternativement de bus de données et de bus d'adresse selon les besoins. Le bus de commande mémoire fait 5 bits, dont 4 pour les chips de RAM, un pour la ROM. Les adresses sont codées sur 12 bits, les données sur 4 et les instructions sur 8 bits. L'envoi d'une adresse sur le bus se fait en plusieurs fois, de même que la lecture d'une instruction. Il s'agit là d'une adaptation pour outrepasser les limitations d'un processeur 4 bit.
[[File:Intel 4004 processor pinout.png|centre|vignette|upright=2|Broches de l'Intel 4004. Nous verrons à quoi elles servent plus bas.]]
===L'espace d'adressage de l'Intel 4004===
Les adresses du processeur sont sur 12 bits, ce qui fait 4096 adresses différentes. Elles regroupent à la fois la ROM et la mémoire RAM, vu que l'architecture est une sorte de mélange bizarre entre une architecture Von Neumann et Harvard. Le processeur gère bien deux espaces d'adressage séparés, mais la RAM et la ROM sont reliés au même bus. La sortie CM-ROM du processeur indique si l'adresse envoyée correspond à la RAM ou la ROM. Un circuit de décodage d'adresse active ou désactive la RAM selon la valeur de ce bit, l'inverse pour la ROM, en agissant sur leurs bits Chip Select. Seule la RAM ou la ROM répondent alors à l'adresse.
Pour ce qui est de la RAM, le circuit de décodage d'adresse pouvait gérer au maximum 1024 adresses différentes, chacune contenant un nibble. Pour cela, le CPU 4004 était relié à une ou plusieurs RAM externes, des Intel 4002. Chaque Intel 4002 contenait 64 nibbles de données, plus 16 nibbles de statut qu'on ne détaillera pas ici. Les nibbles de statut étaient accessibles en utilisant des instructions d'entrée-sortie, donc pas avec des lectures/écritures mémoire. Les 64 nibbles de données sont découpés en 4 groupes de 16 nibbles. Le CPU pouvait être relié à maximum 16 Intel 4002, ce qui fait 1024 nibbles de données et 256 nibbles de statut. L'ensemble permet de remplir l'espace d'adressage de 1024 adresses.
===Le registre de page et le pseudo-aliasing des registres===
Sélectionner une adresse mémoire utilisait un mélange entre pseudo-aliasing et registre de page. Pour les données, les 1024 adresses étaient découpées en 4 pages de 256 adresses. Pour la ROM, les 4096 adresses étaient découpées en 16 pages de 256 adresses. Localiser une donnée dans une page ne requiert que 8 bits, 2/4 bits supplémentaires permettent de sélectionner la page voulue. Le registre de page était dans le processeur lui-même, et était relié aux sorties du processeur nommées CM-RAM 0, 1, 2 et 3. Les 4 sorties encodaient un nombre qui permet de sélectionner le numéro de page voulu.
Le registre de page fait 5 bits : un pour distinguer RAM et ROM, 4 bits pour sélectionner la page voulue. L'avantage est que la carte mère gère au maximum 16 chips de RAM, ce qui colle parfaitement avec les 4 utilisés pour sélectionner une page. Un chip de RAM correspond à une page, et chacun est activé ou désactivé suivant la page sélectionnée. Pour cela, il suffit d'ajouter un décodeur sur la carte mère, qui prend les 4 bits du registre de page et fournit les signaux Chip Select aux différents chips de RAM.
Reste alors à utiliser les 8 bits d'adresse à l'intérieur d'un chip de RAM. Le 4004 permettait de concaténer deux registres d'indice de 4 bits pour former une adresse de 8 bits. Les instructions d'accès mémoire pouvaient ainsi préciser une paire de registre d'indice pour préciser quelle adresse lire/écrire. Idem pour les branchements indirects : le processeur supportait une instruction de branchement indirect qui précisait l'adresse dans une paire de registres d'indice. Les registres d'indice sont donc assez mal nommés sur cette architecture, vu qu'ils peuvent servir soit de registre d'indice, soit de demi-registre d'adresse. Il s'agit là du système de pseudo-aliasing des registres, mais appliqué aux registres d'indice.
L'Intel 4004 gérait deux instructions pour gérer les adresses mémoires. La première, l'instruction DCL (''Designate Command Line'') configure le registre de page. Elle prend en entrée un numéro de page et le copie dans le registre de page. L'opérande peut provenir d'un registre d'indice ou de l'accumulateur. La seconde, l'instruction SRC (''Send Register Control'') concatène deux registres d'indice pour obtenir une adresse de 8 bits. Un accès mémoire se fait donc en maximum trois instructions : une qui configure le registre de page si ce n'est pas déjà fait, une instruction SRC pour envoyer l'adresse, et une troisième instruction qui dit s'il faut faire une lecture ou une écriture.
===La microarchitecture de l'Intel 4004===
Il incorporait une pile d'adresse de retour intégrée au processeur. La pile d'adresse acceptait exactement 3 adresses maximum. Elle était regroupée avec le ''program counter'' dans un banc de registre, de 4 registres. Le ''program counter'' et le pointeur de pile faisaient chacun 12 bits, soit trois nibble. Ils étaient incrémentés par un incrémenteur dédié.
SI on omet le registre de page et la pile d'adresse, le 4004 est une architecture à accumulateur des plus classiques, avec un bus interne unique, un banc de registre pour les registres d'indices, un accumulateur relié à une unité de calcul. Les registres d'indice étaient dans un banc de registre séparés, car ils faisaient 4 bits chacun, contrairement au pointeur de pile et le ''program counter''. Un détail important est que les bancs de registres du 4004 étaient implémentés avec de la DRAM, et non des registres usuels fabriqués avec des bascules 1 bit.
[[File:Microarchitecture de l'Intel 4004.png|centre|vignette|upright=2.5|Microarchitecture de l'Intel 4004]]
<noinclude>
{{NavChapitre | book=Fonctionnement d'un ordinateur
| prev=Les architectures à pile et mémoire-mémoire
| prevText=Les architectures à pile et mémoire-mémoire
| next=Les processeurs de traitement du signal
| nextText=Les processeurs de traitement du signal
}}
</noinclude>
tsoh3wp8zzlv15f9iw5j0yyrbx84fr4
765705
765704
2026-05-01T17:42:33Z
Mewtow
31375
/* Les microcontrôleurs PIC */
765705
wikitext
text/x-wiki
Nous avons déjà abordé la notion de processeur 8, 16, 32, 64 bits. Elle désigne la taille des registres généraux, ou de l'accumulateur. De nos jours, les processeurs 32 et 64 bits sont la norme, mais les premiers micro-processeurs étaient des processeurs 4 et 8, avant de passer rapidement au 16 bits. La raison est que leur budget en transistor limité faisait qu'on ne pouvait pas utiliser une ALU trop grande : une ALU 8 bit prend deux fois moins de place et de transistors qu'une ALU 16 bits. Cependant, les processeurs 8 bits avaient de sérieuses limitations qui étaient compensées par diverses solutions. Dans ce chapitre, nous allons faire une revue rapide des processeurs 8 bits et de leurs fonctionnalités.
La principale limitation des CPU 8 bits était l'adressage : des registres de 8 bits limitaient l'espace d'adressage à seulement 256 adresses, soit à peine 256 octets ! Intuitivement, on se dit que 256 octets est purement impraticable, on ne peut rien faire d'intéressant avec seulement 256 de RAM + ROM. Et c'est partiellement vrai. L'adage veut que 16 bits est la taille minimale intéressante, la limite à partir de laquelle on a assez de mémoire RAM/ROM pour coder des applications intéressantes. Mais 256 octets de RAM est largement suffisant sur de nombreux systèmes embarqués simples s'en accommodent : des caisses enregistreuses, des systèmes de régulation de feu de circulation, etc.
Pour les applications demandant plus de mémoire RAM, les CPU de l'époque contournaient la limitation de 256 octets de RAM avec de nombreux stratagèmes. Dans ce qui va suivre, nous allons séparer les CPU 8 bits selon qu'ils utilisent une architecture Harvard ou une architecture Von Neumann. La raison est qu'une architecture Harvard permet en soi de contourner partiellement ce problème d'adressage. Les choses sont plus compliquées avec une architecture Von Neumann.
==Les processeurs 8/16 bits à architecture Harvard ==
La première solution est d'utiliser une architecture Harvard. Le processeur 8 bit a alors deux espaces d'adressage : un pour la RAM, un autre pour la ROM. Et les deux utilisent des adresses de taille différente. La ROM est reliée à un bus d'adresse de 16 bits, alors que la RAM est elle connectée à un bus d'adresse de 8 bits. La RAM est donc limitée à 256 octets, alors que la ROM peut monter jusqu'à 64 kibioctets. Mine de rien, faire ainsi est largement suffisant.
Les processeurs de l'époque intégraient parfois les 256 octets de RAM directement dans le processeur. Beaucoup en implémentaient moins, avec par exemple seulement 64 octets de RAM, ou 32 octets, ou 128 octets. L'avantage est que cela éliminait le bus d'adresse des données et ne laissait que le bus d'adresse pour la ROM. On économisait ainsi beaucoup de broches sur le circuit intégré du CPU. Et pour les applications demandant plus de RAM, on pouvait ajouter un circuit séparé qui permettait d'adresser une RAM plus grande. Mais cela sera plus clair avec un exemple.
===Les microcontrôleurs PIC===
Les '''microcontrôleurs PIC''' regroupent des microcontrôleurs allant de microcontrôleurs 8 bit aux performances très faible, à des microcontrôleurs 32 bits bien plus puissants. Les microcontrôleurs PIC sont très utilisés dans l'embarqué ou d'informatique industrielle. Ils sont vendu à des volumes assez impressionnants, plusieurs millions par an. Et si vous avez ou êtes en train de faire des études d'électronique, je parie que vous les avez déjà vu en classe, ou que ce ne saurait tarder. Dans ce qui suit, nous allons nous concentrer sur les microcontrôleurs PIC 8 bits, à savoir les PIC 16, 16 et 18. Les PIC 24, qui sont des microcontrôleurs 16 bits, ne seront pas abordés.
Les microcontrôleurs PIC 8 bits incorporent une mémoire RAM très petite, ainsi qu'une architecture Harvard, comme dit plus haut. La mémoire ROM des PIC va de 1024 instructions à 4096 instructions. En comparaison, la mémoire RAM des microcontrôleurs PIC ne peut pas dépasser 256 adresses, et elle est encore plus petite en pratique sur certains modèles. Pour donner un exemple, le PIC16F84 a une RAM composée de 68 "registres" de 8 bits. Le terme "registres" devrait vous faire tiquer, mais c'est bien le terme utilisé dans la documentation des PIC. Et il faut admettre que la différence entre banc de registre et SRAM intégrée est floue, mais nous expliquerons pourquoi dans quelques paragraphes.
: Les PIC 18 peuvent adresser plus de 256 octets de RAM en utilisant la commutation de banques, une technique qui sera abordée dans plusieurs chapitres.
[[File:DocPIC16F84 3.png|centre|vignette|upright=3|Espaces d'adressage du PIC16F84.]]
Un détail est que la SRAM n'a qu'un seul port qui sert à la fois pour les lectures et écritures. Pour compenser, les PIC sont des architectures à accumulateur, où une opérande est lue depuis la SRAM, l'autre depuis l'accumulateur. Leur implémentation de l'accumulateur ajoute une petite subtilité : le résultat d'une opération arithmétique peut être enregistré ailleurs que dans l'accumulateur. Le résultat peut aussi remplacer la seconde opérande, celle lue en mémoire RAM. Dit autrement, le résultat est enregistré dans l'adresse mémoire source. Les instructions de calcul ont le choix : un bit dans leur encodage précise où enregistrer le résultat.
{|
|-
|[[File:DocPIC16F84 4.png|centre|vignette|upright=2|Microarchitecture simplifiée d'un microcontroleur PIC (ici, un 16F84).]]
|[[File:DocPIC16F84 5.png|centre|vignette|upright=2|Microarchitecture simplifiée d'un microcontroleur PIC (ici, un 16F84), avec les branchements directs.]]
|}
Les PIC incorporent une pile d'appel allant de 2 à 8 niveaux, suivant les modèles. Outre l'accumulateur, les PIC disposent de registres de contrôle, d'un ''program counter'', d'un registre d'état, et d'un pointeur de pile. Il y a aussi des registres pour les entrées et sorties. Les registres d'entrée-sortie permettent de lire ou écrire sur un port d'entrée-sortie ou de lire un ''timer''. En clair, les PIC ont un espace d'adressage séparé pour les entrées-sorties.
Un détail très important est que les registres sont mappés en mémoire, à quelques exceptions près ! En clair, on peut y accéder en lisant/écrivant à une adresse mémoire bien précise. Les seules registres qui ne sont pas mappés en mémoire sont l'accumulateur, la pile d'appel, et les registres d'entrée-sortie. Par exemple, sur les modèles 16F, l'espace d'adressage fait 128 octets, dont 32 sont réservés aux registres du processeur, ce qui fait que seules 96 octets sont adressables comme de la RAM. Mais les 128 octets sont un seul et unique SRAM dans le processeur. Ce qui explique qu'il est difficile de séparer banc de registre et RAM principale sur ce processeur : les deux sont fusionnées !
: Les modèles PIC 17 ont rendu l'accumulateur mappé en mémoire RAM !
[[File:DocPIC16F84.png|centre|vignette|upright=2|DocPIC16F84]]
Le processeur de ces microcontrôleurs a un jeu d'instruction propriétaire, le jeu d'instruction PIC. Les instructions PIC sont très petites. Les premières versions du jeu d'instruction utilisaient des instructions codées sur 12 bits, dont 5 pour l'adresse mémoire de la seconde opérande. Pour les branchements, 3 bits étaient utilisés pour l'opcode, 9 pour l'adresse de destination. Par la suite, les instructions ont été étendues à 13 bits sur les PIC1670, puis à 14, 15 et 16 bits. Les adresses ont alors été élargies, ce qui permet d'adresser en peu plus de mémoire RAM.
Les instructions se limitent à des additions/soustractions, des opérations bit à bit,des branchements, des instructions LOAD/STORE, ainsi que des opérations de manipulation de bit. Il y a une instruction pour mettre une adresse à zéro, qui peut aussi mettre à zéro l’accumulateur. La plupart des modèles n'a pas d'instruction MOV pour faire une copie entre deux registres, elle n'a été intégrée que sur les modèles haute performance.
Pour ce qui est des branchements, les PIC n'ont pas d'instructions de branchement conditionnels, ils font avec une SKIP instruction et des branchements inconditionnels. Par contre, ils ont des branchements pour les appels et retour de fonction. Mieux que ça, ils intègrent une pile d'appel d'environ 8 adresses de retour. Pour donner une idée, l'adresse de retour est encodée sur 10 bits sur les PIC16F84.
Pour les instructions de manipulation de bit, il y a des instructions pour tester/masquer un bit dans une opérande, 4 en tout ( mettre à 0, mettre à 1, tester si bit = 1, tester si bit = 0). Les instructions qui testent un bit prennent leur opérande dans l'accumulateur. Il y a aussi deux instructions de rotation à gauche et droite, qui tiennent compte de la retenue mémorisée dans le registre d'état. Mentionnons aussi une instruction pour inverser deux ''nibbles'' dans un octet.
Les PIC ont aussi des instructions d'incrémentation et de décrémentation, un peu spéciales. Ces dernières regroupent : une incrémentation normale, une décrémentation normale, une décrémentation fusionnée avec une instruction SKIP, et une incrémentation fusionnée avec une instruction SKIP. Les deux dernières incrémentent/décrémentent l'accumulateur et SKIP l'instruction suivante si le résultat est zéro. Elles permettent de fortement simplifier l'implémentation des boucles qui s'exécutent tant que leur compteur atteint zéro.
Les modèles haute performance ajoutent des instructions d'addition avec retenue entrante, idem pour la soustraction. De telles instructions ssont très utiles pour faire des additions/soustractions sur des opérandes de 16 bits. Le processeur a beau être un CPU 8 bits, il peut être utilisé pour faire des calculs 16 bits, la performance est alors amoindrie, mais ce n'est pas un problème pour les applications d'un tel microcontroleur.
Les modèles intiaux, comme les PIC 10 et 12, ne supportaient pas les interruptions, mais c'est chose réglé sur les modèles plus récents. Ils ont même des registres séparés pour les interruptions et les programmes normaux. De plus, ils intégrent nativement un ''watchdog timer''.
{|class="wikitable" style="text-align:center"
|+ Jeu d'instruction des dodèles PCI 16
|-
! colspan="5" | Instructions diverses
|-
| colspan="3" | 00 0000 0000 0000 || NOP || Ne fait rien
|-
| colspan="3" | 00 0000 0000 1000 || RETURN || Instruction de retour pour une fonction
|-
| colspan="3" | 00 0000 0000 1001 || NOP || Instruction de retour pour une interruption
|-
| colspan="3" | 00 0000 0110 0011 || SLEEP || Mise en veille
|-
| colspan="3" | 00 0000 0110 0100 || CLRWDT || RESET le ''watchdog timer'', intégré dans le PIC
|-
! colspan="5" | Instructions de manipulation de bit
|-
| 0100 || Position du bit dans l'opérande || Adresse mémoire || BCF || Met le bit à 1
|-
| 0101 || Position du bit dans l'opérande || Adresse mémoire || BSF || Met le bit à 0
|-
| 0110 || Position du bit dans l'opérande || Adresse mémoire || BTFSC || Teste si le bit adressé est à 1
|-
| 0111 || Position du bit dans l'opérande || Adresse mémoire || BTFSS || Teste si le bit adressé est à 0
|-
! colspan="5" | Branchements
|-
| 100 || colspan="2" | Adresse mémoire || CALL || Appel de fonction
|-
| 100 || colspan="2" | Adresse mémoire || GOTO || Branchement inconditionnel
|-
! colspan="5" | Instructions logiques/arithmétiques avec opérande lue en mémoire RAM
|-
! colspan="5" | le bit d indique la destination : accumulateur ou adresse mémoire
|-
| 0000001 || colspan="2" | Adresse mémoire || MOVWF || Store (accumulateur vers destination)
|-
| 000001d || colspan="2" | Adresse mémoire || MOVWF || Met à zéro la destination (adresse ou registre)
|-
| 000001d || colspan="2" | Adresse mémoire || SUBWF || Soustraction
|-
| 000010d|| colspan="2" | Adresse mémoire || DECF || Décrémentation
|-
| 000100d|| colspan="2" | Adresse mémoire || IORWF || OU bit à bit
|-
| 000101d|| colspan="2" | Adresse mémoire || ANDWF || ET bit à bit
|-
| 000110d || colspan="2" | Adresse mémoire || XORWF || XOR bit à bit
|-
| 000111d || colspan="2" | Adresse mémoire || ADDWF VWF || Addition
|-
| 001000d || colspan="2" | Adresse mémoire || MOVF || LOAD
|-
| 001001d || colspan="2" | Adresse mémoire || COMF || NOT bit à bit
|-
| 001010d || colspan="2" | Adresse mémoire || INCF || Incrémentation
|-
| 001011d || colspan="2" | Adresse mémoire || DECFSZ || Décrémentation, puis instruction SKIP si résultat = 0
|-
| 001100d || colspan="2" | Adresse mémoire || RRF || Rotation à droite avec retenue entrante
|-
| 001101d || colspan="2" | Adresse mémoire || RLF || Rotation à gauche avec retenue entrante
|-
| 001110d || colspan="2" | Adresse mémoire || SWAPF || Echange deux ''niblle'' dans un octet
|-
| 001111d || colspan="2" | Adresse mémoire || INCFSZ || Incrémentation, puis instruction SKIP si résultat = 0
|-
! colspan="5" | Instructions logiques/arithmétiques avec constante immédiate
|-
| 1100xx || colspan="2" | Constante immédiate (8bits) || MOVLW || Copie constante dans accumulateur
|-
| 1101xx || colspan="2" | Constante immédiate (8bits) || RETLW || MOV fusionné avec un retour de fonction
|-
| 111000 || colspan="2" | Constante immédiate (8bits) || IORLW || OU
|-
| 111001 || colspan="2" | Constante immédiate (8bits) || ANDLW || ET
|-
| 111010 || colspan="2" | Constante immédiate (8bits) || XORLW || XOR
|-
| 11110x || colspan="2" | Constante immédiate (8bits) || SUBLW || Soustraction
|-
| 11111x || colspan="2" | Constante immédiate (8bits) || ADDLW || Addition
|}
Les PIC gèrent l'adressage absolu et immédiat, mais pas plus. L'adressage absolu, celui où l'adresse est intégrée dans l'instruction, est très simple à implémenter. Les adresses prennent moins d'un octet, vu que la taille de la RAM est très petite, les adresses sont très courtes, les intégrer dans des instructions elles-mêmes courtes n'est pas un problème. L'adresse est encodée sur 5 à 7 bits, selon le modèle, ce qui permet d'adresser entre 32 et 128 octets.
Les PIC ne supportent pas l'adressage indirect, mais peuvent l'émuler grâce à un '''registre d'adresse''' dédié. Il s'agit du registre FSR, qui mémorise l'adresse à lire/écrire. Il est possible de copier un pointeur dedans, qui provient soit de l'accumulateur, soit de la mémoire SRAM. Dans les deux cas, la donnée adressée est lue ou écrite dans un registre INDR, est un registre d’interfaçage rendu adressable. Le registre FSR est directement connecté sur le bus d'adresse.
Les modèles de base se débrouillent avec un registre FSR et un registre INDR, mais les modèles plus performants ont deux ou trois copies de chaque registre. Les modèles PIC18 ajoutent aussi des instructions LOAD/STORE qui émulent les modes d'adressage à post- ou pré-incrément/décrément, et le mode d'adressage "Base + Indice + Décalage", encore une fois en utilisant les registres FSR et INDR.
Avec tout ce qu'on vient de dire, vous devriez pouvoir comprendre la microarchitecture d'un PIC, qui est résumée dans ce schéma.
[[File:DocPIC16F84 all.png|centre|vignette|upright=2.5|Microarchitecture du PIC16F84.]]
===Le Fairchild F8 et la console de jeu Fairchild Channel F===
Un autre exemple est la Fairchild F8 de la défunte entreprise Fairchild Semiconductor. Il incorpore un processeur 8 bits, c'est à dire que le processeur fait des calculs sur des entiers de 8 bits maximum, une mémoire RAM de 64 octets, ainsi qu'une mémoire ROM de 1 kibioctet. Les 64 octets de RAM sont certes très peu, mais c'est suffisant pour certaines applications simples, comme les caisses automatiques de l'époque, ou des applications embarquées. Et de toute façon, il est possible d'ajouter de la mémoire RAM supplémentaire si les 64 octets de RAM intégrée ne suffisent pas. Le système était donc modulaire, adaptable selon les besoins, peu cher pour son implémentation minimale sans RAM en plus.
Vu qu'il s'agit d'un des tout premiers ordinateurs, il est sorti à une époque où la technologie était rudimentaire. À cette époque, le processeur était composé de pièces détachées qu'il fallait souder ensemble pour obtenir un processeur fonctionnel. Ce n'est que plus tard qu'est apparu le micro-processeur, qui regroupe un processeur complet dans un seul circuit intégré. Le résultat est que le processeur du Fairchild F8 est coupé en deux, l'unité de calcul et l'unité de contrôle sont placés dans des pièces détachées séparés.
Le microcontrôleur est composé de trois à quatre pièces détachées, certaines étant optionnelles. La première est le '''3850 CPU''', qui regroupe l'unité de calcul et la mémoire RAM intégrée. La seconde est le PSU (''3851 Program Storage Unit''), qui regroupe la mémoire ROM et l'unité de contrôle, ''program counter'' inclut. S'il y a besoin d'utiliser plus de RAM, il faut ajouter un circuit d’interface mémoire, qui est au choix le ''3852 Dynamic Memory Interface'' (DMI) ou le ''3853 Static Memory Interface'', le premier étant connecté à une mémoire de type DRAM, l'autre à une SRAM (nous verrons ce que sont les DRAM et les SRAM dans le prochain chapitre).
[[File:Fairchild F8.png|centre|vignette|upright=2|Fairchild F8]]
Le système minimal est composé d'un PSU et d'un 3850, sans les circuits d'interface mémoire. Le tout donne un système avec un processeur 8 bit, 64 octets de RAM et 1 kibioctet de ROM, les deux mémoires étant intégrées dans le "processeur". Le processeur gérait 4 entrées-sorties, chacune étant reliée avec un bus de 8 bit au processeur. Au passage, en 1977, Mostek a créé un microcontrôleur qui regroupe un PSU et un 3850 : le Mostek 3870. Le système minimal n'avait pas de bus d'adresse, vu que la RAM était intégrée au processeur. C'est les 3852 et 3853 qui ajoutaient un bus d'adresse. Ils ajoutent un bus d'adresse de 16 bits, ce qui permet d'adresser 64 kibioctets de RAM.
[[File:Fairchild-Channel-F.jpg|vignette|un Fairchild Channel F]]
Le Fairchild F8 a été utilisé dans la Fairchild Channel F, une des toute première console de seconde génération, à savoir des consoles qui utilisaient des cartouches de jeu. Avant les consoles de seconde génération, les consoles étaient non-programmables. Elles étaient conçues pour faire tourner un jeu précis, aucun autre, le jeu étant implémenté dans leurs circuits.
La Fairchild Channel F est composé du système minimal, auquel on a ajouté une carte son rudimentaire et 2 kibioctets de mémoire vidéo. La mémoire vidéo sert uniquement pour afficher des images à l'écran : on écrit l'image à afficher dedans, un circuit vidéo se charge de l'afficher à l'écran automatiquement. Le processeur ne fait qu'écrire dans cette RAM vidéo, il ne peut pas en lire le contenu. De la RAM supplémentaire peut cependant être ajoutée dans les cartouches de jeu.
===L'usage d'une architecture Harvard modifiée : les consoles 8 bits===
Pour encore améliorer la situation, il est possible d'utiliser une architecture Harvard modifiée, qui permet de lire des données depuis la mémoire ROM. Cela réduit encore plus les besoins en mémoire RAM. Les constantes manipulées par le programme sont mémorisées en ROM, lues depuis la ROM, au lieu d'être chargées en RAM. Les consoles de jeu utilisaient beaucoup de stratagème.
L'exemple type est celui des consoles 8 bits avec des graphismes en 2D. La cartouche de jeu contenait une ROM, qui mémorisait le code du jeu, les niveaux, les sprites et autres données graphiques. Leur carte graphique lisait directement les ''sprites'' depuis la mémoire ROM, sans avoir à les charger en mémoire vidéo. La mémoire vidéo se contentait de mémoriser le reste des informations graphiques, ainsi que des pointeurs vers les ''sprites'' en ROM. En conséquence, les consoles 8 bits n'avaient pas besoin de beaucoup de RAM, vu qu'une grande partie des données utiles étaient dans une ROM directement accessible par le processeur. A l'opposé, les micro-ordinateurs devaient copier les données d'un jeu depuis une disquette dans la mémoire RAM, ce qui demandait d'avoir plus de RAM.
Le passage au support CD sur les consoles 32 bits a eu la même conséquence. Le processeur ne pouvant pas lire directement le CD à sa guise, il fallait copier les données du CD en RAM. D'où l'apparition de temps de chargement assez longs, inexistants sur support cartouche.
Avec ce genre de stratagèmes, 256 octets de RAM est largement suffisant sur de nombreux systèmes, à condition qu'on ait assez de ROM pour coder un programme digne de ce nom. Par exemple, de nombreux systèmes embarqués simples s'en accommodent : des caisses enregistreuses, des systèmes de régulation de feu de circulation, etc.
===Le HP Nanoprocessor : un processeur sans ALU===
Un dernier exemple est celui du processeur HP Nanoprocessor, de l'entreprise HP. Il a été commercialisé en 1974, en même temps que les premiers micro-processeurs d'Intel. Tous les processeurs de l'époque étaient des processeurs 8 bits et le HP Nanoprocessor ne faisait pas exception. Ce n'était pas un processeur haute performance, il était destiné à des applications d'informatique industrielle ou embarquée. D'ailleurs, il utilisait des transistors de type metal-gate, peu performants, là où ses contemporains utilisait des transistors en silicium, plus performants.
Mais une caractéristique qui rend cela encore plus claire est qu'il n'y a pas d'ALU ! En effet, ce processeur est incapable de faire des additions, des soustractions ou autres opérations simples ! Il est cependant capable d'effectuer des incrémentations et décrémentations, des décalages, des opérations logiques comme des ET/OU/NON/XOR et bien d'autres. Il supporte en tout 48 instructions, avec un support limité des modes d'adressage indirects. Les instructions de branchement étaient des instructions SKIP, il n'y avait pas d'instructions de branchement généralistes.
Pour ce qui est des registres, il disposait de 16 registres de 8 bits et d'un accumulateur. Niveau mémoire, il était relié à une mémoire ROM, rien de plus. Il n'avait de RAM supplémentaire qu'on pouvait lui adjoindre, il devait se débrouiller avec seulement ses registres. Et cela ne posait pas de problèmes pour son usage. Seul le mode d'adressage indirect à registre est supporté, il n'y a pas de registres d'indices. Ce mode d'adressage permet de lire des données en mémoire ROM, la ROM pouvant contenir des tableaux de valeurs constantes.
: Il est possible de lui adjoindre de la RAM via les ports d'entrée-sortie, ainsi qu'une ALU, mais RAM et ALU sont traités comme des périphériques avec lesquels on communique, ils ne sont pas intégrés au processeur.
Niveau micro-architecture, il incorporait une unité de calcul logique et un circuit comparateur. Le comparateur était un circuit comparateur série des plus basiques, qui était utilisé pour les instructions de branchement et associées. L'unité de calcul logique gérait des incrémentations/décrémentation, des décalages, les opérations logiques et quelques autres. L'unité de calcul logique était bit-slicée, à savoir conçue en assemblant 8 ALU de 1 bit chacune, enchainées en série. Le tout était combiné à des circuits de ''carry skip''.
[[File:Unité de calcul du HP nanonprocessor.png|centre|vignette|upright=2|Unité de calcul du HP nanoprocessor]]
Son unité de décodage d'instruction était très simple, essentiellement basée sur des portes NOR, grâce à un encodage efficace des instructions machine. Le ''program counter'' fait 11 bits, ce qui permet d'adresser une ROM de 2 kibioctets. Le ''program counter'' était relié à un circuit incrémenteur qui gérait les isntructions SKIP (il pouvait incrémenter le ''program counter'' par pas de 1 ou de 2 en cas de SKIP). Le processeur contient aussi deux registres, qui servent en quelque sorte de pile d'adresse de retour. Un premier registre mémorise l'adresse de retour d'une fonction, l'autre mémorise le ''program counter'' lors d'une interruption, pour savoir où brancher à la fin de l'interruption.
[[File:HP nanoprocessor.png|centre|vignette|upright=2.5|HP nanoprocessor]]
Fait intéressant, le concepteur du processeur a gracieusement donné les masques utilisés pour graver le silicium du processeur au site [https://www.cpushack.com/ CPU Shack]. Les masques en question sont disponibles ici :
* [https://www.cpushack.com/2020/08/20/hp-nanoprocessor-mask-set/ HP NanoProcessor Mask Set]
* [https://www.cpushack.com/2020/08/09/the-forgotten-ones-hp-nanoprocessor/ The Forgotten Ones: HP Nanoprocessor]
Les masques ont été analysés par Ken Shirrif dans cet article de blog :
* [https://www.righto.com/2020/09/hp-nanoprocessor-part-ii-reverse.html HP Nanoprocessor part II: Reverse-engineering the circuits from the masks]
==Les processeurs 8/16 bits à architecture Von Neumann==
L'usage d'une architecture Harvard est une solution pour adresser plus de mémoire avec des CPU 8 bits. Mais plusieurs microprocesseurs commerciaux n'utilisaient pas cette solution. À la place, c'était des architectures Von Neumann, mais qui étaient capables de gérer des adresses de 16 bits. Les données faisaient 8 bits, les registres faisaient 8 bits, mais quelques techniques permettaient de gérer des adresses de 16 bits. Nous parlerons de '''processeurs 8/16 bits''' pour les désigner, et nous allons les étudier à part.
Un point important est que la gestion d'adresses de 16 bits permet d'adresser 64 kibioctets, qui peuvent être remplis avec de la RAM et de la ROM. On a donc le meilleur des mondes : 64 kibioctets de mémoire, mais avec des données de 8 bits et les économies de circuit qui vont avec. L'avantage est que le processeur peut maintenant gérer une vraie pile d'appel, pas seulement une pile d'adresse de retour. Il lui suffit pour cela d'intégrer un pointeur de pile codé sur 16 bits.
===Les modes d'adressage par page des CPU Motorola===
Les processeurs Motorola 8 bits étaient des processeurs 8 bits avec un bus d'adresse de 16 bits. C'était des processeurs à accumulateur incorporant deux registres d'indice, un registre d'état, un pointeur de pile, et un ''program counter''. Tous les registres sont reliés au bus d'adresse, sauf le registre d'état et l’accumulateur. Tous les registres font 8 bits, sauf le ''program counter''. La pile est câblée pour être dans un bloc de 256 octets compris entre l'adresse 1 0000 0000 et l'adresse 1 1111 1111, ce qui fait que son adressage se fait avec un seul octet.
[[File:6502-architecture.svg|centre|vignette|upright=1.5|Architecture simplifiée du 6502.</br> X et Y : registres d'indice ;</br> S : le pointeur de pile ;</br> A : accumulateur ;</br>P : registre d'état.</br>]]
Les processeurs Motorola 8 bits utilisaient une méthode simple pour adresser 64 kibioctets de RAM, avec des registres de 8 bits. Pour cela, ils utilisaient une variante de l'adressage base + décalage. Elle améliore l'adressage absolu, qui intègre l'adresse à lire/écrire dans l'instruction elle-même. L'adresse en question est de 8 bits et n'encode que les 8 bits de poids faible de l'adresse, les 8 bits de poids fort sont dans un '''registre de page''' adressé implicitement. L'adresse finale est obtenue en concaténant ce registre avec l'adresse mémoire intégrée dans l’instruction. Le résultat est que la mémoire était découpée en blocs de 256 consécutifs, chacun pouvant servir de fenêtre de 256 octets. Une page est réservée pour la pile, la seconde, comme dit plus haut.
Formellement, ce mode d'adressage a des ressemblances avec la commutation de banques, une technique qu'on verra dans les chapitres sur l'espace d'adressage et la mémoire virtuelle. Mais ce n'en est pas du tout : le registre de page est utilisé uniquement pour les accès mémoire avec le mode d'adressage base + décalage, mais pas pour les autres accès mémoire, qui gèrent des adresses complètes. Notons que l'usage d'un registre de page dédié fait que celui-ci est adressé implicitement.
Il faut noter que la technique a été utilisée sur des processeurs 16 bits, pour contourner la petite taille des instructions. Un exemple est celui du HP 2100, un processeur 16 bits. Il avait un registre de page de 5 bits et encodait 10 bits d'adresse dans ses instructions. Ses instructions d'accès mémoire disposaient d'un bit qui choisit quel mode d'adressage utiliser. S'il était à 0, l'adressage absolu était utilisé, le registre de page n'était pas utilisé. Mais s'il était à 1, le registre de page était utilisé pour calculer l'adresse.
Une évolution de l'adressage précédent est le '''mode page direct'''. Avec lui, le registre de page est étendu et contient une adresse mémoire complète. L'adresse finale n'est pas obtenue par concaténation, mais en additionnant le registre de page avec l'adresse fournie par adressage absolu + décalage. Un exemple est celui des premiers processeurs Motorola, qui géraient des adresses courtes de 8 bits. L'adresse courte de 8 bits correspondait non pas aux 256 premiers octets de la mémoire, mais à une fenêtre de 256 octets déplaçable en mémoire. La position de la fenêtre de 256 octets était spécifiée par le registre de page de 16 bits, qui précisait l'adresse du début de la fenêtre, celle de sa première donnée.
Il s'agit donc formellement d'adressage base + décalage, à un détail près : il n'y a qu'un seul registre de base. Le fait que ce registre de base soit unique fait qu'il est adressé implicitement, on n'a pas à encoder le numéro/noms de registre dans l'instruction. Le registre de base est utilisé uniquement pour l'adressage absolu, pas pour les autres accès mémoire. S'il y a des ressemblances avec la segmentation, une technique de mémoire virtuelle qu'on abordera dans quelques chapitres, ce n'en est pas vu que le registre de base est utilisé seulement pour un mode d'adressage bien précis.
===Le ''pseudo-aliasing'' des registres des processeurs Intel x86===
Voyons maintenant le cas des anciens processeurs 8 bits d'Intel à savoir l'Intel 4004, 4040, 8008 et 8080. Le Z80, un processeur inspiré des CPU Intel 8 bits, est aussi concerné. Avant de poursuivre, parlons des registres de ces processeurs. Les premiers CPU Intel incorporaient 7 registres de 8 bits nommés A, B, C, D, E, F, H, L, SP. Ils correspondent respectivement à : l'accumulateur A ; six registres nommés B, C, D, E, H et L ; le registre d'état F ; le pointeur de pile SP. Le Z80 ajoute deux registres d'indice X et Y. De plus, le Z80 dispose de registres d'interruption, qui sont en quelque sorte des copies des registres A, B, C, D, E, F, H, L. Le tout est illustré dans le tableau ci-dessous.
{|class="wikitable" style="text-align:center;"
|-
!
! Registres des CPU Intel
! Registres supplémentaires du Z80
|-
! Accumulateur
| A
| A'
|-
! Registre d'état
| F
| F'
|-
! Registres généraux
| B, C, D, E, H, L
| B', C', D', E', H', L'
|-
! Pointeur de pile
| colspan="2" | SP (sauf pour le 8008)
|-
! Registres d'indice
|
| X et Y
|}
Le 8008 incorpore une pile d'appel de 7 adresses, dans le processeur lui-même. Il en est de la même avec le 4004 et le 4040, comme on le verra dans la section sur les processeurs 4 bits. Mais le 8080 et le 8085 ont remplacé le tout par un simple pointeur de pile, afin d'avoir une véritable pile d'appel. Autant c'est impossible d'avoir une pile d'appel avec seulement 256 octets de mémoire, autant on peut se le permettre avec 65 536 adresses.
Pour gérer des adresses de 16 bits, ils auraient pu utiliser des registres d'adresse séparés, mais on préféré un système de '''pseudo-''aliasing'' de registres'''. Formellement, c'est un système qui concatène deux registres 8 bits pour obtenir une adresse de 16 bits. L’appariement a lieu lors de certaines opérations bien précises, qui n'ont de sens que pour les adresses : la lecture/écriture en mémoire, et l'incrémentation.
Il y avait cependant des contraintes quant aux paires de registres possibles, toutes les paires de registres n'étaient pas autorisées. Les CPU concernés sont donc des processeurs hybrides accumulateur-registre généraux. L'accumulateur ne peut pas être appairé, seuls les registres généraux le peuvent. Le Z80 autorise plus de paires que les CPU Intel. Voici les paires de registres qui pouvaient servir d'adresse 16 bits :
* Les CPU 8008 d'Intel autorisait une seule paire formée des registres H et L.
* Les autres processeurs, à savoir le 8080, le 8085 et le Z80, autorisaient : les paires BC, DE et HL.
Le 8008 ne gérait que des opérations sur 8 bits. Mais le 8080 et le 8085 ont ajouté des instructions 16 bits qui agissaient sur des paires de registre, que le Z80 a repris. Une paire de registres est considérée comme un registre unique de 16 bits pour certaines opérations arithmétiques, dont l'incrémentation. Voici la liste des instructions concernées :
* INC et DEC pour l'incrémentation et la décrémentation ;
* DAD : additionne le registre HL avec une autre paire (Hl inclus) ;
* LXI : copie une constante immédiate dans une paire de registres ;
* LHLD : lit 16 depuis la mémoire et l'enregistre dans une paire de registres ;
* SHLD : copie 16 bits depuis une paire de registres et l'enregistre en mémoire ;
* PUSH et POP : empile ou dépilent une paire de registre sur la pile ;
* XTHL : échange la paire HL avec les 16 bits au sommet de la pile d'appel ;
* XCHG : échange le contenu de la paire HL et DE.
Pour résumer, le processeur avait des instructions LOAD, STORE, PUSH et POP adaptées pour gérer des paires de registre. De plus, l'instruction XCHG permettait d’échanger le contenu des paires DE et HL. L'instruction a été étendue sur les processeurs 16 bits pour échanger tous les registres. Mais l'implémentation était alors différente. L'incrémentation sur une paire de 16 bit était très utile, car les adresses sont souvent incrémentées quand on parcours un tableau. Ces instructions nous donnent quelques indices sur ce qu'il y a dans le processeur.
Le système de pseudo-aliasing a un impact sur le banc de registre. Le banc de registre regroupe les registres généraux et le pointeur de pile, mais ne contient pas l'accumulateur. Les contraintes sur les paires de registres possibles ne s'expliquent que d'une seule manière : le banc de registre contient des registres de 16 bits, une paire de registres 8 bits est mémorisée dans un registre unique. Il faut donc faire une différence entre les registres architecturaux de 8 bits, et les registres réels de 16 bits.
Le banc de registre a un port de 8 bits pour les données, qui est fabriqué à partir d'un port 16 bits auquel on a rajouté un multiplexeur pour choisir soit l'octet de poids faible, soit l'octet de poids fort. Le bus de données fait 8 bits, ce qui fait que les instructions LOAD, STORE, PUSH et POP pour paires 16 bits sont réalisées en deux fois : on lit/écrit l'octet de poids faible, puis celui de poids fort. Par contre, le bus d'adresse fait bien 16 bits. Cela suggère que le banc de registre dispose d'un port de 16 bits dédié aux adresses, en plus du port de données 8 bits.
[[File:Architecture d'un CPU 8-16 bits avec un banc de registre double port.png|centre|vignette|upright=2|Architecture d'un CPU 8-16 bits avec un banc de registre double port]]
L'incrémentation d'une paire 16 bits ne coute rien à implémenter, ou presque. En effet, le processeur incorpore un incrémenteur 16 bits pour le ''program counter'', qui est relié au bus d'adresse. L'idée est de rentabiliser cet incrémenteur, en lui permettant d'incrémenter des données/adresses de 16 bits obtenues via pseudo-aliasing. De même, il peut être utilisé pour incrémenter le pointeur de pile, voire un compteur de rafraichissement mémoire (pour rappel, le rafraîchissement mémoire demande de balayer la mémoire d'adresse en adresse et été fait par le CPU à l'époque). Pour cela, il suffit de connecter le ''program counter'', le banc de registre, et l'incrémenteur, via un bus dédié.
[[File:Calcul d'adresse par ALU dédiée avec PC séparé.png|centre|vignette|upright=2|Calcul d'adresse par ALU dédiée avec PC séparé]]
Notez qu'on peut encore simplifier le tout en placant le ''program counter'' dans le banc de registre, ce qui ne gênera pas le travail de l'incrémenteur mais simplifiera le câblage au bus d'adresse. Ce n'était pas systématique, certains processeurs mettaient le ''program counter'' dans le banc de registre, d'autres non.
: Inclure le ''program counter'' dans le banc de registre permet parfois de remplir un vide. Par exemple, sur un processeur avec 12 registres, le banc de registre devrait faire idéalement 16 registres, inclure le ''program counter'' dedans fait monter le tout à 13.
[[File:Architecture d'un CPU 8-16 bits.png|centre|vignette|upright=2|Architecture d'un CPU 8-16 bits]]
Les processeurs Intel 8 bits, à savoir le 8008, le 8080 et le 8085 ; mettaient le ''program counter'' dans le banc de registre. Vous avez donc toutes les armes pour comprendre leur micro-architecture. Par exemple, voici la micro-architecture du processeur 8080. Remarquez le banc de registre, qui contient tous les registres sauf l'accumulateur et le registre. Il a deux ports : un pour les adresses et un pour les données. Notez le dé-multiplexeur sur le port de donnée. Pour le reste, il s'agit d'une architecture à accumulateur hybride des plus classiques.
[[File:Intel 8080 arch.svg|centre|vignette|upright=3|Microarchitecture de l'Intel 8080.]]
Le Z80 est un processeur inspiré du design des processeurs Intel 8 bits, mais avec pas mal d'améliorations. Un point particulier de ce processeur est son banc de registre. Il contient tous les registres du processeur, y compris l'accumulateur et le registre d'état ! Les seuls registres en-dehors du banc de registre sont le ''program counter'' et un compteur de rafraichissement mémoire IR.
Un autre point particulier est que les registres dans le banc de registres avaient une copie séparée accessible uniquement pour les interruptions, via fenêtrage de registres. Et l'accumulateur et le registre d'état étant dans le banc de registre, il y avait deux accumulateurs et deux registres d'état. Les registres A, B, C, D, E et F étaient dupliqués, par le pointeur de pile ni les registres d'indice. Les copies des registres étaient nommées A', B', C', D', E' et F'.
Le Z80 supportait des instructions d'échange de registre en plus des CPU Intel 8 bits. L'instruction EX peut échanger soit le contenu des paires D,E et H,F, soit la paire A,F avec la paire A',F'. L'instruction EXX échange les paires BC, DE, HL avec les paires BC', DE', HL'. En faisant cela, le programmeur pouvait utiliser deux fois plus de registres généraux s'il n'utilisait pas les interruptions. L'échange de paires se fait sans copies de registres, mais simplement en modifiant l'adresse envoyée sur le banc de registre. Pour cela, plusieurs bascules mémorisent des bits qui indiquent si les paires ont été échangées ou non. Il y a une bascule pour les paires DE , HL ; une autre pour les paires A,F et paire A',F', une dernière pour l'instruction EXX. En combinant ces bascules avec les noms de registres envoyés par le séquenceur, on peut échanger les paires de registres.
==Le cas particulier des processeurs 4 bits : le 4004 d'Intel==
L'Intel 4004 était le tout premier micro-processeur. Il s'agissait d'un microprocesseur de 4 bits, basé sur une architecture à accumulateur. Il disposait d'un accumulateur et de 16 registres d'indice, tous de 4 bits. Il faisait des calculs sur des données de 4 bits, appelées des nibbles. Cependant, sur ses 46 instructions machines supportées, 41 agissaient sur des opérandes de 8 bits, les 5 restantes sur des opérandes de 16 bits. Simplement, les calculs se faisaient en deux fois, en échangeant des données entre mémoire RAM et accumulateur.
Le 4004 est un circuit intégré avec peu de broches. Il dispose notamment d'un bus de données/adresse, qui est multiplexé, c’est-à-dire qu'il sert alternativement de bus de données et de bus d'adresse selon les besoins. Le bus de commande mémoire fait 5 bits, dont 4 pour les chips de RAM, un pour la ROM. Les adresses sont codées sur 12 bits, les données sur 4 et les instructions sur 8 bits. L'envoi d'une adresse sur le bus se fait en plusieurs fois, de même que la lecture d'une instruction. Il s'agit là d'une adaptation pour outrepasser les limitations d'un processeur 4 bit.
[[File:Intel 4004 processor pinout.png|centre|vignette|upright=2|Broches de l'Intel 4004. Nous verrons à quoi elles servent plus bas.]]
===L'espace d'adressage de l'Intel 4004===
Les adresses du processeur sont sur 12 bits, ce qui fait 4096 adresses différentes. Elles regroupent à la fois la ROM et la mémoire RAM, vu que l'architecture est une sorte de mélange bizarre entre une architecture Von Neumann et Harvard. Le processeur gère bien deux espaces d'adressage séparés, mais la RAM et la ROM sont reliés au même bus. La sortie CM-ROM du processeur indique si l'adresse envoyée correspond à la RAM ou la ROM. Un circuit de décodage d'adresse active ou désactive la RAM selon la valeur de ce bit, l'inverse pour la ROM, en agissant sur leurs bits Chip Select. Seule la RAM ou la ROM répondent alors à l'adresse.
Pour ce qui est de la RAM, le circuit de décodage d'adresse pouvait gérer au maximum 1024 adresses différentes, chacune contenant un nibble. Pour cela, le CPU 4004 était relié à une ou plusieurs RAM externes, des Intel 4002. Chaque Intel 4002 contenait 64 nibbles de données, plus 16 nibbles de statut qu'on ne détaillera pas ici. Les nibbles de statut étaient accessibles en utilisant des instructions d'entrée-sortie, donc pas avec des lectures/écritures mémoire. Les 64 nibbles de données sont découpés en 4 groupes de 16 nibbles. Le CPU pouvait être relié à maximum 16 Intel 4002, ce qui fait 1024 nibbles de données et 256 nibbles de statut. L'ensemble permet de remplir l'espace d'adressage de 1024 adresses.
===Le registre de page et le pseudo-aliasing des registres===
Sélectionner une adresse mémoire utilisait un mélange entre pseudo-aliasing et registre de page. Pour les données, les 1024 adresses étaient découpées en 4 pages de 256 adresses. Pour la ROM, les 4096 adresses étaient découpées en 16 pages de 256 adresses. Localiser une donnée dans une page ne requiert que 8 bits, 2/4 bits supplémentaires permettent de sélectionner la page voulue. Le registre de page était dans le processeur lui-même, et était relié aux sorties du processeur nommées CM-RAM 0, 1, 2 et 3. Les 4 sorties encodaient un nombre qui permet de sélectionner le numéro de page voulu.
Le registre de page fait 5 bits : un pour distinguer RAM et ROM, 4 bits pour sélectionner la page voulue. L'avantage est que la carte mère gère au maximum 16 chips de RAM, ce qui colle parfaitement avec les 4 utilisés pour sélectionner une page. Un chip de RAM correspond à une page, et chacun est activé ou désactivé suivant la page sélectionnée. Pour cela, il suffit d'ajouter un décodeur sur la carte mère, qui prend les 4 bits du registre de page et fournit les signaux Chip Select aux différents chips de RAM.
Reste alors à utiliser les 8 bits d'adresse à l'intérieur d'un chip de RAM. Le 4004 permettait de concaténer deux registres d'indice de 4 bits pour former une adresse de 8 bits. Les instructions d'accès mémoire pouvaient ainsi préciser une paire de registre d'indice pour préciser quelle adresse lire/écrire. Idem pour les branchements indirects : le processeur supportait une instruction de branchement indirect qui précisait l'adresse dans une paire de registres d'indice. Les registres d'indice sont donc assez mal nommés sur cette architecture, vu qu'ils peuvent servir soit de registre d'indice, soit de demi-registre d'adresse. Il s'agit là du système de pseudo-aliasing des registres, mais appliqué aux registres d'indice.
L'Intel 4004 gérait deux instructions pour gérer les adresses mémoires. La première, l'instruction DCL (''Designate Command Line'') configure le registre de page. Elle prend en entrée un numéro de page et le copie dans le registre de page. L'opérande peut provenir d'un registre d'indice ou de l'accumulateur. La seconde, l'instruction SRC (''Send Register Control'') concatène deux registres d'indice pour obtenir une adresse de 8 bits. Un accès mémoire se fait donc en maximum trois instructions : une qui configure le registre de page si ce n'est pas déjà fait, une instruction SRC pour envoyer l'adresse, et une troisième instruction qui dit s'il faut faire une lecture ou une écriture.
===La microarchitecture de l'Intel 4004===
Il incorporait une pile d'adresse de retour intégrée au processeur. La pile d'adresse acceptait exactement 3 adresses maximum. Elle était regroupée avec le ''program counter'' dans un banc de registre, de 4 registres. Le ''program counter'' et le pointeur de pile faisaient chacun 12 bits, soit trois nibble. Ils étaient incrémentés par un incrémenteur dédié.
SI on omet le registre de page et la pile d'adresse, le 4004 est une architecture à accumulateur des plus classiques, avec un bus interne unique, un banc de registre pour les registres d'indices, un accumulateur relié à une unité de calcul. Les registres d'indice étaient dans un banc de registre séparés, car ils faisaient 4 bits chacun, contrairement au pointeur de pile et le ''program counter''. Un détail important est que les bancs de registres du 4004 étaient implémentés avec de la DRAM, et non des registres usuels fabriqués avec des bascules 1 bit.
[[File:Microarchitecture de l'Intel 4004.png|centre|vignette|upright=2.5|Microarchitecture de l'Intel 4004]]
<noinclude>
{{NavChapitre | book=Fonctionnement d'un ordinateur
| prev=Les architectures à pile et mémoire-mémoire
| prevText=Les architectures à pile et mémoire-mémoire
| next=Les processeurs de traitement du signal
| nextText=Les processeurs de traitement du signal
}}
</noinclude>
4t8r909b6wd09df8vk3ewu8tlxixl8a
765706
765705
2026-05-01T17:43:25Z
Mewtow
31375
/* Les microcontrôleurs PIC */
765706
wikitext
text/x-wiki
Nous avons déjà abordé la notion de processeur 8, 16, 32, 64 bits. Elle désigne la taille des registres généraux, ou de l'accumulateur. De nos jours, les processeurs 32 et 64 bits sont la norme, mais les premiers micro-processeurs étaient des processeurs 4 et 8, avant de passer rapidement au 16 bits. La raison est que leur budget en transistor limité faisait qu'on ne pouvait pas utiliser une ALU trop grande : une ALU 8 bit prend deux fois moins de place et de transistors qu'une ALU 16 bits. Cependant, les processeurs 8 bits avaient de sérieuses limitations qui étaient compensées par diverses solutions. Dans ce chapitre, nous allons faire une revue rapide des processeurs 8 bits et de leurs fonctionnalités.
La principale limitation des CPU 8 bits était l'adressage : des registres de 8 bits limitaient l'espace d'adressage à seulement 256 adresses, soit à peine 256 octets ! Intuitivement, on se dit que 256 octets est purement impraticable, on ne peut rien faire d'intéressant avec seulement 256 de RAM + ROM. Et c'est partiellement vrai. L'adage veut que 16 bits est la taille minimale intéressante, la limite à partir de laquelle on a assez de mémoire RAM/ROM pour coder des applications intéressantes. Mais 256 octets de RAM est largement suffisant sur de nombreux systèmes embarqués simples s'en accommodent : des caisses enregistreuses, des systèmes de régulation de feu de circulation, etc.
Pour les applications demandant plus de mémoire RAM, les CPU de l'époque contournaient la limitation de 256 octets de RAM avec de nombreux stratagèmes. Dans ce qui va suivre, nous allons séparer les CPU 8 bits selon qu'ils utilisent une architecture Harvard ou une architecture Von Neumann. La raison est qu'une architecture Harvard permet en soi de contourner partiellement ce problème d'adressage. Les choses sont plus compliquées avec une architecture Von Neumann.
==Les processeurs 8/16 bits à architecture Harvard ==
La première solution est d'utiliser une architecture Harvard. Le processeur 8 bit a alors deux espaces d'adressage : un pour la RAM, un autre pour la ROM. Et les deux utilisent des adresses de taille différente. La ROM est reliée à un bus d'adresse de 16 bits, alors que la RAM est elle connectée à un bus d'adresse de 8 bits. La RAM est donc limitée à 256 octets, alors que la ROM peut monter jusqu'à 64 kibioctets. Mine de rien, faire ainsi est largement suffisant.
Les processeurs de l'époque intégraient parfois les 256 octets de RAM directement dans le processeur. Beaucoup en implémentaient moins, avec par exemple seulement 64 octets de RAM, ou 32 octets, ou 128 octets. L'avantage est que cela éliminait le bus d'adresse des données et ne laissait que le bus d'adresse pour la ROM. On économisait ainsi beaucoup de broches sur le circuit intégré du CPU. Et pour les applications demandant plus de RAM, on pouvait ajouter un circuit séparé qui permettait d'adresser une RAM plus grande. Mais cela sera plus clair avec un exemple.
===Les microcontrôleurs PIC===
Les '''microcontrôleurs PIC''' regroupent des microcontrôleurs allant de microcontrôleurs 8 bit aux performances très faible, à des microcontrôleurs 32 bits bien plus puissants. Les microcontrôleurs PIC sont très utilisés dans l'embarqué ou d'informatique industrielle. Ils sont vendu à des volumes assez impressionnants, plusieurs millions par an. Et si vous avez ou êtes en train de faire des études d'électronique, je parie que vous les avez déjà vu en classe, ou que ce ne saurait tarder. Dans ce qui suit, nous allons nous concentrer sur les microcontrôleurs PIC 8 bits, à savoir les PIC 16, 16 et 18. Les PIC 24, qui sont des microcontrôleurs 16 bits, ne seront pas abordés.
Les microcontrôleurs PIC 8 bits incorporent une mémoire RAM très petite, ainsi qu'une architecture Harvard, comme dit plus haut. La mémoire ROM des PIC va de 1024 instructions à 4096 instructions. En comparaison, la mémoire RAM des microcontrôleurs PIC ne peut pas dépasser 256 adresses, et elle est encore plus petite en pratique sur certains modèles. Pour donner un exemple, le PIC16F84 a une RAM composée de 68 "registres" de 8 bits. Le terme "registres" devrait vous faire tiquer, mais c'est bien le terme utilisé dans la documentation des PIC. Et il faut admettre que la différence entre banc de registre et SRAM intégrée est floue, mais nous expliquerons pourquoi dans quelques paragraphes.
: Les PIC 18 peuvent adresser plus de 256 octets de RAM en utilisant la commutation de banques, une technique qui sera abordée dans plusieurs chapitres.
[[File:DocPIC16F84 3.png|centre|vignette|upright=3|Espaces d'adressage du PIC16F84.]]
Un détail est que la SRAM n'a qu'un seul port qui sert à la fois pour les lectures et écritures. Pour compenser, les PIC sont des architectures à accumulateur, où une opérande est lue depuis la SRAM, l'autre depuis l'accumulateur. Leur implémentation de l'accumulateur ajoute une petite subtilité : le résultat d'une opération arithmétique peut être enregistré ailleurs que dans l'accumulateur. Le résultat peut aussi remplacer la seconde opérande, celle lue en mémoire RAM. Dit autrement, le résultat est enregistré dans l'adresse mémoire source. Les instructions de calcul ont le choix : un bit dans leur encodage précise où enregistrer le résultat.
{|
|-
|[[File:DocPIC16F84 4.png|centre|vignette|upright=2|Microarchitecture simplifiée d'un microcontroleur PIC (ici, un 16F84).]]
|[[File:DocPIC16F84 5.png|centre|vignette|upright=2|Microarchitecture simplifiée d'un microcontroleur PIC (ici, un 16F84), avec les branchements directs.]]
|}
Les PIC incorporent une pile d'appel allant de 2 à 8 niveaux, suivant les modèles. Outre l'accumulateur, les PIC disposent de registres de contrôle, d'un ''program counter'', d'un registre d'état, et d'un pointeur de pile. Il y a aussi des registres pour les entrées et sorties. Les registres d'entrée-sortie permettent de lire ou écrire sur un port d'entrée-sortie ou de lire un ''timer''. En clair, les PIC ont un espace d'adressage séparé pour les entrées-sorties.
Un détail très important est que les registres sont mappés en mémoire, à quelques exceptions près ! En clair, on peut y accéder en lisant/écrivant à une adresse mémoire bien précise. Les seules registres qui ne sont pas mappés en mémoire sont l'accumulateur, la pile d'appel, et les registres d'entrée-sortie. Par exemple, sur les modèles 16F, l'espace d'adressage fait 128 octets, dont 32 sont réservés aux registres du processeur, ce qui fait que seules 96 octets sont adressables comme de la RAM. Mais les 128 octets sont un seul et unique SRAM dans le processeur. Ce qui explique qu'il est difficile de séparer banc de registre et RAM principale sur ce processeur : les deux sont fusionnées !
: Les modèles PIC 17 ont rendu l'accumulateur mappé en mémoire RAM !
[[File:DocPIC16F84.png|centre|vignette|upright=2|DocPIC16F84]]
Le processeur de ces microcontrôleurs a un jeu d'instruction propriétaire, le jeu d'instruction PIC. Les instructions PIC sont très petites. Les premières versions du jeu d'instruction utilisaient des instructions codées sur 12 bits, dont 5 pour l'adresse mémoire de la seconde opérande. Pour les branchements, 3 bits étaient utilisés pour l'opcode, 9 pour l'adresse de destination. Par la suite, les instructions ont été étendues à 13 bits sur les PIC1670, puis à 14, 15 et 16 bits. Les adresses ont alors été élargies, ce qui permet d'adresser en peu plus de mémoire RAM.
Les instructions se limitent à des additions/soustractions, des opérations bit à bit,des branchements, des instructions LOAD/STORE, ainsi que des opérations de manipulation de bit. Il y a une instruction pour mettre une adresse à zéro, qui peut aussi mettre à zéro l’accumulateur. La plupart des modèles n'a pas d'instruction MOV pour faire une copie entre deux registres, elle n'a été intégrée que sur les modèles haute performance.
Pour ce qui est des branchements, les PIC n'ont pas d'instructions de branchement conditionnels, ils font avec une SKIP instruction et des branchements inconditionnels. Par contre, ils ont des branchements pour les appels et retour de fonction. Mieux que ça, ils intègrent une pile d'appel d'environ 8 adresses de retour. Pour donner une idée, l'adresse de retour est encodée sur 10 bits sur les PIC16F84.
Pour les instructions de manipulation de bit, il y a des instructions pour tester/masquer un bit dans une opérande, 4 en tout ( mettre à 0, mettre à 1, tester si bit = 1, tester si bit = 0). Les instructions qui testent un bit prennent leur opérande dans l'accumulateur. Il y a aussi deux instructions de rotation à gauche et droite, qui tiennent compte de la retenue mémorisée dans le registre d'état. Mentionnons aussi une instruction pour inverser deux ''nibbles'' dans un octet.
Les PIC ont aussi des instructions d'incrémentation et de décrémentation, un peu spéciales. Ces dernières regroupent : une incrémentation normale, une décrémentation normale, une décrémentation fusionnée avec une instruction SKIP, et une incrémentation fusionnée avec une instruction SKIP. Les deux dernières incrémentent/décrémentent l'accumulateur et SKIP l'instruction suivante si le résultat est zéro. Elles permettent de fortement simplifier l'implémentation des boucles qui s'exécutent tant que leur compteur atteint zéro.
Les modèles haute performance ajoutent des instructions d'addition avec retenue entrante, idem pour la soustraction. De telles instructions ssont très utiles pour faire des additions/soustractions sur des opérandes de 16 bits. Le processeur a beau être un CPU 8 bits, il peut être utilisé pour faire des calculs 16 bits, la performance est alors amoindrie, mais ce n'est pas un problème pour les applications d'un tel microcontroleur.
Les modèles intiaux, comme les PIC 10 et 12, ne supportaient pas les interruptions, mais c'est chose réglé sur les modèles plus récents. Ils ont même des registres séparés pour les interruptions et les programmes normaux. De plus, ils intégrent nativement un ''watchdog timer''.
{|class="wikitable" style="text-align:center"
|+ Jeu d'instruction des dodèles PCI 16
|-
! colspan="5" | Instructions diverses
|-
| colspan="3" | 00 0000 0000 0000 || NOP || Ne fait rien
|-
| colspan="3" | 00 0000 0000 1000 || RETURN || Instruction de retour pour une fonction
|-
| colspan="3" | 00 0000 0000 1001 || NOP || Instruction de retour pour une interruption
|-
| colspan="3" | 00 0000 0110 0011 || SLEEP || Mise en veille
|-
| colspan="3" | 00 0000 0110 0100 || CLRWDT || RESET le ''watchdog timer'', intégré dans le PIC
|-
! colspan="5" | Instructions de manipulation de bit
|-
| 0100 || Position du bit dans l'opérande || Adresse mémoire || BCF || Met le bit à 1
|-
| 0101 || Position du bit dans l'opérande || Adresse mémoire || BSF || Met le bit à 0
|-
| 0110 || Position du bit dans l'opérande || Adresse mémoire || BTFSC || Teste si le bit adressé est à 1
|-
| 0111 || Position du bit dans l'opérande || Adresse mémoire || BTFSS || Teste si le bit adressé est à 0
|-
! colspan="5" | Branchements
|-
| 100 || colspan="2" | Adresse mémoire || CALL || Appel de fonction
|-
| 100 || colspan="2" | Adresse mémoire || GOTO || Branchement inconditionnel
|-
! colspan="5" | Instructions logiques/arithmétiques avec opérande lue en mémoire RAM
|-
| colspan="5" | ''Le bit d indique la destination : accumulateur ou adresse mémoire''.
|-
| 0000001 || colspan="2" | Adresse mémoire || MOVWF || Store (accumulateur vers destination)
|-
| 000001d || colspan="2" | Adresse mémoire || MOVWF || Met à zéro la destination (adresse ou registre)
|-
| 000001d || colspan="2" | Adresse mémoire || SUBWF || Soustraction
|-
| 000010d|| colspan="2" | Adresse mémoire || DECF || Décrémentation
|-
| 000100d|| colspan="2" | Adresse mémoire || IORWF || OU bit à bit
|-
| 000101d|| colspan="2" | Adresse mémoire || ANDWF || ET bit à bit
|-
| 000110d || colspan="2" | Adresse mémoire || XORWF || XOR bit à bit
|-
| 000111d || colspan="2" | Adresse mémoire || ADDWF VWF || Addition
|-
| 001000d || colspan="2" | Adresse mémoire || MOVF || LOAD
|-
| 001001d || colspan="2" | Adresse mémoire || COMF || NOT bit à bit
|-
| 001010d || colspan="2" | Adresse mémoire || INCF || Incrémentation
|-
| 001011d || colspan="2" | Adresse mémoire || DECFSZ || Décrémentation, puis instruction SKIP si résultat = 0
|-
| 001100d || colspan="2" | Adresse mémoire || RRF || Rotation à droite avec retenue entrante
|-
| 001101d || colspan="2" | Adresse mémoire || RLF || Rotation à gauche avec retenue entrante
|-
| 001110d || colspan="2" | Adresse mémoire || SWAPF || Echange deux ''niblle'' dans un octet
|-
| 001111d || colspan="2" | Adresse mémoire || INCFSZ || Incrémentation, puis instruction SKIP si résultat = 0
|-
! colspan="5" | Instructions logiques/arithmétiques avec constante immédiate
|-
| 1100xx || colspan="2" | Constante immédiate (8bits) || MOVLW || Copie constante dans accumulateur
|-
| 1101xx || colspan="2" | Constante immédiate (8bits) || RETLW || MOV fusionné avec un retour de fonction
|-
| 111000 || colspan="2" | Constante immédiate (8bits) || IORLW || OU
|-
| 111001 || colspan="2" | Constante immédiate (8bits) || ANDLW || ET
|-
| 111010 || colspan="2" | Constante immédiate (8bits) || XORLW || XOR
|-
| 11110x || colspan="2" | Constante immédiate (8bits) || SUBLW || Soustraction
|-
| 11111x || colspan="2" | Constante immédiate (8bits) || ADDLW || Addition
|}
Les PIC gèrent l'adressage absolu et immédiat, mais pas plus. L'adressage absolu, celui où l'adresse est intégrée dans l'instruction, est très simple à implémenter. Les adresses prennent moins d'un octet, vu que la taille de la RAM est très petite, les adresses sont très courtes, les intégrer dans des instructions elles-mêmes courtes n'est pas un problème. L'adresse est encodée sur 5 à 7 bits, selon le modèle, ce qui permet d'adresser entre 32 et 128 octets.
Les PIC ne supportent pas l'adressage indirect, mais peuvent l'émuler grâce à un '''registre d'adresse''' dédié. Il s'agit du registre FSR, qui mémorise l'adresse à lire/écrire. Il est possible de copier un pointeur dedans, qui provient soit de l'accumulateur, soit de la mémoire SRAM. Dans les deux cas, la donnée adressée est lue ou écrite dans un registre INDR, est un registre d’interfaçage rendu adressable. Le registre FSR est directement connecté sur le bus d'adresse.
Les modèles de base se débrouillent avec un registre FSR et un registre INDR, mais les modèles plus performants ont deux ou trois copies de chaque registre. Les modèles PIC18 ajoutent aussi des instructions LOAD/STORE qui émulent les modes d'adressage à post- ou pré-incrément/décrément, et le mode d'adressage "Base + Indice + Décalage", encore une fois en utilisant les registres FSR et INDR.
Avec tout ce qu'on vient de dire, vous devriez pouvoir comprendre la microarchitecture d'un PIC, qui est résumée dans ce schéma.
[[File:DocPIC16F84 all.png|centre|vignette|upright=2.5|Microarchitecture du PIC16F84.]]
===Le Fairchild F8 et la console de jeu Fairchild Channel F===
Un autre exemple est la Fairchild F8 de la défunte entreprise Fairchild Semiconductor. Il incorpore un processeur 8 bits, c'est à dire que le processeur fait des calculs sur des entiers de 8 bits maximum, une mémoire RAM de 64 octets, ainsi qu'une mémoire ROM de 1 kibioctet. Les 64 octets de RAM sont certes très peu, mais c'est suffisant pour certaines applications simples, comme les caisses automatiques de l'époque, ou des applications embarquées. Et de toute façon, il est possible d'ajouter de la mémoire RAM supplémentaire si les 64 octets de RAM intégrée ne suffisent pas. Le système était donc modulaire, adaptable selon les besoins, peu cher pour son implémentation minimale sans RAM en plus.
Vu qu'il s'agit d'un des tout premiers ordinateurs, il est sorti à une époque où la technologie était rudimentaire. À cette époque, le processeur était composé de pièces détachées qu'il fallait souder ensemble pour obtenir un processeur fonctionnel. Ce n'est que plus tard qu'est apparu le micro-processeur, qui regroupe un processeur complet dans un seul circuit intégré. Le résultat est que le processeur du Fairchild F8 est coupé en deux, l'unité de calcul et l'unité de contrôle sont placés dans des pièces détachées séparés.
Le microcontrôleur est composé de trois à quatre pièces détachées, certaines étant optionnelles. La première est le '''3850 CPU''', qui regroupe l'unité de calcul et la mémoire RAM intégrée. La seconde est le PSU (''3851 Program Storage Unit''), qui regroupe la mémoire ROM et l'unité de contrôle, ''program counter'' inclut. S'il y a besoin d'utiliser plus de RAM, il faut ajouter un circuit d’interface mémoire, qui est au choix le ''3852 Dynamic Memory Interface'' (DMI) ou le ''3853 Static Memory Interface'', le premier étant connecté à une mémoire de type DRAM, l'autre à une SRAM (nous verrons ce que sont les DRAM et les SRAM dans le prochain chapitre).
[[File:Fairchild F8.png|centre|vignette|upright=2|Fairchild F8]]
Le système minimal est composé d'un PSU et d'un 3850, sans les circuits d'interface mémoire. Le tout donne un système avec un processeur 8 bit, 64 octets de RAM et 1 kibioctet de ROM, les deux mémoires étant intégrées dans le "processeur". Le processeur gérait 4 entrées-sorties, chacune étant reliée avec un bus de 8 bit au processeur. Au passage, en 1977, Mostek a créé un microcontrôleur qui regroupe un PSU et un 3850 : le Mostek 3870. Le système minimal n'avait pas de bus d'adresse, vu que la RAM était intégrée au processeur. C'est les 3852 et 3853 qui ajoutaient un bus d'adresse. Ils ajoutent un bus d'adresse de 16 bits, ce qui permet d'adresser 64 kibioctets de RAM.
[[File:Fairchild-Channel-F.jpg|vignette|un Fairchild Channel F]]
Le Fairchild F8 a été utilisé dans la Fairchild Channel F, une des toute première console de seconde génération, à savoir des consoles qui utilisaient des cartouches de jeu. Avant les consoles de seconde génération, les consoles étaient non-programmables. Elles étaient conçues pour faire tourner un jeu précis, aucun autre, le jeu étant implémenté dans leurs circuits.
La Fairchild Channel F est composé du système minimal, auquel on a ajouté une carte son rudimentaire et 2 kibioctets de mémoire vidéo. La mémoire vidéo sert uniquement pour afficher des images à l'écran : on écrit l'image à afficher dedans, un circuit vidéo se charge de l'afficher à l'écran automatiquement. Le processeur ne fait qu'écrire dans cette RAM vidéo, il ne peut pas en lire le contenu. De la RAM supplémentaire peut cependant être ajoutée dans les cartouches de jeu.
===L'usage d'une architecture Harvard modifiée : les consoles 8 bits===
Pour encore améliorer la situation, il est possible d'utiliser une architecture Harvard modifiée, qui permet de lire des données depuis la mémoire ROM. Cela réduit encore plus les besoins en mémoire RAM. Les constantes manipulées par le programme sont mémorisées en ROM, lues depuis la ROM, au lieu d'être chargées en RAM. Les consoles de jeu utilisaient beaucoup de stratagème.
L'exemple type est celui des consoles 8 bits avec des graphismes en 2D. La cartouche de jeu contenait une ROM, qui mémorisait le code du jeu, les niveaux, les sprites et autres données graphiques. Leur carte graphique lisait directement les ''sprites'' depuis la mémoire ROM, sans avoir à les charger en mémoire vidéo. La mémoire vidéo se contentait de mémoriser le reste des informations graphiques, ainsi que des pointeurs vers les ''sprites'' en ROM. En conséquence, les consoles 8 bits n'avaient pas besoin de beaucoup de RAM, vu qu'une grande partie des données utiles étaient dans une ROM directement accessible par le processeur. A l'opposé, les micro-ordinateurs devaient copier les données d'un jeu depuis une disquette dans la mémoire RAM, ce qui demandait d'avoir plus de RAM.
Le passage au support CD sur les consoles 32 bits a eu la même conséquence. Le processeur ne pouvant pas lire directement le CD à sa guise, il fallait copier les données du CD en RAM. D'où l'apparition de temps de chargement assez longs, inexistants sur support cartouche.
Avec ce genre de stratagèmes, 256 octets de RAM est largement suffisant sur de nombreux systèmes, à condition qu'on ait assez de ROM pour coder un programme digne de ce nom. Par exemple, de nombreux systèmes embarqués simples s'en accommodent : des caisses enregistreuses, des systèmes de régulation de feu de circulation, etc.
===Le HP Nanoprocessor : un processeur sans ALU===
Un dernier exemple est celui du processeur HP Nanoprocessor, de l'entreprise HP. Il a été commercialisé en 1974, en même temps que les premiers micro-processeurs d'Intel. Tous les processeurs de l'époque étaient des processeurs 8 bits et le HP Nanoprocessor ne faisait pas exception. Ce n'était pas un processeur haute performance, il était destiné à des applications d'informatique industrielle ou embarquée. D'ailleurs, il utilisait des transistors de type metal-gate, peu performants, là où ses contemporains utilisait des transistors en silicium, plus performants.
Mais une caractéristique qui rend cela encore plus claire est qu'il n'y a pas d'ALU ! En effet, ce processeur est incapable de faire des additions, des soustractions ou autres opérations simples ! Il est cependant capable d'effectuer des incrémentations et décrémentations, des décalages, des opérations logiques comme des ET/OU/NON/XOR et bien d'autres. Il supporte en tout 48 instructions, avec un support limité des modes d'adressage indirects. Les instructions de branchement étaient des instructions SKIP, il n'y avait pas d'instructions de branchement généralistes.
Pour ce qui est des registres, il disposait de 16 registres de 8 bits et d'un accumulateur. Niveau mémoire, il était relié à une mémoire ROM, rien de plus. Il n'avait de RAM supplémentaire qu'on pouvait lui adjoindre, il devait se débrouiller avec seulement ses registres. Et cela ne posait pas de problèmes pour son usage. Seul le mode d'adressage indirect à registre est supporté, il n'y a pas de registres d'indices. Ce mode d'adressage permet de lire des données en mémoire ROM, la ROM pouvant contenir des tableaux de valeurs constantes.
: Il est possible de lui adjoindre de la RAM via les ports d'entrée-sortie, ainsi qu'une ALU, mais RAM et ALU sont traités comme des périphériques avec lesquels on communique, ils ne sont pas intégrés au processeur.
Niveau micro-architecture, il incorporait une unité de calcul logique et un circuit comparateur. Le comparateur était un circuit comparateur série des plus basiques, qui était utilisé pour les instructions de branchement et associées. L'unité de calcul logique gérait des incrémentations/décrémentation, des décalages, les opérations logiques et quelques autres. L'unité de calcul logique était bit-slicée, à savoir conçue en assemblant 8 ALU de 1 bit chacune, enchainées en série. Le tout était combiné à des circuits de ''carry skip''.
[[File:Unité de calcul du HP nanonprocessor.png|centre|vignette|upright=2|Unité de calcul du HP nanoprocessor]]
Son unité de décodage d'instruction était très simple, essentiellement basée sur des portes NOR, grâce à un encodage efficace des instructions machine. Le ''program counter'' fait 11 bits, ce qui permet d'adresser une ROM de 2 kibioctets. Le ''program counter'' était relié à un circuit incrémenteur qui gérait les isntructions SKIP (il pouvait incrémenter le ''program counter'' par pas de 1 ou de 2 en cas de SKIP). Le processeur contient aussi deux registres, qui servent en quelque sorte de pile d'adresse de retour. Un premier registre mémorise l'adresse de retour d'une fonction, l'autre mémorise le ''program counter'' lors d'une interruption, pour savoir où brancher à la fin de l'interruption.
[[File:HP nanoprocessor.png|centre|vignette|upright=2.5|HP nanoprocessor]]
Fait intéressant, le concepteur du processeur a gracieusement donné les masques utilisés pour graver le silicium du processeur au site [https://www.cpushack.com/ CPU Shack]. Les masques en question sont disponibles ici :
* [https://www.cpushack.com/2020/08/20/hp-nanoprocessor-mask-set/ HP NanoProcessor Mask Set]
* [https://www.cpushack.com/2020/08/09/the-forgotten-ones-hp-nanoprocessor/ The Forgotten Ones: HP Nanoprocessor]
Les masques ont été analysés par Ken Shirrif dans cet article de blog :
* [https://www.righto.com/2020/09/hp-nanoprocessor-part-ii-reverse.html HP Nanoprocessor part II: Reverse-engineering the circuits from the masks]
==Les processeurs 8/16 bits à architecture Von Neumann==
L'usage d'une architecture Harvard est une solution pour adresser plus de mémoire avec des CPU 8 bits. Mais plusieurs microprocesseurs commerciaux n'utilisaient pas cette solution. À la place, c'était des architectures Von Neumann, mais qui étaient capables de gérer des adresses de 16 bits. Les données faisaient 8 bits, les registres faisaient 8 bits, mais quelques techniques permettaient de gérer des adresses de 16 bits. Nous parlerons de '''processeurs 8/16 bits''' pour les désigner, et nous allons les étudier à part.
Un point important est que la gestion d'adresses de 16 bits permet d'adresser 64 kibioctets, qui peuvent être remplis avec de la RAM et de la ROM. On a donc le meilleur des mondes : 64 kibioctets de mémoire, mais avec des données de 8 bits et les économies de circuit qui vont avec. L'avantage est que le processeur peut maintenant gérer une vraie pile d'appel, pas seulement une pile d'adresse de retour. Il lui suffit pour cela d'intégrer un pointeur de pile codé sur 16 bits.
===Les modes d'adressage par page des CPU Motorola===
Les processeurs Motorola 8 bits étaient des processeurs 8 bits avec un bus d'adresse de 16 bits. C'était des processeurs à accumulateur incorporant deux registres d'indice, un registre d'état, un pointeur de pile, et un ''program counter''. Tous les registres sont reliés au bus d'adresse, sauf le registre d'état et l’accumulateur. Tous les registres font 8 bits, sauf le ''program counter''. La pile est câblée pour être dans un bloc de 256 octets compris entre l'adresse 1 0000 0000 et l'adresse 1 1111 1111, ce qui fait que son adressage se fait avec un seul octet.
[[File:6502-architecture.svg|centre|vignette|upright=1.5|Architecture simplifiée du 6502.</br> X et Y : registres d'indice ;</br> S : le pointeur de pile ;</br> A : accumulateur ;</br>P : registre d'état.</br>]]
Les processeurs Motorola 8 bits utilisaient une méthode simple pour adresser 64 kibioctets de RAM, avec des registres de 8 bits. Pour cela, ils utilisaient une variante de l'adressage base + décalage. Elle améliore l'adressage absolu, qui intègre l'adresse à lire/écrire dans l'instruction elle-même. L'adresse en question est de 8 bits et n'encode que les 8 bits de poids faible de l'adresse, les 8 bits de poids fort sont dans un '''registre de page''' adressé implicitement. L'adresse finale est obtenue en concaténant ce registre avec l'adresse mémoire intégrée dans l’instruction. Le résultat est que la mémoire était découpée en blocs de 256 consécutifs, chacun pouvant servir de fenêtre de 256 octets. Une page est réservée pour la pile, la seconde, comme dit plus haut.
Formellement, ce mode d'adressage a des ressemblances avec la commutation de banques, une technique qu'on verra dans les chapitres sur l'espace d'adressage et la mémoire virtuelle. Mais ce n'en est pas du tout : le registre de page est utilisé uniquement pour les accès mémoire avec le mode d'adressage base + décalage, mais pas pour les autres accès mémoire, qui gèrent des adresses complètes. Notons que l'usage d'un registre de page dédié fait que celui-ci est adressé implicitement.
Il faut noter que la technique a été utilisée sur des processeurs 16 bits, pour contourner la petite taille des instructions. Un exemple est celui du HP 2100, un processeur 16 bits. Il avait un registre de page de 5 bits et encodait 10 bits d'adresse dans ses instructions. Ses instructions d'accès mémoire disposaient d'un bit qui choisit quel mode d'adressage utiliser. S'il était à 0, l'adressage absolu était utilisé, le registre de page n'était pas utilisé. Mais s'il était à 1, le registre de page était utilisé pour calculer l'adresse.
Une évolution de l'adressage précédent est le '''mode page direct'''. Avec lui, le registre de page est étendu et contient une adresse mémoire complète. L'adresse finale n'est pas obtenue par concaténation, mais en additionnant le registre de page avec l'adresse fournie par adressage absolu + décalage. Un exemple est celui des premiers processeurs Motorola, qui géraient des adresses courtes de 8 bits. L'adresse courte de 8 bits correspondait non pas aux 256 premiers octets de la mémoire, mais à une fenêtre de 256 octets déplaçable en mémoire. La position de la fenêtre de 256 octets était spécifiée par le registre de page de 16 bits, qui précisait l'adresse du début de la fenêtre, celle de sa première donnée.
Il s'agit donc formellement d'adressage base + décalage, à un détail près : il n'y a qu'un seul registre de base. Le fait que ce registre de base soit unique fait qu'il est adressé implicitement, on n'a pas à encoder le numéro/noms de registre dans l'instruction. Le registre de base est utilisé uniquement pour l'adressage absolu, pas pour les autres accès mémoire. S'il y a des ressemblances avec la segmentation, une technique de mémoire virtuelle qu'on abordera dans quelques chapitres, ce n'en est pas vu que le registre de base est utilisé seulement pour un mode d'adressage bien précis.
===Le ''pseudo-aliasing'' des registres des processeurs Intel x86===
Voyons maintenant le cas des anciens processeurs 8 bits d'Intel à savoir l'Intel 4004, 4040, 8008 et 8080. Le Z80, un processeur inspiré des CPU Intel 8 bits, est aussi concerné. Avant de poursuivre, parlons des registres de ces processeurs. Les premiers CPU Intel incorporaient 7 registres de 8 bits nommés A, B, C, D, E, F, H, L, SP. Ils correspondent respectivement à : l'accumulateur A ; six registres nommés B, C, D, E, H et L ; le registre d'état F ; le pointeur de pile SP. Le Z80 ajoute deux registres d'indice X et Y. De plus, le Z80 dispose de registres d'interruption, qui sont en quelque sorte des copies des registres A, B, C, D, E, F, H, L. Le tout est illustré dans le tableau ci-dessous.
{|class="wikitable" style="text-align:center;"
|-
!
! Registres des CPU Intel
! Registres supplémentaires du Z80
|-
! Accumulateur
| A
| A'
|-
! Registre d'état
| F
| F'
|-
! Registres généraux
| B, C, D, E, H, L
| B', C', D', E', H', L'
|-
! Pointeur de pile
| colspan="2" | SP (sauf pour le 8008)
|-
! Registres d'indice
|
| X et Y
|}
Le 8008 incorpore une pile d'appel de 7 adresses, dans le processeur lui-même. Il en est de la même avec le 4004 et le 4040, comme on le verra dans la section sur les processeurs 4 bits. Mais le 8080 et le 8085 ont remplacé le tout par un simple pointeur de pile, afin d'avoir une véritable pile d'appel. Autant c'est impossible d'avoir une pile d'appel avec seulement 256 octets de mémoire, autant on peut se le permettre avec 65 536 adresses.
Pour gérer des adresses de 16 bits, ils auraient pu utiliser des registres d'adresse séparés, mais on préféré un système de '''pseudo-''aliasing'' de registres'''. Formellement, c'est un système qui concatène deux registres 8 bits pour obtenir une adresse de 16 bits. L’appariement a lieu lors de certaines opérations bien précises, qui n'ont de sens que pour les adresses : la lecture/écriture en mémoire, et l'incrémentation.
Il y avait cependant des contraintes quant aux paires de registres possibles, toutes les paires de registres n'étaient pas autorisées. Les CPU concernés sont donc des processeurs hybrides accumulateur-registre généraux. L'accumulateur ne peut pas être appairé, seuls les registres généraux le peuvent. Le Z80 autorise plus de paires que les CPU Intel. Voici les paires de registres qui pouvaient servir d'adresse 16 bits :
* Les CPU 8008 d'Intel autorisait une seule paire formée des registres H et L.
* Les autres processeurs, à savoir le 8080, le 8085 et le Z80, autorisaient : les paires BC, DE et HL.
Le 8008 ne gérait que des opérations sur 8 bits. Mais le 8080 et le 8085 ont ajouté des instructions 16 bits qui agissaient sur des paires de registre, que le Z80 a repris. Une paire de registres est considérée comme un registre unique de 16 bits pour certaines opérations arithmétiques, dont l'incrémentation. Voici la liste des instructions concernées :
* INC et DEC pour l'incrémentation et la décrémentation ;
* DAD : additionne le registre HL avec une autre paire (Hl inclus) ;
* LXI : copie une constante immédiate dans une paire de registres ;
* LHLD : lit 16 depuis la mémoire et l'enregistre dans une paire de registres ;
* SHLD : copie 16 bits depuis une paire de registres et l'enregistre en mémoire ;
* PUSH et POP : empile ou dépilent une paire de registre sur la pile ;
* XTHL : échange la paire HL avec les 16 bits au sommet de la pile d'appel ;
* XCHG : échange le contenu de la paire HL et DE.
Pour résumer, le processeur avait des instructions LOAD, STORE, PUSH et POP adaptées pour gérer des paires de registre. De plus, l'instruction XCHG permettait d’échanger le contenu des paires DE et HL. L'instruction a été étendue sur les processeurs 16 bits pour échanger tous les registres. Mais l'implémentation était alors différente. L'incrémentation sur une paire de 16 bit était très utile, car les adresses sont souvent incrémentées quand on parcours un tableau. Ces instructions nous donnent quelques indices sur ce qu'il y a dans le processeur.
Le système de pseudo-aliasing a un impact sur le banc de registre. Le banc de registre regroupe les registres généraux et le pointeur de pile, mais ne contient pas l'accumulateur. Les contraintes sur les paires de registres possibles ne s'expliquent que d'une seule manière : le banc de registre contient des registres de 16 bits, une paire de registres 8 bits est mémorisée dans un registre unique. Il faut donc faire une différence entre les registres architecturaux de 8 bits, et les registres réels de 16 bits.
Le banc de registre a un port de 8 bits pour les données, qui est fabriqué à partir d'un port 16 bits auquel on a rajouté un multiplexeur pour choisir soit l'octet de poids faible, soit l'octet de poids fort. Le bus de données fait 8 bits, ce qui fait que les instructions LOAD, STORE, PUSH et POP pour paires 16 bits sont réalisées en deux fois : on lit/écrit l'octet de poids faible, puis celui de poids fort. Par contre, le bus d'adresse fait bien 16 bits. Cela suggère que le banc de registre dispose d'un port de 16 bits dédié aux adresses, en plus du port de données 8 bits.
[[File:Architecture d'un CPU 8-16 bits avec un banc de registre double port.png|centre|vignette|upright=2|Architecture d'un CPU 8-16 bits avec un banc de registre double port]]
L'incrémentation d'une paire 16 bits ne coute rien à implémenter, ou presque. En effet, le processeur incorpore un incrémenteur 16 bits pour le ''program counter'', qui est relié au bus d'adresse. L'idée est de rentabiliser cet incrémenteur, en lui permettant d'incrémenter des données/adresses de 16 bits obtenues via pseudo-aliasing. De même, il peut être utilisé pour incrémenter le pointeur de pile, voire un compteur de rafraichissement mémoire (pour rappel, le rafraîchissement mémoire demande de balayer la mémoire d'adresse en adresse et été fait par le CPU à l'époque). Pour cela, il suffit de connecter le ''program counter'', le banc de registre, et l'incrémenteur, via un bus dédié.
[[File:Calcul d'adresse par ALU dédiée avec PC séparé.png|centre|vignette|upright=2|Calcul d'adresse par ALU dédiée avec PC séparé]]
Notez qu'on peut encore simplifier le tout en placant le ''program counter'' dans le banc de registre, ce qui ne gênera pas le travail de l'incrémenteur mais simplifiera le câblage au bus d'adresse. Ce n'était pas systématique, certains processeurs mettaient le ''program counter'' dans le banc de registre, d'autres non.
: Inclure le ''program counter'' dans le banc de registre permet parfois de remplir un vide. Par exemple, sur un processeur avec 12 registres, le banc de registre devrait faire idéalement 16 registres, inclure le ''program counter'' dedans fait monter le tout à 13.
[[File:Architecture d'un CPU 8-16 bits.png|centre|vignette|upright=2|Architecture d'un CPU 8-16 bits]]
Les processeurs Intel 8 bits, à savoir le 8008, le 8080 et le 8085 ; mettaient le ''program counter'' dans le banc de registre. Vous avez donc toutes les armes pour comprendre leur micro-architecture. Par exemple, voici la micro-architecture du processeur 8080. Remarquez le banc de registre, qui contient tous les registres sauf l'accumulateur et le registre. Il a deux ports : un pour les adresses et un pour les données. Notez le dé-multiplexeur sur le port de donnée. Pour le reste, il s'agit d'une architecture à accumulateur hybride des plus classiques.
[[File:Intel 8080 arch.svg|centre|vignette|upright=3|Microarchitecture de l'Intel 8080.]]
Le Z80 est un processeur inspiré du design des processeurs Intel 8 bits, mais avec pas mal d'améliorations. Un point particulier de ce processeur est son banc de registre. Il contient tous les registres du processeur, y compris l'accumulateur et le registre d'état ! Les seuls registres en-dehors du banc de registre sont le ''program counter'' et un compteur de rafraichissement mémoire IR.
Un autre point particulier est que les registres dans le banc de registres avaient une copie séparée accessible uniquement pour les interruptions, via fenêtrage de registres. Et l'accumulateur et le registre d'état étant dans le banc de registre, il y avait deux accumulateurs et deux registres d'état. Les registres A, B, C, D, E et F étaient dupliqués, par le pointeur de pile ni les registres d'indice. Les copies des registres étaient nommées A', B', C', D', E' et F'.
Le Z80 supportait des instructions d'échange de registre en plus des CPU Intel 8 bits. L'instruction EX peut échanger soit le contenu des paires D,E et H,F, soit la paire A,F avec la paire A',F'. L'instruction EXX échange les paires BC, DE, HL avec les paires BC', DE', HL'. En faisant cela, le programmeur pouvait utiliser deux fois plus de registres généraux s'il n'utilisait pas les interruptions. L'échange de paires se fait sans copies de registres, mais simplement en modifiant l'adresse envoyée sur le banc de registre. Pour cela, plusieurs bascules mémorisent des bits qui indiquent si les paires ont été échangées ou non. Il y a une bascule pour les paires DE , HL ; une autre pour les paires A,F et paire A',F', une dernière pour l'instruction EXX. En combinant ces bascules avec les noms de registres envoyés par le séquenceur, on peut échanger les paires de registres.
==Le cas particulier des processeurs 4 bits : le 4004 d'Intel==
L'Intel 4004 était le tout premier micro-processeur. Il s'agissait d'un microprocesseur de 4 bits, basé sur une architecture à accumulateur. Il disposait d'un accumulateur et de 16 registres d'indice, tous de 4 bits. Il faisait des calculs sur des données de 4 bits, appelées des nibbles. Cependant, sur ses 46 instructions machines supportées, 41 agissaient sur des opérandes de 8 bits, les 5 restantes sur des opérandes de 16 bits. Simplement, les calculs se faisaient en deux fois, en échangeant des données entre mémoire RAM et accumulateur.
Le 4004 est un circuit intégré avec peu de broches. Il dispose notamment d'un bus de données/adresse, qui est multiplexé, c’est-à-dire qu'il sert alternativement de bus de données et de bus d'adresse selon les besoins. Le bus de commande mémoire fait 5 bits, dont 4 pour les chips de RAM, un pour la ROM. Les adresses sont codées sur 12 bits, les données sur 4 et les instructions sur 8 bits. L'envoi d'une adresse sur le bus se fait en plusieurs fois, de même que la lecture d'une instruction. Il s'agit là d'une adaptation pour outrepasser les limitations d'un processeur 4 bit.
[[File:Intel 4004 processor pinout.png|centre|vignette|upright=2|Broches de l'Intel 4004. Nous verrons à quoi elles servent plus bas.]]
===L'espace d'adressage de l'Intel 4004===
Les adresses du processeur sont sur 12 bits, ce qui fait 4096 adresses différentes. Elles regroupent à la fois la ROM et la mémoire RAM, vu que l'architecture est une sorte de mélange bizarre entre une architecture Von Neumann et Harvard. Le processeur gère bien deux espaces d'adressage séparés, mais la RAM et la ROM sont reliés au même bus. La sortie CM-ROM du processeur indique si l'adresse envoyée correspond à la RAM ou la ROM. Un circuit de décodage d'adresse active ou désactive la RAM selon la valeur de ce bit, l'inverse pour la ROM, en agissant sur leurs bits Chip Select. Seule la RAM ou la ROM répondent alors à l'adresse.
Pour ce qui est de la RAM, le circuit de décodage d'adresse pouvait gérer au maximum 1024 adresses différentes, chacune contenant un nibble. Pour cela, le CPU 4004 était relié à une ou plusieurs RAM externes, des Intel 4002. Chaque Intel 4002 contenait 64 nibbles de données, plus 16 nibbles de statut qu'on ne détaillera pas ici. Les nibbles de statut étaient accessibles en utilisant des instructions d'entrée-sortie, donc pas avec des lectures/écritures mémoire. Les 64 nibbles de données sont découpés en 4 groupes de 16 nibbles. Le CPU pouvait être relié à maximum 16 Intel 4002, ce qui fait 1024 nibbles de données et 256 nibbles de statut. L'ensemble permet de remplir l'espace d'adressage de 1024 adresses.
===Le registre de page et le pseudo-aliasing des registres===
Sélectionner une adresse mémoire utilisait un mélange entre pseudo-aliasing et registre de page. Pour les données, les 1024 adresses étaient découpées en 4 pages de 256 adresses. Pour la ROM, les 4096 adresses étaient découpées en 16 pages de 256 adresses. Localiser une donnée dans une page ne requiert que 8 bits, 2/4 bits supplémentaires permettent de sélectionner la page voulue. Le registre de page était dans le processeur lui-même, et était relié aux sorties du processeur nommées CM-RAM 0, 1, 2 et 3. Les 4 sorties encodaient un nombre qui permet de sélectionner le numéro de page voulu.
Le registre de page fait 5 bits : un pour distinguer RAM et ROM, 4 bits pour sélectionner la page voulue. L'avantage est que la carte mère gère au maximum 16 chips de RAM, ce qui colle parfaitement avec les 4 utilisés pour sélectionner une page. Un chip de RAM correspond à une page, et chacun est activé ou désactivé suivant la page sélectionnée. Pour cela, il suffit d'ajouter un décodeur sur la carte mère, qui prend les 4 bits du registre de page et fournit les signaux Chip Select aux différents chips de RAM.
Reste alors à utiliser les 8 bits d'adresse à l'intérieur d'un chip de RAM. Le 4004 permettait de concaténer deux registres d'indice de 4 bits pour former une adresse de 8 bits. Les instructions d'accès mémoire pouvaient ainsi préciser une paire de registre d'indice pour préciser quelle adresse lire/écrire. Idem pour les branchements indirects : le processeur supportait une instruction de branchement indirect qui précisait l'adresse dans une paire de registres d'indice. Les registres d'indice sont donc assez mal nommés sur cette architecture, vu qu'ils peuvent servir soit de registre d'indice, soit de demi-registre d'adresse. Il s'agit là du système de pseudo-aliasing des registres, mais appliqué aux registres d'indice.
L'Intel 4004 gérait deux instructions pour gérer les adresses mémoires. La première, l'instruction DCL (''Designate Command Line'') configure le registre de page. Elle prend en entrée un numéro de page et le copie dans le registre de page. L'opérande peut provenir d'un registre d'indice ou de l'accumulateur. La seconde, l'instruction SRC (''Send Register Control'') concatène deux registres d'indice pour obtenir une adresse de 8 bits. Un accès mémoire se fait donc en maximum trois instructions : une qui configure le registre de page si ce n'est pas déjà fait, une instruction SRC pour envoyer l'adresse, et une troisième instruction qui dit s'il faut faire une lecture ou une écriture.
===La microarchitecture de l'Intel 4004===
Il incorporait une pile d'adresse de retour intégrée au processeur. La pile d'adresse acceptait exactement 3 adresses maximum. Elle était regroupée avec le ''program counter'' dans un banc de registre, de 4 registres. Le ''program counter'' et le pointeur de pile faisaient chacun 12 bits, soit trois nibble. Ils étaient incrémentés par un incrémenteur dédié.
SI on omet le registre de page et la pile d'adresse, le 4004 est une architecture à accumulateur des plus classiques, avec un bus interne unique, un banc de registre pour les registres d'indices, un accumulateur relié à une unité de calcul. Les registres d'indice étaient dans un banc de registre séparés, car ils faisaient 4 bits chacun, contrairement au pointeur de pile et le ''program counter''. Un détail important est que les bancs de registres du 4004 étaient implémentés avec de la DRAM, et non des registres usuels fabriqués avec des bascules 1 bit.
[[File:Microarchitecture de l'Intel 4004.png|centre|vignette|upright=2.5|Microarchitecture de l'Intel 4004]]
<noinclude>
{{NavChapitre | book=Fonctionnement d'un ordinateur
| prev=Les architectures à pile et mémoire-mémoire
| prevText=Les architectures à pile et mémoire-mémoire
| next=Les processeurs de traitement du signal
| nextText=Les processeurs de traitement du signal
}}
</noinclude>
lgevf3szixce629ygflom34s47o4x1j
765707
765706
2026-05-01T17:43:47Z
Mewtow
31375
/* Les microcontrôleurs PIC */
765707
wikitext
text/x-wiki
Nous avons déjà abordé la notion de processeur 8, 16, 32, 64 bits. Elle désigne la taille des registres généraux, ou de l'accumulateur. De nos jours, les processeurs 32 et 64 bits sont la norme, mais les premiers micro-processeurs étaient des processeurs 4 et 8, avant de passer rapidement au 16 bits. La raison est que leur budget en transistor limité faisait qu'on ne pouvait pas utiliser une ALU trop grande : une ALU 8 bit prend deux fois moins de place et de transistors qu'une ALU 16 bits. Cependant, les processeurs 8 bits avaient de sérieuses limitations qui étaient compensées par diverses solutions. Dans ce chapitre, nous allons faire une revue rapide des processeurs 8 bits et de leurs fonctionnalités.
La principale limitation des CPU 8 bits était l'adressage : des registres de 8 bits limitaient l'espace d'adressage à seulement 256 adresses, soit à peine 256 octets ! Intuitivement, on se dit que 256 octets est purement impraticable, on ne peut rien faire d'intéressant avec seulement 256 de RAM + ROM. Et c'est partiellement vrai. L'adage veut que 16 bits est la taille minimale intéressante, la limite à partir de laquelle on a assez de mémoire RAM/ROM pour coder des applications intéressantes. Mais 256 octets de RAM est largement suffisant sur de nombreux systèmes embarqués simples s'en accommodent : des caisses enregistreuses, des systèmes de régulation de feu de circulation, etc.
Pour les applications demandant plus de mémoire RAM, les CPU de l'époque contournaient la limitation de 256 octets de RAM avec de nombreux stratagèmes. Dans ce qui va suivre, nous allons séparer les CPU 8 bits selon qu'ils utilisent une architecture Harvard ou une architecture Von Neumann. La raison est qu'une architecture Harvard permet en soi de contourner partiellement ce problème d'adressage. Les choses sont plus compliquées avec une architecture Von Neumann.
==Les processeurs 8/16 bits à architecture Harvard ==
La première solution est d'utiliser une architecture Harvard. Le processeur 8 bit a alors deux espaces d'adressage : un pour la RAM, un autre pour la ROM. Et les deux utilisent des adresses de taille différente. La ROM est reliée à un bus d'adresse de 16 bits, alors que la RAM est elle connectée à un bus d'adresse de 8 bits. La RAM est donc limitée à 256 octets, alors que la ROM peut monter jusqu'à 64 kibioctets. Mine de rien, faire ainsi est largement suffisant.
Les processeurs de l'époque intégraient parfois les 256 octets de RAM directement dans le processeur. Beaucoup en implémentaient moins, avec par exemple seulement 64 octets de RAM, ou 32 octets, ou 128 octets. L'avantage est que cela éliminait le bus d'adresse des données et ne laissait que le bus d'adresse pour la ROM. On économisait ainsi beaucoup de broches sur le circuit intégré du CPU. Et pour les applications demandant plus de RAM, on pouvait ajouter un circuit séparé qui permettait d'adresser une RAM plus grande. Mais cela sera plus clair avec un exemple.
===Les microcontrôleurs PIC===
Les '''microcontrôleurs PIC''' regroupent des microcontrôleurs allant de microcontrôleurs 8 bit aux performances très faible, à des microcontrôleurs 32 bits bien plus puissants. Les microcontrôleurs PIC sont très utilisés dans l'embarqué ou d'informatique industrielle. Ils sont vendu à des volumes assez impressionnants, plusieurs millions par an. Et si vous avez ou êtes en train de faire des études d'électronique, je parie que vous les avez déjà vu en classe, ou que ce ne saurait tarder. Dans ce qui suit, nous allons nous concentrer sur les microcontrôleurs PIC 8 bits, à savoir les PIC 16, 16 et 18. Les PIC 24, qui sont des microcontrôleurs 16 bits, ne seront pas abordés.
Les microcontrôleurs PIC 8 bits incorporent une mémoire RAM très petite, ainsi qu'une architecture Harvard, comme dit plus haut. La mémoire ROM des PIC va de 1024 instructions à 4096 instructions. En comparaison, la mémoire RAM des microcontrôleurs PIC ne peut pas dépasser 256 adresses, et elle est encore plus petite en pratique sur certains modèles. Pour donner un exemple, le PIC16F84 a une RAM composée de 68 "registres" de 8 bits. Le terme "registres" devrait vous faire tiquer, mais c'est bien le terme utilisé dans la documentation des PIC. Et il faut admettre que la différence entre banc de registre et SRAM intégrée est floue, mais nous expliquerons pourquoi dans quelques paragraphes.
: Les PIC 18 peuvent adresser plus de 256 octets de RAM en utilisant la commutation de banques, une technique qui sera abordée dans plusieurs chapitres.
[[File:DocPIC16F84 3.png|centre|vignette|upright=3|Espaces d'adressage du PIC16F84.]]
Un détail est que la SRAM n'a qu'un seul port qui sert à la fois pour les lectures et écritures. Pour compenser, les PIC sont des architectures à accumulateur, où une opérande est lue depuis la SRAM, l'autre depuis l'accumulateur. Leur implémentation de l'accumulateur ajoute une petite subtilité : le résultat d'une opération arithmétique peut être enregistré ailleurs que dans l'accumulateur. Le résultat peut aussi remplacer la seconde opérande, celle lue en mémoire RAM. Dit autrement, le résultat est enregistré dans l'adresse mémoire source. Les instructions de calcul ont le choix : un bit dans leur encodage précise où enregistrer le résultat.
{|
|-
|[[File:DocPIC16F84 4.png|centre|vignette|upright=2|Microarchitecture simplifiée d'un microcontroleur PIC (ici, un 16F84).]]
|[[File:DocPIC16F84 5.png|centre|vignette|upright=2|Microarchitecture simplifiée d'un microcontroleur PIC (ici, un 16F84), avec les branchements directs.]]
|}
Les PIC incorporent une pile d'appel allant de 2 à 8 niveaux, suivant les modèles. Outre l'accumulateur, les PIC disposent de registres de contrôle, d'un ''program counter'', d'un registre d'état, et d'un pointeur de pile. Il y a aussi des registres pour les entrées et sorties. Les registres d'entrée-sortie permettent de lire ou écrire sur un port d'entrée-sortie ou de lire un ''timer''. En clair, les PIC ont un espace d'adressage séparé pour les entrées-sorties.
Un détail très important est que les registres sont mappés en mémoire, à quelques exceptions près ! En clair, on peut y accéder en lisant/écrivant à une adresse mémoire bien précise. Les seules registres qui ne sont pas mappés en mémoire sont l'accumulateur, la pile d'appel, et les registres d'entrée-sortie. Par exemple, sur les modèles 16F, l'espace d'adressage fait 128 octets, dont 32 sont réservés aux registres du processeur, ce qui fait que seules 96 octets sont adressables comme de la RAM. Mais les 128 octets sont un seul et unique SRAM dans le processeur. Ce qui explique qu'il est difficile de séparer banc de registre et RAM principale sur ce processeur : les deux sont fusionnées !
: Les modèles PIC 17 ont rendu l'accumulateur mappé en mémoire RAM !
[[File:DocPIC16F84.png|centre|vignette|upright=2|DocPIC16F84]]
Le processeur de ces microcontrôleurs a un jeu d'instruction propriétaire, le jeu d'instruction PIC. Les instructions PIC sont très petites. Les premières versions du jeu d'instruction utilisaient des instructions codées sur 12 bits, dont 5 pour l'adresse mémoire de la seconde opérande. Pour les branchements, 3 bits étaient utilisés pour l'opcode, 9 pour l'adresse de destination. Par la suite, les instructions ont été étendues à 13 bits sur les PIC1670, puis à 14, 15 et 16 bits. Les adresses ont alors été élargies, ce qui permet d'adresser en peu plus de mémoire RAM.
Les instructions se limitent à des additions/soustractions, des opérations bit à bit,des branchements, des instructions LOAD/STORE, ainsi que des opérations de manipulation de bit. Il y a une instruction pour mettre une adresse à zéro, qui peut aussi mettre à zéro l’accumulateur. La plupart des modèles n'a pas d'instruction MOV pour faire une copie entre deux registres, elle n'a été intégrée que sur les modèles haute performance.
Pour ce qui est des branchements, les PIC n'ont pas d'instructions de branchement conditionnels, ils font avec une SKIP instruction et des branchements inconditionnels. Par contre, ils ont des branchements pour les appels et retour de fonction. Mieux que ça, ils intègrent une pile d'appel d'environ 8 adresses de retour. Pour donner une idée, l'adresse de retour est encodée sur 10 bits sur les PIC16F84.
Pour les instructions de manipulation de bit, il y a des instructions pour tester/masquer un bit dans une opérande, 4 en tout ( mettre à 0, mettre à 1, tester si bit = 1, tester si bit = 0). Les instructions qui testent un bit prennent leur opérande dans l'accumulateur. Il y a aussi deux instructions de rotation à gauche et droite, qui tiennent compte de la retenue mémorisée dans le registre d'état. Mentionnons aussi une instruction pour inverser deux ''nibbles'' dans un octet.
Les PIC ont aussi des instructions d'incrémentation et de décrémentation, un peu spéciales. Ces dernières regroupent : une incrémentation normale, une décrémentation normale, une décrémentation fusionnée avec une instruction SKIP, et une incrémentation fusionnée avec une instruction SKIP. Les deux dernières incrémentent/décrémentent l'accumulateur et SKIP l'instruction suivante si le résultat est zéro. Elles permettent de fortement simplifier l'implémentation des boucles qui s'exécutent tant que leur compteur atteint zéro.
Les modèles haute performance ajoutent des instructions d'addition avec retenue entrante, idem pour la soustraction. De telles instructions ssont très utiles pour faire des additions/soustractions sur des opérandes de 16 bits. Le processeur a beau être un CPU 8 bits, il peut être utilisé pour faire des calculs 16 bits, la performance est alors amoindrie, mais ce n'est pas un problème pour les applications d'un tel microcontroleur.
Les modèles intiaux, comme les PIC 10 et 12, ne supportaient pas les interruptions, mais c'est chose réglé sur les modèles plus récents. Ils ont même des registres séparés pour les interruptions et les programmes normaux. De plus, ils intégrent nativement un ''watchdog timer''.
{|class="wikitable" style="text-align:center"
|+ Jeu d'instruction des dodèles PCI 16
|-
! colspan="5" | Instructions diverses
|-
| colspan="3" | 00 0000 0000 0000 || NOP || Ne fait rien
|-
| colspan="3" | 00 0000 0000 1000 || RETURN || Instruction de retour pour une fonction
|-
| colspan="3" | 00 0000 0000 1001 || NOP || Instruction de retour pour une interruption
|-
| colspan="3" | 00 0000 0110 0011 || SLEEP || Mise en veille
|-
| colspan="3" | 00 0000 0110 0100 || CLRWDT || RESET le ''watchdog timer'', intégré dans le PIC
|-
! colspan="5" | Instructions de manipulation de bit
|-
| 0100 || Position du bit dans l'opérande || Adresse mémoire || BCF || Met le bit à 1
|-
| 0101 || Position du bit dans l'opérande || Adresse mémoire || BSF || Met le bit à 0
|-
| 0110 || Position du bit dans l'opérande || Adresse mémoire || BTFSC || Teste si le bit adressé est à 1
|-
| 0111 || Position du bit dans l'opérande || Adresse mémoire || BTFSS || Teste si le bit adressé est à 0
|-
! colspan="5" | Branchements
|-
| 100 || colspan="2" | Adresse mémoire || CALL || Appel de fonction
|-
| 100 || colspan="2" | Adresse mémoire || GOTO || Branchement inconditionnel
|-
! colspan="5" | Instructions logiques/arithmétiques avec opérande lue en mémoire RAM
|-
| colspan="5" | ''Le bit '''d''' dans l'opcode indique la destination : accumulateur ou adresse mémoire''.
|-
| 0000001 || colspan="2" | Adresse mémoire || MOVWF || Store (accumulateur vers destination)
|-
| 000001d || colspan="2" | Adresse mémoire || MOVWF || Met à zéro la destination (adresse ou registre)
|-
| 000001d || colspan="2" | Adresse mémoire || SUBWF || Soustraction
|-
| 000010d|| colspan="2" | Adresse mémoire || DECF || Décrémentation
|-
| 000100d|| colspan="2" | Adresse mémoire || IORWF || OU bit à bit
|-
| 000101d|| colspan="2" | Adresse mémoire || ANDWF || ET bit à bit
|-
| 000110d || colspan="2" | Adresse mémoire || XORWF || XOR bit à bit
|-
| 000111d || colspan="2" | Adresse mémoire || ADDWF VWF || Addition
|-
| 001000d || colspan="2" | Adresse mémoire || MOVF || LOAD
|-
| 001001d || colspan="2" | Adresse mémoire || COMF || NOT bit à bit
|-
| 001010d || colspan="2" | Adresse mémoire || INCF || Incrémentation
|-
| 001011d || colspan="2" | Adresse mémoire || DECFSZ || Décrémentation, puis instruction SKIP si résultat = 0
|-
| 001100d || colspan="2" | Adresse mémoire || RRF || Rotation à droite avec retenue entrante
|-
| 001101d || colspan="2" | Adresse mémoire || RLF || Rotation à gauche avec retenue entrante
|-
| 001110d || colspan="2" | Adresse mémoire || SWAPF || Echange deux ''niblle'' dans un octet
|-
| 001111d || colspan="2" | Adresse mémoire || INCFSZ || Incrémentation, puis instruction SKIP si résultat = 0
|-
! colspan="5" | Instructions logiques/arithmétiques avec constante immédiate
|-
| 1100xx || colspan="2" | Constante immédiate (8bits) || MOVLW || Copie constante dans accumulateur
|-
| 1101xx || colspan="2" | Constante immédiate (8bits) || RETLW || MOV fusionné avec un retour de fonction
|-
| 111000 || colspan="2" | Constante immédiate (8bits) || IORLW || OU
|-
| 111001 || colspan="2" | Constante immédiate (8bits) || ANDLW || ET
|-
| 111010 || colspan="2" | Constante immédiate (8bits) || XORLW || XOR
|-
| 11110x || colspan="2" | Constante immédiate (8bits) || SUBLW || Soustraction
|-
| 11111x || colspan="2" | Constante immédiate (8bits) || ADDLW || Addition
|}
Les PIC gèrent l'adressage absolu et immédiat, mais pas plus. L'adressage absolu, celui où l'adresse est intégrée dans l'instruction, est très simple à implémenter. Les adresses prennent moins d'un octet, vu que la taille de la RAM est très petite, les adresses sont très courtes, les intégrer dans des instructions elles-mêmes courtes n'est pas un problème. L'adresse est encodée sur 5 à 7 bits, selon le modèle, ce qui permet d'adresser entre 32 et 128 octets.
Les PIC ne supportent pas l'adressage indirect, mais peuvent l'émuler grâce à un '''registre d'adresse''' dédié. Il s'agit du registre FSR, qui mémorise l'adresse à lire/écrire. Il est possible de copier un pointeur dedans, qui provient soit de l'accumulateur, soit de la mémoire SRAM. Dans les deux cas, la donnée adressée est lue ou écrite dans un registre INDR, est un registre d’interfaçage rendu adressable. Le registre FSR est directement connecté sur le bus d'adresse.
Les modèles de base se débrouillent avec un registre FSR et un registre INDR, mais les modèles plus performants ont deux ou trois copies de chaque registre. Les modèles PIC18 ajoutent aussi des instructions LOAD/STORE qui émulent les modes d'adressage à post- ou pré-incrément/décrément, et le mode d'adressage "Base + Indice + Décalage", encore une fois en utilisant les registres FSR et INDR.
Avec tout ce qu'on vient de dire, vous devriez pouvoir comprendre la microarchitecture d'un PIC, qui est résumée dans ce schéma.
[[File:DocPIC16F84 all.png|centre|vignette|upright=2.5|Microarchitecture du PIC16F84.]]
===Le Fairchild F8 et la console de jeu Fairchild Channel F===
Un autre exemple est la Fairchild F8 de la défunte entreprise Fairchild Semiconductor. Il incorpore un processeur 8 bits, c'est à dire que le processeur fait des calculs sur des entiers de 8 bits maximum, une mémoire RAM de 64 octets, ainsi qu'une mémoire ROM de 1 kibioctet. Les 64 octets de RAM sont certes très peu, mais c'est suffisant pour certaines applications simples, comme les caisses automatiques de l'époque, ou des applications embarquées. Et de toute façon, il est possible d'ajouter de la mémoire RAM supplémentaire si les 64 octets de RAM intégrée ne suffisent pas. Le système était donc modulaire, adaptable selon les besoins, peu cher pour son implémentation minimale sans RAM en plus.
Vu qu'il s'agit d'un des tout premiers ordinateurs, il est sorti à une époque où la technologie était rudimentaire. À cette époque, le processeur était composé de pièces détachées qu'il fallait souder ensemble pour obtenir un processeur fonctionnel. Ce n'est que plus tard qu'est apparu le micro-processeur, qui regroupe un processeur complet dans un seul circuit intégré. Le résultat est que le processeur du Fairchild F8 est coupé en deux, l'unité de calcul et l'unité de contrôle sont placés dans des pièces détachées séparés.
Le microcontrôleur est composé de trois à quatre pièces détachées, certaines étant optionnelles. La première est le '''3850 CPU''', qui regroupe l'unité de calcul et la mémoire RAM intégrée. La seconde est le PSU (''3851 Program Storage Unit''), qui regroupe la mémoire ROM et l'unité de contrôle, ''program counter'' inclut. S'il y a besoin d'utiliser plus de RAM, il faut ajouter un circuit d’interface mémoire, qui est au choix le ''3852 Dynamic Memory Interface'' (DMI) ou le ''3853 Static Memory Interface'', le premier étant connecté à une mémoire de type DRAM, l'autre à une SRAM (nous verrons ce que sont les DRAM et les SRAM dans le prochain chapitre).
[[File:Fairchild F8.png|centre|vignette|upright=2|Fairchild F8]]
Le système minimal est composé d'un PSU et d'un 3850, sans les circuits d'interface mémoire. Le tout donne un système avec un processeur 8 bit, 64 octets de RAM et 1 kibioctet de ROM, les deux mémoires étant intégrées dans le "processeur". Le processeur gérait 4 entrées-sorties, chacune étant reliée avec un bus de 8 bit au processeur. Au passage, en 1977, Mostek a créé un microcontrôleur qui regroupe un PSU et un 3850 : le Mostek 3870. Le système minimal n'avait pas de bus d'adresse, vu que la RAM était intégrée au processeur. C'est les 3852 et 3853 qui ajoutaient un bus d'adresse. Ils ajoutent un bus d'adresse de 16 bits, ce qui permet d'adresser 64 kibioctets de RAM.
[[File:Fairchild-Channel-F.jpg|vignette|un Fairchild Channel F]]
Le Fairchild F8 a été utilisé dans la Fairchild Channel F, une des toute première console de seconde génération, à savoir des consoles qui utilisaient des cartouches de jeu. Avant les consoles de seconde génération, les consoles étaient non-programmables. Elles étaient conçues pour faire tourner un jeu précis, aucun autre, le jeu étant implémenté dans leurs circuits.
La Fairchild Channel F est composé du système minimal, auquel on a ajouté une carte son rudimentaire et 2 kibioctets de mémoire vidéo. La mémoire vidéo sert uniquement pour afficher des images à l'écran : on écrit l'image à afficher dedans, un circuit vidéo se charge de l'afficher à l'écran automatiquement. Le processeur ne fait qu'écrire dans cette RAM vidéo, il ne peut pas en lire le contenu. De la RAM supplémentaire peut cependant être ajoutée dans les cartouches de jeu.
===L'usage d'une architecture Harvard modifiée : les consoles 8 bits===
Pour encore améliorer la situation, il est possible d'utiliser une architecture Harvard modifiée, qui permet de lire des données depuis la mémoire ROM. Cela réduit encore plus les besoins en mémoire RAM. Les constantes manipulées par le programme sont mémorisées en ROM, lues depuis la ROM, au lieu d'être chargées en RAM. Les consoles de jeu utilisaient beaucoup de stratagème.
L'exemple type est celui des consoles 8 bits avec des graphismes en 2D. La cartouche de jeu contenait une ROM, qui mémorisait le code du jeu, les niveaux, les sprites et autres données graphiques. Leur carte graphique lisait directement les ''sprites'' depuis la mémoire ROM, sans avoir à les charger en mémoire vidéo. La mémoire vidéo se contentait de mémoriser le reste des informations graphiques, ainsi que des pointeurs vers les ''sprites'' en ROM. En conséquence, les consoles 8 bits n'avaient pas besoin de beaucoup de RAM, vu qu'une grande partie des données utiles étaient dans une ROM directement accessible par le processeur. A l'opposé, les micro-ordinateurs devaient copier les données d'un jeu depuis une disquette dans la mémoire RAM, ce qui demandait d'avoir plus de RAM.
Le passage au support CD sur les consoles 32 bits a eu la même conséquence. Le processeur ne pouvant pas lire directement le CD à sa guise, il fallait copier les données du CD en RAM. D'où l'apparition de temps de chargement assez longs, inexistants sur support cartouche.
Avec ce genre de stratagèmes, 256 octets de RAM est largement suffisant sur de nombreux systèmes, à condition qu'on ait assez de ROM pour coder un programme digne de ce nom. Par exemple, de nombreux systèmes embarqués simples s'en accommodent : des caisses enregistreuses, des systèmes de régulation de feu de circulation, etc.
===Le HP Nanoprocessor : un processeur sans ALU===
Un dernier exemple est celui du processeur HP Nanoprocessor, de l'entreprise HP. Il a été commercialisé en 1974, en même temps que les premiers micro-processeurs d'Intel. Tous les processeurs de l'époque étaient des processeurs 8 bits et le HP Nanoprocessor ne faisait pas exception. Ce n'était pas un processeur haute performance, il était destiné à des applications d'informatique industrielle ou embarquée. D'ailleurs, il utilisait des transistors de type metal-gate, peu performants, là où ses contemporains utilisait des transistors en silicium, plus performants.
Mais une caractéristique qui rend cela encore plus claire est qu'il n'y a pas d'ALU ! En effet, ce processeur est incapable de faire des additions, des soustractions ou autres opérations simples ! Il est cependant capable d'effectuer des incrémentations et décrémentations, des décalages, des opérations logiques comme des ET/OU/NON/XOR et bien d'autres. Il supporte en tout 48 instructions, avec un support limité des modes d'adressage indirects. Les instructions de branchement étaient des instructions SKIP, il n'y avait pas d'instructions de branchement généralistes.
Pour ce qui est des registres, il disposait de 16 registres de 8 bits et d'un accumulateur. Niveau mémoire, il était relié à une mémoire ROM, rien de plus. Il n'avait de RAM supplémentaire qu'on pouvait lui adjoindre, il devait se débrouiller avec seulement ses registres. Et cela ne posait pas de problèmes pour son usage. Seul le mode d'adressage indirect à registre est supporté, il n'y a pas de registres d'indices. Ce mode d'adressage permet de lire des données en mémoire ROM, la ROM pouvant contenir des tableaux de valeurs constantes.
: Il est possible de lui adjoindre de la RAM via les ports d'entrée-sortie, ainsi qu'une ALU, mais RAM et ALU sont traités comme des périphériques avec lesquels on communique, ils ne sont pas intégrés au processeur.
Niveau micro-architecture, il incorporait une unité de calcul logique et un circuit comparateur. Le comparateur était un circuit comparateur série des plus basiques, qui était utilisé pour les instructions de branchement et associées. L'unité de calcul logique gérait des incrémentations/décrémentation, des décalages, les opérations logiques et quelques autres. L'unité de calcul logique était bit-slicée, à savoir conçue en assemblant 8 ALU de 1 bit chacune, enchainées en série. Le tout était combiné à des circuits de ''carry skip''.
[[File:Unité de calcul du HP nanonprocessor.png|centre|vignette|upright=2|Unité de calcul du HP nanoprocessor]]
Son unité de décodage d'instruction était très simple, essentiellement basée sur des portes NOR, grâce à un encodage efficace des instructions machine. Le ''program counter'' fait 11 bits, ce qui permet d'adresser une ROM de 2 kibioctets. Le ''program counter'' était relié à un circuit incrémenteur qui gérait les isntructions SKIP (il pouvait incrémenter le ''program counter'' par pas de 1 ou de 2 en cas de SKIP). Le processeur contient aussi deux registres, qui servent en quelque sorte de pile d'adresse de retour. Un premier registre mémorise l'adresse de retour d'une fonction, l'autre mémorise le ''program counter'' lors d'une interruption, pour savoir où brancher à la fin de l'interruption.
[[File:HP nanoprocessor.png|centre|vignette|upright=2.5|HP nanoprocessor]]
Fait intéressant, le concepteur du processeur a gracieusement donné les masques utilisés pour graver le silicium du processeur au site [https://www.cpushack.com/ CPU Shack]. Les masques en question sont disponibles ici :
* [https://www.cpushack.com/2020/08/20/hp-nanoprocessor-mask-set/ HP NanoProcessor Mask Set]
* [https://www.cpushack.com/2020/08/09/the-forgotten-ones-hp-nanoprocessor/ The Forgotten Ones: HP Nanoprocessor]
Les masques ont été analysés par Ken Shirrif dans cet article de blog :
* [https://www.righto.com/2020/09/hp-nanoprocessor-part-ii-reverse.html HP Nanoprocessor part II: Reverse-engineering the circuits from the masks]
==Les processeurs 8/16 bits à architecture Von Neumann==
L'usage d'une architecture Harvard est une solution pour adresser plus de mémoire avec des CPU 8 bits. Mais plusieurs microprocesseurs commerciaux n'utilisaient pas cette solution. À la place, c'était des architectures Von Neumann, mais qui étaient capables de gérer des adresses de 16 bits. Les données faisaient 8 bits, les registres faisaient 8 bits, mais quelques techniques permettaient de gérer des adresses de 16 bits. Nous parlerons de '''processeurs 8/16 bits''' pour les désigner, et nous allons les étudier à part.
Un point important est que la gestion d'adresses de 16 bits permet d'adresser 64 kibioctets, qui peuvent être remplis avec de la RAM et de la ROM. On a donc le meilleur des mondes : 64 kibioctets de mémoire, mais avec des données de 8 bits et les économies de circuit qui vont avec. L'avantage est que le processeur peut maintenant gérer une vraie pile d'appel, pas seulement une pile d'adresse de retour. Il lui suffit pour cela d'intégrer un pointeur de pile codé sur 16 bits.
===Les modes d'adressage par page des CPU Motorola===
Les processeurs Motorola 8 bits étaient des processeurs 8 bits avec un bus d'adresse de 16 bits. C'était des processeurs à accumulateur incorporant deux registres d'indice, un registre d'état, un pointeur de pile, et un ''program counter''. Tous les registres sont reliés au bus d'adresse, sauf le registre d'état et l’accumulateur. Tous les registres font 8 bits, sauf le ''program counter''. La pile est câblée pour être dans un bloc de 256 octets compris entre l'adresse 1 0000 0000 et l'adresse 1 1111 1111, ce qui fait que son adressage se fait avec un seul octet.
[[File:6502-architecture.svg|centre|vignette|upright=1.5|Architecture simplifiée du 6502.</br> X et Y : registres d'indice ;</br> S : le pointeur de pile ;</br> A : accumulateur ;</br>P : registre d'état.</br>]]
Les processeurs Motorola 8 bits utilisaient une méthode simple pour adresser 64 kibioctets de RAM, avec des registres de 8 bits. Pour cela, ils utilisaient une variante de l'adressage base + décalage. Elle améliore l'adressage absolu, qui intègre l'adresse à lire/écrire dans l'instruction elle-même. L'adresse en question est de 8 bits et n'encode que les 8 bits de poids faible de l'adresse, les 8 bits de poids fort sont dans un '''registre de page''' adressé implicitement. L'adresse finale est obtenue en concaténant ce registre avec l'adresse mémoire intégrée dans l’instruction. Le résultat est que la mémoire était découpée en blocs de 256 consécutifs, chacun pouvant servir de fenêtre de 256 octets. Une page est réservée pour la pile, la seconde, comme dit plus haut.
Formellement, ce mode d'adressage a des ressemblances avec la commutation de banques, une technique qu'on verra dans les chapitres sur l'espace d'adressage et la mémoire virtuelle. Mais ce n'en est pas du tout : le registre de page est utilisé uniquement pour les accès mémoire avec le mode d'adressage base + décalage, mais pas pour les autres accès mémoire, qui gèrent des adresses complètes. Notons que l'usage d'un registre de page dédié fait que celui-ci est adressé implicitement.
Il faut noter que la technique a été utilisée sur des processeurs 16 bits, pour contourner la petite taille des instructions. Un exemple est celui du HP 2100, un processeur 16 bits. Il avait un registre de page de 5 bits et encodait 10 bits d'adresse dans ses instructions. Ses instructions d'accès mémoire disposaient d'un bit qui choisit quel mode d'adressage utiliser. S'il était à 0, l'adressage absolu était utilisé, le registre de page n'était pas utilisé. Mais s'il était à 1, le registre de page était utilisé pour calculer l'adresse.
Une évolution de l'adressage précédent est le '''mode page direct'''. Avec lui, le registre de page est étendu et contient une adresse mémoire complète. L'adresse finale n'est pas obtenue par concaténation, mais en additionnant le registre de page avec l'adresse fournie par adressage absolu + décalage. Un exemple est celui des premiers processeurs Motorola, qui géraient des adresses courtes de 8 bits. L'adresse courte de 8 bits correspondait non pas aux 256 premiers octets de la mémoire, mais à une fenêtre de 256 octets déplaçable en mémoire. La position de la fenêtre de 256 octets était spécifiée par le registre de page de 16 bits, qui précisait l'adresse du début de la fenêtre, celle de sa première donnée.
Il s'agit donc formellement d'adressage base + décalage, à un détail près : il n'y a qu'un seul registre de base. Le fait que ce registre de base soit unique fait qu'il est adressé implicitement, on n'a pas à encoder le numéro/noms de registre dans l'instruction. Le registre de base est utilisé uniquement pour l'adressage absolu, pas pour les autres accès mémoire. S'il y a des ressemblances avec la segmentation, une technique de mémoire virtuelle qu'on abordera dans quelques chapitres, ce n'en est pas vu que le registre de base est utilisé seulement pour un mode d'adressage bien précis.
===Le ''pseudo-aliasing'' des registres des processeurs Intel x86===
Voyons maintenant le cas des anciens processeurs 8 bits d'Intel à savoir l'Intel 4004, 4040, 8008 et 8080. Le Z80, un processeur inspiré des CPU Intel 8 bits, est aussi concerné. Avant de poursuivre, parlons des registres de ces processeurs. Les premiers CPU Intel incorporaient 7 registres de 8 bits nommés A, B, C, D, E, F, H, L, SP. Ils correspondent respectivement à : l'accumulateur A ; six registres nommés B, C, D, E, H et L ; le registre d'état F ; le pointeur de pile SP. Le Z80 ajoute deux registres d'indice X et Y. De plus, le Z80 dispose de registres d'interruption, qui sont en quelque sorte des copies des registres A, B, C, D, E, F, H, L. Le tout est illustré dans le tableau ci-dessous.
{|class="wikitable" style="text-align:center;"
|-
!
! Registres des CPU Intel
! Registres supplémentaires du Z80
|-
! Accumulateur
| A
| A'
|-
! Registre d'état
| F
| F'
|-
! Registres généraux
| B, C, D, E, H, L
| B', C', D', E', H', L'
|-
! Pointeur de pile
| colspan="2" | SP (sauf pour le 8008)
|-
! Registres d'indice
|
| X et Y
|}
Le 8008 incorpore une pile d'appel de 7 adresses, dans le processeur lui-même. Il en est de la même avec le 4004 et le 4040, comme on le verra dans la section sur les processeurs 4 bits. Mais le 8080 et le 8085 ont remplacé le tout par un simple pointeur de pile, afin d'avoir une véritable pile d'appel. Autant c'est impossible d'avoir une pile d'appel avec seulement 256 octets de mémoire, autant on peut se le permettre avec 65 536 adresses.
Pour gérer des adresses de 16 bits, ils auraient pu utiliser des registres d'adresse séparés, mais on préféré un système de '''pseudo-''aliasing'' de registres'''. Formellement, c'est un système qui concatène deux registres 8 bits pour obtenir une adresse de 16 bits. L’appariement a lieu lors de certaines opérations bien précises, qui n'ont de sens que pour les adresses : la lecture/écriture en mémoire, et l'incrémentation.
Il y avait cependant des contraintes quant aux paires de registres possibles, toutes les paires de registres n'étaient pas autorisées. Les CPU concernés sont donc des processeurs hybrides accumulateur-registre généraux. L'accumulateur ne peut pas être appairé, seuls les registres généraux le peuvent. Le Z80 autorise plus de paires que les CPU Intel. Voici les paires de registres qui pouvaient servir d'adresse 16 bits :
* Les CPU 8008 d'Intel autorisait une seule paire formée des registres H et L.
* Les autres processeurs, à savoir le 8080, le 8085 et le Z80, autorisaient : les paires BC, DE et HL.
Le 8008 ne gérait que des opérations sur 8 bits. Mais le 8080 et le 8085 ont ajouté des instructions 16 bits qui agissaient sur des paires de registre, que le Z80 a repris. Une paire de registres est considérée comme un registre unique de 16 bits pour certaines opérations arithmétiques, dont l'incrémentation. Voici la liste des instructions concernées :
* INC et DEC pour l'incrémentation et la décrémentation ;
* DAD : additionne le registre HL avec une autre paire (Hl inclus) ;
* LXI : copie une constante immédiate dans une paire de registres ;
* LHLD : lit 16 depuis la mémoire et l'enregistre dans une paire de registres ;
* SHLD : copie 16 bits depuis une paire de registres et l'enregistre en mémoire ;
* PUSH et POP : empile ou dépilent une paire de registre sur la pile ;
* XTHL : échange la paire HL avec les 16 bits au sommet de la pile d'appel ;
* XCHG : échange le contenu de la paire HL et DE.
Pour résumer, le processeur avait des instructions LOAD, STORE, PUSH et POP adaptées pour gérer des paires de registre. De plus, l'instruction XCHG permettait d’échanger le contenu des paires DE et HL. L'instruction a été étendue sur les processeurs 16 bits pour échanger tous les registres. Mais l'implémentation était alors différente. L'incrémentation sur une paire de 16 bit était très utile, car les adresses sont souvent incrémentées quand on parcours un tableau. Ces instructions nous donnent quelques indices sur ce qu'il y a dans le processeur.
Le système de pseudo-aliasing a un impact sur le banc de registre. Le banc de registre regroupe les registres généraux et le pointeur de pile, mais ne contient pas l'accumulateur. Les contraintes sur les paires de registres possibles ne s'expliquent que d'une seule manière : le banc de registre contient des registres de 16 bits, une paire de registres 8 bits est mémorisée dans un registre unique. Il faut donc faire une différence entre les registres architecturaux de 8 bits, et les registres réels de 16 bits.
Le banc de registre a un port de 8 bits pour les données, qui est fabriqué à partir d'un port 16 bits auquel on a rajouté un multiplexeur pour choisir soit l'octet de poids faible, soit l'octet de poids fort. Le bus de données fait 8 bits, ce qui fait que les instructions LOAD, STORE, PUSH et POP pour paires 16 bits sont réalisées en deux fois : on lit/écrit l'octet de poids faible, puis celui de poids fort. Par contre, le bus d'adresse fait bien 16 bits. Cela suggère que le banc de registre dispose d'un port de 16 bits dédié aux adresses, en plus du port de données 8 bits.
[[File:Architecture d'un CPU 8-16 bits avec un banc de registre double port.png|centre|vignette|upright=2|Architecture d'un CPU 8-16 bits avec un banc de registre double port]]
L'incrémentation d'une paire 16 bits ne coute rien à implémenter, ou presque. En effet, le processeur incorpore un incrémenteur 16 bits pour le ''program counter'', qui est relié au bus d'adresse. L'idée est de rentabiliser cet incrémenteur, en lui permettant d'incrémenter des données/adresses de 16 bits obtenues via pseudo-aliasing. De même, il peut être utilisé pour incrémenter le pointeur de pile, voire un compteur de rafraichissement mémoire (pour rappel, le rafraîchissement mémoire demande de balayer la mémoire d'adresse en adresse et été fait par le CPU à l'époque). Pour cela, il suffit de connecter le ''program counter'', le banc de registre, et l'incrémenteur, via un bus dédié.
[[File:Calcul d'adresse par ALU dédiée avec PC séparé.png|centre|vignette|upright=2|Calcul d'adresse par ALU dédiée avec PC séparé]]
Notez qu'on peut encore simplifier le tout en placant le ''program counter'' dans le banc de registre, ce qui ne gênera pas le travail de l'incrémenteur mais simplifiera le câblage au bus d'adresse. Ce n'était pas systématique, certains processeurs mettaient le ''program counter'' dans le banc de registre, d'autres non.
: Inclure le ''program counter'' dans le banc de registre permet parfois de remplir un vide. Par exemple, sur un processeur avec 12 registres, le banc de registre devrait faire idéalement 16 registres, inclure le ''program counter'' dedans fait monter le tout à 13.
[[File:Architecture d'un CPU 8-16 bits.png|centre|vignette|upright=2|Architecture d'un CPU 8-16 bits]]
Les processeurs Intel 8 bits, à savoir le 8008, le 8080 et le 8085 ; mettaient le ''program counter'' dans le banc de registre. Vous avez donc toutes les armes pour comprendre leur micro-architecture. Par exemple, voici la micro-architecture du processeur 8080. Remarquez le banc de registre, qui contient tous les registres sauf l'accumulateur et le registre. Il a deux ports : un pour les adresses et un pour les données. Notez le dé-multiplexeur sur le port de donnée. Pour le reste, il s'agit d'une architecture à accumulateur hybride des plus classiques.
[[File:Intel 8080 arch.svg|centre|vignette|upright=3|Microarchitecture de l'Intel 8080.]]
Le Z80 est un processeur inspiré du design des processeurs Intel 8 bits, mais avec pas mal d'améliorations. Un point particulier de ce processeur est son banc de registre. Il contient tous les registres du processeur, y compris l'accumulateur et le registre d'état ! Les seuls registres en-dehors du banc de registre sont le ''program counter'' et un compteur de rafraichissement mémoire IR.
Un autre point particulier est que les registres dans le banc de registres avaient une copie séparée accessible uniquement pour les interruptions, via fenêtrage de registres. Et l'accumulateur et le registre d'état étant dans le banc de registre, il y avait deux accumulateurs et deux registres d'état. Les registres A, B, C, D, E et F étaient dupliqués, par le pointeur de pile ni les registres d'indice. Les copies des registres étaient nommées A', B', C', D', E' et F'.
Le Z80 supportait des instructions d'échange de registre en plus des CPU Intel 8 bits. L'instruction EX peut échanger soit le contenu des paires D,E et H,F, soit la paire A,F avec la paire A',F'. L'instruction EXX échange les paires BC, DE, HL avec les paires BC', DE', HL'. En faisant cela, le programmeur pouvait utiliser deux fois plus de registres généraux s'il n'utilisait pas les interruptions. L'échange de paires se fait sans copies de registres, mais simplement en modifiant l'adresse envoyée sur le banc de registre. Pour cela, plusieurs bascules mémorisent des bits qui indiquent si les paires ont été échangées ou non. Il y a une bascule pour les paires DE , HL ; une autre pour les paires A,F et paire A',F', une dernière pour l'instruction EXX. En combinant ces bascules avec les noms de registres envoyés par le séquenceur, on peut échanger les paires de registres.
==Le cas particulier des processeurs 4 bits : le 4004 d'Intel==
L'Intel 4004 était le tout premier micro-processeur. Il s'agissait d'un microprocesseur de 4 bits, basé sur une architecture à accumulateur. Il disposait d'un accumulateur et de 16 registres d'indice, tous de 4 bits. Il faisait des calculs sur des données de 4 bits, appelées des nibbles. Cependant, sur ses 46 instructions machines supportées, 41 agissaient sur des opérandes de 8 bits, les 5 restantes sur des opérandes de 16 bits. Simplement, les calculs se faisaient en deux fois, en échangeant des données entre mémoire RAM et accumulateur.
Le 4004 est un circuit intégré avec peu de broches. Il dispose notamment d'un bus de données/adresse, qui est multiplexé, c’est-à-dire qu'il sert alternativement de bus de données et de bus d'adresse selon les besoins. Le bus de commande mémoire fait 5 bits, dont 4 pour les chips de RAM, un pour la ROM. Les adresses sont codées sur 12 bits, les données sur 4 et les instructions sur 8 bits. L'envoi d'une adresse sur le bus se fait en plusieurs fois, de même que la lecture d'une instruction. Il s'agit là d'une adaptation pour outrepasser les limitations d'un processeur 4 bit.
[[File:Intel 4004 processor pinout.png|centre|vignette|upright=2|Broches de l'Intel 4004. Nous verrons à quoi elles servent plus bas.]]
===L'espace d'adressage de l'Intel 4004===
Les adresses du processeur sont sur 12 bits, ce qui fait 4096 adresses différentes. Elles regroupent à la fois la ROM et la mémoire RAM, vu que l'architecture est une sorte de mélange bizarre entre une architecture Von Neumann et Harvard. Le processeur gère bien deux espaces d'adressage séparés, mais la RAM et la ROM sont reliés au même bus. La sortie CM-ROM du processeur indique si l'adresse envoyée correspond à la RAM ou la ROM. Un circuit de décodage d'adresse active ou désactive la RAM selon la valeur de ce bit, l'inverse pour la ROM, en agissant sur leurs bits Chip Select. Seule la RAM ou la ROM répondent alors à l'adresse.
Pour ce qui est de la RAM, le circuit de décodage d'adresse pouvait gérer au maximum 1024 adresses différentes, chacune contenant un nibble. Pour cela, le CPU 4004 était relié à une ou plusieurs RAM externes, des Intel 4002. Chaque Intel 4002 contenait 64 nibbles de données, plus 16 nibbles de statut qu'on ne détaillera pas ici. Les nibbles de statut étaient accessibles en utilisant des instructions d'entrée-sortie, donc pas avec des lectures/écritures mémoire. Les 64 nibbles de données sont découpés en 4 groupes de 16 nibbles. Le CPU pouvait être relié à maximum 16 Intel 4002, ce qui fait 1024 nibbles de données et 256 nibbles de statut. L'ensemble permet de remplir l'espace d'adressage de 1024 adresses.
===Le registre de page et le pseudo-aliasing des registres===
Sélectionner une adresse mémoire utilisait un mélange entre pseudo-aliasing et registre de page. Pour les données, les 1024 adresses étaient découpées en 4 pages de 256 adresses. Pour la ROM, les 4096 adresses étaient découpées en 16 pages de 256 adresses. Localiser une donnée dans une page ne requiert que 8 bits, 2/4 bits supplémentaires permettent de sélectionner la page voulue. Le registre de page était dans le processeur lui-même, et était relié aux sorties du processeur nommées CM-RAM 0, 1, 2 et 3. Les 4 sorties encodaient un nombre qui permet de sélectionner le numéro de page voulu.
Le registre de page fait 5 bits : un pour distinguer RAM et ROM, 4 bits pour sélectionner la page voulue. L'avantage est que la carte mère gère au maximum 16 chips de RAM, ce qui colle parfaitement avec les 4 utilisés pour sélectionner une page. Un chip de RAM correspond à une page, et chacun est activé ou désactivé suivant la page sélectionnée. Pour cela, il suffit d'ajouter un décodeur sur la carte mère, qui prend les 4 bits du registre de page et fournit les signaux Chip Select aux différents chips de RAM.
Reste alors à utiliser les 8 bits d'adresse à l'intérieur d'un chip de RAM. Le 4004 permettait de concaténer deux registres d'indice de 4 bits pour former une adresse de 8 bits. Les instructions d'accès mémoire pouvaient ainsi préciser une paire de registre d'indice pour préciser quelle adresse lire/écrire. Idem pour les branchements indirects : le processeur supportait une instruction de branchement indirect qui précisait l'adresse dans une paire de registres d'indice. Les registres d'indice sont donc assez mal nommés sur cette architecture, vu qu'ils peuvent servir soit de registre d'indice, soit de demi-registre d'adresse. Il s'agit là du système de pseudo-aliasing des registres, mais appliqué aux registres d'indice.
L'Intel 4004 gérait deux instructions pour gérer les adresses mémoires. La première, l'instruction DCL (''Designate Command Line'') configure le registre de page. Elle prend en entrée un numéro de page et le copie dans le registre de page. L'opérande peut provenir d'un registre d'indice ou de l'accumulateur. La seconde, l'instruction SRC (''Send Register Control'') concatène deux registres d'indice pour obtenir une adresse de 8 bits. Un accès mémoire se fait donc en maximum trois instructions : une qui configure le registre de page si ce n'est pas déjà fait, une instruction SRC pour envoyer l'adresse, et une troisième instruction qui dit s'il faut faire une lecture ou une écriture.
===La microarchitecture de l'Intel 4004===
Il incorporait une pile d'adresse de retour intégrée au processeur. La pile d'adresse acceptait exactement 3 adresses maximum. Elle était regroupée avec le ''program counter'' dans un banc de registre, de 4 registres. Le ''program counter'' et le pointeur de pile faisaient chacun 12 bits, soit trois nibble. Ils étaient incrémentés par un incrémenteur dédié.
SI on omet le registre de page et la pile d'adresse, le 4004 est une architecture à accumulateur des plus classiques, avec un bus interne unique, un banc de registre pour les registres d'indices, un accumulateur relié à une unité de calcul. Les registres d'indice étaient dans un banc de registre séparés, car ils faisaient 4 bits chacun, contrairement au pointeur de pile et le ''program counter''. Un détail important est que les bancs de registres du 4004 étaient implémentés avec de la DRAM, et non des registres usuels fabriqués avec des bascules 1 bit.
[[File:Microarchitecture de l'Intel 4004.png|centre|vignette|upright=2.5|Microarchitecture de l'Intel 4004]]
<noinclude>
{{NavChapitre | book=Fonctionnement d'un ordinateur
| prev=Les architectures à pile et mémoire-mémoire
| prevText=Les architectures à pile et mémoire-mémoire
| next=Les processeurs de traitement du signal
| nextText=Les processeurs de traitement du signal
}}
</noinclude>
ksy3ij30ix1z5g1ka5yw73ufrkv3nhv
765708
765707
2026-05-01T17:45:33Z
Mewtow
31375
/* Les microcontrôleurs PIC */
765708
wikitext
text/x-wiki
Nous avons déjà abordé la notion de processeur 8, 16, 32, 64 bits. Elle désigne la taille des registres généraux, ou de l'accumulateur. De nos jours, les processeurs 32 et 64 bits sont la norme, mais les premiers micro-processeurs étaient des processeurs 4 et 8, avant de passer rapidement au 16 bits. La raison est que leur budget en transistor limité faisait qu'on ne pouvait pas utiliser une ALU trop grande : une ALU 8 bit prend deux fois moins de place et de transistors qu'une ALU 16 bits. Cependant, les processeurs 8 bits avaient de sérieuses limitations qui étaient compensées par diverses solutions. Dans ce chapitre, nous allons faire une revue rapide des processeurs 8 bits et de leurs fonctionnalités.
La principale limitation des CPU 8 bits était l'adressage : des registres de 8 bits limitaient l'espace d'adressage à seulement 256 adresses, soit à peine 256 octets ! Intuitivement, on se dit que 256 octets est purement impraticable, on ne peut rien faire d'intéressant avec seulement 256 de RAM + ROM. Et c'est partiellement vrai. L'adage veut que 16 bits est la taille minimale intéressante, la limite à partir de laquelle on a assez de mémoire RAM/ROM pour coder des applications intéressantes. Mais 256 octets de RAM est largement suffisant sur de nombreux systèmes embarqués simples s'en accommodent : des caisses enregistreuses, des systèmes de régulation de feu de circulation, etc.
Pour les applications demandant plus de mémoire RAM, les CPU de l'époque contournaient la limitation de 256 octets de RAM avec de nombreux stratagèmes. Dans ce qui va suivre, nous allons séparer les CPU 8 bits selon qu'ils utilisent une architecture Harvard ou une architecture Von Neumann. La raison est qu'une architecture Harvard permet en soi de contourner partiellement ce problème d'adressage. Les choses sont plus compliquées avec une architecture Von Neumann.
==Les processeurs 8/16 bits à architecture Harvard ==
La première solution est d'utiliser une architecture Harvard. Le processeur 8 bit a alors deux espaces d'adressage : un pour la RAM, un autre pour la ROM. Et les deux utilisent des adresses de taille différente. La ROM est reliée à un bus d'adresse de 16 bits, alors que la RAM est elle connectée à un bus d'adresse de 8 bits. La RAM est donc limitée à 256 octets, alors que la ROM peut monter jusqu'à 64 kibioctets. Mine de rien, faire ainsi est largement suffisant.
Les processeurs de l'époque intégraient parfois les 256 octets de RAM directement dans le processeur. Beaucoup en implémentaient moins, avec par exemple seulement 64 octets de RAM, ou 32 octets, ou 128 octets. L'avantage est que cela éliminait le bus d'adresse des données et ne laissait que le bus d'adresse pour la ROM. On économisait ainsi beaucoup de broches sur le circuit intégré du CPU. Et pour les applications demandant plus de RAM, on pouvait ajouter un circuit séparé qui permettait d'adresser une RAM plus grande. Mais cela sera plus clair avec un exemple.
===Les microcontrôleurs PIC===
Les '''microcontrôleurs PIC''' regroupent des microcontrôleurs allant de microcontrôleurs 8 bit aux performances très faible, à des microcontrôleurs 32 bits bien plus puissants. Les microcontrôleurs PIC sont très utilisés dans l'embarqué ou d'informatique industrielle. Ils sont vendu à des volumes assez impressionnants, plusieurs millions par an. Et si vous avez ou êtes en train de faire des études d'électronique, je parie que vous les avez déjà vu en classe, ou que ce ne saurait tarder. Dans ce qui suit, nous allons nous concentrer sur les microcontrôleurs PIC 8 bits, à savoir les PIC 16, 16 et 18. Les PIC 24, qui sont des microcontrôleurs 16 bits, ne seront pas abordés.
Les microcontrôleurs PIC 8 bits incorporent une mémoire RAM très petite, ainsi qu'une architecture Harvard, comme dit plus haut. La mémoire ROM des PIC va de 1024 instructions à 4096 instructions. En comparaison, la mémoire RAM des microcontrôleurs PIC ne peut pas dépasser 256 adresses, et elle est encore plus petite en pratique sur certains modèles. Pour donner un exemple, le PIC16F84 a une RAM composée de 68 "registres" de 8 bits. Le terme "registres" devrait vous faire tiquer, mais c'est bien le terme utilisé dans la documentation des PIC. Et il faut admettre que la différence entre banc de registre et SRAM intégrée est floue, mais nous expliquerons pourquoi dans quelques paragraphes.
: Les PIC 18 peuvent adresser plus de 256 octets de RAM en utilisant la commutation de banques, une technique qui sera abordée dans plusieurs chapitres.
[[File:DocPIC16F84 3.png|centre|vignette|upright=3|Espaces d'adressage du PIC16F84.]]
Un détail est que la SRAM n'a qu'un seul port qui sert à la fois pour les lectures et écritures. Pour compenser, les PIC sont des architectures à accumulateur, où une opérande est lue depuis la SRAM, l'autre depuis l'accumulateur. Leur implémentation de l'accumulateur ajoute une petite subtilité : le résultat d'une opération arithmétique peut être enregistré ailleurs que dans l'accumulateur. Le résultat peut aussi remplacer la seconde opérande, celle lue en mémoire RAM. Dit autrement, le résultat est enregistré dans l'adresse mémoire source. Les instructions de calcul ont le choix : un bit dans leur encodage précise où enregistrer le résultat.
{|
|-
|[[File:DocPIC16F84 4.png|centre|vignette|upright=2|Microarchitecture simplifiée d'un microcontroleur PIC (ici, un 16F84).]]
|[[File:DocPIC16F84 5.png|centre|vignette|upright=2|Microarchitecture simplifiée d'un microcontroleur PIC (ici, un 16F84), avec les branchements directs.]]
|}
Les PIC incorporent une pile d'appel allant de 2 à 8 niveaux, suivant les modèles. Outre l'accumulateur, les PIC disposent de registres de contrôle, d'un ''program counter'', d'un registre d'état, et d'un pointeur de pile. Il y a aussi des registres pour les entrées et sorties. Les registres d'entrée-sortie permettent de lire ou écrire sur un port d'entrée-sortie ou de lire un ''timer''. En clair, les PIC ont un espace d'adressage séparé pour les entrées-sorties.
Un détail très important est que les registres sont mappés en mémoire, à quelques exceptions près ! En clair, on peut y accéder en lisant/écrivant à une adresse mémoire bien précise. Les seules registres qui ne sont pas mappés en mémoire sont l'accumulateur, la pile d'appel, et les registres d'entrée-sortie. Par exemple, sur les modèles 16F, l'espace d'adressage fait 128 octets, dont 32 sont réservés aux registres du processeur, ce qui fait que seules 96 octets sont adressables comme de la RAM. Mais les 128 octets sont un seul et unique SRAM dans le processeur. Ce qui explique qu'il est difficile de séparer banc de registre et RAM principale sur ce processeur : les deux sont fusionnées !
: Les modèles PIC 17 ont rendu l'accumulateur mappé en mémoire RAM !
[[File:DocPIC16F84.png|centre|vignette|upright=2|DocPIC16F84]]
Le processeur de ces microcontrôleurs a un jeu d'instruction propriétaire, le jeu d'instruction PIC. Les instructions PIC sont très petites. Les premières versions du jeu d'instruction utilisaient des instructions codées sur 12 bits, dont 5 pour l'adresse mémoire de la seconde opérande. Pour les branchements, 3 bits étaient utilisés pour l'opcode, 9 pour l'adresse de destination. Par la suite, les instructions ont été étendues à 13 bits sur les PIC1670, puis à 14, 15 et 16 bits. Les adresses ont alors été élargies, ce qui permet d'adresser en peu plus de mémoire RAM.
Les instructions se limitent à des additions/soustractions, des opérations bit à bit,des branchements, des instructions LOAD/STORE, ainsi que des opérations de manipulation de bit. Il y a une instruction pour mettre une adresse à zéro, qui peut aussi mettre à zéro l’accumulateur. La plupart des modèles n'a pas d'instruction MOV pour faire une copie entre deux registres, elle n'a été intégrée que sur les modèles haute performance.
Pour ce qui est des branchements, les PIC n'ont pas d'instructions de branchement conditionnels, ils font avec une SKIP instruction et des branchements inconditionnels. Par contre, ils ont des branchements pour les appels et retour de fonction. Mieux que ça, ils intègrent une pile d'appel d'environ 8 adresses de retour. Pour donner une idée, l'adresse de retour est encodée sur 10 bits sur les PIC16F84.
Pour les instructions de manipulation de bit, il y a des instructions pour tester/masquer un bit dans une opérande, 4 en tout ( mettre à 0, mettre à 1, tester si bit = 1, tester si bit = 0). Les instructions qui testent un bit prennent leur opérande dans l'accumulateur. Il y a aussi deux instructions de rotation à gauche et droite, qui tiennent compte de la retenue mémorisée dans le registre d'état. Mentionnons aussi une instruction pour inverser deux ''nibbles'' dans un octet.
Les PIC ont aussi des instructions d'incrémentation et de décrémentation, un peu spéciales. Ces dernières regroupent : une incrémentation normale, une décrémentation normale, une décrémentation fusionnée avec une instruction SKIP, et une incrémentation fusionnée avec une instruction SKIP. Les deux dernières incrémentent/décrémentent l'accumulateur et SKIP l'instruction suivante si le résultat est zéro. Elles permettent de fortement simplifier l'implémentation des boucles qui s'exécutent tant que leur compteur atteint zéro.
Les modèles haute performance ajoutent des instructions d'addition avec retenue entrante, idem pour la soustraction. De telles instructions ssont très utiles pour faire des additions/soustractions sur des opérandes de 16 bits. Le processeur a beau être un CPU 8 bits, il peut être utilisé pour faire des calculs 16 bits, la performance est alors amoindrie, mais ce n'est pas un problème pour les applications d'un tel microcontroleur.
Les modèles intiaux, comme les PIC 10 et 12, ne supportaient pas les interruptions, mais c'est chose réglé sur les modèles plus récents. Ils ont même des registres séparés pour les interruptions et les programmes normaux. De plus, ils intégrent nativement un ''watchdog timer''.
{|class="wikitable" style="text-align:center"
|+ Jeu d'instruction des dodèles PCI 16
|-
! colspan="5" | Instructions diverses
|-
| colspan="3" | 00 0000 0000 0000 || NOP || Ne fait rien
|-
| colspan="3" | 00 0000 0000 1000 || RETURN || Instruction de retour pour une fonction
|-
| colspan="3" | 00 0000 0000 1001 || NOP || Instruction de retour pour une interruption
|-
| colspan="3" | 00 0000 0110 0011 || SLEEP || Mise en veille
|-
| colspan="3" | 00 0000 0110 0100 || CLRWDT || RESET le ''watchdog timer'', intégré dans le PIC
|-
! colspan="5" | Instructions de manipulation de bit
|-
| 0100 || Position du bit dans l'opérande || Adresse mémoire || BCF || Met le bit à 1
|-
| 0101 || Position du bit dans l'opérande || Adresse mémoire || BSF || Met le bit à 0
|-
| 0110 || Position du bit dans l'opérande || Adresse mémoire || BTFSC || Teste si le bit adressé est à 1
|-
| 0111 || Position du bit dans l'opérande || Adresse mémoire || BTFSS || Teste si le bit adressé est à 0
|-
! colspan="5" | Branchements
|-
| colspan="2" | 100 || Adresse mémoire || CALL || Appel de fonction
|-
| colspan="2" | 100 || Adresse mémoire || GOTO || Branchement inconditionnel
|-
! colspan="5" | Instructions logiques/arithmétiques avec opérande lue en mémoire RAM
|-
| colspan="5" | ''Le bit '''d''' dans l'opcode indique la destination : accumulateur ou adresse mémoire''.
|-
| colspan="2" | 0000001 || Adresse mémoire || MOVWF || Store (accumulateur vers destination)
|-
| colspan="2" | 000001d || Adresse mémoire || MOVWF || Met à zéro la destination (adresse ou registre)
|-
| colspan="2" | 000001d || Adresse mémoire || SUBWF || Soustraction
|-
| colspan="2" | 000010d|| Adresse mémoire || DECF || Décrémentation
|-
| colspan="2" | 000100d|| Adresse mémoire || IORWF || OU bit à bit
|-
| colspan="2" | 000101d|| Adresse mémoire || ANDWF || ET bit à bit
|-
| colspan="2" | 000110d || Adresse mémoire || XORWF || XOR bit à bit
|-
| colspan="2" | 000111d || Adresse mémoire || ADDWF VWF || Addition
|-
| colspan="2" | 001000d || Adresse mémoire || MOVF || LOAD
|-
| colspan="2" | 001001d || Adresse mémoire || COMF || NOT bit à bit
|-
| colspan="2" | 001010d || Adresse mémoire || INCF || Incrémentation
|-
| colspan="2" | 001011d || Adresse mémoire || DECFSZ || Décrémentation, puis instruction SKIP si résultat = 0
|-
| colspan="2" | 001100d || Adresse mémoire || RRF || Rotation à droite avec retenue entrante
|-
| colspan="2" | 001101d || Adresse mémoire || RLF || Rotation à gauche avec retenue entrante
|-
| colspan="2" | 001110d || Adresse mémoire || SWAPF || Echange deux ''niblle'' dans un octet
|-
| colspan="2" | 001111d || Adresse mémoire || INCFSZ || Incrémentation, puis instruction SKIP si résultat = 0
|-
! colspan="5" | Instructions logiques/arithmétiques avec constante immédiate
|-
| colspan="2" | 1100xx || Constante immédiate (8bits) || MOVLW || Copie constante dans accumulateur
|-
| colspan="2" | 1101xx || Constante immédiate (8bits) || RETLW || MOV fusionné avec un retour de fonction
|-
| colspan="2" | 111000 || Constante immédiate (8bits) || IORLW || OU
|-
| colspan="2" | 111001 || Constante immédiate (8bits) || ANDLW || ET
|-
| colspan="2" | 111010 || Constante immédiate (8bits) || XORLW || XOR
|-
| colspan="2" | 11110x || Constante immédiate (8bits) || SUBLW || Soustraction
|-
| colspan="2" | 11111x || Constante immédiate (8bits) || ADDLW || Addition
|}
Les PIC gèrent l'adressage absolu et immédiat, mais pas plus. L'adressage absolu, celui où l'adresse est intégrée dans l'instruction, est très simple à implémenter. Les adresses prennent moins d'un octet, vu que la taille de la RAM est très petite, les adresses sont très courtes, les intégrer dans des instructions elles-mêmes courtes n'est pas un problème. L'adresse est encodée sur 5 à 7 bits, selon le modèle, ce qui permet d'adresser entre 32 et 128 octets.
Les PIC ne supportent pas l'adressage indirect, mais peuvent l'émuler grâce à un '''registre d'adresse''' dédié. Il s'agit du registre FSR, qui mémorise l'adresse à lire/écrire. Il est possible de copier un pointeur dedans, qui provient soit de l'accumulateur, soit de la mémoire SRAM. Dans les deux cas, la donnée adressée est lue ou écrite dans un registre INDR, est un registre d’interfaçage rendu adressable. Le registre FSR est directement connecté sur le bus d'adresse.
Les modèles de base se débrouillent avec un registre FSR et un registre INDR, mais les modèles plus performants ont deux ou trois copies de chaque registre. Les modèles PIC18 ajoutent aussi des instructions LOAD/STORE qui émulent les modes d'adressage à post- ou pré-incrément/décrément, et le mode d'adressage "Base + Indice + Décalage", encore une fois en utilisant les registres FSR et INDR.
Avec tout ce qu'on vient de dire, vous devriez pouvoir comprendre la microarchitecture d'un PIC, qui est résumée dans ce schéma.
[[File:DocPIC16F84 all.png|centre|vignette|upright=2.5|Microarchitecture du PIC16F84.]]
===Le Fairchild F8 et la console de jeu Fairchild Channel F===
Un autre exemple est la Fairchild F8 de la défunte entreprise Fairchild Semiconductor. Il incorpore un processeur 8 bits, c'est à dire que le processeur fait des calculs sur des entiers de 8 bits maximum, une mémoire RAM de 64 octets, ainsi qu'une mémoire ROM de 1 kibioctet. Les 64 octets de RAM sont certes très peu, mais c'est suffisant pour certaines applications simples, comme les caisses automatiques de l'époque, ou des applications embarquées. Et de toute façon, il est possible d'ajouter de la mémoire RAM supplémentaire si les 64 octets de RAM intégrée ne suffisent pas. Le système était donc modulaire, adaptable selon les besoins, peu cher pour son implémentation minimale sans RAM en plus.
Vu qu'il s'agit d'un des tout premiers ordinateurs, il est sorti à une époque où la technologie était rudimentaire. À cette époque, le processeur était composé de pièces détachées qu'il fallait souder ensemble pour obtenir un processeur fonctionnel. Ce n'est que plus tard qu'est apparu le micro-processeur, qui regroupe un processeur complet dans un seul circuit intégré. Le résultat est que le processeur du Fairchild F8 est coupé en deux, l'unité de calcul et l'unité de contrôle sont placés dans des pièces détachées séparés.
Le microcontrôleur est composé de trois à quatre pièces détachées, certaines étant optionnelles. La première est le '''3850 CPU''', qui regroupe l'unité de calcul et la mémoire RAM intégrée. La seconde est le PSU (''3851 Program Storage Unit''), qui regroupe la mémoire ROM et l'unité de contrôle, ''program counter'' inclut. S'il y a besoin d'utiliser plus de RAM, il faut ajouter un circuit d’interface mémoire, qui est au choix le ''3852 Dynamic Memory Interface'' (DMI) ou le ''3853 Static Memory Interface'', le premier étant connecté à une mémoire de type DRAM, l'autre à une SRAM (nous verrons ce que sont les DRAM et les SRAM dans le prochain chapitre).
[[File:Fairchild F8.png|centre|vignette|upright=2|Fairchild F8]]
Le système minimal est composé d'un PSU et d'un 3850, sans les circuits d'interface mémoire. Le tout donne un système avec un processeur 8 bit, 64 octets de RAM et 1 kibioctet de ROM, les deux mémoires étant intégrées dans le "processeur". Le processeur gérait 4 entrées-sorties, chacune étant reliée avec un bus de 8 bit au processeur. Au passage, en 1977, Mostek a créé un microcontrôleur qui regroupe un PSU et un 3850 : le Mostek 3870. Le système minimal n'avait pas de bus d'adresse, vu que la RAM était intégrée au processeur. C'est les 3852 et 3853 qui ajoutaient un bus d'adresse. Ils ajoutent un bus d'adresse de 16 bits, ce qui permet d'adresser 64 kibioctets de RAM.
[[File:Fairchild-Channel-F.jpg|vignette|un Fairchild Channel F]]
Le Fairchild F8 a été utilisé dans la Fairchild Channel F, une des toute première console de seconde génération, à savoir des consoles qui utilisaient des cartouches de jeu. Avant les consoles de seconde génération, les consoles étaient non-programmables. Elles étaient conçues pour faire tourner un jeu précis, aucun autre, le jeu étant implémenté dans leurs circuits.
La Fairchild Channel F est composé du système minimal, auquel on a ajouté une carte son rudimentaire et 2 kibioctets de mémoire vidéo. La mémoire vidéo sert uniquement pour afficher des images à l'écran : on écrit l'image à afficher dedans, un circuit vidéo se charge de l'afficher à l'écran automatiquement. Le processeur ne fait qu'écrire dans cette RAM vidéo, il ne peut pas en lire le contenu. De la RAM supplémentaire peut cependant être ajoutée dans les cartouches de jeu.
===L'usage d'une architecture Harvard modifiée : les consoles 8 bits===
Pour encore améliorer la situation, il est possible d'utiliser une architecture Harvard modifiée, qui permet de lire des données depuis la mémoire ROM. Cela réduit encore plus les besoins en mémoire RAM. Les constantes manipulées par le programme sont mémorisées en ROM, lues depuis la ROM, au lieu d'être chargées en RAM. Les consoles de jeu utilisaient beaucoup de stratagème.
L'exemple type est celui des consoles 8 bits avec des graphismes en 2D. La cartouche de jeu contenait une ROM, qui mémorisait le code du jeu, les niveaux, les sprites et autres données graphiques. Leur carte graphique lisait directement les ''sprites'' depuis la mémoire ROM, sans avoir à les charger en mémoire vidéo. La mémoire vidéo se contentait de mémoriser le reste des informations graphiques, ainsi que des pointeurs vers les ''sprites'' en ROM. En conséquence, les consoles 8 bits n'avaient pas besoin de beaucoup de RAM, vu qu'une grande partie des données utiles étaient dans une ROM directement accessible par le processeur. A l'opposé, les micro-ordinateurs devaient copier les données d'un jeu depuis une disquette dans la mémoire RAM, ce qui demandait d'avoir plus de RAM.
Le passage au support CD sur les consoles 32 bits a eu la même conséquence. Le processeur ne pouvant pas lire directement le CD à sa guise, il fallait copier les données du CD en RAM. D'où l'apparition de temps de chargement assez longs, inexistants sur support cartouche.
Avec ce genre de stratagèmes, 256 octets de RAM est largement suffisant sur de nombreux systèmes, à condition qu'on ait assez de ROM pour coder un programme digne de ce nom. Par exemple, de nombreux systèmes embarqués simples s'en accommodent : des caisses enregistreuses, des systèmes de régulation de feu de circulation, etc.
===Le HP Nanoprocessor : un processeur sans ALU===
Un dernier exemple est celui du processeur HP Nanoprocessor, de l'entreprise HP. Il a été commercialisé en 1974, en même temps que les premiers micro-processeurs d'Intel. Tous les processeurs de l'époque étaient des processeurs 8 bits et le HP Nanoprocessor ne faisait pas exception. Ce n'était pas un processeur haute performance, il était destiné à des applications d'informatique industrielle ou embarquée. D'ailleurs, il utilisait des transistors de type metal-gate, peu performants, là où ses contemporains utilisait des transistors en silicium, plus performants.
Mais une caractéristique qui rend cela encore plus claire est qu'il n'y a pas d'ALU ! En effet, ce processeur est incapable de faire des additions, des soustractions ou autres opérations simples ! Il est cependant capable d'effectuer des incrémentations et décrémentations, des décalages, des opérations logiques comme des ET/OU/NON/XOR et bien d'autres. Il supporte en tout 48 instructions, avec un support limité des modes d'adressage indirects. Les instructions de branchement étaient des instructions SKIP, il n'y avait pas d'instructions de branchement généralistes.
Pour ce qui est des registres, il disposait de 16 registres de 8 bits et d'un accumulateur. Niveau mémoire, il était relié à une mémoire ROM, rien de plus. Il n'avait de RAM supplémentaire qu'on pouvait lui adjoindre, il devait se débrouiller avec seulement ses registres. Et cela ne posait pas de problèmes pour son usage. Seul le mode d'adressage indirect à registre est supporté, il n'y a pas de registres d'indices. Ce mode d'adressage permet de lire des données en mémoire ROM, la ROM pouvant contenir des tableaux de valeurs constantes.
: Il est possible de lui adjoindre de la RAM via les ports d'entrée-sortie, ainsi qu'une ALU, mais RAM et ALU sont traités comme des périphériques avec lesquels on communique, ils ne sont pas intégrés au processeur.
Niveau micro-architecture, il incorporait une unité de calcul logique et un circuit comparateur. Le comparateur était un circuit comparateur série des plus basiques, qui était utilisé pour les instructions de branchement et associées. L'unité de calcul logique gérait des incrémentations/décrémentation, des décalages, les opérations logiques et quelques autres. L'unité de calcul logique était bit-slicée, à savoir conçue en assemblant 8 ALU de 1 bit chacune, enchainées en série. Le tout était combiné à des circuits de ''carry skip''.
[[File:Unité de calcul du HP nanonprocessor.png|centre|vignette|upright=2|Unité de calcul du HP nanoprocessor]]
Son unité de décodage d'instruction était très simple, essentiellement basée sur des portes NOR, grâce à un encodage efficace des instructions machine. Le ''program counter'' fait 11 bits, ce qui permet d'adresser une ROM de 2 kibioctets. Le ''program counter'' était relié à un circuit incrémenteur qui gérait les isntructions SKIP (il pouvait incrémenter le ''program counter'' par pas de 1 ou de 2 en cas de SKIP). Le processeur contient aussi deux registres, qui servent en quelque sorte de pile d'adresse de retour. Un premier registre mémorise l'adresse de retour d'une fonction, l'autre mémorise le ''program counter'' lors d'une interruption, pour savoir où brancher à la fin de l'interruption.
[[File:HP nanoprocessor.png|centre|vignette|upright=2.5|HP nanoprocessor]]
Fait intéressant, le concepteur du processeur a gracieusement donné les masques utilisés pour graver le silicium du processeur au site [https://www.cpushack.com/ CPU Shack]. Les masques en question sont disponibles ici :
* [https://www.cpushack.com/2020/08/20/hp-nanoprocessor-mask-set/ HP NanoProcessor Mask Set]
* [https://www.cpushack.com/2020/08/09/the-forgotten-ones-hp-nanoprocessor/ The Forgotten Ones: HP Nanoprocessor]
Les masques ont été analysés par Ken Shirrif dans cet article de blog :
* [https://www.righto.com/2020/09/hp-nanoprocessor-part-ii-reverse.html HP Nanoprocessor part II: Reverse-engineering the circuits from the masks]
==Les processeurs 8/16 bits à architecture Von Neumann==
L'usage d'une architecture Harvard est une solution pour adresser plus de mémoire avec des CPU 8 bits. Mais plusieurs microprocesseurs commerciaux n'utilisaient pas cette solution. À la place, c'était des architectures Von Neumann, mais qui étaient capables de gérer des adresses de 16 bits. Les données faisaient 8 bits, les registres faisaient 8 bits, mais quelques techniques permettaient de gérer des adresses de 16 bits. Nous parlerons de '''processeurs 8/16 bits''' pour les désigner, et nous allons les étudier à part.
Un point important est que la gestion d'adresses de 16 bits permet d'adresser 64 kibioctets, qui peuvent être remplis avec de la RAM et de la ROM. On a donc le meilleur des mondes : 64 kibioctets de mémoire, mais avec des données de 8 bits et les économies de circuit qui vont avec. L'avantage est que le processeur peut maintenant gérer une vraie pile d'appel, pas seulement une pile d'adresse de retour. Il lui suffit pour cela d'intégrer un pointeur de pile codé sur 16 bits.
===Les modes d'adressage par page des CPU Motorola===
Les processeurs Motorola 8 bits étaient des processeurs 8 bits avec un bus d'adresse de 16 bits. C'était des processeurs à accumulateur incorporant deux registres d'indice, un registre d'état, un pointeur de pile, et un ''program counter''. Tous les registres sont reliés au bus d'adresse, sauf le registre d'état et l’accumulateur. Tous les registres font 8 bits, sauf le ''program counter''. La pile est câblée pour être dans un bloc de 256 octets compris entre l'adresse 1 0000 0000 et l'adresse 1 1111 1111, ce qui fait que son adressage se fait avec un seul octet.
[[File:6502-architecture.svg|centre|vignette|upright=1.5|Architecture simplifiée du 6502.</br> X et Y : registres d'indice ;</br> S : le pointeur de pile ;</br> A : accumulateur ;</br>P : registre d'état.</br>]]
Les processeurs Motorola 8 bits utilisaient une méthode simple pour adresser 64 kibioctets de RAM, avec des registres de 8 bits. Pour cela, ils utilisaient une variante de l'adressage base + décalage. Elle améliore l'adressage absolu, qui intègre l'adresse à lire/écrire dans l'instruction elle-même. L'adresse en question est de 8 bits et n'encode que les 8 bits de poids faible de l'adresse, les 8 bits de poids fort sont dans un '''registre de page''' adressé implicitement. L'adresse finale est obtenue en concaténant ce registre avec l'adresse mémoire intégrée dans l’instruction. Le résultat est que la mémoire était découpée en blocs de 256 consécutifs, chacun pouvant servir de fenêtre de 256 octets. Une page est réservée pour la pile, la seconde, comme dit plus haut.
Formellement, ce mode d'adressage a des ressemblances avec la commutation de banques, une technique qu'on verra dans les chapitres sur l'espace d'adressage et la mémoire virtuelle. Mais ce n'en est pas du tout : le registre de page est utilisé uniquement pour les accès mémoire avec le mode d'adressage base + décalage, mais pas pour les autres accès mémoire, qui gèrent des adresses complètes. Notons que l'usage d'un registre de page dédié fait que celui-ci est adressé implicitement.
Il faut noter que la technique a été utilisée sur des processeurs 16 bits, pour contourner la petite taille des instructions. Un exemple est celui du HP 2100, un processeur 16 bits. Il avait un registre de page de 5 bits et encodait 10 bits d'adresse dans ses instructions. Ses instructions d'accès mémoire disposaient d'un bit qui choisit quel mode d'adressage utiliser. S'il était à 0, l'adressage absolu était utilisé, le registre de page n'était pas utilisé. Mais s'il était à 1, le registre de page était utilisé pour calculer l'adresse.
Une évolution de l'adressage précédent est le '''mode page direct'''. Avec lui, le registre de page est étendu et contient une adresse mémoire complète. L'adresse finale n'est pas obtenue par concaténation, mais en additionnant le registre de page avec l'adresse fournie par adressage absolu + décalage. Un exemple est celui des premiers processeurs Motorola, qui géraient des adresses courtes de 8 bits. L'adresse courte de 8 bits correspondait non pas aux 256 premiers octets de la mémoire, mais à une fenêtre de 256 octets déplaçable en mémoire. La position de la fenêtre de 256 octets était spécifiée par le registre de page de 16 bits, qui précisait l'adresse du début de la fenêtre, celle de sa première donnée.
Il s'agit donc formellement d'adressage base + décalage, à un détail près : il n'y a qu'un seul registre de base. Le fait que ce registre de base soit unique fait qu'il est adressé implicitement, on n'a pas à encoder le numéro/noms de registre dans l'instruction. Le registre de base est utilisé uniquement pour l'adressage absolu, pas pour les autres accès mémoire. S'il y a des ressemblances avec la segmentation, une technique de mémoire virtuelle qu'on abordera dans quelques chapitres, ce n'en est pas vu que le registre de base est utilisé seulement pour un mode d'adressage bien précis.
===Le ''pseudo-aliasing'' des registres des processeurs Intel x86===
Voyons maintenant le cas des anciens processeurs 8 bits d'Intel à savoir l'Intel 4004, 4040, 8008 et 8080. Le Z80, un processeur inspiré des CPU Intel 8 bits, est aussi concerné. Avant de poursuivre, parlons des registres de ces processeurs. Les premiers CPU Intel incorporaient 7 registres de 8 bits nommés A, B, C, D, E, F, H, L, SP. Ils correspondent respectivement à : l'accumulateur A ; six registres nommés B, C, D, E, H et L ; le registre d'état F ; le pointeur de pile SP. Le Z80 ajoute deux registres d'indice X et Y. De plus, le Z80 dispose de registres d'interruption, qui sont en quelque sorte des copies des registres A, B, C, D, E, F, H, L. Le tout est illustré dans le tableau ci-dessous.
{|class="wikitable" style="text-align:center;"
|-
!
! Registres des CPU Intel
! Registres supplémentaires du Z80
|-
! Accumulateur
| A
| A'
|-
! Registre d'état
| F
| F'
|-
! Registres généraux
| B, C, D, E, H, L
| B', C', D', E', H', L'
|-
! Pointeur de pile
| colspan="2" | SP (sauf pour le 8008)
|-
! Registres d'indice
|
| X et Y
|}
Le 8008 incorpore une pile d'appel de 7 adresses, dans le processeur lui-même. Il en est de la même avec le 4004 et le 4040, comme on le verra dans la section sur les processeurs 4 bits. Mais le 8080 et le 8085 ont remplacé le tout par un simple pointeur de pile, afin d'avoir une véritable pile d'appel. Autant c'est impossible d'avoir une pile d'appel avec seulement 256 octets de mémoire, autant on peut se le permettre avec 65 536 adresses.
Pour gérer des adresses de 16 bits, ils auraient pu utiliser des registres d'adresse séparés, mais on préféré un système de '''pseudo-''aliasing'' de registres'''. Formellement, c'est un système qui concatène deux registres 8 bits pour obtenir une adresse de 16 bits. L’appariement a lieu lors de certaines opérations bien précises, qui n'ont de sens que pour les adresses : la lecture/écriture en mémoire, et l'incrémentation.
Il y avait cependant des contraintes quant aux paires de registres possibles, toutes les paires de registres n'étaient pas autorisées. Les CPU concernés sont donc des processeurs hybrides accumulateur-registre généraux. L'accumulateur ne peut pas être appairé, seuls les registres généraux le peuvent. Le Z80 autorise plus de paires que les CPU Intel. Voici les paires de registres qui pouvaient servir d'adresse 16 bits :
* Les CPU 8008 d'Intel autorisait une seule paire formée des registres H et L.
* Les autres processeurs, à savoir le 8080, le 8085 et le Z80, autorisaient : les paires BC, DE et HL.
Le 8008 ne gérait que des opérations sur 8 bits. Mais le 8080 et le 8085 ont ajouté des instructions 16 bits qui agissaient sur des paires de registre, que le Z80 a repris. Une paire de registres est considérée comme un registre unique de 16 bits pour certaines opérations arithmétiques, dont l'incrémentation. Voici la liste des instructions concernées :
* INC et DEC pour l'incrémentation et la décrémentation ;
* DAD : additionne le registre HL avec une autre paire (Hl inclus) ;
* LXI : copie une constante immédiate dans une paire de registres ;
* LHLD : lit 16 depuis la mémoire et l'enregistre dans une paire de registres ;
* SHLD : copie 16 bits depuis une paire de registres et l'enregistre en mémoire ;
* PUSH et POP : empile ou dépilent une paire de registre sur la pile ;
* XTHL : échange la paire HL avec les 16 bits au sommet de la pile d'appel ;
* XCHG : échange le contenu de la paire HL et DE.
Pour résumer, le processeur avait des instructions LOAD, STORE, PUSH et POP adaptées pour gérer des paires de registre. De plus, l'instruction XCHG permettait d’échanger le contenu des paires DE et HL. L'instruction a été étendue sur les processeurs 16 bits pour échanger tous les registres. Mais l'implémentation était alors différente. L'incrémentation sur une paire de 16 bit était très utile, car les adresses sont souvent incrémentées quand on parcours un tableau. Ces instructions nous donnent quelques indices sur ce qu'il y a dans le processeur.
Le système de pseudo-aliasing a un impact sur le banc de registre. Le banc de registre regroupe les registres généraux et le pointeur de pile, mais ne contient pas l'accumulateur. Les contraintes sur les paires de registres possibles ne s'expliquent que d'une seule manière : le banc de registre contient des registres de 16 bits, une paire de registres 8 bits est mémorisée dans un registre unique. Il faut donc faire une différence entre les registres architecturaux de 8 bits, et les registres réels de 16 bits.
Le banc de registre a un port de 8 bits pour les données, qui est fabriqué à partir d'un port 16 bits auquel on a rajouté un multiplexeur pour choisir soit l'octet de poids faible, soit l'octet de poids fort. Le bus de données fait 8 bits, ce qui fait que les instructions LOAD, STORE, PUSH et POP pour paires 16 bits sont réalisées en deux fois : on lit/écrit l'octet de poids faible, puis celui de poids fort. Par contre, le bus d'adresse fait bien 16 bits. Cela suggère que le banc de registre dispose d'un port de 16 bits dédié aux adresses, en plus du port de données 8 bits.
[[File:Architecture d'un CPU 8-16 bits avec un banc de registre double port.png|centre|vignette|upright=2|Architecture d'un CPU 8-16 bits avec un banc de registre double port]]
L'incrémentation d'une paire 16 bits ne coute rien à implémenter, ou presque. En effet, le processeur incorpore un incrémenteur 16 bits pour le ''program counter'', qui est relié au bus d'adresse. L'idée est de rentabiliser cet incrémenteur, en lui permettant d'incrémenter des données/adresses de 16 bits obtenues via pseudo-aliasing. De même, il peut être utilisé pour incrémenter le pointeur de pile, voire un compteur de rafraichissement mémoire (pour rappel, le rafraîchissement mémoire demande de balayer la mémoire d'adresse en adresse et été fait par le CPU à l'époque). Pour cela, il suffit de connecter le ''program counter'', le banc de registre, et l'incrémenteur, via un bus dédié.
[[File:Calcul d'adresse par ALU dédiée avec PC séparé.png|centre|vignette|upright=2|Calcul d'adresse par ALU dédiée avec PC séparé]]
Notez qu'on peut encore simplifier le tout en placant le ''program counter'' dans le banc de registre, ce qui ne gênera pas le travail de l'incrémenteur mais simplifiera le câblage au bus d'adresse. Ce n'était pas systématique, certains processeurs mettaient le ''program counter'' dans le banc de registre, d'autres non.
: Inclure le ''program counter'' dans le banc de registre permet parfois de remplir un vide. Par exemple, sur un processeur avec 12 registres, le banc de registre devrait faire idéalement 16 registres, inclure le ''program counter'' dedans fait monter le tout à 13.
[[File:Architecture d'un CPU 8-16 bits.png|centre|vignette|upright=2|Architecture d'un CPU 8-16 bits]]
Les processeurs Intel 8 bits, à savoir le 8008, le 8080 et le 8085 ; mettaient le ''program counter'' dans le banc de registre. Vous avez donc toutes les armes pour comprendre leur micro-architecture. Par exemple, voici la micro-architecture du processeur 8080. Remarquez le banc de registre, qui contient tous les registres sauf l'accumulateur et le registre. Il a deux ports : un pour les adresses et un pour les données. Notez le dé-multiplexeur sur le port de donnée. Pour le reste, il s'agit d'une architecture à accumulateur hybride des plus classiques.
[[File:Intel 8080 arch.svg|centre|vignette|upright=3|Microarchitecture de l'Intel 8080.]]
Le Z80 est un processeur inspiré du design des processeurs Intel 8 bits, mais avec pas mal d'améliorations. Un point particulier de ce processeur est son banc de registre. Il contient tous les registres du processeur, y compris l'accumulateur et le registre d'état ! Les seuls registres en-dehors du banc de registre sont le ''program counter'' et un compteur de rafraichissement mémoire IR.
Un autre point particulier est que les registres dans le banc de registres avaient une copie séparée accessible uniquement pour les interruptions, via fenêtrage de registres. Et l'accumulateur et le registre d'état étant dans le banc de registre, il y avait deux accumulateurs et deux registres d'état. Les registres A, B, C, D, E et F étaient dupliqués, par le pointeur de pile ni les registres d'indice. Les copies des registres étaient nommées A', B', C', D', E' et F'.
Le Z80 supportait des instructions d'échange de registre en plus des CPU Intel 8 bits. L'instruction EX peut échanger soit le contenu des paires D,E et H,F, soit la paire A,F avec la paire A',F'. L'instruction EXX échange les paires BC, DE, HL avec les paires BC', DE', HL'. En faisant cela, le programmeur pouvait utiliser deux fois plus de registres généraux s'il n'utilisait pas les interruptions. L'échange de paires se fait sans copies de registres, mais simplement en modifiant l'adresse envoyée sur le banc de registre. Pour cela, plusieurs bascules mémorisent des bits qui indiquent si les paires ont été échangées ou non. Il y a une bascule pour les paires DE , HL ; une autre pour les paires A,F et paire A',F', une dernière pour l'instruction EXX. En combinant ces bascules avec les noms de registres envoyés par le séquenceur, on peut échanger les paires de registres.
==Le cas particulier des processeurs 4 bits : le 4004 d'Intel==
L'Intel 4004 était le tout premier micro-processeur. Il s'agissait d'un microprocesseur de 4 bits, basé sur une architecture à accumulateur. Il disposait d'un accumulateur et de 16 registres d'indice, tous de 4 bits. Il faisait des calculs sur des données de 4 bits, appelées des nibbles. Cependant, sur ses 46 instructions machines supportées, 41 agissaient sur des opérandes de 8 bits, les 5 restantes sur des opérandes de 16 bits. Simplement, les calculs se faisaient en deux fois, en échangeant des données entre mémoire RAM et accumulateur.
Le 4004 est un circuit intégré avec peu de broches. Il dispose notamment d'un bus de données/adresse, qui est multiplexé, c’est-à-dire qu'il sert alternativement de bus de données et de bus d'adresse selon les besoins. Le bus de commande mémoire fait 5 bits, dont 4 pour les chips de RAM, un pour la ROM. Les adresses sont codées sur 12 bits, les données sur 4 et les instructions sur 8 bits. L'envoi d'une adresse sur le bus se fait en plusieurs fois, de même que la lecture d'une instruction. Il s'agit là d'une adaptation pour outrepasser les limitations d'un processeur 4 bit.
[[File:Intel 4004 processor pinout.png|centre|vignette|upright=2|Broches de l'Intel 4004. Nous verrons à quoi elles servent plus bas.]]
===L'espace d'adressage de l'Intel 4004===
Les adresses du processeur sont sur 12 bits, ce qui fait 4096 adresses différentes. Elles regroupent à la fois la ROM et la mémoire RAM, vu que l'architecture est une sorte de mélange bizarre entre une architecture Von Neumann et Harvard. Le processeur gère bien deux espaces d'adressage séparés, mais la RAM et la ROM sont reliés au même bus. La sortie CM-ROM du processeur indique si l'adresse envoyée correspond à la RAM ou la ROM. Un circuit de décodage d'adresse active ou désactive la RAM selon la valeur de ce bit, l'inverse pour la ROM, en agissant sur leurs bits Chip Select. Seule la RAM ou la ROM répondent alors à l'adresse.
Pour ce qui est de la RAM, le circuit de décodage d'adresse pouvait gérer au maximum 1024 adresses différentes, chacune contenant un nibble. Pour cela, le CPU 4004 était relié à une ou plusieurs RAM externes, des Intel 4002. Chaque Intel 4002 contenait 64 nibbles de données, plus 16 nibbles de statut qu'on ne détaillera pas ici. Les nibbles de statut étaient accessibles en utilisant des instructions d'entrée-sortie, donc pas avec des lectures/écritures mémoire. Les 64 nibbles de données sont découpés en 4 groupes de 16 nibbles. Le CPU pouvait être relié à maximum 16 Intel 4002, ce qui fait 1024 nibbles de données et 256 nibbles de statut. L'ensemble permet de remplir l'espace d'adressage de 1024 adresses.
===Le registre de page et le pseudo-aliasing des registres===
Sélectionner une adresse mémoire utilisait un mélange entre pseudo-aliasing et registre de page. Pour les données, les 1024 adresses étaient découpées en 4 pages de 256 adresses. Pour la ROM, les 4096 adresses étaient découpées en 16 pages de 256 adresses. Localiser une donnée dans une page ne requiert que 8 bits, 2/4 bits supplémentaires permettent de sélectionner la page voulue. Le registre de page était dans le processeur lui-même, et était relié aux sorties du processeur nommées CM-RAM 0, 1, 2 et 3. Les 4 sorties encodaient un nombre qui permet de sélectionner le numéro de page voulu.
Le registre de page fait 5 bits : un pour distinguer RAM et ROM, 4 bits pour sélectionner la page voulue. L'avantage est que la carte mère gère au maximum 16 chips de RAM, ce qui colle parfaitement avec les 4 utilisés pour sélectionner une page. Un chip de RAM correspond à une page, et chacun est activé ou désactivé suivant la page sélectionnée. Pour cela, il suffit d'ajouter un décodeur sur la carte mère, qui prend les 4 bits du registre de page et fournit les signaux Chip Select aux différents chips de RAM.
Reste alors à utiliser les 8 bits d'adresse à l'intérieur d'un chip de RAM. Le 4004 permettait de concaténer deux registres d'indice de 4 bits pour former une adresse de 8 bits. Les instructions d'accès mémoire pouvaient ainsi préciser une paire de registre d'indice pour préciser quelle adresse lire/écrire. Idem pour les branchements indirects : le processeur supportait une instruction de branchement indirect qui précisait l'adresse dans une paire de registres d'indice. Les registres d'indice sont donc assez mal nommés sur cette architecture, vu qu'ils peuvent servir soit de registre d'indice, soit de demi-registre d'adresse. Il s'agit là du système de pseudo-aliasing des registres, mais appliqué aux registres d'indice.
L'Intel 4004 gérait deux instructions pour gérer les adresses mémoires. La première, l'instruction DCL (''Designate Command Line'') configure le registre de page. Elle prend en entrée un numéro de page et le copie dans le registre de page. L'opérande peut provenir d'un registre d'indice ou de l'accumulateur. La seconde, l'instruction SRC (''Send Register Control'') concatène deux registres d'indice pour obtenir une adresse de 8 bits. Un accès mémoire se fait donc en maximum trois instructions : une qui configure le registre de page si ce n'est pas déjà fait, une instruction SRC pour envoyer l'adresse, et une troisième instruction qui dit s'il faut faire une lecture ou une écriture.
===La microarchitecture de l'Intel 4004===
Il incorporait une pile d'adresse de retour intégrée au processeur. La pile d'adresse acceptait exactement 3 adresses maximum. Elle était regroupée avec le ''program counter'' dans un banc de registre, de 4 registres. Le ''program counter'' et le pointeur de pile faisaient chacun 12 bits, soit trois nibble. Ils étaient incrémentés par un incrémenteur dédié.
SI on omet le registre de page et la pile d'adresse, le 4004 est une architecture à accumulateur des plus classiques, avec un bus interne unique, un banc de registre pour les registres d'indices, un accumulateur relié à une unité de calcul. Les registres d'indice étaient dans un banc de registre séparés, car ils faisaient 4 bits chacun, contrairement au pointeur de pile et le ''program counter''. Un détail important est que les bancs de registres du 4004 étaient implémentés avec de la DRAM, et non des registres usuels fabriqués avec des bascules 1 bit.
[[File:Microarchitecture de l'Intel 4004.png|centre|vignette|upright=2.5|Microarchitecture de l'Intel 4004]]
<noinclude>
{{NavChapitre | book=Fonctionnement d'un ordinateur
| prev=Les architectures à pile et mémoire-mémoire
| prevText=Les architectures à pile et mémoire-mémoire
| next=Les processeurs de traitement du signal
| nextText=Les processeurs de traitement du signal
}}
</noinclude>
e3s9caanpn8ix10q6a3u9brbf2cqdp6
765709
765708
2026-05-01T18:00:00Z
Mewtow
31375
/* Les microcontrôleurs PIC */
765709
wikitext
text/x-wiki
Nous avons déjà abordé la notion de processeur 8, 16, 32, 64 bits. Elle désigne la taille des registres généraux, ou de l'accumulateur. De nos jours, les processeurs 32 et 64 bits sont la norme, mais les premiers micro-processeurs étaient des processeurs 4 et 8, avant de passer rapidement au 16 bits. La raison est que leur budget en transistor limité faisait qu'on ne pouvait pas utiliser une ALU trop grande : une ALU 8 bit prend deux fois moins de place et de transistors qu'une ALU 16 bits. Cependant, les processeurs 8 bits avaient de sérieuses limitations qui étaient compensées par diverses solutions. Dans ce chapitre, nous allons faire une revue rapide des processeurs 8 bits et de leurs fonctionnalités.
La principale limitation des CPU 8 bits était l'adressage : des registres de 8 bits limitaient l'espace d'adressage à seulement 256 adresses, soit à peine 256 octets ! Intuitivement, on se dit que 256 octets est purement impraticable, on ne peut rien faire d'intéressant avec seulement 256 de RAM + ROM. Et c'est partiellement vrai. L'adage veut que 16 bits est la taille minimale intéressante, la limite à partir de laquelle on a assez de mémoire RAM/ROM pour coder des applications intéressantes. Mais 256 octets de RAM est largement suffisant sur de nombreux systèmes embarqués simples s'en accommodent : des caisses enregistreuses, des systèmes de régulation de feu de circulation, etc.
Pour les applications demandant plus de mémoire RAM, les CPU de l'époque contournaient la limitation de 256 octets de RAM avec de nombreux stratagèmes. Dans ce qui va suivre, nous allons séparer les CPU 8 bits selon qu'ils utilisent une architecture Harvard ou une architecture Von Neumann. La raison est qu'une architecture Harvard permet en soi de contourner partiellement ce problème d'adressage. Les choses sont plus compliquées avec une architecture Von Neumann.
==Les processeurs 8/16 bits à architecture Harvard ==
La première solution est d'utiliser une architecture Harvard. Le processeur 8 bit a alors deux espaces d'adressage : un pour la RAM, un autre pour la ROM. Et les deux utilisent des adresses de taille différente. La ROM est reliée à un bus d'adresse de 16 bits, alors que la RAM est elle connectée à un bus d'adresse de 8 bits. La RAM est donc limitée à 256 octets, alors que la ROM peut monter jusqu'à 64 kibioctets. Mine de rien, faire ainsi est largement suffisant.
Les processeurs de l'époque intégraient parfois les 256 octets de RAM directement dans le processeur. Beaucoup en implémentaient moins, avec par exemple seulement 64 octets de RAM, ou 32 octets, ou 128 octets. L'avantage est que cela éliminait le bus d'adresse des données et ne laissait que le bus d'adresse pour la ROM. On économisait ainsi beaucoup de broches sur le circuit intégré du CPU. Et pour les applications demandant plus de RAM, on pouvait ajouter un circuit séparé qui permettait d'adresser une RAM plus grande. Mais cela sera plus clair avec un exemple.
===Les microcontrôleurs PIC===
Les '''microcontrôleurs PIC''' regroupent des microcontrôleurs allant de microcontrôleurs 8 bits aux performances très faible, à des microcontrôleurs 32 bits bien plus puissants. Les microcontrôleurs PIC sont très utilisés dans l'embarqué ou d'informatique industrielle. Ils sont vendu à des volumes assez impressionnants, plusieurs millions par an. Et si vous avez ou êtes en train de faire des études d'électronique, je parie que vous les avez déjà vu en classe, ou que ce ne saurait tarder. Dans ce qui suit, nous allons nous concentrer sur les microcontrôleurs PIC 8 bits, à savoir les PIC 16, 16 et 18. Les PIC 24, qui sont des microcontrôleurs 16 bits, ne seront pas abordés.
Les microcontrôleurs PIC 8 bits sont une architecture Harvard, comme dit plus haut. La mémoire ROM des PIC va de 1024 instructions à 4096 instructions. En comparaison, la mémoire RAM des microcontrôleurs PIC ne peut pas dépasser 256 adresses, et elle est encore plus petite en pratique sur certains modèles. Pour donner un exemple, le PIC16F84 a une RAM composée de 68 "registres" de 8 bits. Le terme "registres" devrait vous faire tiquer, mais c'est bien le terme utilisé dans la documentation des PIC. Et il faut admettre que la différence entre banc de registre et SRAM intégrée est floue, mais nous expliquerons pourquoi dans quelques paragraphes.
: Les PIC 18 peuvent adresser plus de 256 octets de RAM en utilisant la commutation de banques, une technique qui sera abordée dans plusieurs chapitres.
[[File:DocPIC16F84 3.png|centre|vignette|upright=3|Espaces d'adressage du PIC16F84.]]
Un détail est que la SRAM n'a qu'un seul port qui sert à la fois pour les lectures et écritures. Pour compenser, les PIC sont des architectures à accumulateur, où une opérande est lue depuis la SRAM, l'autre depuis l'accumulateur. Leur implémentation de l'accumulateur ajoute une petite subtilité : le résultat d'une opération arithmétique peut être enregistré ailleurs que dans l'accumulateur. Le résultat peut aussi remplacer la seconde opérande, celle lue en mémoire RAM. Dit autrement, le résultat est enregistré dans l'adresse mémoire source. Les instructions de calcul ont le choix : un bit dans leur encodage précise où enregistrer le résultat.
{|
|-
|[[File:DocPIC16F84 4.png|centre|vignette|upright=2|Microarchitecture simplifiée d'un microcontroleur PIC (ici, un 16F84).]]
|[[File:DocPIC16F84 5.png|centre|vignette|upright=2|Microarchitecture simplifiée d'un microcontroleur PIC (ici, un 16F84), avec les branchements directs.]]
|}
Les PIC incorporent une pile d'appel allant de 2 à 8 niveaux, suivant les modèles. Outre l'accumulateur, les PIC disposent de registres de contrôle, d'un ''program counter'', d'un registre d'état, et d'un pointeur de pile. Il y a aussi des registres pour les entrées et sorties. Les registres d'entrée-sortie permettent de lire ou écrire sur un port d'entrée-sortie ou de lire un ''timer''. En clair, les PIC ont un espace d'adressage séparé pour les entrées-sorties.
Un détail très important est que les registres sont mappés en mémoire, à quelques exceptions près ! En clair, on peut y accéder en lisant/écrivant à une adresse mémoire bien précise. Les seules registres qui ne sont pas mappés en mémoire sont l'accumulateur, la pile d'appel, et les registres d'entrée-sortie. Par exemple, sur les modèles 16F, l'espace d'adressage fait 128 octets, dont 32 sont réservés aux registres du processeur, ce qui fait que seules 96 octets sont adressables comme de la RAM. Mais les 128 octets sont un seul et unique SRAM dans le processeur. Ce qui explique qu'il est difficile de séparer banc de registre et RAM principale sur ce processeur : les deux sont fusionnées !
: Les modèles PIC 17 ont rendu l'accumulateur mappé en mémoire RAM !
[[File:DocPIC16F84.png|centre|vignette|upright=2|DocPIC16F84]]
La petite taille de la ROM d'un PIC n'est pas une surprise. Les architectures 8 bits sont conçues pour ne pas utiliser beaucoup de transistors et être très simples. Aussi, utiliser une petite ROM est nécessaire. Mais il faut aussi adapter le jeu d'instruction. Par exemple, il faut faire en sorte d'utiliser des instructions assez courtes. Si les instructions font 16 bits au lieu de 32, on divise par deux le nombre de transistors nécessaire pour la mémoire ROM. La conséquence est que le jeu d’instruction des PIC est adapté à cette contrainte.
Les microcontrôleurs PIC utilisent un jeu d'instruction propriétaire, dont les instructions sont très petites. le fait d'utiliser une architecture à accumulateur, ainsi qu'une RAM très petite aide grandement à avoir des instructions très ourtes. Les premières versions du jeu d'instruction utilisaient des instructions codées sur 12 bits, dont 5 pour l'adresse mémoire de la seconde opérande. Pour les branchements, 3 bits étaient utilisés pour l'opcode, 9 pour l'adresse de destination. Par la suite, les instructions ont été étendues à 13 bits sur les PIC1670, puis à 14, 15 et 16 bits. Les adresses ont alors été élargies, ce qui permet d'adresser en peu plus de mémoire RAM.
Les instructions se limitent à des additions/soustractions, des opérations bit à bit,des branchements, des instructions LOAD/STORE, ainsi que des opérations de manipulation de bit. Il y a une instruction pour mettre une adresse à zéro, qui peut aussi mettre à zéro l’accumulateur. La plupart des modèles n'a pas d'instruction MOV pour faire une copie entre deux registres, elle n'a été intégrée que sur les modèles haute performance.
Pour ce qui est des branchements, les PIC n'ont pas d'instructions de branchement conditionnels, ils font avec une SKIP instruction et des branchements inconditionnels. Par contre, ils ont des branchements pour les appels et retour de fonction. Mieux que ça, ils intègrent une pile d'appel d'environ 8 adresses de retour. Pour donner une idée, l'adresse de retour est encodée sur 10 bits sur les PIC16F84.
Pour les instructions de manipulation de bit, il y a des instructions pour tester/masquer un bit dans une opérande, 4 en tout ( mettre à 0, mettre à 1, tester si bit = 1, tester si bit = 0). Les instructions qui testent un bit prennent leur opérande dans l'accumulateur. Il y a aussi deux instructions de rotation à gauche et droite, qui tiennent compte de la retenue mémorisée dans le registre d'état. Mentionnons aussi une instruction pour inverser deux ''nibbles'' dans un octet.
Les PIC ont aussi des instructions d'incrémentation et de décrémentation, un peu spéciales. Ces dernières regroupent : une incrémentation normale, une décrémentation normale, une décrémentation fusionnée avec une instruction SKIP, et une incrémentation fusionnée avec une instruction SKIP. Les deux dernières incrémentent/décrémentent l'accumulateur et SKIP l'instruction suivante si le résultat est zéro. Elles permettent de fortement simplifier l'implémentation des boucles qui s'exécutent tant que leur compteur atteint zéro.
Les modèles haute performance ajoutent des instructions d'addition avec retenue entrante, idem pour la soustraction. De telles instructions ssont très utiles pour faire des additions/soustractions sur des opérandes de 16 bits. Le processeur a beau être un CPU 8 bits, il peut être utilisé pour faire des calculs 16 bits, la performance est alors amoindrie, mais ce n'est pas un problème pour les applications d'un tel microcontroleur.
Les modèles intiaux, comme les PIC 10 et 12, ne supportaient pas les interruptions, mais c'est chose réglé sur les modèles plus récents. Ils ont même des registres séparés pour les interruptions et les programmes normaux. De plus, ils intégrent nativement un ''watchdog timer''.
{|class="wikitable" style="text-align:center"
|+ Jeu d'instruction des dodèles PCI 16
|-
! colspan="5" | Instructions diverses
|-
| colspan="3" | 00 0000 0000 0000 || NOP || Ne fait rien
|-
| colspan="3" | 00 0000 0000 1000 || RETURN || Instruction de retour pour une fonction
|-
| colspan="3" | 00 0000 0000 1001 || NOP || Instruction de retour pour une interruption
|-
| colspan="3" | 00 0000 0110 0011 || SLEEP || Mise en veille
|-
| colspan="3" | 00 0000 0110 0100 || CLRWDT || RESET le ''watchdog timer'', intégré dans le PIC
|-
! colspan="5" | Instructions de manipulation de bit
|-
| 0100 || Position du bit dans l'opérande || Adresse mémoire || BCF || Met le bit à 1
|-
| 0101 || Position du bit dans l'opérande || Adresse mémoire || BSF || Met le bit à 0
|-
| 0110 || Position du bit dans l'opérande || Adresse mémoire || BTFSC || Teste si le bit adressé est à 1
|-
| 0111 || Position du bit dans l'opérande || Adresse mémoire || BTFSS || Teste si le bit adressé est à 0
|-
! colspan="5" | Branchements
|-
| colspan="2" | 100 || Adresse mémoire || CALL || Appel de fonction
|-
| colspan="2" | 100 || Adresse mémoire || GOTO || Branchement inconditionnel
|-
! colspan="5" | Instructions logiques/arithmétiques avec opérande lue en mémoire RAM
|-
| colspan="5" | ''Le bit '''d''' dans l'opcode indique la destination : accumulateur ou adresse mémoire''.
|-
| colspan="2" | 0000001 || Adresse mémoire || MOVWF || Store (accumulateur vers destination)
|-
| colspan="2" | 000001d || Adresse mémoire || MOVWF || Met à zéro la destination (adresse ou registre)
|-
| colspan="2" | 000001d || Adresse mémoire || SUBWF || Soustraction
|-
| colspan="2" | 000010d|| Adresse mémoire || DECF || Décrémentation
|-
| colspan="2" | 000100d|| Adresse mémoire || IORWF || OU bit à bit
|-
| colspan="2" | 000101d|| Adresse mémoire || ANDWF || ET bit à bit
|-
| colspan="2" | 000110d || Adresse mémoire || XORWF || XOR bit à bit
|-
| colspan="2" | 000111d || Adresse mémoire || ADDWF VWF || Addition
|-
| colspan="2" | 001000d || Adresse mémoire || MOVF || LOAD
|-
| colspan="2" | 001001d || Adresse mémoire || COMF || NOT bit à bit
|-
| colspan="2" | 001010d || Adresse mémoire || INCF || Incrémentation
|-
| colspan="2" | 001011d || Adresse mémoire || DECFSZ || Décrémentation, puis instruction SKIP si résultat = 0
|-
| colspan="2" | 001100d || Adresse mémoire || RRF || Rotation à droite avec retenue entrante
|-
| colspan="2" | 001101d || Adresse mémoire || RLF || Rotation à gauche avec retenue entrante
|-
| colspan="2" | 001110d || Adresse mémoire || SWAPF || Echange deux ''niblle'' dans un octet
|-
| colspan="2" | 001111d || Adresse mémoire || INCFSZ || Incrémentation, puis instruction SKIP si résultat = 0
|-
! colspan="5" | Instructions logiques/arithmétiques avec constante immédiate
|-
| colspan="2" | 1100xx || Constante immédiate (8bits) || MOVLW || Copie constante dans accumulateur
|-
| colspan="2" | 1101xx || Constante immédiate (8bits) || RETLW || MOV fusionné avec un retour de fonction
|-
| colspan="2" | 111000 || Constante immédiate (8bits) || IORLW || OU
|-
| colspan="2" | 111001 || Constante immédiate (8bits) || ANDLW || ET
|-
| colspan="2" | 111010 || Constante immédiate (8bits) || XORLW || XOR
|-
| colspan="2" | 11110x || Constante immédiate (8bits) || SUBLW || Soustraction
|-
| colspan="2" | 11111x || Constante immédiate (8bits) || ADDLW || Addition
|}
Les PIC gèrent l'adressage absolu et immédiat, mais pas plus. L'adressage absolu, celui où l'adresse est intégrée dans l'instruction, est très simple à implémenter. Les adresses prennent moins d'un octet, vu que la taille de la RAM est très petite, les adresses sont très courtes, les intégrer dans des instructions elles-mêmes courtes n'est pas un problème. L'adresse est encodée sur 5 à 7 bits, selon le modèle, ce qui permet d'adresser entre 32 et 128 octets.
Les PIC ne supportent pas l'adressage indirect, mais peuvent l'émuler grâce à un '''registre d'adresse''' dédié. Il s'agit du registre FSR, qui mémorise l'adresse à lire/écrire. Il est possible de copier un pointeur dedans, qui provient soit de l'accumulateur, soit de la mémoire SRAM. Dans les deux cas, la donnée adressée est lue ou écrite dans un registre INDR, est un registre d’interfaçage rendu adressable. Le registre FSR est directement connecté sur le bus d'adresse.
Les modèles de base se débrouillent avec un registre FSR et un registre INDR, mais les modèles plus performants ont deux ou trois copies de chaque registre. Les modèles PIC18 ajoutent aussi des instructions LOAD/STORE qui émulent les modes d'adressage à post- ou pré-incrément/décrément, et le mode d'adressage "Base + Indice + Décalage", encore une fois en utilisant les registres FSR et INDR.
Avec tout ce qu'on vient de dire, vous devriez pouvoir comprendre la microarchitecture d'un PIC, qui est résumée dans ce schéma.
[[File:DocPIC16F84 all.png|centre|vignette|upright=2.5|Microarchitecture du PIC16F84.]]
===Le Fairchild F8 et la console de jeu Fairchild Channel F===
Un autre exemple est la Fairchild F8 de la défunte entreprise Fairchild Semiconductor. Il incorpore un processeur 8 bits, c'est à dire que le processeur fait des calculs sur des entiers de 8 bits maximum, une mémoire RAM de 64 octets, ainsi qu'une mémoire ROM de 1 kibioctet. Les 64 octets de RAM sont certes très peu, mais c'est suffisant pour certaines applications simples, comme les caisses automatiques de l'époque, ou des applications embarquées. Et de toute façon, il est possible d'ajouter de la mémoire RAM supplémentaire si les 64 octets de RAM intégrée ne suffisent pas. Le système était donc modulaire, adaptable selon les besoins, peu cher pour son implémentation minimale sans RAM en plus.
Vu qu'il s'agit d'un des tout premiers ordinateurs, il est sorti à une époque où la technologie était rudimentaire. À cette époque, le processeur était composé de pièces détachées qu'il fallait souder ensemble pour obtenir un processeur fonctionnel. Ce n'est que plus tard qu'est apparu le micro-processeur, qui regroupe un processeur complet dans un seul circuit intégré. Le résultat est que le processeur du Fairchild F8 est coupé en deux, l'unité de calcul et l'unité de contrôle sont placés dans des pièces détachées séparés.
Le microcontrôleur est composé de trois à quatre pièces détachées, certaines étant optionnelles. La première est le '''3850 CPU''', qui regroupe l'unité de calcul et la mémoire RAM intégrée. La seconde est le PSU (''3851 Program Storage Unit''), qui regroupe la mémoire ROM et l'unité de contrôle, ''program counter'' inclut. S'il y a besoin d'utiliser plus de RAM, il faut ajouter un circuit d’interface mémoire, qui est au choix le ''3852 Dynamic Memory Interface'' (DMI) ou le ''3853 Static Memory Interface'', le premier étant connecté à une mémoire de type DRAM, l'autre à une SRAM (nous verrons ce que sont les DRAM et les SRAM dans le prochain chapitre).
[[File:Fairchild F8.png|centre|vignette|upright=2|Fairchild F8]]
Le système minimal est composé d'un PSU et d'un 3850, sans les circuits d'interface mémoire. Le tout donne un système avec un processeur 8 bit, 64 octets de RAM et 1 kibioctet de ROM, les deux mémoires étant intégrées dans le "processeur". Le processeur gérait 4 entrées-sorties, chacune étant reliée avec un bus de 8 bit au processeur. Au passage, en 1977, Mostek a créé un microcontrôleur qui regroupe un PSU et un 3850 : le Mostek 3870. Le système minimal n'avait pas de bus d'adresse, vu que la RAM était intégrée au processeur. C'est les 3852 et 3853 qui ajoutaient un bus d'adresse. Ils ajoutent un bus d'adresse de 16 bits, ce qui permet d'adresser 64 kibioctets de RAM.
[[File:Fairchild-Channel-F.jpg|vignette|un Fairchild Channel F]]
Le Fairchild F8 a été utilisé dans la Fairchild Channel F, une des toute première console de seconde génération, à savoir des consoles qui utilisaient des cartouches de jeu. Avant les consoles de seconde génération, les consoles étaient non-programmables. Elles étaient conçues pour faire tourner un jeu précis, aucun autre, le jeu étant implémenté dans leurs circuits.
La Fairchild Channel F est composé du système minimal, auquel on a ajouté une carte son rudimentaire et 2 kibioctets de mémoire vidéo. La mémoire vidéo sert uniquement pour afficher des images à l'écran : on écrit l'image à afficher dedans, un circuit vidéo se charge de l'afficher à l'écran automatiquement. Le processeur ne fait qu'écrire dans cette RAM vidéo, il ne peut pas en lire le contenu. De la RAM supplémentaire peut cependant être ajoutée dans les cartouches de jeu.
===L'usage d'une architecture Harvard modifiée : les consoles 8 bits===
Pour encore améliorer la situation, il est possible d'utiliser une architecture Harvard modifiée, qui permet de lire des données depuis la mémoire ROM. Cela réduit encore plus les besoins en mémoire RAM. Les constantes manipulées par le programme sont mémorisées en ROM, lues depuis la ROM, au lieu d'être chargées en RAM. Les consoles de jeu utilisaient beaucoup de stratagème.
L'exemple type est celui des consoles 8 bits avec des graphismes en 2D. La cartouche de jeu contenait une ROM, qui mémorisait le code du jeu, les niveaux, les sprites et autres données graphiques. Leur carte graphique lisait directement les ''sprites'' depuis la mémoire ROM, sans avoir à les charger en mémoire vidéo. La mémoire vidéo se contentait de mémoriser le reste des informations graphiques, ainsi que des pointeurs vers les ''sprites'' en ROM. En conséquence, les consoles 8 bits n'avaient pas besoin de beaucoup de RAM, vu qu'une grande partie des données utiles étaient dans une ROM directement accessible par le processeur. A l'opposé, les micro-ordinateurs devaient copier les données d'un jeu depuis une disquette dans la mémoire RAM, ce qui demandait d'avoir plus de RAM.
Le passage au support CD sur les consoles 32 bits a eu la même conséquence. Le processeur ne pouvant pas lire directement le CD à sa guise, il fallait copier les données du CD en RAM. D'où l'apparition de temps de chargement assez longs, inexistants sur support cartouche.
Avec ce genre de stratagèmes, 256 octets de RAM est largement suffisant sur de nombreux systèmes, à condition qu'on ait assez de ROM pour coder un programme digne de ce nom. Par exemple, de nombreux systèmes embarqués simples s'en accommodent : des caisses enregistreuses, des systèmes de régulation de feu de circulation, etc.
===Le HP Nanoprocessor : un processeur sans ALU===
Un dernier exemple est celui du processeur HP Nanoprocessor, de l'entreprise HP. Il a été commercialisé en 1974, en même temps que les premiers micro-processeurs d'Intel. Tous les processeurs de l'époque étaient des processeurs 8 bits et le HP Nanoprocessor ne faisait pas exception. Ce n'était pas un processeur haute performance, il était destiné à des applications d'informatique industrielle ou embarquée. D'ailleurs, il utilisait des transistors de type metal-gate, peu performants, là où ses contemporains utilisait des transistors en silicium, plus performants.
Mais une caractéristique qui rend cela encore plus claire est qu'il n'y a pas d'ALU ! En effet, ce processeur est incapable de faire des additions, des soustractions ou autres opérations simples ! Il est cependant capable d'effectuer des incrémentations et décrémentations, des décalages, des opérations logiques comme des ET/OU/NON/XOR et bien d'autres. Il supporte en tout 48 instructions, avec un support limité des modes d'adressage indirects. Les instructions de branchement étaient des instructions SKIP, il n'y avait pas d'instructions de branchement généralistes.
Pour ce qui est des registres, il disposait de 16 registres de 8 bits et d'un accumulateur. Niveau mémoire, il était relié à une mémoire ROM, rien de plus. Il n'avait de RAM supplémentaire qu'on pouvait lui adjoindre, il devait se débrouiller avec seulement ses registres. Et cela ne posait pas de problèmes pour son usage. Seul le mode d'adressage indirect à registre est supporté, il n'y a pas de registres d'indices. Ce mode d'adressage permet de lire des données en mémoire ROM, la ROM pouvant contenir des tableaux de valeurs constantes.
: Il est possible de lui adjoindre de la RAM via les ports d'entrée-sortie, ainsi qu'une ALU, mais RAM et ALU sont traités comme des périphériques avec lesquels on communique, ils ne sont pas intégrés au processeur.
Niveau micro-architecture, il incorporait une unité de calcul logique et un circuit comparateur. Le comparateur était un circuit comparateur série des plus basiques, qui était utilisé pour les instructions de branchement et associées. L'unité de calcul logique gérait des incrémentations/décrémentation, des décalages, les opérations logiques et quelques autres. L'unité de calcul logique était bit-slicée, à savoir conçue en assemblant 8 ALU de 1 bit chacune, enchainées en série. Le tout était combiné à des circuits de ''carry skip''.
[[File:Unité de calcul du HP nanonprocessor.png|centre|vignette|upright=2|Unité de calcul du HP nanoprocessor]]
Son unité de décodage d'instruction était très simple, essentiellement basée sur des portes NOR, grâce à un encodage efficace des instructions machine. Le ''program counter'' fait 11 bits, ce qui permet d'adresser une ROM de 2 kibioctets. Le ''program counter'' était relié à un circuit incrémenteur qui gérait les isntructions SKIP (il pouvait incrémenter le ''program counter'' par pas de 1 ou de 2 en cas de SKIP). Le processeur contient aussi deux registres, qui servent en quelque sorte de pile d'adresse de retour. Un premier registre mémorise l'adresse de retour d'une fonction, l'autre mémorise le ''program counter'' lors d'une interruption, pour savoir où brancher à la fin de l'interruption.
[[File:HP nanoprocessor.png|centre|vignette|upright=2.5|HP nanoprocessor]]
Fait intéressant, le concepteur du processeur a gracieusement donné les masques utilisés pour graver le silicium du processeur au site [https://www.cpushack.com/ CPU Shack]. Les masques en question sont disponibles ici :
* [https://www.cpushack.com/2020/08/20/hp-nanoprocessor-mask-set/ HP NanoProcessor Mask Set]
* [https://www.cpushack.com/2020/08/09/the-forgotten-ones-hp-nanoprocessor/ The Forgotten Ones: HP Nanoprocessor]
Les masques ont été analysés par Ken Shirrif dans cet article de blog :
* [https://www.righto.com/2020/09/hp-nanoprocessor-part-ii-reverse.html HP Nanoprocessor part II: Reverse-engineering the circuits from the masks]
==Les processeurs 8/16 bits à architecture Von Neumann==
L'usage d'une architecture Harvard est une solution pour adresser plus de mémoire avec des CPU 8 bits. Mais plusieurs microprocesseurs commerciaux n'utilisaient pas cette solution. À la place, c'était des architectures Von Neumann, mais qui étaient capables de gérer des adresses de 16 bits. Les données faisaient 8 bits, les registres faisaient 8 bits, mais quelques techniques permettaient de gérer des adresses de 16 bits. Nous parlerons de '''processeurs 8/16 bits''' pour les désigner, et nous allons les étudier à part.
Un point important est que la gestion d'adresses de 16 bits permet d'adresser 64 kibioctets, qui peuvent être remplis avec de la RAM et de la ROM. On a donc le meilleur des mondes : 64 kibioctets de mémoire, mais avec des données de 8 bits et les économies de circuit qui vont avec. L'avantage est que le processeur peut maintenant gérer une vraie pile d'appel, pas seulement une pile d'adresse de retour. Il lui suffit pour cela d'intégrer un pointeur de pile codé sur 16 bits.
===Les modes d'adressage par page des CPU Motorola===
Les processeurs Motorola 8 bits étaient des processeurs 8 bits avec un bus d'adresse de 16 bits. C'était des processeurs à accumulateur incorporant deux registres d'indice, un registre d'état, un pointeur de pile, et un ''program counter''. Tous les registres sont reliés au bus d'adresse, sauf le registre d'état et l’accumulateur. Tous les registres font 8 bits, sauf le ''program counter''. La pile est câblée pour être dans un bloc de 256 octets compris entre l'adresse 1 0000 0000 et l'adresse 1 1111 1111, ce qui fait que son adressage se fait avec un seul octet.
[[File:6502-architecture.svg|centre|vignette|upright=1.5|Architecture simplifiée du 6502.</br> X et Y : registres d'indice ;</br> S : le pointeur de pile ;</br> A : accumulateur ;</br>P : registre d'état.</br>]]
Les processeurs Motorola 8 bits utilisaient une méthode simple pour adresser 64 kibioctets de RAM, avec des registres de 8 bits. Pour cela, ils utilisaient une variante de l'adressage base + décalage. Elle améliore l'adressage absolu, qui intègre l'adresse à lire/écrire dans l'instruction elle-même. L'adresse en question est de 8 bits et n'encode que les 8 bits de poids faible de l'adresse, les 8 bits de poids fort sont dans un '''registre de page''' adressé implicitement. L'adresse finale est obtenue en concaténant ce registre avec l'adresse mémoire intégrée dans l’instruction. Le résultat est que la mémoire était découpée en blocs de 256 consécutifs, chacun pouvant servir de fenêtre de 256 octets. Une page est réservée pour la pile, la seconde, comme dit plus haut.
Formellement, ce mode d'adressage a des ressemblances avec la commutation de banques, une technique qu'on verra dans les chapitres sur l'espace d'adressage et la mémoire virtuelle. Mais ce n'en est pas du tout : le registre de page est utilisé uniquement pour les accès mémoire avec le mode d'adressage base + décalage, mais pas pour les autres accès mémoire, qui gèrent des adresses complètes. Notons que l'usage d'un registre de page dédié fait que celui-ci est adressé implicitement.
Il faut noter que la technique a été utilisée sur des processeurs 16 bits, pour contourner la petite taille des instructions. Un exemple est celui du HP 2100, un processeur 16 bits. Il avait un registre de page de 5 bits et encodait 10 bits d'adresse dans ses instructions. Ses instructions d'accès mémoire disposaient d'un bit qui choisit quel mode d'adressage utiliser. S'il était à 0, l'adressage absolu était utilisé, le registre de page n'était pas utilisé. Mais s'il était à 1, le registre de page était utilisé pour calculer l'adresse.
Une évolution de l'adressage précédent est le '''mode page direct'''. Avec lui, le registre de page est étendu et contient une adresse mémoire complète. L'adresse finale n'est pas obtenue par concaténation, mais en additionnant le registre de page avec l'adresse fournie par adressage absolu + décalage. Un exemple est celui des premiers processeurs Motorola, qui géraient des adresses courtes de 8 bits. L'adresse courte de 8 bits correspondait non pas aux 256 premiers octets de la mémoire, mais à une fenêtre de 256 octets déplaçable en mémoire. La position de la fenêtre de 256 octets était spécifiée par le registre de page de 16 bits, qui précisait l'adresse du début de la fenêtre, celle de sa première donnée.
Il s'agit donc formellement d'adressage base + décalage, à un détail près : il n'y a qu'un seul registre de base. Le fait que ce registre de base soit unique fait qu'il est adressé implicitement, on n'a pas à encoder le numéro/noms de registre dans l'instruction. Le registre de base est utilisé uniquement pour l'adressage absolu, pas pour les autres accès mémoire. S'il y a des ressemblances avec la segmentation, une technique de mémoire virtuelle qu'on abordera dans quelques chapitres, ce n'en est pas vu que le registre de base est utilisé seulement pour un mode d'adressage bien précis.
===Le ''pseudo-aliasing'' des registres des processeurs Intel x86===
Voyons maintenant le cas des anciens processeurs 8 bits d'Intel à savoir l'Intel 4004, 4040, 8008 et 8080. Le Z80, un processeur inspiré des CPU Intel 8 bits, est aussi concerné. Avant de poursuivre, parlons des registres de ces processeurs. Les premiers CPU Intel incorporaient 7 registres de 8 bits nommés A, B, C, D, E, F, H, L, SP. Ils correspondent respectivement à : l'accumulateur A ; six registres nommés B, C, D, E, H et L ; le registre d'état F ; le pointeur de pile SP. Le Z80 ajoute deux registres d'indice X et Y. De plus, le Z80 dispose de registres d'interruption, qui sont en quelque sorte des copies des registres A, B, C, D, E, F, H, L. Le tout est illustré dans le tableau ci-dessous.
{|class="wikitable" style="text-align:center;"
|-
!
! Registres des CPU Intel
! Registres supplémentaires du Z80
|-
! Accumulateur
| A
| A'
|-
! Registre d'état
| F
| F'
|-
! Registres généraux
| B, C, D, E, H, L
| B', C', D', E', H', L'
|-
! Pointeur de pile
| colspan="2" | SP (sauf pour le 8008)
|-
! Registres d'indice
|
| X et Y
|}
Le 8008 incorpore une pile d'appel de 7 adresses, dans le processeur lui-même. Il en est de la même avec le 4004 et le 4040, comme on le verra dans la section sur les processeurs 4 bits. Mais le 8080 et le 8085 ont remplacé le tout par un simple pointeur de pile, afin d'avoir une véritable pile d'appel. Autant c'est impossible d'avoir une pile d'appel avec seulement 256 octets de mémoire, autant on peut se le permettre avec 65 536 adresses.
Pour gérer des adresses de 16 bits, ils auraient pu utiliser des registres d'adresse séparés, mais on préféré un système de '''pseudo-''aliasing'' de registres'''. Formellement, c'est un système qui concatène deux registres 8 bits pour obtenir une adresse de 16 bits. L’appariement a lieu lors de certaines opérations bien précises, qui n'ont de sens que pour les adresses : la lecture/écriture en mémoire, et l'incrémentation.
Il y avait cependant des contraintes quant aux paires de registres possibles, toutes les paires de registres n'étaient pas autorisées. Les CPU concernés sont donc des processeurs hybrides accumulateur-registre généraux. L'accumulateur ne peut pas être appairé, seuls les registres généraux le peuvent. Le Z80 autorise plus de paires que les CPU Intel. Voici les paires de registres qui pouvaient servir d'adresse 16 bits :
* Les CPU 8008 d'Intel autorisait une seule paire formée des registres H et L.
* Les autres processeurs, à savoir le 8080, le 8085 et le Z80, autorisaient : les paires BC, DE et HL.
Le 8008 ne gérait que des opérations sur 8 bits. Mais le 8080 et le 8085 ont ajouté des instructions 16 bits qui agissaient sur des paires de registre, que le Z80 a repris. Une paire de registres est considérée comme un registre unique de 16 bits pour certaines opérations arithmétiques, dont l'incrémentation. Voici la liste des instructions concernées :
* INC et DEC pour l'incrémentation et la décrémentation ;
* DAD : additionne le registre HL avec une autre paire (Hl inclus) ;
* LXI : copie une constante immédiate dans une paire de registres ;
* LHLD : lit 16 depuis la mémoire et l'enregistre dans une paire de registres ;
* SHLD : copie 16 bits depuis une paire de registres et l'enregistre en mémoire ;
* PUSH et POP : empile ou dépilent une paire de registre sur la pile ;
* XTHL : échange la paire HL avec les 16 bits au sommet de la pile d'appel ;
* XCHG : échange le contenu de la paire HL et DE.
Pour résumer, le processeur avait des instructions LOAD, STORE, PUSH et POP adaptées pour gérer des paires de registre. De plus, l'instruction XCHG permettait d’échanger le contenu des paires DE et HL. L'instruction a été étendue sur les processeurs 16 bits pour échanger tous les registres. Mais l'implémentation était alors différente. L'incrémentation sur une paire de 16 bit était très utile, car les adresses sont souvent incrémentées quand on parcours un tableau. Ces instructions nous donnent quelques indices sur ce qu'il y a dans le processeur.
Le système de pseudo-aliasing a un impact sur le banc de registre. Le banc de registre regroupe les registres généraux et le pointeur de pile, mais ne contient pas l'accumulateur. Les contraintes sur les paires de registres possibles ne s'expliquent que d'une seule manière : le banc de registre contient des registres de 16 bits, une paire de registres 8 bits est mémorisée dans un registre unique. Il faut donc faire une différence entre les registres architecturaux de 8 bits, et les registres réels de 16 bits.
Le banc de registre a un port de 8 bits pour les données, qui est fabriqué à partir d'un port 16 bits auquel on a rajouté un multiplexeur pour choisir soit l'octet de poids faible, soit l'octet de poids fort. Le bus de données fait 8 bits, ce qui fait que les instructions LOAD, STORE, PUSH et POP pour paires 16 bits sont réalisées en deux fois : on lit/écrit l'octet de poids faible, puis celui de poids fort. Par contre, le bus d'adresse fait bien 16 bits. Cela suggère que le banc de registre dispose d'un port de 16 bits dédié aux adresses, en plus du port de données 8 bits.
[[File:Architecture d'un CPU 8-16 bits avec un banc de registre double port.png|centre|vignette|upright=2|Architecture d'un CPU 8-16 bits avec un banc de registre double port]]
L'incrémentation d'une paire 16 bits ne coute rien à implémenter, ou presque. En effet, le processeur incorpore un incrémenteur 16 bits pour le ''program counter'', qui est relié au bus d'adresse. L'idée est de rentabiliser cet incrémenteur, en lui permettant d'incrémenter des données/adresses de 16 bits obtenues via pseudo-aliasing. De même, il peut être utilisé pour incrémenter le pointeur de pile, voire un compteur de rafraichissement mémoire (pour rappel, le rafraîchissement mémoire demande de balayer la mémoire d'adresse en adresse et été fait par le CPU à l'époque). Pour cela, il suffit de connecter le ''program counter'', le banc de registre, et l'incrémenteur, via un bus dédié.
[[File:Calcul d'adresse par ALU dédiée avec PC séparé.png|centre|vignette|upright=2|Calcul d'adresse par ALU dédiée avec PC séparé]]
Notez qu'on peut encore simplifier le tout en placant le ''program counter'' dans le banc de registre, ce qui ne gênera pas le travail de l'incrémenteur mais simplifiera le câblage au bus d'adresse. Ce n'était pas systématique, certains processeurs mettaient le ''program counter'' dans le banc de registre, d'autres non.
: Inclure le ''program counter'' dans le banc de registre permet parfois de remplir un vide. Par exemple, sur un processeur avec 12 registres, le banc de registre devrait faire idéalement 16 registres, inclure le ''program counter'' dedans fait monter le tout à 13.
[[File:Architecture d'un CPU 8-16 bits.png|centre|vignette|upright=2|Architecture d'un CPU 8-16 bits]]
Les processeurs Intel 8 bits, à savoir le 8008, le 8080 et le 8085 ; mettaient le ''program counter'' dans le banc de registre. Vous avez donc toutes les armes pour comprendre leur micro-architecture. Par exemple, voici la micro-architecture du processeur 8080. Remarquez le banc de registre, qui contient tous les registres sauf l'accumulateur et le registre. Il a deux ports : un pour les adresses et un pour les données. Notez le dé-multiplexeur sur le port de donnée. Pour le reste, il s'agit d'une architecture à accumulateur hybride des plus classiques.
[[File:Intel 8080 arch.svg|centre|vignette|upright=3|Microarchitecture de l'Intel 8080.]]
Le Z80 est un processeur inspiré du design des processeurs Intel 8 bits, mais avec pas mal d'améliorations. Un point particulier de ce processeur est son banc de registre. Il contient tous les registres du processeur, y compris l'accumulateur et le registre d'état ! Les seuls registres en-dehors du banc de registre sont le ''program counter'' et un compteur de rafraichissement mémoire IR.
Un autre point particulier est que les registres dans le banc de registres avaient une copie séparée accessible uniquement pour les interruptions, via fenêtrage de registres. Et l'accumulateur et le registre d'état étant dans le banc de registre, il y avait deux accumulateurs et deux registres d'état. Les registres A, B, C, D, E et F étaient dupliqués, par le pointeur de pile ni les registres d'indice. Les copies des registres étaient nommées A', B', C', D', E' et F'.
Le Z80 supportait des instructions d'échange de registre en plus des CPU Intel 8 bits. L'instruction EX peut échanger soit le contenu des paires D,E et H,F, soit la paire A,F avec la paire A',F'. L'instruction EXX échange les paires BC, DE, HL avec les paires BC', DE', HL'. En faisant cela, le programmeur pouvait utiliser deux fois plus de registres généraux s'il n'utilisait pas les interruptions. L'échange de paires se fait sans copies de registres, mais simplement en modifiant l'adresse envoyée sur le banc de registre. Pour cela, plusieurs bascules mémorisent des bits qui indiquent si les paires ont été échangées ou non. Il y a une bascule pour les paires DE , HL ; une autre pour les paires A,F et paire A',F', une dernière pour l'instruction EXX. En combinant ces bascules avec les noms de registres envoyés par le séquenceur, on peut échanger les paires de registres.
==Le cas particulier des processeurs 4 bits : le 4004 d'Intel==
L'Intel 4004 était le tout premier micro-processeur. Il s'agissait d'un microprocesseur de 4 bits, basé sur une architecture à accumulateur. Il disposait d'un accumulateur et de 16 registres d'indice, tous de 4 bits. Il faisait des calculs sur des données de 4 bits, appelées des nibbles. Cependant, sur ses 46 instructions machines supportées, 41 agissaient sur des opérandes de 8 bits, les 5 restantes sur des opérandes de 16 bits. Simplement, les calculs se faisaient en deux fois, en échangeant des données entre mémoire RAM et accumulateur.
Le 4004 est un circuit intégré avec peu de broches. Il dispose notamment d'un bus de données/adresse, qui est multiplexé, c’est-à-dire qu'il sert alternativement de bus de données et de bus d'adresse selon les besoins. Le bus de commande mémoire fait 5 bits, dont 4 pour les chips de RAM, un pour la ROM. Les adresses sont codées sur 12 bits, les données sur 4 et les instructions sur 8 bits. L'envoi d'une adresse sur le bus se fait en plusieurs fois, de même que la lecture d'une instruction. Il s'agit là d'une adaptation pour outrepasser les limitations d'un processeur 4 bit.
[[File:Intel 4004 processor pinout.png|centre|vignette|upright=2|Broches de l'Intel 4004. Nous verrons à quoi elles servent plus bas.]]
===L'espace d'adressage de l'Intel 4004===
Les adresses du processeur sont sur 12 bits, ce qui fait 4096 adresses différentes. Elles regroupent à la fois la ROM et la mémoire RAM, vu que l'architecture est une sorte de mélange bizarre entre une architecture Von Neumann et Harvard. Le processeur gère bien deux espaces d'adressage séparés, mais la RAM et la ROM sont reliés au même bus. La sortie CM-ROM du processeur indique si l'adresse envoyée correspond à la RAM ou la ROM. Un circuit de décodage d'adresse active ou désactive la RAM selon la valeur de ce bit, l'inverse pour la ROM, en agissant sur leurs bits Chip Select. Seule la RAM ou la ROM répondent alors à l'adresse.
Pour ce qui est de la RAM, le circuit de décodage d'adresse pouvait gérer au maximum 1024 adresses différentes, chacune contenant un nibble. Pour cela, le CPU 4004 était relié à une ou plusieurs RAM externes, des Intel 4002. Chaque Intel 4002 contenait 64 nibbles de données, plus 16 nibbles de statut qu'on ne détaillera pas ici. Les nibbles de statut étaient accessibles en utilisant des instructions d'entrée-sortie, donc pas avec des lectures/écritures mémoire. Les 64 nibbles de données sont découpés en 4 groupes de 16 nibbles. Le CPU pouvait être relié à maximum 16 Intel 4002, ce qui fait 1024 nibbles de données et 256 nibbles de statut. L'ensemble permet de remplir l'espace d'adressage de 1024 adresses.
===Le registre de page et le pseudo-aliasing des registres===
Sélectionner une adresse mémoire utilisait un mélange entre pseudo-aliasing et registre de page. Pour les données, les 1024 adresses étaient découpées en 4 pages de 256 adresses. Pour la ROM, les 4096 adresses étaient découpées en 16 pages de 256 adresses. Localiser une donnée dans une page ne requiert que 8 bits, 2/4 bits supplémentaires permettent de sélectionner la page voulue. Le registre de page était dans le processeur lui-même, et était relié aux sorties du processeur nommées CM-RAM 0, 1, 2 et 3. Les 4 sorties encodaient un nombre qui permet de sélectionner le numéro de page voulu.
Le registre de page fait 5 bits : un pour distinguer RAM et ROM, 4 bits pour sélectionner la page voulue. L'avantage est que la carte mère gère au maximum 16 chips de RAM, ce qui colle parfaitement avec les 4 utilisés pour sélectionner une page. Un chip de RAM correspond à une page, et chacun est activé ou désactivé suivant la page sélectionnée. Pour cela, il suffit d'ajouter un décodeur sur la carte mère, qui prend les 4 bits du registre de page et fournit les signaux Chip Select aux différents chips de RAM.
Reste alors à utiliser les 8 bits d'adresse à l'intérieur d'un chip de RAM. Le 4004 permettait de concaténer deux registres d'indice de 4 bits pour former une adresse de 8 bits. Les instructions d'accès mémoire pouvaient ainsi préciser une paire de registre d'indice pour préciser quelle adresse lire/écrire. Idem pour les branchements indirects : le processeur supportait une instruction de branchement indirect qui précisait l'adresse dans une paire de registres d'indice. Les registres d'indice sont donc assez mal nommés sur cette architecture, vu qu'ils peuvent servir soit de registre d'indice, soit de demi-registre d'adresse. Il s'agit là du système de pseudo-aliasing des registres, mais appliqué aux registres d'indice.
L'Intel 4004 gérait deux instructions pour gérer les adresses mémoires. La première, l'instruction DCL (''Designate Command Line'') configure le registre de page. Elle prend en entrée un numéro de page et le copie dans le registre de page. L'opérande peut provenir d'un registre d'indice ou de l'accumulateur. La seconde, l'instruction SRC (''Send Register Control'') concatène deux registres d'indice pour obtenir une adresse de 8 bits. Un accès mémoire se fait donc en maximum trois instructions : une qui configure le registre de page si ce n'est pas déjà fait, une instruction SRC pour envoyer l'adresse, et une troisième instruction qui dit s'il faut faire une lecture ou une écriture.
===La microarchitecture de l'Intel 4004===
Il incorporait une pile d'adresse de retour intégrée au processeur. La pile d'adresse acceptait exactement 3 adresses maximum. Elle était regroupée avec le ''program counter'' dans un banc de registre, de 4 registres. Le ''program counter'' et le pointeur de pile faisaient chacun 12 bits, soit trois nibble. Ils étaient incrémentés par un incrémenteur dédié.
SI on omet le registre de page et la pile d'adresse, le 4004 est une architecture à accumulateur des plus classiques, avec un bus interne unique, un banc de registre pour les registres d'indices, un accumulateur relié à une unité de calcul. Les registres d'indice étaient dans un banc de registre séparés, car ils faisaient 4 bits chacun, contrairement au pointeur de pile et le ''program counter''. Un détail important est que les bancs de registres du 4004 étaient implémentés avec de la DRAM, et non des registres usuels fabriqués avec des bascules 1 bit.
[[File:Microarchitecture de l'Intel 4004.png|centre|vignette|upright=2.5|Microarchitecture de l'Intel 4004]]
<noinclude>
{{NavChapitre | book=Fonctionnement d'un ordinateur
| prev=Les architectures à pile et mémoire-mémoire
| prevText=Les architectures à pile et mémoire-mémoire
| next=Les processeurs de traitement du signal
| nextText=Les processeurs de traitement du signal
}}
</noinclude>
80w9m8a55pgcud9yh9nebvcuu2maicm
765710
765709
2026-05-01T18:08:37Z
Mewtow
31375
/* Les microcontrôleurs PIC */
765710
wikitext
text/x-wiki
Nous avons déjà abordé la notion de processeur 8, 16, 32, 64 bits. Elle désigne la taille des registres généraux, ou de l'accumulateur. De nos jours, les processeurs 32 et 64 bits sont la norme, mais les premiers micro-processeurs étaient des processeurs 4 et 8, avant de passer rapidement au 16 bits. La raison est que leur budget en transistor limité faisait qu'on ne pouvait pas utiliser une ALU trop grande : une ALU 8 bit prend deux fois moins de place et de transistors qu'une ALU 16 bits. Cependant, les processeurs 8 bits avaient de sérieuses limitations qui étaient compensées par diverses solutions. Dans ce chapitre, nous allons faire une revue rapide des processeurs 8 bits et de leurs fonctionnalités.
La principale limitation des CPU 8 bits était l'adressage : des registres de 8 bits limitaient l'espace d'adressage à seulement 256 adresses, soit à peine 256 octets ! Intuitivement, on se dit que 256 octets est purement impraticable, on ne peut rien faire d'intéressant avec seulement 256 de RAM + ROM. Et c'est partiellement vrai. L'adage veut que 16 bits est la taille minimale intéressante, la limite à partir de laquelle on a assez de mémoire RAM/ROM pour coder des applications intéressantes. Mais 256 octets de RAM est largement suffisant sur de nombreux systèmes embarqués simples s'en accommodent : des caisses enregistreuses, des systèmes de régulation de feu de circulation, etc.
Pour les applications demandant plus de mémoire RAM, les CPU de l'époque contournaient la limitation de 256 octets de RAM avec de nombreux stratagèmes. Dans ce qui va suivre, nous allons séparer les CPU 8 bits selon qu'ils utilisent une architecture Harvard ou une architecture Von Neumann. La raison est qu'une architecture Harvard permet en soi de contourner partiellement ce problème d'adressage. Les choses sont plus compliquées avec une architecture Von Neumann.
==Les processeurs 8/16 bits à architecture Harvard ==
La première solution est d'utiliser une architecture Harvard. Le processeur 8 bit a alors deux espaces d'adressage : un pour la RAM, un autre pour la ROM. Et les deux utilisent des adresses de taille différente. La ROM est reliée à un bus d'adresse de 16 bits, alors que la RAM est elle connectée à un bus d'adresse de 8 bits. La RAM est donc limitée à 256 octets, alors que la ROM peut monter jusqu'à 64 kibioctets. Mine de rien, faire ainsi est largement suffisant.
Les processeurs de l'époque intégraient parfois les 256 octets de RAM directement dans le processeur. Beaucoup en implémentaient moins, avec par exemple seulement 64 octets de RAM, ou 32 octets, ou 128 octets. L'avantage est que cela éliminait le bus d'adresse des données et ne laissait que le bus d'adresse pour la ROM. On économisait ainsi beaucoup de broches sur le circuit intégré du CPU. Et pour les applications demandant plus de RAM, on pouvait ajouter un circuit séparé qui permettait d'adresser une RAM plus grande. Mais cela sera plus clair avec un exemple.
===Les microcontrôleurs PIC===
Les '''microcontrôleurs PIC''' regroupent des microcontrôleurs allant de microcontrôleurs 8 bits aux performances très faible, à des microcontrôleurs 32 bits bien plus puissants. Les microcontrôleurs PIC sont très utilisés dans l'embarqué ou d'informatique industrielle. Ils sont vendu à des volumes assez impressionnants, plusieurs millions par an. Et si vous avez ou êtes en train de faire des études d'électronique, je parie que vous les avez déjà vu en classe, ou que ce ne saurait tarder. Dans ce qui suit, nous allons nous concentrer sur les microcontrôleurs PIC 8 bits, à savoir les PIC 16, 16 et 18. Les PIC 24, qui sont des microcontrôleurs 16 bits, ne seront pas abordés.
Les microcontrôleurs PIC 8 bits sont une architecture Harvard, comme dit plus haut. La mémoire ROM des PIC va de 1024 instructions à 4096 instructions. En comparaison, la mémoire RAM des microcontrôleurs PIC ne peut pas dépasser 256 adresses, et elle est encore plus petite en pratique sur certains modèles. Pour donner un exemple, le PIC16F84 a une RAM composée de 68 "registres" de 8 bits. Le terme "registres" devrait vous faire tiquer, mais c'est bien le terme utilisé dans la documentation des PIC. Et il faut admettre que la différence entre banc de registre et SRAM intégrée est floue, mais nous expliquerons pourquoi dans quelques paragraphes.
: Les PIC 18 peuvent adresser plus de 256 octets de RAM en utilisant la commutation de banques, une technique qui sera abordée dans plusieurs chapitres.
[[File:DocPIC16F84 3.png|centre|vignette|upright=3|Espaces d'adressage du PIC16F84.]]
Un détail est que la SRAM n'a qu'un seul port qui sert à la fois pour les lectures et écritures. Pour compenser, les PIC sont des architectures à accumulateur, où une opérande est lue depuis la SRAM, l'autre depuis l'accumulateur. Leur implémentation de l'accumulateur ajoute une petite subtilité : le résultat d'une opération arithmétique peut être enregistré ailleurs que dans l'accumulateur. Le résultat peut aussi remplacer la seconde opérande, celle lue en mémoire RAM. Dit autrement, le résultat est enregistré dans l'adresse mémoire source. Les instructions de calcul ont le choix : un bit dans leur encodage précise où enregistrer le résultat.
{|
|-
|[[File:DocPIC16F84 4.png|centre|vignette|upright=2|Microarchitecture simplifiée d'un microcontroleur PIC (ici, un 16F84).]]
|[[File:DocPIC16F84 5.png|centre|vignette|upright=2|Microarchitecture simplifiée d'un microcontroleur PIC (ici, un 16F84), avec les branchements directs.]]
|}
Les PIC incorporent une pile d'appel allant de 2 à 8 niveaux, suivant les modèles. Outre l'accumulateur, les PIC disposent de registres de contrôle, d'un ''program counter'', d'un registre d'état, et d'un pointeur de pile. Il y a aussi des registres pour les entrées et sorties. Les registres d'entrée-sortie permettent de lire ou écrire sur un port d'entrée-sortie ou de lire un ''timer''. En clair, les PIC ont un espace d'adressage séparé pour les entrées-sorties.
Un détail très important est que les registres sont mappés en mémoire, à quelques exceptions près ! En clair, on peut y accéder en lisant/écrivant à une adresse mémoire bien précise. Les seules registres qui ne sont pas mappés en mémoire sont l'accumulateur, la pile d'appel, et les registres d'entrée-sortie. Par exemple, sur les modèles 16F, l'espace d'adressage fait 128 octets, dont 32 sont réservés aux registres du processeur, ce qui fait que seules 96 octets sont adressables comme de la RAM. Mais les 128 octets sont un seul et unique SRAM dans le processeur. Ce qui explique qu'il est difficile de séparer banc de registre et RAM principale sur ce processeur : les deux sont fusionnées !
: Les modèles PIC 17 ont rendu l'accumulateur mappé en mémoire RAM !
[[File:DocPIC16F84.png|centre|vignette|upright=2|DocPIC16F84]]
La petite taille de la ROM d'un PIC n'est pas une surprise. Les architectures 8 bits sont conçues pour ne pas utiliser beaucoup de transistors et être très simples. Aussi, utiliser une petite ROM est nécessaire. Mais il faut aussi adapter le jeu d'instruction, pour qu'il ait une bonne densité de code. Par exemple, il faut faire en sorte d'avoir des instructions assez courtes. Si les instructions font 16 bits au lieu de 32, on divise par deux le nombre de transistors nécessaire pour la mémoire ROM. La conséquence est que le jeu d’instruction des PIC est adapté à cette contrainte.
Les microcontrôleurs PIC utilisent un jeu d'instruction propriétaire, dont les instructions sont très petites. Les premières versions du jeu d'instruction utilisaient des instructions codées sur 12 bits, dont 5 pour l'adresse mémoire de la seconde opérande. Pour les branchements, 3 bits étaient utilisés pour l'opcode, 9 pour l'adresse de destination. Par la suite, les instructions ont été étendues à 13 bits sur les PIC1670, puis à 14, 15 et 16 bits. Les adresses ont alors été élargies, ce qui permet d'adresser en peu plus de mémoire RAM.
Il est intéressant de regarder comment les PIC font pour obtenir des instructions aussi courtes. Premièrement, le fait d'utiliser une architecture à accumulateur, couplé à une RAM très petite aident grandement. Les architectures à accumulateur ont besoin de préciser un opcode et une adresse mémoire pour chaque instruction, pas besoin de préciser de noms de registres ni le mode d'adressage. La taille des adresses mémoire est censé être un problème pour la densité de code, mais les adresses d'un processeur 8 bits font 8 bits. On peut alors avoir un jeu d'instruction étoffé, en utilisant des instructions 16 bits, qui concatènent un opcode et une adresse mémoire, d'un octet chacun.
Les instructions se limitent à des additions/soustractions, des opérations bit à bit,des branchements, des instructions LOAD/STORE, ainsi que des opérations de manipulation de bit. Il y a une instruction pour mettre une adresse à zéro, qui peut aussi mettre à zéro l’accumulateur. La plupart des modèles n'a pas d'instruction MOV pour faire une copie entre deux registres, elle n'a été intégrée que sur les modèles haute performance.
Pour ce qui est des branchements, les PIC n'ont pas d'instructions de branchement conditionnels, ils font avec une SKIP instruction et des branchements inconditionnels. Par contre, ils ont des branchements pour les appels et retour de fonction. Mieux que ça, ils intègrent une pile d'appel d'environ 8 adresses de retour. Pour donner une idée, l'adresse de retour est encodée sur 10 bits sur les PIC16F84.
Pour les instructions de manipulation de bit, il y a des instructions pour tester/masquer un bit dans une opérande, 4 en tout ( mettre à 0, mettre à 1, tester si bit = 1, tester si bit = 0). Les instructions qui testent un bit prennent leur opérande dans l'accumulateur. Il y a aussi deux instructions de rotation à gauche et droite, qui tiennent compte de la retenue mémorisée dans le registre d'état. Mentionnons aussi une instruction pour inverser deux ''nibbles'' dans un octet.
Les PIC ont aussi des instructions d'incrémentation et de décrémentation, un peu spéciales. Ces dernières regroupent : une incrémentation normale, une décrémentation normale, une décrémentation fusionnée avec une instruction SKIP, et une incrémentation fusionnée avec une instruction SKIP. Les deux dernières incrémentent/décrémentent l'accumulateur et SKIP l'instruction suivante si le résultat est zéro. Elles permettent de fortement simplifier l'implémentation des boucles qui s'exécutent tant que leur compteur atteint zéro.
Les modèles haute performance ajoutent des instructions d'addition avec retenue entrante, idem pour la soustraction. De telles instructions ssont très utiles pour faire des additions/soustractions sur des opérandes de 16 bits. Le processeur a beau être un CPU 8 bits, il peut être utilisé pour faire des calculs 16 bits, la performance est alors amoindrie, mais ce n'est pas un problème pour les applications d'un tel microcontroleur.
Les modèles intiaux, comme les PIC 10 et 12, ne supportaient pas les interruptions, mais c'est chose réglé sur les modèles plus récents. Ils ont même des registres séparés pour les interruptions et les programmes normaux. De plus, ils intégrent nativement un ''watchdog timer''.
{|class="wikitable" style="text-align:center"
|+ Jeu d'instruction des dodèles PCI 16
|-
! colspan="5" | Instructions diverses
|-
| colspan="3" | 00 0000 0000 0000 || NOP || Ne fait rien
|-
| colspan="3" | 00 0000 0000 1000 || RETURN || Instruction de retour pour une fonction
|-
| colspan="3" | 00 0000 0000 1001 || NOP || Instruction de retour pour une interruption
|-
| colspan="3" | 00 0000 0110 0011 || SLEEP || Mise en veille
|-
| colspan="3" | 00 0000 0110 0100 || CLRWDT || RESET le ''watchdog timer'', intégré dans le PIC
|-
! colspan="5" | Instructions de manipulation de bit
|-
| 0100 || Position du bit dans l'opérande || Adresse mémoire || BCF || Met le bit à 1
|-
| 0101 || Position du bit dans l'opérande || Adresse mémoire || BSF || Met le bit à 0
|-
| 0110 || Position du bit dans l'opérande || Adresse mémoire || BTFSC || Teste si le bit adressé est à 1
|-
| 0111 || Position du bit dans l'opérande || Adresse mémoire || BTFSS || Teste si le bit adressé est à 0
|-
! colspan="5" | Branchements
|-
| colspan="2" | 100 || Adresse mémoire || CALL || Appel de fonction
|-
| colspan="2" | 100 || Adresse mémoire || GOTO || Branchement inconditionnel
|-
! colspan="5" | Instructions logiques/arithmétiques avec opérande lue en mémoire RAM
|-
| colspan="5" | ''Le bit '''d''' dans l'opcode indique la destination : accumulateur ou adresse mémoire''.
|-
| colspan="2" | 0000001 || Adresse mémoire || MOVWF || Store (accumulateur vers destination)
|-
| colspan="2" | 000001d || Adresse mémoire || MOVWF || Met à zéro la destination (adresse ou registre)
|-
| colspan="2" | 000001d || Adresse mémoire || SUBWF || Soustraction
|-
| colspan="2" | 000010d|| Adresse mémoire || DECF || Décrémentation
|-
| colspan="2" | 000100d|| Adresse mémoire || IORWF || OU bit à bit
|-
| colspan="2" | 000101d|| Adresse mémoire || ANDWF || ET bit à bit
|-
| colspan="2" | 000110d || Adresse mémoire || XORWF || XOR bit à bit
|-
| colspan="2" | 000111d || Adresse mémoire || ADDWF VWF || Addition
|-
| colspan="2" | 001000d || Adresse mémoire || MOVF || LOAD
|-
| colspan="2" | 001001d || Adresse mémoire || COMF || NOT bit à bit
|-
| colspan="2" | 001010d || Adresse mémoire || INCF || Incrémentation
|-
| colspan="2" | 001011d || Adresse mémoire || DECFSZ || Décrémentation, puis instruction SKIP si résultat = 0
|-
| colspan="2" | 001100d || Adresse mémoire || RRF || Rotation à droite avec retenue entrante
|-
| colspan="2" | 001101d || Adresse mémoire || RLF || Rotation à gauche avec retenue entrante
|-
| colspan="2" | 001110d || Adresse mémoire || SWAPF || Echange deux ''niblle'' dans un octet
|-
| colspan="2" | 001111d || Adresse mémoire || INCFSZ || Incrémentation, puis instruction SKIP si résultat = 0
|-
! colspan="5" | Instructions logiques/arithmétiques avec constante immédiate
|-
| colspan="2" | 1100xx || Constante immédiate (8bits) || MOVLW || Copie constante dans accumulateur
|-
| colspan="2" | 1101xx || Constante immédiate (8bits) || RETLW || MOV fusionné avec un retour de fonction
|-
| colspan="2" | 111000 || Constante immédiate (8bits) || IORLW || OU
|-
| colspan="2" | 111001 || Constante immédiate (8bits) || ANDLW || ET
|-
| colspan="2" | 111010 || Constante immédiate (8bits) || XORLW || XOR
|-
| colspan="2" | 11110x || Constante immédiate (8bits) || SUBLW || Soustraction
|-
| colspan="2" | 11111x || Constante immédiate (8bits) || ADDLW || Addition
|}
Les PIC gèrent l'adressage absolu et immédiat, mais pas plus. L'adressage absolu, celui où l'adresse est intégrée dans l'instruction, est très simple à implémenter. Les adresses prennent moins d'un octet, vu que la taille de la RAM est très petite, les adresses sont très courtes, les intégrer dans des instructions elles-mêmes courtes n'est pas un problème. L'adresse est encodée sur 5 à 7 bits, selon le modèle, ce qui permet d'adresser entre 32 et 128 octets.
Les PIC ne supportent pas l'adressage indirect, mais peuvent l'émuler grâce à un '''registre d'adresse''' dédié. Il s'agit du registre FSR, qui mémorise l'adresse à lire/écrire. Il est possible de copier un pointeur dedans, qui provient soit de l'accumulateur, soit de la mémoire SRAM. Dans les deux cas, la donnée adressée est lue ou écrite dans un registre INDR, est un registre d’interfaçage rendu adressable. Le registre FSR est directement connecté sur le bus d'adresse.
Les modèles de base se débrouillent avec un registre FSR et un registre INDR, mais les modèles plus performants ont deux ou trois copies de chaque registre. Les modèles PIC18 ajoutent aussi des instructions LOAD/STORE qui émulent les modes d'adressage à post- ou pré-incrément/décrément, et le mode d'adressage "Base + Indice + Décalage", encore une fois en utilisant les registres FSR et INDR.
Avec tout ce qu'on vient de dire, vous devriez pouvoir comprendre la microarchitecture d'un PIC, qui est résumée dans ce schéma.
[[File:DocPIC16F84 all.png|centre|vignette|upright=2.5|Microarchitecture du PIC16F84.]]
===Le Fairchild F8 et la console de jeu Fairchild Channel F===
Un autre exemple est la Fairchild F8 de la défunte entreprise Fairchild Semiconductor. Il incorpore un processeur 8 bits, c'est à dire que le processeur fait des calculs sur des entiers de 8 bits maximum, une mémoire RAM de 64 octets, ainsi qu'une mémoire ROM de 1 kibioctet. Les 64 octets de RAM sont certes très peu, mais c'est suffisant pour certaines applications simples, comme les caisses automatiques de l'époque, ou des applications embarquées. Et de toute façon, il est possible d'ajouter de la mémoire RAM supplémentaire si les 64 octets de RAM intégrée ne suffisent pas. Le système était donc modulaire, adaptable selon les besoins, peu cher pour son implémentation minimale sans RAM en plus.
Vu qu'il s'agit d'un des tout premiers ordinateurs, il est sorti à une époque où la technologie était rudimentaire. À cette époque, le processeur était composé de pièces détachées qu'il fallait souder ensemble pour obtenir un processeur fonctionnel. Ce n'est que plus tard qu'est apparu le micro-processeur, qui regroupe un processeur complet dans un seul circuit intégré. Le résultat est que le processeur du Fairchild F8 est coupé en deux, l'unité de calcul et l'unité de contrôle sont placés dans des pièces détachées séparés.
Le microcontrôleur est composé de trois à quatre pièces détachées, certaines étant optionnelles. La première est le '''3850 CPU''', qui regroupe l'unité de calcul et la mémoire RAM intégrée. La seconde est le PSU (''3851 Program Storage Unit''), qui regroupe la mémoire ROM et l'unité de contrôle, ''program counter'' inclut. S'il y a besoin d'utiliser plus de RAM, il faut ajouter un circuit d’interface mémoire, qui est au choix le ''3852 Dynamic Memory Interface'' (DMI) ou le ''3853 Static Memory Interface'', le premier étant connecté à une mémoire de type DRAM, l'autre à une SRAM (nous verrons ce que sont les DRAM et les SRAM dans le prochain chapitre).
[[File:Fairchild F8.png|centre|vignette|upright=2|Fairchild F8]]
Le système minimal est composé d'un PSU et d'un 3850, sans les circuits d'interface mémoire. Le tout donne un système avec un processeur 8 bit, 64 octets de RAM et 1 kibioctet de ROM, les deux mémoires étant intégrées dans le "processeur". Le processeur gérait 4 entrées-sorties, chacune étant reliée avec un bus de 8 bit au processeur. Au passage, en 1977, Mostek a créé un microcontrôleur qui regroupe un PSU et un 3850 : le Mostek 3870. Le système minimal n'avait pas de bus d'adresse, vu que la RAM était intégrée au processeur. C'est les 3852 et 3853 qui ajoutaient un bus d'adresse. Ils ajoutent un bus d'adresse de 16 bits, ce qui permet d'adresser 64 kibioctets de RAM.
[[File:Fairchild-Channel-F.jpg|vignette|un Fairchild Channel F]]
Le Fairchild F8 a été utilisé dans la Fairchild Channel F, une des toute première console de seconde génération, à savoir des consoles qui utilisaient des cartouches de jeu. Avant les consoles de seconde génération, les consoles étaient non-programmables. Elles étaient conçues pour faire tourner un jeu précis, aucun autre, le jeu étant implémenté dans leurs circuits.
La Fairchild Channel F est composé du système minimal, auquel on a ajouté une carte son rudimentaire et 2 kibioctets de mémoire vidéo. La mémoire vidéo sert uniquement pour afficher des images à l'écran : on écrit l'image à afficher dedans, un circuit vidéo se charge de l'afficher à l'écran automatiquement. Le processeur ne fait qu'écrire dans cette RAM vidéo, il ne peut pas en lire le contenu. De la RAM supplémentaire peut cependant être ajoutée dans les cartouches de jeu.
===L'usage d'une architecture Harvard modifiée : les consoles 8 bits===
Pour encore améliorer la situation, il est possible d'utiliser une architecture Harvard modifiée, qui permet de lire des données depuis la mémoire ROM. Cela réduit encore plus les besoins en mémoire RAM. Les constantes manipulées par le programme sont mémorisées en ROM, lues depuis la ROM, au lieu d'être chargées en RAM. Les consoles de jeu utilisaient beaucoup de stratagème.
L'exemple type est celui des consoles 8 bits avec des graphismes en 2D. La cartouche de jeu contenait une ROM, qui mémorisait le code du jeu, les niveaux, les sprites et autres données graphiques. Leur carte graphique lisait directement les ''sprites'' depuis la mémoire ROM, sans avoir à les charger en mémoire vidéo. La mémoire vidéo se contentait de mémoriser le reste des informations graphiques, ainsi que des pointeurs vers les ''sprites'' en ROM. En conséquence, les consoles 8 bits n'avaient pas besoin de beaucoup de RAM, vu qu'une grande partie des données utiles étaient dans une ROM directement accessible par le processeur. A l'opposé, les micro-ordinateurs devaient copier les données d'un jeu depuis une disquette dans la mémoire RAM, ce qui demandait d'avoir plus de RAM.
Le passage au support CD sur les consoles 32 bits a eu la même conséquence. Le processeur ne pouvant pas lire directement le CD à sa guise, il fallait copier les données du CD en RAM. D'où l'apparition de temps de chargement assez longs, inexistants sur support cartouche.
Avec ce genre de stratagèmes, 256 octets de RAM est largement suffisant sur de nombreux systèmes, à condition qu'on ait assez de ROM pour coder un programme digne de ce nom. Par exemple, de nombreux systèmes embarqués simples s'en accommodent : des caisses enregistreuses, des systèmes de régulation de feu de circulation, etc.
===Le HP Nanoprocessor : un processeur sans ALU===
Un dernier exemple est celui du processeur HP Nanoprocessor, de l'entreprise HP. Il a été commercialisé en 1974, en même temps que les premiers micro-processeurs d'Intel. Tous les processeurs de l'époque étaient des processeurs 8 bits et le HP Nanoprocessor ne faisait pas exception. Ce n'était pas un processeur haute performance, il était destiné à des applications d'informatique industrielle ou embarquée. D'ailleurs, il utilisait des transistors de type metal-gate, peu performants, là où ses contemporains utilisait des transistors en silicium, plus performants.
Mais une caractéristique qui rend cela encore plus claire est qu'il n'y a pas d'ALU ! En effet, ce processeur est incapable de faire des additions, des soustractions ou autres opérations simples ! Il est cependant capable d'effectuer des incrémentations et décrémentations, des décalages, des opérations logiques comme des ET/OU/NON/XOR et bien d'autres. Il supporte en tout 48 instructions, avec un support limité des modes d'adressage indirects. Les instructions de branchement étaient des instructions SKIP, il n'y avait pas d'instructions de branchement généralistes.
Pour ce qui est des registres, il disposait de 16 registres de 8 bits et d'un accumulateur. Niveau mémoire, il était relié à une mémoire ROM, rien de plus. Il n'avait de RAM supplémentaire qu'on pouvait lui adjoindre, il devait se débrouiller avec seulement ses registres. Et cela ne posait pas de problèmes pour son usage. Seul le mode d'adressage indirect à registre est supporté, il n'y a pas de registres d'indices. Ce mode d'adressage permet de lire des données en mémoire ROM, la ROM pouvant contenir des tableaux de valeurs constantes.
: Il est possible de lui adjoindre de la RAM via les ports d'entrée-sortie, ainsi qu'une ALU, mais RAM et ALU sont traités comme des périphériques avec lesquels on communique, ils ne sont pas intégrés au processeur.
Niveau micro-architecture, il incorporait une unité de calcul logique et un circuit comparateur. Le comparateur était un circuit comparateur série des plus basiques, qui était utilisé pour les instructions de branchement et associées. L'unité de calcul logique gérait des incrémentations/décrémentation, des décalages, les opérations logiques et quelques autres. L'unité de calcul logique était bit-slicée, à savoir conçue en assemblant 8 ALU de 1 bit chacune, enchainées en série. Le tout était combiné à des circuits de ''carry skip''.
[[File:Unité de calcul du HP nanonprocessor.png|centre|vignette|upright=2|Unité de calcul du HP nanoprocessor]]
Son unité de décodage d'instruction était très simple, essentiellement basée sur des portes NOR, grâce à un encodage efficace des instructions machine. Le ''program counter'' fait 11 bits, ce qui permet d'adresser une ROM de 2 kibioctets. Le ''program counter'' était relié à un circuit incrémenteur qui gérait les isntructions SKIP (il pouvait incrémenter le ''program counter'' par pas de 1 ou de 2 en cas de SKIP). Le processeur contient aussi deux registres, qui servent en quelque sorte de pile d'adresse de retour. Un premier registre mémorise l'adresse de retour d'une fonction, l'autre mémorise le ''program counter'' lors d'une interruption, pour savoir où brancher à la fin de l'interruption.
[[File:HP nanoprocessor.png|centre|vignette|upright=2.5|HP nanoprocessor]]
Fait intéressant, le concepteur du processeur a gracieusement donné les masques utilisés pour graver le silicium du processeur au site [https://www.cpushack.com/ CPU Shack]. Les masques en question sont disponibles ici :
* [https://www.cpushack.com/2020/08/20/hp-nanoprocessor-mask-set/ HP NanoProcessor Mask Set]
* [https://www.cpushack.com/2020/08/09/the-forgotten-ones-hp-nanoprocessor/ The Forgotten Ones: HP Nanoprocessor]
Les masques ont été analysés par Ken Shirrif dans cet article de blog :
* [https://www.righto.com/2020/09/hp-nanoprocessor-part-ii-reverse.html HP Nanoprocessor part II: Reverse-engineering the circuits from the masks]
==Les processeurs 8/16 bits à architecture Von Neumann==
L'usage d'une architecture Harvard est une solution pour adresser plus de mémoire avec des CPU 8 bits. Mais plusieurs microprocesseurs commerciaux n'utilisaient pas cette solution. À la place, c'était des architectures Von Neumann, mais qui étaient capables de gérer des adresses de 16 bits. Les données faisaient 8 bits, les registres faisaient 8 bits, mais quelques techniques permettaient de gérer des adresses de 16 bits. Nous parlerons de '''processeurs 8/16 bits''' pour les désigner, et nous allons les étudier à part.
Un point important est que la gestion d'adresses de 16 bits permet d'adresser 64 kibioctets, qui peuvent être remplis avec de la RAM et de la ROM. On a donc le meilleur des mondes : 64 kibioctets de mémoire, mais avec des données de 8 bits et les économies de circuit qui vont avec. L'avantage est que le processeur peut maintenant gérer une vraie pile d'appel, pas seulement une pile d'adresse de retour. Il lui suffit pour cela d'intégrer un pointeur de pile codé sur 16 bits.
===Les modes d'adressage par page des CPU Motorola===
Les processeurs Motorola 8 bits étaient des processeurs 8 bits avec un bus d'adresse de 16 bits. C'était des processeurs à accumulateur incorporant deux registres d'indice, un registre d'état, un pointeur de pile, et un ''program counter''. Tous les registres sont reliés au bus d'adresse, sauf le registre d'état et l’accumulateur. Tous les registres font 8 bits, sauf le ''program counter''. La pile est câblée pour être dans un bloc de 256 octets compris entre l'adresse 1 0000 0000 et l'adresse 1 1111 1111, ce qui fait que son adressage se fait avec un seul octet.
[[File:6502-architecture.svg|centre|vignette|upright=1.5|Architecture simplifiée du 6502.</br> X et Y : registres d'indice ;</br> S : le pointeur de pile ;</br> A : accumulateur ;</br>P : registre d'état.</br>]]
Les processeurs Motorola 8 bits utilisaient une méthode simple pour adresser 64 kibioctets de RAM, avec des registres de 8 bits. Pour cela, ils utilisaient une variante de l'adressage base + décalage. Elle améliore l'adressage absolu, qui intègre l'adresse à lire/écrire dans l'instruction elle-même. L'adresse en question est de 8 bits et n'encode que les 8 bits de poids faible de l'adresse, les 8 bits de poids fort sont dans un '''registre de page''' adressé implicitement. L'adresse finale est obtenue en concaténant ce registre avec l'adresse mémoire intégrée dans l’instruction. Le résultat est que la mémoire était découpée en blocs de 256 consécutifs, chacun pouvant servir de fenêtre de 256 octets. Une page est réservée pour la pile, la seconde, comme dit plus haut.
Formellement, ce mode d'adressage a des ressemblances avec la commutation de banques, une technique qu'on verra dans les chapitres sur l'espace d'adressage et la mémoire virtuelle. Mais ce n'en est pas du tout : le registre de page est utilisé uniquement pour les accès mémoire avec le mode d'adressage base + décalage, mais pas pour les autres accès mémoire, qui gèrent des adresses complètes. Notons que l'usage d'un registre de page dédié fait que celui-ci est adressé implicitement.
Il faut noter que la technique a été utilisée sur des processeurs 16 bits, pour contourner la petite taille des instructions. Un exemple est celui du HP 2100, un processeur 16 bits. Il avait un registre de page de 5 bits et encodait 10 bits d'adresse dans ses instructions. Ses instructions d'accès mémoire disposaient d'un bit qui choisit quel mode d'adressage utiliser. S'il était à 0, l'adressage absolu était utilisé, le registre de page n'était pas utilisé. Mais s'il était à 1, le registre de page était utilisé pour calculer l'adresse.
Une évolution de l'adressage précédent est le '''mode page direct'''. Avec lui, le registre de page est étendu et contient une adresse mémoire complète. L'adresse finale n'est pas obtenue par concaténation, mais en additionnant le registre de page avec l'adresse fournie par adressage absolu + décalage. Un exemple est celui des premiers processeurs Motorola, qui géraient des adresses courtes de 8 bits. L'adresse courte de 8 bits correspondait non pas aux 256 premiers octets de la mémoire, mais à une fenêtre de 256 octets déplaçable en mémoire. La position de la fenêtre de 256 octets était spécifiée par le registre de page de 16 bits, qui précisait l'adresse du début de la fenêtre, celle de sa première donnée.
Il s'agit donc formellement d'adressage base + décalage, à un détail près : il n'y a qu'un seul registre de base. Le fait que ce registre de base soit unique fait qu'il est adressé implicitement, on n'a pas à encoder le numéro/noms de registre dans l'instruction. Le registre de base est utilisé uniquement pour l'adressage absolu, pas pour les autres accès mémoire. S'il y a des ressemblances avec la segmentation, une technique de mémoire virtuelle qu'on abordera dans quelques chapitres, ce n'en est pas vu que le registre de base est utilisé seulement pour un mode d'adressage bien précis.
===Le ''pseudo-aliasing'' des registres des processeurs Intel x86===
Voyons maintenant le cas des anciens processeurs 8 bits d'Intel à savoir l'Intel 4004, 4040, 8008 et 8080. Le Z80, un processeur inspiré des CPU Intel 8 bits, est aussi concerné. Avant de poursuivre, parlons des registres de ces processeurs. Les premiers CPU Intel incorporaient 7 registres de 8 bits nommés A, B, C, D, E, F, H, L, SP. Ils correspondent respectivement à : l'accumulateur A ; six registres nommés B, C, D, E, H et L ; le registre d'état F ; le pointeur de pile SP. Le Z80 ajoute deux registres d'indice X et Y. De plus, le Z80 dispose de registres d'interruption, qui sont en quelque sorte des copies des registres A, B, C, D, E, F, H, L. Le tout est illustré dans le tableau ci-dessous.
{|class="wikitable" style="text-align:center;"
|-
!
! Registres des CPU Intel
! Registres supplémentaires du Z80
|-
! Accumulateur
| A
| A'
|-
! Registre d'état
| F
| F'
|-
! Registres généraux
| B, C, D, E, H, L
| B', C', D', E', H', L'
|-
! Pointeur de pile
| colspan="2" | SP (sauf pour le 8008)
|-
! Registres d'indice
|
| X et Y
|}
Le 8008 incorpore une pile d'appel de 7 adresses, dans le processeur lui-même. Il en est de la même avec le 4004 et le 4040, comme on le verra dans la section sur les processeurs 4 bits. Mais le 8080 et le 8085 ont remplacé le tout par un simple pointeur de pile, afin d'avoir une véritable pile d'appel. Autant c'est impossible d'avoir une pile d'appel avec seulement 256 octets de mémoire, autant on peut se le permettre avec 65 536 adresses.
Pour gérer des adresses de 16 bits, ils auraient pu utiliser des registres d'adresse séparés, mais on préféré un système de '''pseudo-''aliasing'' de registres'''. Formellement, c'est un système qui concatène deux registres 8 bits pour obtenir une adresse de 16 bits. L’appariement a lieu lors de certaines opérations bien précises, qui n'ont de sens que pour les adresses : la lecture/écriture en mémoire, et l'incrémentation.
Il y avait cependant des contraintes quant aux paires de registres possibles, toutes les paires de registres n'étaient pas autorisées. Les CPU concernés sont donc des processeurs hybrides accumulateur-registre généraux. L'accumulateur ne peut pas être appairé, seuls les registres généraux le peuvent. Le Z80 autorise plus de paires que les CPU Intel. Voici les paires de registres qui pouvaient servir d'adresse 16 bits :
* Les CPU 8008 d'Intel autorisait une seule paire formée des registres H et L.
* Les autres processeurs, à savoir le 8080, le 8085 et le Z80, autorisaient : les paires BC, DE et HL.
Le 8008 ne gérait que des opérations sur 8 bits. Mais le 8080 et le 8085 ont ajouté des instructions 16 bits qui agissaient sur des paires de registre, que le Z80 a repris. Une paire de registres est considérée comme un registre unique de 16 bits pour certaines opérations arithmétiques, dont l'incrémentation. Voici la liste des instructions concernées :
* INC et DEC pour l'incrémentation et la décrémentation ;
* DAD : additionne le registre HL avec une autre paire (Hl inclus) ;
* LXI : copie une constante immédiate dans une paire de registres ;
* LHLD : lit 16 depuis la mémoire et l'enregistre dans une paire de registres ;
* SHLD : copie 16 bits depuis une paire de registres et l'enregistre en mémoire ;
* PUSH et POP : empile ou dépilent une paire de registre sur la pile ;
* XTHL : échange la paire HL avec les 16 bits au sommet de la pile d'appel ;
* XCHG : échange le contenu de la paire HL et DE.
Pour résumer, le processeur avait des instructions LOAD, STORE, PUSH et POP adaptées pour gérer des paires de registre. De plus, l'instruction XCHG permettait d’échanger le contenu des paires DE et HL. L'instruction a été étendue sur les processeurs 16 bits pour échanger tous les registres. Mais l'implémentation était alors différente. L'incrémentation sur une paire de 16 bit était très utile, car les adresses sont souvent incrémentées quand on parcours un tableau. Ces instructions nous donnent quelques indices sur ce qu'il y a dans le processeur.
Le système de pseudo-aliasing a un impact sur le banc de registre. Le banc de registre regroupe les registres généraux et le pointeur de pile, mais ne contient pas l'accumulateur. Les contraintes sur les paires de registres possibles ne s'expliquent que d'une seule manière : le banc de registre contient des registres de 16 bits, une paire de registres 8 bits est mémorisée dans un registre unique. Il faut donc faire une différence entre les registres architecturaux de 8 bits, et les registres réels de 16 bits.
Le banc de registre a un port de 8 bits pour les données, qui est fabriqué à partir d'un port 16 bits auquel on a rajouté un multiplexeur pour choisir soit l'octet de poids faible, soit l'octet de poids fort. Le bus de données fait 8 bits, ce qui fait que les instructions LOAD, STORE, PUSH et POP pour paires 16 bits sont réalisées en deux fois : on lit/écrit l'octet de poids faible, puis celui de poids fort. Par contre, le bus d'adresse fait bien 16 bits. Cela suggère que le banc de registre dispose d'un port de 16 bits dédié aux adresses, en plus du port de données 8 bits.
[[File:Architecture d'un CPU 8-16 bits avec un banc de registre double port.png|centre|vignette|upright=2|Architecture d'un CPU 8-16 bits avec un banc de registre double port]]
L'incrémentation d'une paire 16 bits ne coute rien à implémenter, ou presque. En effet, le processeur incorpore un incrémenteur 16 bits pour le ''program counter'', qui est relié au bus d'adresse. L'idée est de rentabiliser cet incrémenteur, en lui permettant d'incrémenter des données/adresses de 16 bits obtenues via pseudo-aliasing. De même, il peut être utilisé pour incrémenter le pointeur de pile, voire un compteur de rafraichissement mémoire (pour rappel, le rafraîchissement mémoire demande de balayer la mémoire d'adresse en adresse et été fait par le CPU à l'époque). Pour cela, il suffit de connecter le ''program counter'', le banc de registre, et l'incrémenteur, via un bus dédié.
[[File:Calcul d'adresse par ALU dédiée avec PC séparé.png|centre|vignette|upright=2|Calcul d'adresse par ALU dédiée avec PC séparé]]
Notez qu'on peut encore simplifier le tout en placant le ''program counter'' dans le banc de registre, ce qui ne gênera pas le travail de l'incrémenteur mais simplifiera le câblage au bus d'adresse. Ce n'était pas systématique, certains processeurs mettaient le ''program counter'' dans le banc de registre, d'autres non.
: Inclure le ''program counter'' dans le banc de registre permet parfois de remplir un vide. Par exemple, sur un processeur avec 12 registres, le banc de registre devrait faire idéalement 16 registres, inclure le ''program counter'' dedans fait monter le tout à 13.
[[File:Architecture d'un CPU 8-16 bits.png|centre|vignette|upright=2|Architecture d'un CPU 8-16 bits]]
Les processeurs Intel 8 bits, à savoir le 8008, le 8080 et le 8085 ; mettaient le ''program counter'' dans le banc de registre. Vous avez donc toutes les armes pour comprendre leur micro-architecture. Par exemple, voici la micro-architecture du processeur 8080. Remarquez le banc de registre, qui contient tous les registres sauf l'accumulateur et le registre. Il a deux ports : un pour les adresses et un pour les données. Notez le dé-multiplexeur sur le port de donnée. Pour le reste, il s'agit d'une architecture à accumulateur hybride des plus classiques.
[[File:Intel 8080 arch.svg|centre|vignette|upright=3|Microarchitecture de l'Intel 8080.]]
Le Z80 est un processeur inspiré du design des processeurs Intel 8 bits, mais avec pas mal d'améliorations. Un point particulier de ce processeur est son banc de registre. Il contient tous les registres du processeur, y compris l'accumulateur et le registre d'état ! Les seuls registres en-dehors du banc de registre sont le ''program counter'' et un compteur de rafraichissement mémoire IR.
Un autre point particulier est que les registres dans le banc de registres avaient une copie séparée accessible uniquement pour les interruptions, via fenêtrage de registres. Et l'accumulateur et le registre d'état étant dans le banc de registre, il y avait deux accumulateurs et deux registres d'état. Les registres A, B, C, D, E et F étaient dupliqués, par le pointeur de pile ni les registres d'indice. Les copies des registres étaient nommées A', B', C', D', E' et F'.
Le Z80 supportait des instructions d'échange de registre en plus des CPU Intel 8 bits. L'instruction EX peut échanger soit le contenu des paires D,E et H,F, soit la paire A,F avec la paire A',F'. L'instruction EXX échange les paires BC, DE, HL avec les paires BC', DE', HL'. En faisant cela, le programmeur pouvait utiliser deux fois plus de registres généraux s'il n'utilisait pas les interruptions. L'échange de paires se fait sans copies de registres, mais simplement en modifiant l'adresse envoyée sur le banc de registre. Pour cela, plusieurs bascules mémorisent des bits qui indiquent si les paires ont été échangées ou non. Il y a une bascule pour les paires DE , HL ; une autre pour les paires A,F et paire A',F', une dernière pour l'instruction EXX. En combinant ces bascules avec les noms de registres envoyés par le séquenceur, on peut échanger les paires de registres.
==Le cas particulier des processeurs 4 bits : le 4004 d'Intel==
L'Intel 4004 était le tout premier micro-processeur. Il s'agissait d'un microprocesseur de 4 bits, basé sur une architecture à accumulateur. Il disposait d'un accumulateur et de 16 registres d'indice, tous de 4 bits. Il faisait des calculs sur des données de 4 bits, appelées des nibbles. Cependant, sur ses 46 instructions machines supportées, 41 agissaient sur des opérandes de 8 bits, les 5 restantes sur des opérandes de 16 bits. Simplement, les calculs se faisaient en deux fois, en échangeant des données entre mémoire RAM et accumulateur.
Le 4004 est un circuit intégré avec peu de broches. Il dispose notamment d'un bus de données/adresse, qui est multiplexé, c’est-à-dire qu'il sert alternativement de bus de données et de bus d'adresse selon les besoins. Le bus de commande mémoire fait 5 bits, dont 4 pour les chips de RAM, un pour la ROM. Les adresses sont codées sur 12 bits, les données sur 4 et les instructions sur 8 bits. L'envoi d'une adresse sur le bus se fait en plusieurs fois, de même que la lecture d'une instruction. Il s'agit là d'une adaptation pour outrepasser les limitations d'un processeur 4 bit.
[[File:Intel 4004 processor pinout.png|centre|vignette|upright=2|Broches de l'Intel 4004. Nous verrons à quoi elles servent plus bas.]]
===L'espace d'adressage de l'Intel 4004===
Les adresses du processeur sont sur 12 bits, ce qui fait 4096 adresses différentes. Elles regroupent à la fois la ROM et la mémoire RAM, vu que l'architecture est une sorte de mélange bizarre entre une architecture Von Neumann et Harvard. Le processeur gère bien deux espaces d'adressage séparés, mais la RAM et la ROM sont reliés au même bus. La sortie CM-ROM du processeur indique si l'adresse envoyée correspond à la RAM ou la ROM. Un circuit de décodage d'adresse active ou désactive la RAM selon la valeur de ce bit, l'inverse pour la ROM, en agissant sur leurs bits Chip Select. Seule la RAM ou la ROM répondent alors à l'adresse.
Pour ce qui est de la RAM, le circuit de décodage d'adresse pouvait gérer au maximum 1024 adresses différentes, chacune contenant un nibble. Pour cela, le CPU 4004 était relié à une ou plusieurs RAM externes, des Intel 4002. Chaque Intel 4002 contenait 64 nibbles de données, plus 16 nibbles de statut qu'on ne détaillera pas ici. Les nibbles de statut étaient accessibles en utilisant des instructions d'entrée-sortie, donc pas avec des lectures/écritures mémoire. Les 64 nibbles de données sont découpés en 4 groupes de 16 nibbles. Le CPU pouvait être relié à maximum 16 Intel 4002, ce qui fait 1024 nibbles de données et 256 nibbles de statut. L'ensemble permet de remplir l'espace d'adressage de 1024 adresses.
===Le registre de page et le pseudo-aliasing des registres===
Sélectionner une adresse mémoire utilisait un mélange entre pseudo-aliasing et registre de page. Pour les données, les 1024 adresses étaient découpées en 4 pages de 256 adresses. Pour la ROM, les 4096 adresses étaient découpées en 16 pages de 256 adresses. Localiser une donnée dans une page ne requiert que 8 bits, 2/4 bits supplémentaires permettent de sélectionner la page voulue. Le registre de page était dans le processeur lui-même, et était relié aux sorties du processeur nommées CM-RAM 0, 1, 2 et 3. Les 4 sorties encodaient un nombre qui permet de sélectionner le numéro de page voulu.
Le registre de page fait 5 bits : un pour distinguer RAM et ROM, 4 bits pour sélectionner la page voulue. L'avantage est que la carte mère gère au maximum 16 chips de RAM, ce qui colle parfaitement avec les 4 utilisés pour sélectionner une page. Un chip de RAM correspond à une page, et chacun est activé ou désactivé suivant la page sélectionnée. Pour cela, il suffit d'ajouter un décodeur sur la carte mère, qui prend les 4 bits du registre de page et fournit les signaux Chip Select aux différents chips de RAM.
Reste alors à utiliser les 8 bits d'adresse à l'intérieur d'un chip de RAM. Le 4004 permettait de concaténer deux registres d'indice de 4 bits pour former une adresse de 8 bits. Les instructions d'accès mémoire pouvaient ainsi préciser une paire de registre d'indice pour préciser quelle adresse lire/écrire. Idem pour les branchements indirects : le processeur supportait une instruction de branchement indirect qui précisait l'adresse dans une paire de registres d'indice. Les registres d'indice sont donc assez mal nommés sur cette architecture, vu qu'ils peuvent servir soit de registre d'indice, soit de demi-registre d'adresse. Il s'agit là du système de pseudo-aliasing des registres, mais appliqué aux registres d'indice.
L'Intel 4004 gérait deux instructions pour gérer les adresses mémoires. La première, l'instruction DCL (''Designate Command Line'') configure le registre de page. Elle prend en entrée un numéro de page et le copie dans le registre de page. L'opérande peut provenir d'un registre d'indice ou de l'accumulateur. La seconde, l'instruction SRC (''Send Register Control'') concatène deux registres d'indice pour obtenir une adresse de 8 bits. Un accès mémoire se fait donc en maximum trois instructions : une qui configure le registre de page si ce n'est pas déjà fait, une instruction SRC pour envoyer l'adresse, et une troisième instruction qui dit s'il faut faire une lecture ou une écriture.
===La microarchitecture de l'Intel 4004===
Il incorporait une pile d'adresse de retour intégrée au processeur. La pile d'adresse acceptait exactement 3 adresses maximum. Elle était regroupée avec le ''program counter'' dans un banc de registre, de 4 registres. Le ''program counter'' et le pointeur de pile faisaient chacun 12 bits, soit trois nibble. Ils étaient incrémentés par un incrémenteur dédié.
SI on omet le registre de page et la pile d'adresse, le 4004 est une architecture à accumulateur des plus classiques, avec un bus interne unique, un banc de registre pour les registres d'indices, un accumulateur relié à une unité de calcul. Les registres d'indice étaient dans un banc de registre séparés, car ils faisaient 4 bits chacun, contrairement au pointeur de pile et le ''program counter''. Un détail important est que les bancs de registres du 4004 étaient implémentés avec de la DRAM, et non des registres usuels fabriqués avec des bascules 1 bit.
[[File:Microarchitecture de l'Intel 4004.png|centre|vignette|upright=2.5|Microarchitecture de l'Intel 4004]]
<noinclude>
{{NavChapitre | book=Fonctionnement d'un ordinateur
| prev=Les architectures à pile et mémoire-mémoire
| prevText=Les architectures à pile et mémoire-mémoire
| next=Les processeurs de traitement du signal
| nextText=Les processeurs de traitement du signal
}}
</noinclude>
e3ywmzdjies88n93sly81hjfc7numr0
765711
765710
2026-05-01T18:26:35Z
Mewtow
31375
/* Les microcontrôleurs PIC */
765711
wikitext
text/x-wiki
Nous avons déjà abordé la notion de processeur 8, 16, 32, 64 bits. Elle désigne la taille des registres généraux, ou de l'accumulateur. De nos jours, les processeurs 32 et 64 bits sont la norme, mais les premiers micro-processeurs étaient des processeurs 4 et 8, avant de passer rapidement au 16 bits. La raison est que leur budget en transistor limité faisait qu'on ne pouvait pas utiliser une ALU trop grande : une ALU 8 bit prend deux fois moins de place et de transistors qu'une ALU 16 bits. Cependant, les processeurs 8 bits avaient de sérieuses limitations qui étaient compensées par diverses solutions. Dans ce chapitre, nous allons faire une revue rapide des processeurs 8 bits et de leurs fonctionnalités.
La principale limitation des CPU 8 bits était l'adressage : des registres de 8 bits limitaient l'espace d'adressage à seulement 256 adresses, soit à peine 256 octets ! Intuitivement, on se dit que 256 octets est purement impraticable, on ne peut rien faire d'intéressant avec seulement 256 de RAM + ROM. Et c'est partiellement vrai. L'adage veut que 16 bits est la taille minimale intéressante, la limite à partir de laquelle on a assez de mémoire RAM/ROM pour coder des applications intéressantes. Mais 256 octets de RAM est largement suffisant sur de nombreux systèmes embarqués simples s'en accommodent : des caisses enregistreuses, des systèmes de régulation de feu de circulation, etc.
Pour les applications demandant plus de mémoire RAM, les CPU de l'époque contournaient la limitation de 256 octets de RAM avec de nombreux stratagèmes. Dans ce qui va suivre, nous allons séparer les CPU 8 bits selon qu'ils utilisent une architecture Harvard ou une architecture Von Neumann. La raison est qu'une architecture Harvard permet en soi de contourner partiellement ce problème d'adressage. Les choses sont plus compliquées avec une architecture Von Neumann.
==Les processeurs 8/16 bits à architecture Harvard ==
La première solution est d'utiliser une architecture Harvard. Le processeur 8 bit a alors deux espaces d'adressage : un pour la RAM, un autre pour la ROM. Et les deux utilisent des adresses de taille différente. La ROM est reliée à un bus d'adresse de 16 bits, alors que la RAM est elle connectée à un bus d'adresse de 8 bits. La RAM est donc limitée à 256 octets, alors que la ROM peut monter jusqu'à 64 kibioctets. Mine de rien, faire ainsi est largement suffisant.
Les processeurs de l'époque intégraient parfois les 256 octets de RAM directement dans le processeur. Beaucoup en implémentaient moins, avec par exemple seulement 64 octets de RAM, ou 32 octets, ou 128 octets. L'avantage est que cela éliminait le bus d'adresse des données et ne laissait que le bus d'adresse pour la ROM. On économisait ainsi beaucoup de broches sur le circuit intégré du CPU. Et pour les applications demandant plus de RAM, on pouvait ajouter un circuit séparé qui permettait d'adresser une RAM plus grande. Mais cela sera plus clair avec un exemple.
===Les microcontrôleurs PIC===
Les '''microcontrôleurs PIC''' regroupent des microcontrôleurs allant de microcontrôleurs 8 bits aux performances très faible, à des microcontrôleurs 32 bits bien plus puissants. Les microcontrôleurs PIC sont très utilisés dans l'embarqué ou d'informatique industrielle. Ils sont vendu à des volumes assez impressionnants, plusieurs millions par an. Et si vous avez ou êtes en train de faire des études d'électronique, je parie que vous les avez déjà vu en classe, ou que ce ne saurait tarder. Dans ce qui suit, nous allons nous concentrer sur les microcontrôleurs PIC 8 bits, à savoir les PIC 16, 16 et 18. Les PIC 24, qui sont des microcontrôleurs 16 bits, ne seront pas abordés.
Les microcontrôleurs PIC 8 bits sont une architecture Harvard, comme dit plus haut. Il y a aussi des registres pour les entrées et sorties. Les registres d'entrée-sortie permettent de lire ou écrire sur un port d'entrée-sortie ou de lire un ''timer''. En clair, les PIC ont un espace d'adressage séparé pour les entrées-sorties.
La mémoire ROM des PIC va de 1024 instructions à 4096 instructions. En comparaison, la mémoire RAM des microcontrôleurs PIC ne peut pas dépasser 256 adresses, et elle est encore plus petite en pratique sur certains modèles. Pour donner un exemple, le PIC16F84 a une RAM composée de 68 "registres" de 8 bits. Le terme "registres" devrait vous faire tiquer, mais c'est bien le terme utilisé dans la documentation des PIC. Et il faut admettre que la différence entre banc de registre et SRAM intégrée est floue, mais nous expliquerons pourquoi dans quelques paragraphes.
: Les PIC 18 peuvent adresser plus de 256 octets de RAM en utilisant la commutation de banques, une technique qui sera abordée dans plusieurs chapitres.
[[File:DocPIC16F84 3.png|centre|vignette|upright=3|Espaces d'adressage du PIC16F84.]]
Un détail est que la SRAM n'a qu'un seul port qui sert à la fois pour les lectures et écritures. Pour compenser, les PIC sont des architectures à accumulateur, où une opérande est lue depuis la SRAM, l'autre depuis l'accumulateur. Leur implémentation de l'accumulateur ajoute une petite subtilité : le résultat d'une opération arithmétique peut être enregistré ailleurs que dans l'accumulateur. Le résultat peut aussi remplacer la seconde opérande, celle lue en mémoire RAM. Dit autrement, le résultat est enregistré dans l'adresse mémoire source. Les instructions de calcul ont le choix : un bit dans leur encodage précise où enregistrer le résultat.
{|
|-
|[[File:DocPIC16F84 4.png|centre|vignette|upright=2|Microarchitecture simplifiée d'un microcontroleur PIC (ici, un 16F84).]]
|[[File:DocPIC16F84 5.png|centre|vignette|upright=2|Microarchitecture simplifiée d'un microcontroleur PIC (ici, un 16F84), avec les branchements directs.]]
|}
Outre l'accumulateur, les PIC disposent de registres de contrôle, d'un ''program counter'', d'un registre d'état, et d'un pointeur de pile. Un détail très important est que les registres sont mappés en mémoire, à quelques exceptions près ! En clair, on peut y accéder en lisant/écrivant à une adresse mémoire bien précise. Les seules registres qui ne sont pas mappés en mémoire sont l'accumulateur, les registres d'entrée-sortie, et la pile d'adresses de retour intégrée au processeur (voir plus bas). Par exemple, sur les modèles 16F, l'espace d'adressage fait 128 octets, dont 32 sont réservés aux registres du processeur, ce qui fait que seules 96 octets sont adressables comme de la RAM. Mais les 128 octets sont un seul et unique SRAM dans le processeur. Ce qui explique qu'il est difficile de séparer banc de registre et RAM principale sur ce processeur : les deux sont fusionnées !
: Les modèles PIC 17 ont rendu l'accumulateur mappé en mémoire RAM !
[[File:DocPIC16F84.png|centre|vignette|upright=2|DocPIC16F84]]
La petite taille de la ROM d'un PIC n'est pas une surprise. Les architectures 8 bits sont conçues pour ne pas utiliser beaucoup de transistors et être très simples. Aussi, utiliser une petite ROM est nécessaire. Mais il faut aussi adapter le jeu d'instruction, pour qu'il ait une bonne densité de code. Par exemple, il faut faire en sorte d'avoir des instructions assez courtes. Si les instructions font 16 bits au lieu de 32, on divise par deux le nombre de transistors nécessaire pour la mémoire ROM. La conséquence est que le jeu d’instruction des PIC est adapté à cette contrainte.
Les microcontrôleurs PIC utilisent un jeu d'instruction propriétaire, dont les instructions sont très petites. Les premières versions du jeu d'instruction utilisaient des instructions codées sur 12 bits, dont 5 pour l'adresse mémoire de la seconde opérande. Pour les branchements, 3 bits étaient utilisés pour l'opcode, 9 pour l'adresse de destination. Par la suite, les instructions ont été étendues à 13 bits sur les PIC1670, puis à 14, 15 et 16 bits. Les adresses ont alors été élargies, ce qui permet d'adresser en peu plus de mémoire RAM.
Il est intéressant de regarder comment les PIC font pour obtenir des instructions aussi courtes. Premièrement, le fait d'utiliser une architecture à accumulateur, couplé à une RAM très petite aident grandement. Les architectures à accumulateur ont besoin de préciser un opcode et une adresse mémoire pour chaque instruction, pas besoin de préciser de noms de registres ni le mode d'adressage. La taille des adresses mémoire est censé être un problème pour la densité de code, mais les adresses d'un processeur 8 bits font 8 bits. On peut alors avoir un jeu d'instruction étoffé, en utilisant des instructions 16 bits, qui concatènent un opcode et une adresse mémoire, d'un octet chacun.
Mais d'autres optimisations permettent d'avoir une bonne densité de code. Les PIC ont des branchements pour les appels et retour de fonction. Les PIC incorporent une pile d'appel de retour, qui fait 2 à 8 adresses suivant les modèles. Elle permet d'économiser quelques registres, car la pile d'appel n'est pas mappé dans l'espace d'adressage, elle n'est pas adressable. On économise ainsi 2 à 8 registres, sur 32-256 registres. De plus, cela simplifie l'encodage des instructions d'appel/retour de fonction, qui n'ont pas à préciser où enregistre l'adresse de retour.
Les PIC n'ont pas d'instructions de branchement conditionnels, ils font avec une SKIP instruction et des branchements inconditionnels. Du moins, c'est le principe, car si vous regardez la liste des instructions ci-dessous, vous verrez qu'il n'y a pas d'instruction SKIP. A la place, les instructions SKIP sont fusionnées avec d'autres instructions. Elles sont notamment fusionnées avec les instructions d'incrémentation et de décrémentation. Les PIC supportent une incrémentation normale, une décrémentation normale, une décrémentation fusionnée avec une instruction SKIP, et une incrémentation fusionnée avec une instruction SKIP. Les deux dernières incrémentent/décrémentent l'accumulateur et SKIP l'instruction suivante si le résultat est zéro. Elles permettent de fortement simplifier l'implémentation des boucles qui s'exécutent tant que leur compteur atteint zéro.
Les PIC disposent aussi d'instructions de manipulation de bit, pour tester/masquer un bit dans une opérande, 4 en tout. Il y a en a 4 en tout : mettre à 0, mettre à 1, tester si bit = 1, tester si bit = 0. Les instructions qui testent un bit prennent leur opérande dans l'accumulateur. Elles font le test du bit et décident s'il faut skipper l'instruction suivante ou non. Il y a aussi deux instructions de rotation à gauche et droite, qui tiennent compte de la retenue mémorisée dans le registre d'état. Par contre, il n'y a pas d'instructions de décalages, qui peuvent être émulées avec une rotation suivie d'un ET bit à bit. Mentionnons aussi une instruction pour inverser deux ''nibbles'' dans un octet.
Les modèles haute performance ajoutent des instructions d'addition avec retenue entrante, idem pour la soustraction. De telles instructions ssont très utiles pour faire des additions/soustractions sur des opérandes de 16 bits. Le processeur a beau être un CPU 8 bits, il peut être utilisé pour faire des calculs 16 bits, la performance est alors amoindrie, mais ce n'est pas un problème pour les applications d'un tel microcontroleur.
Les modèles intiaux, comme les PIC 10 et 12, ne supportaient pas les interruptions, mais c'est chose réglé sur les modèles plus récents. Ils ont même des registres séparés pour les interruptions et les programmes normaux. De plus, ils intégrent nativement un ''watchdog timer''.
{|class="wikitable" style="text-align:center"
|+ Jeu d'instruction des dodèles PCI 16
|-
! colspan="5" | Instructions diverses
|-
| colspan="3" | 00 0000 0000 0000 || NOP || Ne fait rien
|-
| colspan="3" | 00 0000 0000 1000 || RETURN || Instruction de retour pour une fonction
|-
| colspan="3" | 00 0000 0000 1001 || NOP || Instruction de retour pour une interruption
|-
| colspan="3" | 00 0000 0110 0011 || SLEEP || Mise en veille
|-
| colspan="3" | 00 0000 0110 0100 || CLRWDT || RESET le ''watchdog timer'', intégré dans le PIC
|-
! colspan="5" | Instructions de manipulation de bit
|-
| 0100 || Position du bit dans l'opérande || Adresse mémoire || BCF || Met le bit à 1
|-
| 0101 || Position du bit dans l'opérande || Adresse mémoire || BSF || Met le bit à 0
|-
| 0110 || Position du bit dans l'opérande || Adresse mémoire || BTFSC || Teste si le bit adressé est à 1
|-
| 0111 || Position du bit dans l'opérande || Adresse mémoire || BTFSS || Teste si le bit adressé est à 0
|-
! colspan="5" | Branchements
|-
| colspan="2" | 100 || Adresse mémoire || CALL || Appel de fonction
|-
| colspan="2" | 100 || Adresse mémoire || GOTO || Branchement inconditionnel
|-
! colspan="5" | Instructions logiques/arithmétiques avec opérande lue en mémoire RAM
|-
| colspan="5" | ''Le bit '''d''' dans l'opcode indique la destination : accumulateur ou adresse mémoire''.
|-
| colspan="2" | 0000001 || Adresse mémoire || MOVWF || Store (accumulateur vers destination)
|-
| colspan="2" | 000001d || Adresse mémoire || MOVWF || Met à zéro la destination (adresse ou registre)
|-
| colspan="2" | 000001d || Adresse mémoire || SUBWF || Soustraction
|-
| colspan="2" | 000010d|| Adresse mémoire || DECF || Décrémentation
|-
| colspan="2" | 000100d|| Adresse mémoire || IORWF || OU bit à bit
|-
| colspan="2" | 000101d|| Adresse mémoire || ANDWF || ET bit à bit
|-
| colspan="2" | 000110d || Adresse mémoire || XORWF || XOR bit à bit
|-
| colspan="2" | 000111d || Adresse mémoire || ADDWF VWF || Addition
|-
| colspan="2" | 001000d || Adresse mémoire || MOVF || LOAD
|-
| colspan="2" | 001001d || Adresse mémoire || COMF || NOT bit à bit
|-
| colspan="2" | 001010d || Adresse mémoire || INCF || Incrémentation
|-
| colspan="2" | 001011d || Adresse mémoire || DECFSZ || Décrémentation, puis instruction SKIP si résultat = 0
|-
| colspan="2" | 001100d || Adresse mémoire || RRF || Rotation à droite avec retenue entrante
|-
| colspan="2" | 001101d || Adresse mémoire || RLF || Rotation à gauche avec retenue entrante
|-
| colspan="2" | 001110d || Adresse mémoire || SWAPF || Echange deux ''niblle'' dans un octet
|-
| colspan="2" | 001111d || Adresse mémoire || INCFSZ || Incrémentation, puis instruction SKIP si résultat = 0
|-
! colspan="5" | Instructions logiques/arithmétiques avec constante immédiate
|-
| colspan="2" | 1100xx || Constante immédiate (8bits) || MOVLW || Copie constante dans accumulateur
|-
| colspan="2" | 1101xx || Constante immédiate (8bits) || RETLW || MOV fusionné avec un retour de fonction
|-
| colspan="2" | 111000 || Constante immédiate (8bits) || IORLW || OU
|-
| colspan="2" | 111001 || Constante immédiate (8bits) || ANDLW || ET
|-
| colspan="2" | 111010 || Constante immédiate (8bits) || XORLW || XOR
|-
| colspan="2" | 11110x || Constante immédiate (8bits) || SUBLW || Soustraction
|-
| colspan="2" | 11111x || Constante immédiate (8bits) || ADDLW || Addition
|}
Les PIC gèrent l'adressage absolu et immédiat, mais pas plus. L'adressage absolu, celui où l'adresse est intégrée dans l'instruction, est très simple à implémenter. Les adresses prennent moins d'un octet, vu que la taille de la RAM est très petite, les adresses sont très courtes, les intégrer dans des instructions elles-mêmes courtes n'est pas un problème. L'adresse est encodée sur 5 à 7 bits, selon le modèle, ce qui permet d'adresser entre 32 et 128 octets.
Les PIC ne supportent pas l'adressage indirect, mais peuvent l'émuler grâce à un '''registre d'adresse''' dédié. Il s'agit du registre FSR, qui mémorise l'adresse à lire/écrire. Il est possible de copier un pointeur dedans, qui provient soit de l'accumulateur, soit de la mémoire SRAM. Dans les deux cas, la donnée adressée est lue ou écrite dans un registre INDR, est un registre d’interfaçage rendu adressable. Le registre FSR est directement connecté sur le bus d'adresse.
Les modèles de base se débrouillent avec un registre FSR et un registre INDR, mais les modèles plus performants ont deux ou trois copies de chaque registre. Les modèles PIC18 ajoutent aussi des instructions LOAD/STORE qui émulent les modes d'adressage à post- ou pré-incrément/décrément, et le mode d'adressage "Base + Indice + Décalage", encore une fois en utilisant les registres FSR et INDR.
Avec tout ce qu'on vient de dire, vous devriez pouvoir comprendre la microarchitecture d'un PIC, qui est résumée dans ce schéma.
[[File:DocPIC16F84 all.png|centre|vignette|upright=2.5|Microarchitecture du PIC16F84.]]
===Le Fairchild F8 et la console de jeu Fairchild Channel F===
Un autre exemple est la Fairchild F8 de la défunte entreprise Fairchild Semiconductor. Il incorpore un processeur 8 bits, c'est à dire que le processeur fait des calculs sur des entiers de 8 bits maximum, une mémoire RAM de 64 octets, ainsi qu'une mémoire ROM de 1 kibioctet. Les 64 octets de RAM sont certes très peu, mais c'est suffisant pour certaines applications simples, comme les caisses automatiques de l'époque, ou des applications embarquées. Et de toute façon, il est possible d'ajouter de la mémoire RAM supplémentaire si les 64 octets de RAM intégrée ne suffisent pas. Le système était donc modulaire, adaptable selon les besoins, peu cher pour son implémentation minimale sans RAM en plus.
Vu qu'il s'agit d'un des tout premiers ordinateurs, il est sorti à une époque où la technologie était rudimentaire. À cette époque, le processeur était composé de pièces détachées qu'il fallait souder ensemble pour obtenir un processeur fonctionnel. Ce n'est que plus tard qu'est apparu le micro-processeur, qui regroupe un processeur complet dans un seul circuit intégré. Le résultat est que le processeur du Fairchild F8 est coupé en deux, l'unité de calcul et l'unité de contrôle sont placés dans des pièces détachées séparés.
Le microcontrôleur est composé de trois à quatre pièces détachées, certaines étant optionnelles. La première est le '''3850 CPU''', qui regroupe l'unité de calcul et la mémoire RAM intégrée. La seconde est le PSU (''3851 Program Storage Unit''), qui regroupe la mémoire ROM et l'unité de contrôle, ''program counter'' inclut. S'il y a besoin d'utiliser plus de RAM, il faut ajouter un circuit d’interface mémoire, qui est au choix le ''3852 Dynamic Memory Interface'' (DMI) ou le ''3853 Static Memory Interface'', le premier étant connecté à une mémoire de type DRAM, l'autre à une SRAM (nous verrons ce que sont les DRAM et les SRAM dans le prochain chapitre).
[[File:Fairchild F8.png|centre|vignette|upright=2|Fairchild F8]]
Le système minimal est composé d'un PSU et d'un 3850, sans les circuits d'interface mémoire. Le tout donne un système avec un processeur 8 bit, 64 octets de RAM et 1 kibioctet de ROM, les deux mémoires étant intégrées dans le "processeur". Le processeur gérait 4 entrées-sorties, chacune étant reliée avec un bus de 8 bit au processeur. Au passage, en 1977, Mostek a créé un microcontrôleur qui regroupe un PSU et un 3850 : le Mostek 3870. Le système minimal n'avait pas de bus d'adresse, vu que la RAM était intégrée au processeur. C'est les 3852 et 3853 qui ajoutaient un bus d'adresse. Ils ajoutent un bus d'adresse de 16 bits, ce qui permet d'adresser 64 kibioctets de RAM.
[[File:Fairchild-Channel-F.jpg|vignette|un Fairchild Channel F]]
Le Fairchild F8 a été utilisé dans la Fairchild Channel F, une des toute première console de seconde génération, à savoir des consoles qui utilisaient des cartouches de jeu. Avant les consoles de seconde génération, les consoles étaient non-programmables. Elles étaient conçues pour faire tourner un jeu précis, aucun autre, le jeu étant implémenté dans leurs circuits.
La Fairchild Channel F est composé du système minimal, auquel on a ajouté une carte son rudimentaire et 2 kibioctets de mémoire vidéo. La mémoire vidéo sert uniquement pour afficher des images à l'écran : on écrit l'image à afficher dedans, un circuit vidéo se charge de l'afficher à l'écran automatiquement. Le processeur ne fait qu'écrire dans cette RAM vidéo, il ne peut pas en lire le contenu. De la RAM supplémentaire peut cependant être ajoutée dans les cartouches de jeu.
===L'usage d'une architecture Harvard modifiée : les consoles 8 bits===
Pour encore améliorer la situation, il est possible d'utiliser une architecture Harvard modifiée, qui permet de lire des données depuis la mémoire ROM. Cela réduit encore plus les besoins en mémoire RAM. Les constantes manipulées par le programme sont mémorisées en ROM, lues depuis la ROM, au lieu d'être chargées en RAM. Les consoles de jeu utilisaient beaucoup de stratagème.
L'exemple type est celui des consoles 8 bits avec des graphismes en 2D. La cartouche de jeu contenait une ROM, qui mémorisait le code du jeu, les niveaux, les sprites et autres données graphiques. Leur carte graphique lisait directement les ''sprites'' depuis la mémoire ROM, sans avoir à les charger en mémoire vidéo. La mémoire vidéo se contentait de mémoriser le reste des informations graphiques, ainsi que des pointeurs vers les ''sprites'' en ROM. En conséquence, les consoles 8 bits n'avaient pas besoin de beaucoup de RAM, vu qu'une grande partie des données utiles étaient dans une ROM directement accessible par le processeur. A l'opposé, les micro-ordinateurs devaient copier les données d'un jeu depuis une disquette dans la mémoire RAM, ce qui demandait d'avoir plus de RAM.
Le passage au support CD sur les consoles 32 bits a eu la même conséquence. Le processeur ne pouvant pas lire directement le CD à sa guise, il fallait copier les données du CD en RAM. D'où l'apparition de temps de chargement assez longs, inexistants sur support cartouche.
Avec ce genre de stratagèmes, 256 octets de RAM est largement suffisant sur de nombreux systèmes, à condition qu'on ait assez de ROM pour coder un programme digne de ce nom. Par exemple, de nombreux systèmes embarqués simples s'en accommodent : des caisses enregistreuses, des systèmes de régulation de feu de circulation, etc.
===Le HP Nanoprocessor : un processeur sans ALU===
Un dernier exemple est celui du processeur HP Nanoprocessor, de l'entreprise HP. Il a été commercialisé en 1974, en même temps que les premiers micro-processeurs d'Intel. Tous les processeurs de l'époque étaient des processeurs 8 bits et le HP Nanoprocessor ne faisait pas exception. Ce n'était pas un processeur haute performance, il était destiné à des applications d'informatique industrielle ou embarquée. D'ailleurs, il utilisait des transistors de type metal-gate, peu performants, là où ses contemporains utilisait des transistors en silicium, plus performants.
Mais une caractéristique qui rend cela encore plus claire est qu'il n'y a pas d'ALU ! En effet, ce processeur est incapable de faire des additions, des soustractions ou autres opérations simples ! Il est cependant capable d'effectuer des incrémentations et décrémentations, des décalages, des opérations logiques comme des ET/OU/NON/XOR et bien d'autres. Il supporte en tout 48 instructions, avec un support limité des modes d'adressage indirects. Les instructions de branchement étaient des instructions SKIP, il n'y avait pas d'instructions de branchement généralistes.
Pour ce qui est des registres, il disposait de 16 registres de 8 bits et d'un accumulateur. Niveau mémoire, il était relié à une mémoire ROM, rien de plus. Il n'avait de RAM supplémentaire qu'on pouvait lui adjoindre, il devait se débrouiller avec seulement ses registres. Et cela ne posait pas de problèmes pour son usage. Seul le mode d'adressage indirect à registre est supporté, il n'y a pas de registres d'indices. Ce mode d'adressage permet de lire des données en mémoire ROM, la ROM pouvant contenir des tableaux de valeurs constantes.
: Il est possible de lui adjoindre de la RAM via les ports d'entrée-sortie, ainsi qu'une ALU, mais RAM et ALU sont traités comme des périphériques avec lesquels on communique, ils ne sont pas intégrés au processeur.
Niveau micro-architecture, il incorporait une unité de calcul logique et un circuit comparateur. Le comparateur était un circuit comparateur série des plus basiques, qui était utilisé pour les instructions de branchement et associées. L'unité de calcul logique gérait des incrémentations/décrémentation, des décalages, les opérations logiques et quelques autres. L'unité de calcul logique était bit-slicée, à savoir conçue en assemblant 8 ALU de 1 bit chacune, enchainées en série. Le tout était combiné à des circuits de ''carry skip''.
[[File:Unité de calcul du HP nanonprocessor.png|centre|vignette|upright=2|Unité de calcul du HP nanoprocessor]]
Son unité de décodage d'instruction était très simple, essentiellement basée sur des portes NOR, grâce à un encodage efficace des instructions machine. Le ''program counter'' fait 11 bits, ce qui permet d'adresser une ROM de 2 kibioctets. Le ''program counter'' était relié à un circuit incrémenteur qui gérait les isntructions SKIP (il pouvait incrémenter le ''program counter'' par pas de 1 ou de 2 en cas de SKIP). Le processeur contient aussi deux registres, qui servent en quelque sorte de pile d'adresse de retour. Un premier registre mémorise l'adresse de retour d'une fonction, l'autre mémorise le ''program counter'' lors d'une interruption, pour savoir où brancher à la fin de l'interruption.
[[File:HP nanoprocessor.png|centre|vignette|upright=2.5|HP nanoprocessor]]
Fait intéressant, le concepteur du processeur a gracieusement donné les masques utilisés pour graver le silicium du processeur au site [https://www.cpushack.com/ CPU Shack]. Les masques en question sont disponibles ici :
* [https://www.cpushack.com/2020/08/20/hp-nanoprocessor-mask-set/ HP NanoProcessor Mask Set]
* [https://www.cpushack.com/2020/08/09/the-forgotten-ones-hp-nanoprocessor/ The Forgotten Ones: HP Nanoprocessor]
Les masques ont été analysés par Ken Shirrif dans cet article de blog :
* [https://www.righto.com/2020/09/hp-nanoprocessor-part-ii-reverse.html HP Nanoprocessor part II: Reverse-engineering the circuits from the masks]
==Les processeurs 8/16 bits à architecture Von Neumann==
L'usage d'une architecture Harvard est une solution pour adresser plus de mémoire avec des CPU 8 bits. Mais plusieurs microprocesseurs commerciaux n'utilisaient pas cette solution. À la place, c'était des architectures Von Neumann, mais qui étaient capables de gérer des adresses de 16 bits. Les données faisaient 8 bits, les registres faisaient 8 bits, mais quelques techniques permettaient de gérer des adresses de 16 bits. Nous parlerons de '''processeurs 8/16 bits''' pour les désigner, et nous allons les étudier à part.
Un point important est que la gestion d'adresses de 16 bits permet d'adresser 64 kibioctets, qui peuvent être remplis avec de la RAM et de la ROM. On a donc le meilleur des mondes : 64 kibioctets de mémoire, mais avec des données de 8 bits et les économies de circuit qui vont avec. L'avantage est que le processeur peut maintenant gérer une vraie pile d'appel, pas seulement une pile d'adresse de retour. Il lui suffit pour cela d'intégrer un pointeur de pile codé sur 16 bits.
===Les modes d'adressage par page des CPU Motorola===
Les processeurs Motorola 8 bits étaient des processeurs 8 bits avec un bus d'adresse de 16 bits. C'était des processeurs à accumulateur incorporant deux registres d'indice, un registre d'état, un pointeur de pile, et un ''program counter''. Tous les registres sont reliés au bus d'adresse, sauf le registre d'état et l’accumulateur. Tous les registres font 8 bits, sauf le ''program counter''. La pile est câblée pour être dans un bloc de 256 octets compris entre l'adresse 1 0000 0000 et l'adresse 1 1111 1111, ce qui fait que son adressage se fait avec un seul octet.
[[File:6502-architecture.svg|centre|vignette|upright=1.5|Architecture simplifiée du 6502.</br> X et Y : registres d'indice ;</br> S : le pointeur de pile ;</br> A : accumulateur ;</br>P : registre d'état.</br>]]
Les processeurs Motorola 8 bits utilisaient une méthode simple pour adresser 64 kibioctets de RAM, avec des registres de 8 bits. Pour cela, ils utilisaient une variante de l'adressage base + décalage. Elle améliore l'adressage absolu, qui intègre l'adresse à lire/écrire dans l'instruction elle-même. L'adresse en question est de 8 bits et n'encode que les 8 bits de poids faible de l'adresse, les 8 bits de poids fort sont dans un '''registre de page''' adressé implicitement. L'adresse finale est obtenue en concaténant ce registre avec l'adresse mémoire intégrée dans l’instruction. Le résultat est que la mémoire était découpée en blocs de 256 consécutifs, chacun pouvant servir de fenêtre de 256 octets. Une page est réservée pour la pile, la seconde, comme dit plus haut.
Formellement, ce mode d'adressage a des ressemblances avec la commutation de banques, une technique qu'on verra dans les chapitres sur l'espace d'adressage et la mémoire virtuelle. Mais ce n'en est pas du tout : le registre de page est utilisé uniquement pour les accès mémoire avec le mode d'adressage base + décalage, mais pas pour les autres accès mémoire, qui gèrent des adresses complètes. Notons que l'usage d'un registre de page dédié fait que celui-ci est adressé implicitement.
Il faut noter que la technique a été utilisée sur des processeurs 16 bits, pour contourner la petite taille des instructions. Un exemple est celui du HP 2100, un processeur 16 bits. Il avait un registre de page de 5 bits et encodait 10 bits d'adresse dans ses instructions. Ses instructions d'accès mémoire disposaient d'un bit qui choisit quel mode d'adressage utiliser. S'il était à 0, l'adressage absolu était utilisé, le registre de page n'était pas utilisé. Mais s'il était à 1, le registre de page était utilisé pour calculer l'adresse.
Une évolution de l'adressage précédent est le '''mode page direct'''. Avec lui, le registre de page est étendu et contient une adresse mémoire complète. L'adresse finale n'est pas obtenue par concaténation, mais en additionnant le registre de page avec l'adresse fournie par adressage absolu + décalage. Un exemple est celui des premiers processeurs Motorola, qui géraient des adresses courtes de 8 bits. L'adresse courte de 8 bits correspondait non pas aux 256 premiers octets de la mémoire, mais à une fenêtre de 256 octets déplaçable en mémoire. La position de la fenêtre de 256 octets était spécifiée par le registre de page de 16 bits, qui précisait l'adresse du début de la fenêtre, celle de sa première donnée.
Il s'agit donc formellement d'adressage base + décalage, à un détail près : il n'y a qu'un seul registre de base. Le fait que ce registre de base soit unique fait qu'il est adressé implicitement, on n'a pas à encoder le numéro/noms de registre dans l'instruction. Le registre de base est utilisé uniquement pour l'adressage absolu, pas pour les autres accès mémoire. S'il y a des ressemblances avec la segmentation, une technique de mémoire virtuelle qu'on abordera dans quelques chapitres, ce n'en est pas vu que le registre de base est utilisé seulement pour un mode d'adressage bien précis.
===Le ''pseudo-aliasing'' des registres des processeurs Intel x86===
Voyons maintenant le cas des anciens processeurs 8 bits d'Intel à savoir l'Intel 4004, 4040, 8008 et 8080. Le Z80, un processeur inspiré des CPU Intel 8 bits, est aussi concerné. Avant de poursuivre, parlons des registres de ces processeurs. Les premiers CPU Intel incorporaient 7 registres de 8 bits nommés A, B, C, D, E, F, H, L, SP. Ils correspondent respectivement à : l'accumulateur A ; six registres nommés B, C, D, E, H et L ; le registre d'état F ; le pointeur de pile SP. Le Z80 ajoute deux registres d'indice X et Y. De plus, le Z80 dispose de registres d'interruption, qui sont en quelque sorte des copies des registres A, B, C, D, E, F, H, L. Le tout est illustré dans le tableau ci-dessous.
{|class="wikitable" style="text-align:center;"
|-
!
! Registres des CPU Intel
! Registres supplémentaires du Z80
|-
! Accumulateur
| A
| A'
|-
! Registre d'état
| F
| F'
|-
! Registres généraux
| B, C, D, E, H, L
| B', C', D', E', H', L'
|-
! Pointeur de pile
| colspan="2" | SP (sauf pour le 8008)
|-
! Registres d'indice
|
| X et Y
|}
Le 8008 incorpore une pile d'appel de 7 adresses, dans le processeur lui-même. Il en est de la même avec le 4004 et le 4040, comme on le verra dans la section sur les processeurs 4 bits. Mais le 8080 et le 8085 ont remplacé le tout par un simple pointeur de pile, afin d'avoir une véritable pile d'appel. Autant c'est impossible d'avoir une pile d'appel avec seulement 256 octets de mémoire, autant on peut se le permettre avec 65 536 adresses.
Pour gérer des adresses de 16 bits, ils auraient pu utiliser des registres d'adresse séparés, mais on préféré un système de '''pseudo-''aliasing'' de registres'''. Formellement, c'est un système qui concatène deux registres 8 bits pour obtenir une adresse de 16 bits. L’appariement a lieu lors de certaines opérations bien précises, qui n'ont de sens que pour les adresses : la lecture/écriture en mémoire, et l'incrémentation.
Il y avait cependant des contraintes quant aux paires de registres possibles, toutes les paires de registres n'étaient pas autorisées. Les CPU concernés sont donc des processeurs hybrides accumulateur-registre généraux. L'accumulateur ne peut pas être appairé, seuls les registres généraux le peuvent. Le Z80 autorise plus de paires que les CPU Intel. Voici les paires de registres qui pouvaient servir d'adresse 16 bits :
* Les CPU 8008 d'Intel autorisait une seule paire formée des registres H et L.
* Les autres processeurs, à savoir le 8080, le 8085 et le Z80, autorisaient : les paires BC, DE et HL.
Le 8008 ne gérait que des opérations sur 8 bits. Mais le 8080 et le 8085 ont ajouté des instructions 16 bits qui agissaient sur des paires de registre, que le Z80 a repris. Une paire de registres est considérée comme un registre unique de 16 bits pour certaines opérations arithmétiques, dont l'incrémentation. Voici la liste des instructions concernées :
* INC et DEC pour l'incrémentation et la décrémentation ;
* DAD : additionne le registre HL avec une autre paire (Hl inclus) ;
* LXI : copie une constante immédiate dans une paire de registres ;
* LHLD : lit 16 depuis la mémoire et l'enregistre dans une paire de registres ;
* SHLD : copie 16 bits depuis une paire de registres et l'enregistre en mémoire ;
* PUSH et POP : empile ou dépilent une paire de registre sur la pile ;
* XTHL : échange la paire HL avec les 16 bits au sommet de la pile d'appel ;
* XCHG : échange le contenu de la paire HL et DE.
Pour résumer, le processeur avait des instructions LOAD, STORE, PUSH et POP adaptées pour gérer des paires de registre. De plus, l'instruction XCHG permettait d’échanger le contenu des paires DE et HL. L'instruction a été étendue sur les processeurs 16 bits pour échanger tous les registres. Mais l'implémentation était alors différente. L'incrémentation sur une paire de 16 bit était très utile, car les adresses sont souvent incrémentées quand on parcours un tableau. Ces instructions nous donnent quelques indices sur ce qu'il y a dans le processeur.
Le système de pseudo-aliasing a un impact sur le banc de registre. Le banc de registre regroupe les registres généraux et le pointeur de pile, mais ne contient pas l'accumulateur. Les contraintes sur les paires de registres possibles ne s'expliquent que d'une seule manière : le banc de registre contient des registres de 16 bits, une paire de registres 8 bits est mémorisée dans un registre unique. Il faut donc faire une différence entre les registres architecturaux de 8 bits, et les registres réels de 16 bits.
Le banc de registre a un port de 8 bits pour les données, qui est fabriqué à partir d'un port 16 bits auquel on a rajouté un multiplexeur pour choisir soit l'octet de poids faible, soit l'octet de poids fort. Le bus de données fait 8 bits, ce qui fait que les instructions LOAD, STORE, PUSH et POP pour paires 16 bits sont réalisées en deux fois : on lit/écrit l'octet de poids faible, puis celui de poids fort. Par contre, le bus d'adresse fait bien 16 bits. Cela suggère que le banc de registre dispose d'un port de 16 bits dédié aux adresses, en plus du port de données 8 bits.
[[File:Architecture d'un CPU 8-16 bits avec un banc de registre double port.png|centre|vignette|upright=2|Architecture d'un CPU 8-16 bits avec un banc de registre double port]]
L'incrémentation d'une paire 16 bits ne coute rien à implémenter, ou presque. En effet, le processeur incorpore un incrémenteur 16 bits pour le ''program counter'', qui est relié au bus d'adresse. L'idée est de rentabiliser cet incrémenteur, en lui permettant d'incrémenter des données/adresses de 16 bits obtenues via pseudo-aliasing. De même, il peut être utilisé pour incrémenter le pointeur de pile, voire un compteur de rafraichissement mémoire (pour rappel, le rafraîchissement mémoire demande de balayer la mémoire d'adresse en adresse et été fait par le CPU à l'époque). Pour cela, il suffit de connecter le ''program counter'', le banc de registre, et l'incrémenteur, via un bus dédié.
[[File:Calcul d'adresse par ALU dédiée avec PC séparé.png|centre|vignette|upright=2|Calcul d'adresse par ALU dédiée avec PC séparé]]
Notez qu'on peut encore simplifier le tout en placant le ''program counter'' dans le banc de registre, ce qui ne gênera pas le travail de l'incrémenteur mais simplifiera le câblage au bus d'adresse. Ce n'était pas systématique, certains processeurs mettaient le ''program counter'' dans le banc de registre, d'autres non.
: Inclure le ''program counter'' dans le banc de registre permet parfois de remplir un vide. Par exemple, sur un processeur avec 12 registres, le banc de registre devrait faire idéalement 16 registres, inclure le ''program counter'' dedans fait monter le tout à 13.
[[File:Architecture d'un CPU 8-16 bits.png|centre|vignette|upright=2|Architecture d'un CPU 8-16 bits]]
Les processeurs Intel 8 bits, à savoir le 8008, le 8080 et le 8085 ; mettaient le ''program counter'' dans le banc de registre. Vous avez donc toutes les armes pour comprendre leur micro-architecture. Par exemple, voici la micro-architecture du processeur 8080. Remarquez le banc de registre, qui contient tous les registres sauf l'accumulateur et le registre. Il a deux ports : un pour les adresses et un pour les données. Notez le dé-multiplexeur sur le port de donnée. Pour le reste, il s'agit d'une architecture à accumulateur hybride des plus classiques.
[[File:Intel 8080 arch.svg|centre|vignette|upright=3|Microarchitecture de l'Intel 8080.]]
Le Z80 est un processeur inspiré du design des processeurs Intel 8 bits, mais avec pas mal d'améliorations. Un point particulier de ce processeur est son banc de registre. Il contient tous les registres du processeur, y compris l'accumulateur et le registre d'état ! Les seuls registres en-dehors du banc de registre sont le ''program counter'' et un compteur de rafraichissement mémoire IR.
Un autre point particulier est que les registres dans le banc de registres avaient une copie séparée accessible uniquement pour les interruptions, via fenêtrage de registres. Et l'accumulateur et le registre d'état étant dans le banc de registre, il y avait deux accumulateurs et deux registres d'état. Les registres A, B, C, D, E et F étaient dupliqués, par le pointeur de pile ni les registres d'indice. Les copies des registres étaient nommées A', B', C', D', E' et F'.
Le Z80 supportait des instructions d'échange de registre en plus des CPU Intel 8 bits. L'instruction EX peut échanger soit le contenu des paires D,E et H,F, soit la paire A,F avec la paire A',F'. L'instruction EXX échange les paires BC, DE, HL avec les paires BC', DE', HL'. En faisant cela, le programmeur pouvait utiliser deux fois plus de registres généraux s'il n'utilisait pas les interruptions. L'échange de paires se fait sans copies de registres, mais simplement en modifiant l'adresse envoyée sur le banc de registre. Pour cela, plusieurs bascules mémorisent des bits qui indiquent si les paires ont été échangées ou non. Il y a une bascule pour les paires DE , HL ; une autre pour les paires A,F et paire A',F', une dernière pour l'instruction EXX. En combinant ces bascules avec les noms de registres envoyés par le séquenceur, on peut échanger les paires de registres.
==Le cas particulier des processeurs 4 bits : le 4004 d'Intel==
L'Intel 4004 était le tout premier micro-processeur. Il s'agissait d'un microprocesseur de 4 bits, basé sur une architecture à accumulateur. Il disposait d'un accumulateur et de 16 registres d'indice, tous de 4 bits. Il faisait des calculs sur des données de 4 bits, appelées des nibbles. Cependant, sur ses 46 instructions machines supportées, 41 agissaient sur des opérandes de 8 bits, les 5 restantes sur des opérandes de 16 bits. Simplement, les calculs se faisaient en deux fois, en échangeant des données entre mémoire RAM et accumulateur.
Le 4004 est un circuit intégré avec peu de broches. Il dispose notamment d'un bus de données/adresse, qui est multiplexé, c’est-à-dire qu'il sert alternativement de bus de données et de bus d'adresse selon les besoins. Le bus de commande mémoire fait 5 bits, dont 4 pour les chips de RAM, un pour la ROM. Les adresses sont codées sur 12 bits, les données sur 4 et les instructions sur 8 bits. L'envoi d'une adresse sur le bus se fait en plusieurs fois, de même que la lecture d'une instruction. Il s'agit là d'une adaptation pour outrepasser les limitations d'un processeur 4 bit.
[[File:Intel 4004 processor pinout.png|centre|vignette|upright=2|Broches de l'Intel 4004. Nous verrons à quoi elles servent plus bas.]]
===L'espace d'adressage de l'Intel 4004===
Les adresses du processeur sont sur 12 bits, ce qui fait 4096 adresses différentes. Elles regroupent à la fois la ROM et la mémoire RAM, vu que l'architecture est une sorte de mélange bizarre entre une architecture Von Neumann et Harvard. Le processeur gère bien deux espaces d'adressage séparés, mais la RAM et la ROM sont reliés au même bus. La sortie CM-ROM du processeur indique si l'adresse envoyée correspond à la RAM ou la ROM. Un circuit de décodage d'adresse active ou désactive la RAM selon la valeur de ce bit, l'inverse pour la ROM, en agissant sur leurs bits Chip Select. Seule la RAM ou la ROM répondent alors à l'adresse.
Pour ce qui est de la RAM, le circuit de décodage d'adresse pouvait gérer au maximum 1024 adresses différentes, chacune contenant un nibble. Pour cela, le CPU 4004 était relié à une ou plusieurs RAM externes, des Intel 4002. Chaque Intel 4002 contenait 64 nibbles de données, plus 16 nibbles de statut qu'on ne détaillera pas ici. Les nibbles de statut étaient accessibles en utilisant des instructions d'entrée-sortie, donc pas avec des lectures/écritures mémoire. Les 64 nibbles de données sont découpés en 4 groupes de 16 nibbles. Le CPU pouvait être relié à maximum 16 Intel 4002, ce qui fait 1024 nibbles de données et 256 nibbles de statut. L'ensemble permet de remplir l'espace d'adressage de 1024 adresses.
===Le registre de page et le pseudo-aliasing des registres===
Sélectionner une adresse mémoire utilisait un mélange entre pseudo-aliasing et registre de page. Pour les données, les 1024 adresses étaient découpées en 4 pages de 256 adresses. Pour la ROM, les 4096 adresses étaient découpées en 16 pages de 256 adresses. Localiser une donnée dans une page ne requiert que 8 bits, 2/4 bits supplémentaires permettent de sélectionner la page voulue. Le registre de page était dans le processeur lui-même, et était relié aux sorties du processeur nommées CM-RAM 0, 1, 2 et 3. Les 4 sorties encodaient un nombre qui permet de sélectionner le numéro de page voulu.
Le registre de page fait 5 bits : un pour distinguer RAM et ROM, 4 bits pour sélectionner la page voulue. L'avantage est que la carte mère gère au maximum 16 chips de RAM, ce qui colle parfaitement avec les 4 utilisés pour sélectionner une page. Un chip de RAM correspond à une page, et chacun est activé ou désactivé suivant la page sélectionnée. Pour cela, il suffit d'ajouter un décodeur sur la carte mère, qui prend les 4 bits du registre de page et fournit les signaux Chip Select aux différents chips de RAM.
Reste alors à utiliser les 8 bits d'adresse à l'intérieur d'un chip de RAM. Le 4004 permettait de concaténer deux registres d'indice de 4 bits pour former une adresse de 8 bits. Les instructions d'accès mémoire pouvaient ainsi préciser une paire de registre d'indice pour préciser quelle adresse lire/écrire. Idem pour les branchements indirects : le processeur supportait une instruction de branchement indirect qui précisait l'adresse dans une paire de registres d'indice. Les registres d'indice sont donc assez mal nommés sur cette architecture, vu qu'ils peuvent servir soit de registre d'indice, soit de demi-registre d'adresse. Il s'agit là du système de pseudo-aliasing des registres, mais appliqué aux registres d'indice.
L'Intel 4004 gérait deux instructions pour gérer les adresses mémoires. La première, l'instruction DCL (''Designate Command Line'') configure le registre de page. Elle prend en entrée un numéro de page et le copie dans le registre de page. L'opérande peut provenir d'un registre d'indice ou de l'accumulateur. La seconde, l'instruction SRC (''Send Register Control'') concatène deux registres d'indice pour obtenir une adresse de 8 bits. Un accès mémoire se fait donc en maximum trois instructions : une qui configure le registre de page si ce n'est pas déjà fait, une instruction SRC pour envoyer l'adresse, et une troisième instruction qui dit s'il faut faire une lecture ou une écriture.
===La microarchitecture de l'Intel 4004===
Il incorporait une pile d'adresse de retour intégrée au processeur. La pile d'adresse acceptait exactement 3 adresses maximum. Elle était regroupée avec le ''program counter'' dans un banc de registre, de 4 registres. Le ''program counter'' et le pointeur de pile faisaient chacun 12 bits, soit trois nibble. Ils étaient incrémentés par un incrémenteur dédié.
SI on omet le registre de page et la pile d'adresse, le 4004 est une architecture à accumulateur des plus classiques, avec un bus interne unique, un banc de registre pour les registres d'indices, un accumulateur relié à une unité de calcul. Les registres d'indice étaient dans un banc de registre séparés, car ils faisaient 4 bits chacun, contrairement au pointeur de pile et le ''program counter''. Un détail important est que les bancs de registres du 4004 étaient implémentés avec de la DRAM, et non des registres usuels fabriqués avec des bascules 1 bit.
[[File:Microarchitecture de l'Intel 4004.png|centre|vignette|upright=2.5|Microarchitecture de l'Intel 4004]]
<noinclude>
{{NavChapitre | book=Fonctionnement d'un ordinateur
| prev=Les architectures à pile et mémoire-mémoire
| prevText=Les architectures à pile et mémoire-mémoire
| next=Les processeurs de traitement du signal
| nextText=Les processeurs de traitement du signal
}}
</noinclude>
h9yr2der15hxeelk3odth2pxthdca0p
765712
765711
2026-05-01T19:01:13Z
Mewtow
31375
/* L'usage d'une architecture Harvard modifiée : les consoles 8 bits */
765712
wikitext
text/x-wiki
Nous avons déjà abordé la notion de processeur 8, 16, 32, 64 bits. Elle désigne la taille des registres généraux, ou de l'accumulateur. De nos jours, les processeurs 32 et 64 bits sont la norme, mais les premiers micro-processeurs étaient des processeurs 4 et 8, avant de passer rapidement au 16 bits. La raison est que leur budget en transistor limité faisait qu'on ne pouvait pas utiliser une ALU trop grande : une ALU 8 bit prend deux fois moins de place et de transistors qu'une ALU 16 bits. Cependant, les processeurs 8 bits avaient de sérieuses limitations qui étaient compensées par diverses solutions. Dans ce chapitre, nous allons faire une revue rapide des processeurs 8 bits et de leurs fonctionnalités.
La principale limitation des CPU 8 bits était l'adressage : des registres de 8 bits limitaient l'espace d'adressage à seulement 256 adresses, soit à peine 256 octets ! Intuitivement, on se dit que 256 octets est purement impraticable, on ne peut rien faire d'intéressant avec seulement 256 de RAM + ROM. Et c'est partiellement vrai. L'adage veut que 16 bits est la taille minimale intéressante, la limite à partir de laquelle on a assez de mémoire RAM/ROM pour coder des applications intéressantes. Mais 256 octets de RAM est largement suffisant sur de nombreux systèmes embarqués simples s'en accommodent : des caisses enregistreuses, des systèmes de régulation de feu de circulation, etc.
Pour les applications demandant plus de mémoire RAM, les CPU de l'époque contournaient la limitation de 256 octets de RAM avec de nombreux stratagèmes. Dans ce qui va suivre, nous allons séparer les CPU 8 bits selon qu'ils utilisent une architecture Harvard ou une architecture Von Neumann. La raison est qu'une architecture Harvard permet en soi de contourner partiellement ce problème d'adressage. Les choses sont plus compliquées avec une architecture Von Neumann.
==Les processeurs 8/16 bits à architecture Harvard ==
La première solution est d'utiliser une architecture Harvard. Le processeur 8 bit a alors deux espaces d'adressage : un pour la RAM, un autre pour la ROM. Et les deux utilisent des adresses de taille différente. La ROM est reliée à un bus d'adresse de 16 bits, alors que la RAM est elle connectée à un bus d'adresse de 8 bits. La RAM est donc limitée à 256 octets, alors que la ROM peut monter jusqu'à 64 kibioctets. Mine de rien, faire ainsi est largement suffisant.
Les processeurs de l'époque intégraient parfois les 256 octets de RAM directement dans le processeur. Beaucoup en implémentaient moins, avec par exemple seulement 64 octets de RAM, ou 32 octets, ou 128 octets. L'avantage est que cela éliminait le bus d'adresse des données et ne laissait que le bus d'adresse pour la ROM. On économisait ainsi beaucoup de broches sur le circuit intégré du CPU. Et pour les applications demandant plus de RAM, on pouvait ajouter un circuit séparé qui permettait d'adresser une RAM plus grande. Mais cela sera plus clair avec un exemple.
===Les microcontrôleurs PIC===
Les '''microcontrôleurs PIC''' regroupent des microcontrôleurs allant de microcontrôleurs 8 bits aux performances très faible, à des microcontrôleurs 32 bits bien plus puissants. Les microcontrôleurs PIC sont très utilisés dans l'embarqué ou d'informatique industrielle. Ils sont vendu à des volumes assez impressionnants, plusieurs millions par an. Et si vous avez ou êtes en train de faire des études d'électronique, je parie que vous les avez déjà vu en classe, ou que ce ne saurait tarder. Dans ce qui suit, nous allons nous concentrer sur les microcontrôleurs PIC 8 bits, à savoir les PIC 16, 16 et 18. Les PIC 24, qui sont des microcontrôleurs 16 bits, ne seront pas abordés.
Les microcontrôleurs PIC 8 bits sont une architecture Harvard, comme dit plus haut. Il y a aussi des registres pour les entrées et sorties. Les registres d'entrée-sortie permettent de lire ou écrire sur un port d'entrée-sortie ou de lire un ''timer''. En clair, les PIC ont un espace d'adressage séparé pour les entrées-sorties.
La mémoire ROM des PIC va de 1024 instructions à 4096 instructions. En comparaison, la mémoire RAM des microcontrôleurs PIC ne peut pas dépasser 256 adresses, et elle est encore plus petite en pratique sur certains modèles. Pour donner un exemple, le PIC16F84 a une RAM composée de 68 "registres" de 8 bits. Le terme "registres" devrait vous faire tiquer, mais c'est bien le terme utilisé dans la documentation des PIC. Et il faut admettre que la différence entre banc de registre et SRAM intégrée est floue, mais nous expliquerons pourquoi dans quelques paragraphes.
: Les PIC 18 peuvent adresser plus de 256 octets de RAM en utilisant la commutation de banques, une technique qui sera abordée dans plusieurs chapitres.
[[File:DocPIC16F84 3.png|centre|vignette|upright=3|Espaces d'adressage du PIC16F84.]]
Un détail est que la SRAM n'a qu'un seul port qui sert à la fois pour les lectures et écritures. Pour compenser, les PIC sont des architectures à accumulateur, où une opérande est lue depuis la SRAM, l'autre depuis l'accumulateur. Leur implémentation de l'accumulateur ajoute une petite subtilité : le résultat d'une opération arithmétique peut être enregistré ailleurs que dans l'accumulateur. Le résultat peut aussi remplacer la seconde opérande, celle lue en mémoire RAM. Dit autrement, le résultat est enregistré dans l'adresse mémoire source. Les instructions de calcul ont le choix : un bit dans leur encodage précise où enregistrer le résultat.
{|
|-
|[[File:DocPIC16F84 4.png|centre|vignette|upright=2|Microarchitecture simplifiée d'un microcontroleur PIC (ici, un 16F84).]]
|[[File:DocPIC16F84 5.png|centre|vignette|upright=2|Microarchitecture simplifiée d'un microcontroleur PIC (ici, un 16F84), avec les branchements directs.]]
|}
Outre l'accumulateur, les PIC disposent de registres de contrôle, d'un ''program counter'', d'un registre d'état, et d'un pointeur de pile. Un détail très important est que les registres sont mappés en mémoire, à quelques exceptions près ! En clair, on peut y accéder en lisant/écrivant à une adresse mémoire bien précise. Les seules registres qui ne sont pas mappés en mémoire sont l'accumulateur, les registres d'entrée-sortie, et la pile d'adresses de retour intégrée au processeur (voir plus bas). Par exemple, sur les modèles 16F, l'espace d'adressage fait 128 octets, dont 32 sont réservés aux registres du processeur, ce qui fait que seules 96 octets sont adressables comme de la RAM. Mais les 128 octets sont un seul et unique SRAM dans le processeur. Ce qui explique qu'il est difficile de séparer banc de registre et RAM principale sur ce processeur : les deux sont fusionnées !
: Les modèles PIC 17 ont rendu l'accumulateur mappé en mémoire RAM !
[[File:DocPIC16F84.png|centre|vignette|upright=2|DocPIC16F84]]
La petite taille de la ROM d'un PIC n'est pas une surprise. Les architectures 8 bits sont conçues pour ne pas utiliser beaucoup de transistors et être très simples. Aussi, utiliser une petite ROM est nécessaire. Mais il faut aussi adapter le jeu d'instruction, pour qu'il ait une bonne densité de code. Par exemple, il faut faire en sorte d'avoir des instructions assez courtes. Si les instructions font 16 bits au lieu de 32, on divise par deux le nombre de transistors nécessaire pour la mémoire ROM. La conséquence est que le jeu d’instruction des PIC est adapté à cette contrainte.
Les microcontrôleurs PIC utilisent un jeu d'instruction propriétaire, dont les instructions sont très petites. Les premières versions du jeu d'instruction utilisaient des instructions codées sur 12 bits, dont 5 pour l'adresse mémoire de la seconde opérande. Pour les branchements, 3 bits étaient utilisés pour l'opcode, 9 pour l'adresse de destination. Par la suite, les instructions ont été étendues à 13 bits sur les PIC1670, puis à 14, 15 et 16 bits. Les adresses ont alors été élargies, ce qui permet d'adresser en peu plus de mémoire RAM.
Il est intéressant de regarder comment les PIC font pour obtenir des instructions aussi courtes. Premièrement, le fait d'utiliser une architecture à accumulateur, couplé à une RAM très petite aident grandement. Les architectures à accumulateur ont besoin de préciser un opcode et une adresse mémoire pour chaque instruction, pas besoin de préciser de noms de registres ni le mode d'adressage. La taille des adresses mémoire est censé être un problème pour la densité de code, mais les adresses d'un processeur 8 bits font 8 bits. On peut alors avoir un jeu d'instruction étoffé, en utilisant des instructions 16 bits, qui concatènent un opcode et une adresse mémoire, d'un octet chacun.
Mais d'autres optimisations permettent d'avoir une bonne densité de code. Les PIC ont des branchements pour les appels et retour de fonction. Les PIC incorporent une pile d'appel de retour, qui fait 2 à 8 adresses suivant les modèles. Elle permet d'économiser quelques registres, car la pile d'appel n'est pas mappé dans l'espace d'adressage, elle n'est pas adressable. On économise ainsi 2 à 8 registres, sur 32-256 registres. De plus, cela simplifie l'encodage des instructions d'appel/retour de fonction, qui n'ont pas à préciser où enregistre l'adresse de retour.
Les PIC n'ont pas d'instructions de branchement conditionnels, ils font avec une SKIP instruction et des branchements inconditionnels. Du moins, c'est le principe, car si vous regardez la liste des instructions ci-dessous, vous verrez qu'il n'y a pas d'instruction SKIP. A la place, les instructions SKIP sont fusionnées avec d'autres instructions. Elles sont notamment fusionnées avec les instructions d'incrémentation et de décrémentation. Les PIC supportent une incrémentation normale, une décrémentation normale, une décrémentation fusionnée avec une instruction SKIP, et une incrémentation fusionnée avec une instruction SKIP. Les deux dernières incrémentent/décrémentent l'accumulateur et SKIP l'instruction suivante si le résultat est zéro. Elles permettent de fortement simplifier l'implémentation des boucles qui s'exécutent tant que leur compteur atteint zéro.
Les PIC disposent aussi d'instructions de manipulation de bit, pour tester/masquer un bit dans une opérande, 4 en tout. Il y a en a 4 en tout : mettre à 0, mettre à 1, tester si bit = 1, tester si bit = 0. Les instructions qui testent un bit prennent leur opérande dans l'accumulateur. Elles font le test du bit et décident s'il faut skipper l'instruction suivante ou non. Il y a aussi deux instructions de rotation à gauche et droite, qui tiennent compte de la retenue mémorisée dans le registre d'état. Par contre, il n'y a pas d'instructions de décalages, qui peuvent être émulées avec une rotation suivie d'un ET bit à bit. Mentionnons aussi une instruction pour inverser deux ''nibbles'' dans un octet.
Les modèles haute performance ajoutent des instructions d'addition avec retenue entrante, idem pour la soustraction. De telles instructions ssont très utiles pour faire des additions/soustractions sur des opérandes de 16 bits. Le processeur a beau être un CPU 8 bits, il peut être utilisé pour faire des calculs 16 bits, la performance est alors amoindrie, mais ce n'est pas un problème pour les applications d'un tel microcontroleur.
Les modèles intiaux, comme les PIC 10 et 12, ne supportaient pas les interruptions, mais c'est chose réglé sur les modèles plus récents. Ils ont même des registres séparés pour les interruptions et les programmes normaux. De plus, ils intégrent nativement un ''watchdog timer''.
{|class="wikitable" style="text-align:center"
|+ Jeu d'instruction des dodèles PCI 16
|-
! colspan="5" | Instructions diverses
|-
| colspan="3" | 00 0000 0000 0000 || NOP || Ne fait rien
|-
| colspan="3" | 00 0000 0000 1000 || RETURN || Instruction de retour pour une fonction
|-
| colspan="3" | 00 0000 0000 1001 || NOP || Instruction de retour pour une interruption
|-
| colspan="3" | 00 0000 0110 0011 || SLEEP || Mise en veille
|-
| colspan="3" | 00 0000 0110 0100 || CLRWDT || RESET le ''watchdog timer'', intégré dans le PIC
|-
! colspan="5" | Instructions de manipulation de bit
|-
| 0100 || Position du bit dans l'opérande || Adresse mémoire || BCF || Met le bit à 1
|-
| 0101 || Position du bit dans l'opérande || Adresse mémoire || BSF || Met le bit à 0
|-
| 0110 || Position du bit dans l'opérande || Adresse mémoire || BTFSC || Teste si le bit adressé est à 1
|-
| 0111 || Position du bit dans l'opérande || Adresse mémoire || BTFSS || Teste si le bit adressé est à 0
|-
! colspan="5" | Branchements
|-
| colspan="2" | 100 || Adresse mémoire || CALL || Appel de fonction
|-
| colspan="2" | 100 || Adresse mémoire || GOTO || Branchement inconditionnel
|-
! colspan="5" | Instructions logiques/arithmétiques avec opérande lue en mémoire RAM
|-
| colspan="5" | ''Le bit '''d''' dans l'opcode indique la destination : accumulateur ou adresse mémoire''.
|-
| colspan="2" | 0000001 || Adresse mémoire || MOVWF || Store (accumulateur vers destination)
|-
| colspan="2" | 000001d || Adresse mémoire || MOVWF || Met à zéro la destination (adresse ou registre)
|-
| colspan="2" | 000001d || Adresse mémoire || SUBWF || Soustraction
|-
| colspan="2" | 000010d|| Adresse mémoire || DECF || Décrémentation
|-
| colspan="2" | 000100d|| Adresse mémoire || IORWF || OU bit à bit
|-
| colspan="2" | 000101d|| Adresse mémoire || ANDWF || ET bit à bit
|-
| colspan="2" | 000110d || Adresse mémoire || XORWF || XOR bit à bit
|-
| colspan="2" | 000111d || Adresse mémoire || ADDWF VWF || Addition
|-
| colspan="2" | 001000d || Adresse mémoire || MOVF || LOAD
|-
| colspan="2" | 001001d || Adresse mémoire || COMF || NOT bit à bit
|-
| colspan="2" | 001010d || Adresse mémoire || INCF || Incrémentation
|-
| colspan="2" | 001011d || Adresse mémoire || DECFSZ || Décrémentation, puis instruction SKIP si résultat = 0
|-
| colspan="2" | 001100d || Adresse mémoire || RRF || Rotation à droite avec retenue entrante
|-
| colspan="2" | 001101d || Adresse mémoire || RLF || Rotation à gauche avec retenue entrante
|-
| colspan="2" | 001110d || Adresse mémoire || SWAPF || Echange deux ''niblle'' dans un octet
|-
| colspan="2" | 001111d || Adresse mémoire || INCFSZ || Incrémentation, puis instruction SKIP si résultat = 0
|-
! colspan="5" | Instructions logiques/arithmétiques avec constante immédiate
|-
| colspan="2" | 1100xx || Constante immédiate (8bits) || MOVLW || Copie constante dans accumulateur
|-
| colspan="2" | 1101xx || Constante immédiate (8bits) || RETLW || MOV fusionné avec un retour de fonction
|-
| colspan="2" | 111000 || Constante immédiate (8bits) || IORLW || OU
|-
| colspan="2" | 111001 || Constante immédiate (8bits) || ANDLW || ET
|-
| colspan="2" | 111010 || Constante immédiate (8bits) || XORLW || XOR
|-
| colspan="2" | 11110x || Constante immédiate (8bits) || SUBLW || Soustraction
|-
| colspan="2" | 11111x || Constante immédiate (8bits) || ADDLW || Addition
|}
Les PIC gèrent l'adressage absolu et immédiat, mais pas plus. L'adressage absolu, celui où l'adresse est intégrée dans l'instruction, est très simple à implémenter. Les adresses prennent moins d'un octet, vu que la taille de la RAM est très petite, les adresses sont très courtes, les intégrer dans des instructions elles-mêmes courtes n'est pas un problème. L'adresse est encodée sur 5 à 7 bits, selon le modèle, ce qui permet d'adresser entre 32 et 128 octets.
Les PIC ne supportent pas l'adressage indirect, mais peuvent l'émuler grâce à un '''registre d'adresse''' dédié. Il s'agit du registre FSR, qui mémorise l'adresse à lire/écrire. Il est possible de copier un pointeur dedans, qui provient soit de l'accumulateur, soit de la mémoire SRAM. Dans les deux cas, la donnée adressée est lue ou écrite dans un registre INDR, est un registre d’interfaçage rendu adressable. Le registre FSR est directement connecté sur le bus d'adresse.
Les modèles de base se débrouillent avec un registre FSR et un registre INDR, mais les modèles plus performants ont deux ou trois copies de chaque registre. Les modèles PIC18 ajoutent aussi des instructions LOAD/STORE qui émulent les modes d'adressage à post- ou pré-incrément/décrément, et le mode d'adressage "Base + Indice + Décalage", encore une fois en utilisant les registres FSR et INDR.
Avec tout ce qu'on vient de dire, vous devriez pouvoir comprendre la microarchitecture d'un PIC, qui est résumée dans ce schéma.
[[File:DocPIC16F84 all.png|centre|vignette|upright=2.5|Microarchitecture du PIC16F84.]]
===Le Fairchild F8 et la console de jeu Fairchild Channel F===
Un autre exemple est la Fairchild F8 de la défunte entreprise Fairchild Semiconductor. Il incorpore un processeur 8 bits, c'est à dire que le processeur fait des calculs sur des entiers de 8 bits maximum, une mémoire RAM de 64 octets, ainsi qu'une mémoire ROM de 1 kibioctet. Les 64 octets de RAM sont certes très peu, mais c'est suffisant pour certaines applications simples, comme les caisses automatiques de l'époque, ou des applications embarquées. Et de toute façon, il est possible d'ajouter de la mémoire RAM supplémentaire si les 64 octets de RAM intégrée ne suffisent pas. Le système était donc modulaire, adaptable selon les besoins, peu cher pour son implémentation minimale sans RAM en plus.
Vu qu'il s'agit d'un des tout premiers ordinateurs, il est sorti à une époque où la technologie était rudimentaire. À cette époque, le processeur était composé de pièces détachées qu'il fallait souder ensemble pour obtenir un processeur fonctionnel. Ce n'est que plus tard qu'est apparu le micro-processeur, qui regroupe un processeur complet dans un seul circuit intégré. Le résultat est que le processeur du Fairchild F8 est coupé en deux, l'unité de calcul et l'unité de contrôle sont placés dans des pièces détachées séparés.
Le microcontrôleur est composé de trois à quatre pièces détachées, certaines étant optionnelles. La première est le '''3850 CPU''', qui regroupe l'unité de calcul et la mémoire RAM intégrée. La seconde est le PSU (''3851 Program Storage Unit''), qui regroupe la mémoire ROM et l'unité de contrôle, ''program counter'' inclut. S'il y a besoin d'utiliser plus de RAM, il faut ajouter un circuit d’interface mémoire, qui est au choix le ''3852 Dynamic Memory Interface'' (DMI) ou le ''3853 Static Memory Interface'', le premier étant connecté à une mémoire de type DRAM, l'autre à une SRAM (nous verrons ce que sont les DRAM et les SRAM dans le prochain chapitre).
[[File:Fairchild F8.png|centre|vignette|upright=2|Fairchild F8]]
Le système minimal est composé d'un PSU et d'un 3850, sans les circuits d'interface mémoire. Le tout donne un système avec un processeur 8 bit, 64 octets de RAM et 1 kibioctet de ROM, les deux mémoires étant intégrées dans le "processeur". Le processeur gérait 4 entrées-sorties, chacune étant reliée avec un bus de 8 bit au processeur. Au passage, en 1977, Mostek a créé un microcontrôleur qui regroupe un PSU et un 3850 : le Mostek 3870. Le système minimal n'avait pas de bus d'adresse, vu que la RAM était intégrée au processeur. C'est les 3852 et 3853 qui ajoutaient un bus d'adresse. Ils ajoutent un bus d'adresse de 16 bits, ce qui permet d'adresser 64 kibioctets de RAM.
[[File:Fairchild-Channel-F.jpg|vignette|un Fairchild Channel F]]
Le Fairchild F8 a été utilisé dans la Fairchild Channel F, une des toute première console de seconde génération, à savoir des consoles qui utilisaient des cartouches de jeu. Avant les consoles de seconde génération, les consoles étaient non-programmables. Elles étaient conçues pour faire tourner un jeu précis, aucun autre, le jeu étant implémenté dans leurs circuits.
La Fairchild Channel F est composé du système minimal, auquel on a ajouté une carte son rudimentaire et 2 kibioctets de mémoire vidéo. La mémoire vidéo sert uniquement pour afficher des images à l'écran : on écrit l'image à afficher dedans, un circuit vidéo se charge de l'afficher à l'écran automatiquement. Le processeur ne fait qu'écrire dans cette RAM vidéo, il ne peut pas en lire le contenu. De la RAM supplémentaire peut cependant être ajoutée dans les cartouches de jeu.
===Les consoles 8 bits===
Pour encore améliorer la situation, il est possible d'utiliser une architecture Harvard modifiée, qui permet de lire des données depuis la mémoire ROM. Cela réduit encore plus les besoins en mémoire RAM. Les constantes manipulées par le programme sont mémorisées en ROM, lues depuis la ROM, au lieu d'être chargées en RAM. Les consoles de jeu utilisaient beaucoup de stratagème.
L'exemple type est celui des consoles 8 bits avec des graphismes en 2D. La cartouche de jeu contenait une ROM, qui mémorisait le code du jeu, les niveaux, les sprites et autres données graphiques. Leur carte graphique lisait directement les ''sprites'' depuis la mémoire ROM, sans avoir à les charger en mémoire vidéo. La mémoire vidéo se contentait de mémoriser le reste des informations graphiques, ainsi que des pointeurs vers les ''sprites'' en ROM. En conséquence, les consoles 8 bits n'avaient pas besoin de beaucoup de RAM, vu qu'une grande partie des données utiles étaient dans une ROM directement accessible par le processeur. A l'opposé, les micro-ordinateurs devaient copier les données d'un jeu depuis une disquette dans la mémoire RAM, ce qui demandait d'avoir plus de RAM.
Le passage au support CD sur les consoles 32 bits a eu la même conséquence. Le processeur ne pouvant pas lire directement le CD à sa guise, il fallait copier les données du CD en RAM. D'où l'apparition de temps de chargement assez longs, inexistants sur support cartouche.
Avec ce genre de stratagèmes, 256 octets de RAM est largement suffisant sur de nombreux systèmes, à condition qu'on ait assez de ROM pour coder un programme digne de ce nom. Par exemple, de nombreux systèmes embarqués simples s'en accommodent : des caisses enregistreuses, des systèmes de régulation de feu de circulation, etc.
===Le HP Nanoprocessor : un processeur sans ALU===
Un dernier exemple est celui du processeur HP Nanoprocessor, de l'entreprise HP. Il a été commercialisé en 1974, en même temps que les premiers micro-processeurs d'Intel. Tous les processeurs de l'époque étaient des processeurs 8 bits et le HP Nanoprocessor ne faisait pas exception. Ce n'était pas un processeur haute performance, il était destiné à des applications d'informatique industrielle ou embarquée. D'ailleurs, il utilisait des transistors de type metal-gate, peu performants, là où ses contemporains utilisait des transistors en silicium, plus performants.
Mais une caractéristique qui rend cela encore plus claire est qu'il n'y a pas d'ALU ! En effet, ce processeur est incapable de faire des additions, des soustractions ou autres opérations simples ! Il est cependant capable d'effectuer des incrémentations et décrémentations, des décalages, des opérations logiques comme des ET/OU/NON/XOR et bien d'autres. Il supporte en tout 48 instructions, avec un support limité des modes d'adressage indirects. Les instructions de branchement étaient des instructions SKIP, il n'y avait pas d'instructions de branchement généralistes.
Pour ce qui est des registres, il disposait de 16 registres de 8 bits et d'un accumulateur. Niveau mémoire, il était relié à une mémoire ROM, rien de plus. Il n'avait de RAM supplémentaire qu'on pouvait lui adjoindre, il devait se débrouiller avec seulement ses registres. Et cela ne posait pas de problèmes pour son usage. Seul le mode d'adressage indirect à registre est supporté, il n'y a pas de registres d'indices. Ce mode d'adressage permet de lire des données en mémoire ROM, la ROM pouvant contenir des tableaux de valeurs constantes.
: Il est possible de lui adjoindre de la RAM via les ports d'entrée-sortie, ainsi qu'une ALU, mais RAM et ALU sont traités comme des périphériques avec lesquels on communique, ils ne sont pas intégrés au processeur.
Niveau micro-architecture, il incorporait une unité de calcul logique et un circuit comparateur. Le comparateur était un circuit comparateur série des plus basiques, qui était utilisé pour les instructions de branchement et associées. L'unité de calcul logique gérait des incrémentations/décrémentation, des décalages, les opérations logiques et quelques autres. L'unité de calcul logique était bit-slicée, à savoir conçue en assemblant 8 ALU de 1 bit chacune, enchainées en série. Le tout était combiné à des circuits de ''carry skip''.
[[File:Unité de calcul du HP nanonprocessor.png|centre|vignette|upright=2|Unité de calcul du HP nanoprocessor]]
Son unité de décodage d'instruction était très simple, essentiellement basée sur des portes NOR, grâce à un encodage efficace des instructions machine. Le ''program counter'' fait 11 bits, ce qui permet d'adresser une ROM de 2 kibioctets. Le ''program counter'' était relié à un circuit incrémenteur qui gérait les isntructions SKIP (il pouvait incrémenter le ''program counter'' par pas de 1 ou de 2 en cas de SKIP). Le processeur contient aussi deux registres, qui servent en quelque sorte de pile d'adresse de retour. Un premier registre mémorise l'adresse de retour d'une fonction, l'autre mémorise le ''program counter'' lors d'une interruption, pour savoir où brancher à la fin de l'interruption.
[[File:HP nanoprocessor.png|centre|vignette|upright=2.5|HP nanoprocessor]]
Fait intéressant, le concepteur du processeur a gracieusement donné les masques utilisés pour graver le silicium du processeur au site [https://www.cpushack.com/ CPU Shack]. Les masques en question sont disponibles ici :
* [https://www.cpushack.com/2020/08/20/hp-nanoprocessor-mask-set/ HP NanoProcessor Mask Set]
* [https://www.cpushack.com/2020/08/09/the-forgotten-ones-hp-nanoprocessor/ The Forgotten Ones: HP Nanoprocessor]
Les masques ont été analysés par Ken Shirrif dans cet article de blog :
* [https://www.righto.com/2020/09/hp-nanoprocessor-part-ii-reverse.html HP Nanoprocessor part II: Reverse-engineering the circuits from the masks]
==Les processeurs 8/16 bits à architecture Von Neumann==
L'usage d'une architecture Harvard est une solution pour adresser plus de mémoire avec des CPU 8 bits. Mais plusieurs microprocesseurs commerciaux n'utilisaient pas cette solution. À la place, c'était des architectures Von Neumann, mais qui étaient capables de gérer des adresses de 16 bits. Les données faisaient 8 bits, les registres faisaient 8 bits, mais quelques techniques permettaient de gérer des adresses de 16 bits. Nous parlerons de '''processeurs 8/16 bits''' pour les désigner, et nous allons les étudier à part.
Un point important est que la gestion d'adresses de 16 bits permet d'adresser 64 kibioctets, qui peuvent être remplis avec de la RAM et de la ROM. On a donc le meilleur des mondes : 64 kibioctets de mémoire, mais avec des données de 8 bits et les économies de circuit qui vont avec. L'avantage est que le processeur peut maintenant gérer une vraie pile d'appel, pas seulement une pile d'adresse de retour. Il lui suffit pour cela d'intégrer un pointeur de pile codé sur 16 bits.
===Les modes d'adressage par page des CPU Motorola===
Les processeurs Motorola 8 bits étaient des processeurs 8 bits avec un bus d'adresse de 16 bits. C'était des processeurs à accumulateur incorporant deux registres d'indice, un registre d'état, un pointeur de pile, et un ''program counter''. Tous les registres sont reliés au bus d'adresse, sauf le registre d'état et l’accumulateur. Tous les registres font 8 bits, sauf le ''program counter''. La pile est câblée pour être dans un bloc de 256 octets compris entre l'adresse 1 0000 0000 et l'adresse 1 1111 1111, ce qui fait que son adressage se fait avec un seul octet.
[[File:6502-architecture.svg|centre|vignette|upright=1.5|Architecture simplifiée du 6502.</br> X et Y : registres d'indice ;</br> S : le pointeur de pile ;</br> A : accumulateur ;</br>P : registre d'état.</br>]]
Les processeurs Motorola 8 bits utilisaient une méthode simple pour adresser 64 kibioctets de RAM, avec des registres de 8 bits. Pour cela, ils utilisaient une variante de l'adressage base + décalage. Elle améliore l'adressage absolu, qui intègre l'adresse à lire/écrire dans l'instruction elle-même. L'adresse en question est de 8 bits et n'encode que les 8 bits de poids faible de l'adresse, les 8 bits de poids fort sont dans un '''registre de page''' adressé implicitement. L'adresse finale est obtenue en concaténant ce registre avec l'adresse mémoire intégrée dans l’instruction. Le résultat est que la mémoire était découpée en blocs de 256 consécutifs, chacun pouvant servir de fenêtre de 256 octets. Une page est réservée pour la pile, la seconde, comme dit plus haut.
Formellement, ce mode d'adressage a des ressemblances avec la commutation de banques, une technique qu'on verra dans les chapitres sur l'espace d'adressage et la mémoire virtuelle. Mais ce n'en est pas du tout : le registre de page est utilisé uniquement pour les accès mémoire avec le mode d'adressage base + décalage, mais pas pour les autres accès mémoire, qui gèrent des adresses complètes. Notons que l'usage d'un registre de page dédié fait que celui-ci est adressé implicitement.
Il faut noter que la technique a été utilisée sur des processeurs 16 bits, pour contourner la petite taille des instructions. Un exemple est celui du HP 2100, un processeur 16 bits. Il avait un registre de page de 5 bits et encodait 10 bits d'adresse dans ses instructions. Ses instructions d'accès mémoire disposaient d'un bit qui choisit quel mode d'adressage utiliser. S'il était à 0, l'adressage absolu était utilisé, le registre de page n'était pas utilisé. Mais s'il était à 1, le registre de page était utilisé pour calculer l'adresse.
Une évolution de l'adressage précédent est le '''mode page direct'''. Avec lui, le registre de page est étendu et contient une adresse mémoire complète. L'adresse finale n'est pas obtenue par concaténation, mais en additionnant le registre de page avec l'adresse fournie par adressage absolu + décalage. Un exemple est celui des premiers processeurs Motorola, qui géraient des adresses courtes de 8 bits. L'adresse courte de 8 bits correspondait non pas aux 256 premiers octets de la mémoire, mais à une fenêtre de 256 octets déplaçable en mémoire. La position de la fenêtre de 256 octets était spécifiée par le registre de page de 16 bits, qui précisait l'adresse du début de la fenêtre, celle de sa première donnée.
Il s'agit donc formellement d'adressage base + décalage, à un détail près : il n'y a qu'un seul registre de base. Le fait que ce registre de base soit unique fait qu'il est adressé implicitement, on n'a pas à encoder le numéro/noms de registre dans l'instruction. Le registre de base est utilisé uniquement pour l'adressage absolu, pas pour les autres accès mémoire. S'il y a des ressemblances avec la segmentation, une technique de mémoire virtuelle qu'on abordera dans quelques chapitres, ce n'en est pas vu que le registre de base est utilisé seulement pour un mode d'adressage bien précis.
===Le ''pseudo-aliasing'' des registres des processeurs Intel x86===
Voyons maintenant le cas des anciens processeurs 8 bits d'Intel à savoir l'Intel 4004, 4040, 8008 et 8080. Le Z80, un processeur inspiré des CPU Intel 8 bits, est aussi concerné. Avant de poursuivre, parlons des registres de ces processeurs. Les premiers CPU Intel incorporaient 7 registres de 8 bits nommés A, B, C, D, E, F, H, L, SP. Ils correspondent respectivement à : l'accumulateur A ; six registres nommés B, C, D, E, H et L ; le registre d'état F ; le pointeur de pile SP. Le Z80 ajoute deux registres d'indice X et Y. De plus, le Z80 dispose de registres d'interruption, qui sont en quelque sorte des copies des registres A, B, C, D, E, F, H, L. Le tout est illustré dans le tableau ci-dessous.
{|class="wikitable" style="text-align:center;"
|-
!
! Registres des CPU Intel
! Registres supplémentaires du Z80
|-
! Accumulateur
| A
| A'
|-
! Registre d'état
| F
| F'
|-
! Registres généraux
| B, C, D, E, H, L
| B', C', D', E', H', L'
|-
! Pointeur de pile
| colspan="2" | SP (sauf pour le 8008)
|-
! Registres d'indice
|
| X et Y
|}
Le 8008 incorpore une pile d'appel de 7 adresses, dans le processeur lui-même. Il en est de la même avec le 4004 et le 4040, comme on le verra dans la section sur les processeurs 4 bits. Mais le 8080 et le 8085 ont remplacé le tout par un simple pointeur de pile, afin d'avoir une véritable pile d'appel. Autant c'est impossible d'avoir une pile d'appel avec seulement 256 octets de mémoire, autant on peut se le permettre avec 65 536 adresses.
Pour gérer des adresses de 16 bits, ils auraient pu utiliser des registres d'adresse séparés, mais on préféré un système de '''pseudo-''aliasing'' de registres'''. Formellement, c'est un système qui concatène deux registres 8 bits pour obtenir une adresse de 16 bits. L’appariement a lieu lors de certaines opérations bien précises, qui n'ont de sens que pour les adresses : la lecture/écriture en mémoire, et l'incrémentation.
Il y avait cependant des contraintes quant aux paires de registres possibles, toutes les paires de registres n'étaient pas autorisées. Les CPU concernés sont donc des processeurs hybrides accumulateur-registre généraux. L'accumulateur ne peut pas être appairé, seuls les registres généraux le peuvent. Le Z80 autorise plus de paires que les CPU Intel. Voici les paires de registres qui pouvaient servir d'adresse 16 bits :
* Les CPU 8008 d'Intel autorisait une seule paire formée des registres H et L.
* Les autres processeurs, à savoir le 8080, le 8085 et le Z80, autorisaient : les paires BC, DE et HL.
Le 8008 ne gérait que des opérations sur 8 bits. Mais le 8080 et le 8085 ont ajouté des instructions 16 bits qui agissaient sur des paires de registre, que le Z80 a repris. Une paire de registres est considérée comme un registre unique de 16 bits pour certaines opérations arithmétiques, dont l'incrémentation. Voici la liste des instructions concernées :
* INC et DEC pour l'incrémentation et la décrémentation ;
* DAD : additionne le registre HL avec une autre paire (Hl inclus) ;
* LXI : copie une constante immédiate dans une paire de registres ;
* LHLD : lit 16 depuis la mémoire et l'enregistre dans une paire de registres ;
* SHLD : copie 16 bits depuis une paire de registres et l'enregistre en mémoire ;
* PUSH et POP : empile ou dépilent une paire de registre sur la pile ;
* XTHL : échange la paire HL avec les 16 bits au sommet de la pile d'appel ;
* XCHG : échange le contenu de la paire HL et DE.
Pour résumer, le processeur avait des instructions LOAD, STORE, PUSH et POP adaptées pour gérer des paires de registre. De plus, l'instruction XCHG permettait d’échanger le contenu des paires DE et HL. L'instruction a été étendue sur les processeurs 16 bits pour échanger tous les registres. Mais l'implémentation était alors différente. L'incrémentation sur une paire de 16 bit était très utile, car les adresses sont souvent incrémentées quand on parcours un tableau. Ces instructions nous donnent quelques indices sur ce qu'il y a dans le processeur.
Le système de pseudo-aliasing a un impact sur le banc de registre. Le banc de registre regroupe les registres généraux et le pointeur de pile, mais ne contient pas l'accumulateur. Les contraintes sur les paires de registres possibles ne s'expliquent que d'une seule manière : le banc de registre contient des registres de 16 bits, une paire de registres 8 bits est mémorisée dans un registre unique. Il faut donc faire une différence entre les registres architecturaux de 8 bits, et les registres réels de 16 bits.
Le banc de registre a un port de 8 bits pour les données, qui est fabriqué à partir d'un port 16 bits auquel on a rajouté un multiplexeur pour choisir soit l'octet de poids faible, soit l'octet de poids fort. Le bus de données fait 8 bits, ce qui fait que les instructions LOAD, STORE, PUSH et POP pour paires 16 bits sont réalisées en deux fois : on lit/écrit l'octet de poids faible, puis celui de poids fort. Par contre, le bus d'adresse fait bien 16 bits. Cela suggère que le banc de registre dispose d'un port de 16 bits dédié aux adresses, en plus du port de données 8 bits.
[[File:Architecture d'un CPU 8-16 bits avec un banc de registre double port.png|centre|vignette|upright=2|Architecture d'un CPU 8-16 bits avec un banc de registre double port]]
L'incrémentation d'une paire 16 bits ne coute rien à implémenter, ou presque. En effet, le processeur incorpore un incrémenteur 16 bits pour le ''program counter'', qui est relié au bus d'adresse. L'idée est de rentabiliser cet incrémenteur, en lui permettant d'incrémenter des données/adresses de 16 bits obtenues via pseudo-aliasing. De même, il peut être utilisé pour incrémenter le pointeur de pile, voire un compteur de rafraichissement mémoire (pour rappel, le rafraîchissement mémoire demande de balayer la mémoire d'adresse en adresse et été fait par le CPU à l'époque). Pour cela, il suffit de connecter le ''program counter'', le banc de registre, et l'incrémenteur, via un bus dédié.
[[File:Calcul d'adresse par ALU dédiée avec PC séparé.png|centre|vignette|upright=2|Calcul d'adresse par ALU dédiée avec PC séparé]]
Notez qu'on peut encore simplifier le tout en placant le ''program counter'' dans le banc de registre, ce qui ne gênera pas le travail de l'incrémenteur mais simplifiera le câblage au bus d'adresse. Ce n'était pas systématique, certains processeurs mettaient le ''program counter'' dans le banc de registre, d'autres non.
: Inclure le ''program counter'' dans le banc de registre permet parfois de remplir un vide. Par exemple, sur un processeur avec 12 registres, le banc de registre devrait faire idéalement 16 registres, inclure le ''program counter'' dedans fait monter le tout à 13.
[[File:Architecture d'un CPU 8-16 bits.png|centre|vignette|upright=2|Architecture d'un CPU 8-16 bits]]
Les processeurs Intel 8 bits, à savoir le 8008, le 8080 et le 8085 ; mettaient le ''program counter'' dans le banc de registre. Vous avez donc toutes les armes pour comprendre leur micro-architecture. Par exemple, voici la micro-architecture du processeur 8080. Remarquez le banc de registre, qui contient tous les registres sauf l'accumulateur et le registre. Il a deux ports : un pour les adresses et un pour les données. Notez le dé-multiplexeur sur le port de donnée. Pour le reste, il s'agit d'une architecture à accumulateur hybride des plus classiques.
[[File:Intel 8080 arch.svg|centre|vignette|upright=3|Microarchitecture de l'Intel 8080.]]
Le Z80 est un processeur inspiré du design des processeurs Intel 8 bits, mais avec pas mal d'améliorations. Un point particulier de ce processeur est son banc de registre. Il contient tous les registres du processeur, y compris l'accumulateur et le registre d'état ! Les seuls registres en-dehors du banc de registre sont le ''program counter'' et un compteur de rafraichissement mémoire IR.
Un autre point particulier est que les registres dans le banc de registres avaient une copie séparée accessible uniquement pour les interruptions, via fenêtrage de registres. Et l'accumulateur et le registre d'état étant dans le banc de registre, il y avait deux accumulateurs et deux registres d'état. Les registres A, B, C, D, E et F étaient dupliqués, par le pointeur de pile ni les registres d'indice. Les copies des registres étaient nommées A', B', C', D', E' et F'.
Le Z80 supportait des instructions d'échange de registre en plus des CPU Intel 8 bits. L'instruction EX peut échanger soit le contenu des paires D,E et H,F, soit la paire A,F avec la paire A',F'. L'instruction EXX échange les paires BC, DE, HL avec les paires BC', DE', HL'. En faisant cela, le programmeur pouvait utiliser deux fois plus de registres généraux s'il n'utilisait pas les interruptions. L'échange de paires se fait sans copies de registres, mais simplement en modifiant l'adresse envoyée sur le banc de registre. Pour cela, plusieurs bascules mémorisent des bits qui indiquent si les paires ont été échangées ou non. Il y a une bascule pour les paires DE , HL ; une autre pour les paires A,F et paire A',F', une dernière pour l'instruction EXX. En combinant ces bascules avec les noms de registres envoyés par le séquenceur, on peut échanger les paires de registres.
==Le cas particulier des processeurs 4 bits : le 4004 d'Intel==
L'Intel 4004 était le tout premier micro-processeur. Il s'agissait d'un microprocesseur de 4 bits, basé sur une architecture à accumulateur. Il disposait d'un accumulateur et de 16 registres d'indice, tous de 4 bits. Il faisait des calculs sur des données de 4 bits, appelées des nibbles. Cependant, sur ses 46 instructions machines supportées, 41 agissaient sur des opérandes de 8 bits, les 5 restantes sur des opérandes de 16 bits. Simplement, les calculs se faisaient en deux fois, en échangeant des données entre mémoire RAM et accumulateur.
Le 4004 est un circuit intégré avec peu de broches. Il dispose notamment d'un bus de données/adresse, qui est multiplexé, c’est-à-dire qu'il sert alternativement de bus de données et de bus d'adresse selon les besoins. Le bus de commande mémoire fait 5 bits, dont 4 pour les chips de RAM, un pour la ROM. Les adresses sont codées sur 12 bits, les données sur 4 et les instructions sur 8 bits. L'envoi d'une adresse sur le bus se fait en plusieurs fois, de même que la lecture d'une instruction. Il s'agit là d'une adaptation pour outrepasser les limitations d'un processeur 4 bit.
[[File:Intel 4004 processor pinout.png|centre|vignette|upright=2|Broches de l'Intel 4004. Nous verrons à quoi elles servent plus bas.]]
===L'espace d'adressage de l'Intel 4004===
Les adresses du processeur sont sur 12 bits, ce qui fait 4096 adresses différentes. Elles regroupent à la fois la ROM et la mémoire RAM, vu que l'architecture est une sorte de mélange bizarre entre une architecture Von Neumann et Harvard. Le processeur gère bien deux espaces d'adressage séparés, mais la RAM et la ROM sont reliés au même bus. La sortie CM-ROM du processeur indique si l'adresse envoyée correspond à la RAM ou la ROM. Un circuit de décodage d'adresse active ou désactive la RAM selon la valeur de ce bit, l'inverse pour la ROM, en agissant sur leurs bits Chip Select. Seule la RAM ou la ROM répondent alors à l'adresse.
Pour ce qui est de la RAM, le circuit de décodage d'adresse pouvait gérer au maximum 1024 adresses différentes, chacune contenant un nibble. Pour cela, le CPU 4004 était relié à une ou plusieurs RAM externes, des Intel 4002. Chaque Intel 4002 contenait 64 nibbles de données, plus 16 nibbles de statut qu'on ne détaillera pas ici. Les nibbles de statut étaient accessibles en utilisant des instructions d'entrée-sortie, donc pas avec des lectures/écritures mémoire. Les 64 nibbles de données sont découpés en 4 groupes de 16 nibbles. Le CPU pouvait être relié à maximum 16 Intel 4002, ce qui fait 1024 nibbles de données et 256 nibbles de statut. L'ensemble permet de remplir l'espace d'adressage de 1024 adresses.
===Le registre de page et le pseudo-aliasing des registres===
Sélectionner une adresse mémoire utilisait un mélange entre pseudo-aliasing et registre de page. Pour les données, les 1024 adresses étaient découpées en 4 pages de 256 adresses. Pour la ROM, les 4096 adresses étaient découpées en 16 pages de 256 adresses. Localiser une donnée dans une page ne requiert que 8 bits, 2/4 bits supplémentaires permettent de sélectionner la page voulue. Le registre de page était dans le processeur lui-même, et était relié aux sorties du processeur nommées CM-RAM 0, 1, 2 et 3. Les 4 sorties encodaient un nombre qui permet de sélectionner le numéro de page voulu.
Le registre de page fait 5 bits : un pour distinguer RAM et ROM, 4 bits pour sélectionner la page voulue. L'avantage est que la carte mère gère au maximum 16 chips de RAM, ce qui colle parfaitement avec les 4 utilisés pour sélectionner une page. Un chip de RAM correspond à une page, et chacun est activé ou désactivé suivant la page sélectionnée. Pour cela, il suffit d'ajouter un décodeur sur la carte mère, qui prend les 4 bits du registre de page et fournit les signaux Chip Select aux différents chips de RAM.
Reste alors à utiliser les 8 bits d'adresse à l'intérieur d'un chip de RAM. Le 4004 permettait de concaténer deux registres d'indice de 4 bits pour former une adresse de 8 bits. Les instructions d'accès mémoire pouvaient ainsi préciser une paire de registre d'indice pour préciser quelle adresse lire/écrire. Idem pour les branchements indirects : le processeur supportait une instruction de branchement indirect qui précisait l'adresse dans une paire de registres d'indice. Les registres d'indice sont donc assez mal nommés sur cette architecture, vu qu'ils peuvent servir soit de registre d'indice, soit de demi-registre d'adresse. Il s'agit là du système de pseudo-aliasing des registres, mais appliqué aux registres d'indice.
L'Intel 4004 gérait deux instructions pour gérer les adresses mémoires. La première, l'instruction DCL (''Designate Command Line'') configure le registre de page. Elle prend en entrée un numéro de page et le copie dans le registre de page. L'opérande peut provenir d'un registre d'indice ou de l'accumulateur. La seconde, l'instruction SRC (''Send Register Control'') concatène deux registres d'indice pour obtenir une adresse de 8 bits. Un accès mémoire se fait donc en maximum trois instructions : une qui configure le registre de page si ce n'est pas déjà fait, une instruction SRC pour envoyer l'adresse, et une troisième instruction qui dit s'il faut faire une lecture ou une écriture.
===La microarchitecture de l'Intel 4004===
Il incorporait une pile d'adresse de retour intégrée au processeur. La pile d'adresse acceptait exactement 3 adresses maximum. Elle était regroupée avec le ''program counter'' dans un banc de registre, de 4 registres. Le ''program counter'' et le pointeur de pile faisaient chacun 12 bits, soit trois nibble. Ils étaient incrémentés par un incrémenteur dédié.
SI on omet le registre de page et la pile d'adresse, le 4004 est une architecture à accumulateur des plus classiques, avec un bus interne unique, un banc de registre pour les registres d'indices, un accumulateur relié à une unité de calcul. Les registres d'indice étaient dans un banc de registre séparés, car ils faisaient 4 bits chacun, contrairement au pointeur de pile et le ''program counter''. Un détail important est que les bancs de registres du 4004 étaient implémentés avec de la DRAM, et non des registres usuels fabriqués avec des bascules 1 bit.
[[File:Microarchitecture de l'Intel 4004.png|centre|vignette|upright=2.5|Microarchitecture de l'Intel 4004]]
<noinclude>
{{NavChapitre | book=Fonctionnement d'un ordinateur
| prev=Les architectures à pile et mémoire-mémoire
| prevText=Les architectures à pile et mémoire-mémoire
| next=Les processeurs de traitement du signal
| nextText=Les processeurs de traitement du signal
}}
</noinclude>
0nxny231kzyf6o5wzdwx0smfoi2f2rc
765713
765712
2026-05-01T19:07:01Z
Mewtow
31375
/* Les processeurs 8/16 bits à architecture Harvard */
765713
wikitext
text/x-wiki
Nous avons déjà abordé la notion de processeur 8, 16, 32, 64 bits. Elle désigne la taille des registres généraux, ou de l'accumulateur. De nos jours, les processeurs 32 et 64 bits sont la norme, mais les premiers micro-processeurs étaient des processeurs 4 et 8, avant de passer rapidement au 16 bits. La raison est que leur budget en transistor limité faisait qu'on ne pouvait pas utiliser une ALU trop grande : une ALU 8 bit prend deux fois moins de place et de transistors qu'une ALU 16 bits. Cependant, les processeurs 8 bits avaient de sérieuses limitations qui étaient compensées par diverses solutions. Dans ce chapitre, nous allons faire une revue rapide des processeurs 8 bits et de leurs fonctionnalités.
La principale limitation des CPU 8 bits était l'adressage : des registres de 8 bits limitaient l'espace d'adressage à seulement 256 adresses, soit à peine 256 octets ! Intuitivement, on se dit que 256 octets est purement impraticable, on ne peut rien faire d'intéressant avec seulement 256 de RAM + ROM. Et c'est partiellement vrai. L'adage veut que 16 bits est la taille minimale intéressante, la limite à partir de laquelle on a assez de mémoire RAM/ROM pour coder des applications intéressantes. Mais 256 octets de RAM est largement suffisant sur de nombreux systèmes embarqués simples s'en accommodent : des caisses enregistreuses, des systèmes de régulation de feu de circulation, etc.
Pour les applications demandant plus de mémoire RAM, les CPU de l'époque contournaient la limitation de 256 octets de RAM avec de nombreux stratagèmes. Dans ce qui va suivre, nous allons séparer les CPU 8 bits selon qu'ils utilisent une architecture Harvard ou une architecture Von Neumann. La raison est qu'une architecture Harvard permet en soi de contourner partiellement ce problème d'adressage. Les choses sont plus compliquées avec une architecture Von Neumann.
==Les processeurs 8/16 bits à architecture Harvard ==
La première solution est d'utiliser une architecture Harvard. Le processeur 8 bit a alors deux espaces d'adressage : un pour la RAM, un autre pour la ROM. Et les deux utilisent des adresses de taille différente. La ROM est reliée à un bus d'adresse de 16 bits, alors que la RAM est elle connectée à un bus d'adresse de 8 bits. La RAM est donc limitée à 256 octets, alors que la ROM peut monter jusqu'à 64 kibioctets. Mine de rien, faire ainsi est largement suffisant.
Pour encore améliorer la situation, il est possible d'utiliser une architecture Harvard modifiée, qui permet de lire des données depuis la mémoire ROM. Cela réduit encore plus les besoins en mémoire RAM. Les constantes manipulées par le programme sont mémorisées en ROM, lues depuis la ROM, au lieu d'être chargées en RAM. Avec ce genre de stratagèmes, 256 octets de RAM est largement suffisant sur de nombreux systèmes, à condition qu'on ait assez de ROM pour coder un programme digne de ce nom. Par exemple, de nombreux systèmes embarqués simples s'en accommodent : des caisses enregistreuses, des systèmes de régulation de feu de circulation, etc.
Les processeurs 8 bits intègrent parfois les 256 octets de RAM directement dans le processeur, dans le banc de registres ! Beaucoup en implémentaient moins, avec par exemple seulement 64 octets de RAM, ou 32 octets, ou 128 octets. L'avantage est que cela élimine le bus pour les données, ce qui économise beaucoup de broches sur le circuit intégré du CPU. Et pour les applications demandant plus de RAM, on pouvait ajouter un circuit séparé qui permettait d'adresser une RAM plus grande. Et c'est ce qui explique que cette solution est beaucoup utilisée sur les microcontrôleurs peu puissants. Les exemples qui vont suivre devraient vous convaincre.
===Les microcontrôleurs PIC===
Les '''microcontrôleurs PIC''' regroupent des microcontrôleurs allant de microcontrôleurs 8 bits aux performances très faible, à des microcontrôleurs 32 bits bien plus puissants. Les microcontrôleurs PIC sont très utilisés dans l'embarqué ou d'informatique industrielle. Ils sont vendu à des volumes assez impressionnants, plusieurs millions par an. Et si vous avez ou êtes en train de faire des études d'électronique, je parie que vous les avez déjà vu en classe, ou que ce ne saurait tarder. Dans ce qui suit, nous allons nous concentrer sur les microcontrôleurs PIC 8 bits, à savoir les PIC 16, 16 et 18. Les PIC 24, qui sont des microcontrôleurs 16 bits, ne seront pas abordés.
Les microcontrôleurs PIC 8 bits sont une architecture Harvard, comme dit plus haut. Il y a aussi des registres pour les entrées et sorties. Les registres d'entrée-sortie permettent de lire ou écrire sur un port d'entrée-sortie ou de lire un ''timer''. En clair, les PIC ont un espace d'adressage séparé pour les entrées-sorties.
La mémoire ROM des PIC va de 1024 instructions à 4096 instructions. En comparaison, la mémoire RAM des microcontrôleurs PIC ne peut pas dépasser 256 adresses, et elle est encore plus petite en pratique sur certains modèles. Pour donner un exemple, le PIC16F84 a une RAM composée de 68 "registres" de 8 bits. Le terme "registres" devrait vous faire tiquer, mais c'est bien le terme utilisé dans la documentation des PIC. Et il faut admettre que la différence entre banc de registre et SRAM intégrée est floue, mais nous expliquerons pourquoi dans quelques paragraphes.
: Les PIC 18 peuvent adresser plus de 256 octets de RAM en utilisant la commutation de banques, une technique qui sera abordée dans plusieurs chapitres.
[[File:DocPIC16F84 3.png|centre|vignette|upright=3|Espaces d'adressage du PIC16F84.]]
Un détail est que la SRAM n'a qu'un seul port qui sert à la fois pour les lectures et écritures. Pour compenser, les PIC sont des architectures à accumulateur, où une opérande est lue depuis la SRAM, l'autre depuis l'accumulateur. Leur implémentation de l'accumulateur ajoute une petite subtilité : le résultat d'une opération arithmétique peut être enregistré ailleurs que dans l'accumulateur. Le résultat peut aussi remplacer la seconde opérande, celle lue en mémoire RAM. Dit autrement, le résultat est enregistré dans l'adresse mémoire source. Les instructions de calcul ont le choix : un bit dans leur encodage précise où enregistrer le résultat.
{|
|-
|[[File:DocPIC16F84 4.png|centre|vignette|upright=2|Microarchitecture simplifiée d'un microcontroleur PIC (ici, un 16F84).]]
|[[File:DocPIC16F84 5.png|centre|vignette|upright=2|Microarchitecture simplifiée d'un microcontroleur PIC (ici, un 16F84), avec les branchements directs.]]
|}
Outre l'accumulateur, les PIC disposent de registres de contrôle, d'un ''program counter'', d'un registre d'état, et d'un pointeur de pile. Un détail très important est que les registres sont mappés en mémoire, à quelques exceptions près ! En clair, on peut y accéder en lisant/écrivant à une adresse mémoire bien précise. Les seules registres qui ne sont pas mappés en mémoire sont l'accumulateur, les registres d'entrée-sortie, et la pile d'adresses de retour intégrée au processeur (voir plus bas). Par exemple, sur les modèles 16F, l'espace d'adressage fait 128 octets, dont 32 sont réservés aux registres du processeur, ce qui fait que seules 96 octets sont adressables comme de la RAM. Mais les 128 octets sont un seul et unique SRAM dans le processeur. Ce qui explique qu'il est difficile de séparer banc de registre et RAM principale sur ce processeur : les deux sont fusionnées !
: Les modèles PIC 17 ont rendu l'accumulateur mappé en mémoire RAM !
[[File:DocPIC16F84.png|centre|vignette|upright=2|DocPIC16F84]]
La petite taille de la ROM d'un PIC n'est pas une surprise. Les architectures 8 bits sont conçues pour ne pas utiliser beaucoup de transistors et être très simples. Aussi, utiliser une petite ROM est nécessaire. Mais il faut aussi adapter le jeu d'instruction, pour qu'il ait une bonne densité de code. Par exemple, il faut faire en sorte d'avoir des instructions assez courtes. Si les instructions font 16 bits au lieu de 32, on divise par deux le nombre de transistors nécessaire pour la mémoire ROM. La conséquence est que le jeu d’instruction des PIC est adapté à cette contrainte.
Les microcontrôleurs PIC utilisent un jeu d'instruction propriétaire, dont les instructions sont très petites. Les premières versions du jeu d'instruction utilisaient des instructions codées sur 12 bits, dont 5 pour l'adresse mémoire de la seconde opérande. Pour les branchements, 3 bits étaient utilisés pour l'opcode, 9 pour l'adresse de destination. Par la suite, les instructions ont été étendues à 13 bits sur les PIC1670, puis à 14, 15 et 16 bits. Les adresses ont alors été élargies, ce qui permet d'adresser en peu plus de mémoire RAM.
Il est intéressant de regarder comment les PIC font pour obtenir des instructions aussi courtes. Premièrement, le fait d'utiliser une architecture à accumulateur, couplé à une RAM très petite aident grandement. Les architectures à accumulateur ont besoin de préciser un opcode et une adresse mémoire pour chaque instruction, pas besoin de préciser de noms de registres ni le mode d'adressage. La taille des adresses mémoire est censé être un problème pour la densité de code, mais les adresses d'un processeur 8 bits font 8 bits. On peut alors avoir un jeu d'instruction étoffé, en utilisant des instructions 16 bits, qui concatènent un opcode et une adresse mémoire, d'un octet chacun.
Mais d'autres optimisations permettent d'avoir une bonne densité de code. Les PIC ont des branchements pour les appels et retour de fonction. Les PIC incorporent une pile d'appel de retour, qui fait 2 à 8 adresses suivant les modèles. Elle permet d'économiser quelques registres, car la pile d'appel n'est pas mappé dans l'espace d'adressage, elle n'est pas adressable. On économise ainsi 2 à 8 registres, sur 32-256 registres. De plus, cela simplifie l'encodage des instructions d'appel/retour de fonction, qui n'ont pas à préciser où enregistre l'adresse de retour.
Les PIC n'ont pas d'instructions de branchement conditionnels, ils font avec une SKIP instruction et des branchements inconditionnels. Du moins, c'est le principe, car si vous regardez la liste des instructions ci-dessous, vous verrez qu'il n'y a pas d'instruction SKIP. A la place, les instructions SKIP sont fusionnées avec d'autres instructions. Elles sont notamment fusionnées avec les instructions d'incrémentation et de décrémentation. Les PIC supportent une incrémentation normale, une décrémentation normale, une décrémentation fusionnée avec une instruction SKIP, et une incrémentation fusionnée avec une instruction SKIP. Les deux dernières incrémentent/décrémentent l'accumulateur et SKIP l'instruction suivante si le résultat est zéro. Elles permettent de fortement simplifier l'implémentation des boucles qui s'exécutent tant que leur compteur atteint zéro.
Les PIC disposent aussi d'instructions de manipulation de bit, pour tester/masquer un bit dans une opérande, 4 en tout. Il y a en a 4 en tout : mettre à 0, mettre à 1, tester si bit = 1, tester si bit = 0. Les instructions qui testent un bit prennent leur opérande dans l'accumulateur. Elles font le test du bit et décident s'il faut skipper l'instruction suivante ou non. Il y a aussi deux instructions de rotation à gauche et droite, qui tiennent compte de la retenue mémorisée dans le registre d'état. Par contre, il n'y a pas d'instructions de décalages, qui peuvent être émulées avec une rotation suivie d'un ET bit à bit. Mentionnons aussi une instruction pour inverser deux ''nibbles'' dans un octet.
Les modèles haute performance ajoutent des instructions d'addition avec retenue entrante, idem pour la soustraction. De telles instructions ssont très utiles pour faire des additions/soustractions sur des opérandes de 16 bits. Le processeur a beau être un CPU 8 bits, il peut être utilisé pour faire des calculs 16 bits, la performance est alors amoindrie, mais ce n'est pas un problème pour les applications d'un tel microcontroleur.
Les modèles intiaux, comme les PIC 10 et 12, ne supportaient pas les interruptions, mais c'est chose réglé sur les modèles plus récents. Ils ont même des registres séparés pour les interruptions et les programmes normaux. De plus, ils intégrent nativement un ''watchdog timer''.
{|class="wikitable" style="text-align:center"
|+ Jeu d'instruction des dodèles PCI 16
|-
! colspan="5" | Instructions diverses
|-
| colspan="3" | 00 0000 0000 0000 || NOP || Ne fait rien
|-
| colspan="3" | 00 0000 0000 1000 || RETURN || Instruction de retour pour une fonction
|-
| colspan="3" | 00 0000 0000 1001 || NOP || Instruction de retour pour une interruption
|-
| colspan="3" | 00 0000 0110 0011 || SLEEP || Mise en veille
|-
| colspan="3" | 00 0000 0110 0100 || CLRWDT || RESET le ''watchdog timer'', intégré dans le PIC
|-
! colspan="5" | Instructions de manipulation de bit
|-
| 0100 || Position du bit dans l'opérande || Adresse mémoire || BCF || Met le bit à 1
|-
| 0101 || Position du bit dans l'opérande || Adresse mémoire || BSF || Met le bit à 0
|-
| 0110 || Position du bit dans l'opérande || Adresse mémoire || BTFSC || Teste si le bit adressé est à 1
|-
| 0111 || Position du bit dans l'opérande || Adresse mémoire || BTFSS || Teste si le bit adressé est à 0
|-
! colspan="5" | Branchements
|-
| colspan="2" | 100 || Adresse mémoire || CALL || Appel de fonction
|-
| colspan="2" | 100 || Adresse mémoire || GOTO || Branchement inconditionnel
|-
! colspan="5" | Instructions logiques/arithmétiques avec opérande lue en mémoire RAM
|-
| colspan="5" | ''Le bit '''d''' dans l'opcode indique la destination : accumulateur ou adresse mémoire''.
|-
| colspan="2" | 0000001 || Adresse mémoire || MOVWF || Store (accumulateur vers destination)
|-
| colspan="2" | 000001d || Adresse mémoire || MOVWF || Met à zéro la destination (adresse ou registre)
|-
| colspan="2" | 000001d || Adresse mémoire || SUBWF || Soustraction
|-
| colspan="2" | 000010d|| Adresse mémoire || DECF || Décrémentation
|-
| colspan="2" | 000100d|| Adresse mémoire || IORWF || OU bit à bit
|-
| colspan="2" | 000101d|| Adresse mémoire || ANDWF || ET bit à bit
|-
| colspan="2" | 000110d || Adresse mémoire || XORWF || XOR bit à bit
|-
| colspan="2" | 000111d || Adresse mémoire || ADDWF VWF || Addition
|-
| colspan="2" | 001000d || Adresse mémoire || MOVF || LOAD
|-
| colspan="2" | 001001d || Adresse mémoire || COMF || NOT bit à bit
|-
| colspan="2" | 001010d || Adresse mémoire || INCF || Incrémentation
|-
| colspan="2" | 001011d || Adresse mémoire || DECFSZ || Décrémentation, puis instruction SKIP si résultat = 0
|-
| colspan="2" | 001100d || Adresse mémoire || RRF || Rotation à droite avec retenue entrante
|-
| colspan="2" | 001101d || Adresse mémoire || RLF || Rotation à gauche avec retenue entrante
|-
| colspan="2" | 001110d || Adresse mémoire || SWAPF || Echange deux ''niblle'' dans un octet
|-
| colspan="2" | 001111d || Adresse mémoire || INCFSZ || Incrémentation, puis instruction SKIP si résultat = 0
|-
! colspan="5" | Instructions logiques/arithmétiques avec constante immédiate
|-
| colspan="2" | 1100xx || Constante immédiate (8bits) || MOVLW || Copie constante dans accumulateur
|-
| colspan="2" | 1101xx || Constante immédiate (8bits) || RETLW || MOV fusionné avec un retour de fonction
|-
| colspan="2" | 111000 || Constante immédiate (8bits) || IORLW || OU
|-
| colspan="2" | 111001 || Constante immédiate (8bits) || ANDLW || ET
|-
| colspan="2" | 111010 || Constante immédiate (8bits) || XORLW || XOR
|-
| colspan="2" | 11110x || Constante immédiate (8bits) || SUBLW || Soustraction
|-
| colspan="2" | 11111x || Constante immédiate (8bits) || ADDLW || Addition
|}
Les PIC gèrent l'adressage absolu et immédiat, mais pas plus. L'adressage absolu, celui où l'adresse est intégrée dans l'instruction, est très simple à implémenter. Les adresses prennent moins d'un octet, vu que la taille de la RAM est très petite, les adresses sont très courtes, les intégrer dans des instructions elles-mêmes courtes n'est pas un problème. L'adresse est encodée sur 5 à 7 bits, selon le modèle, ce qui permet d'adresser entre 32 et 128 octets.
Les PIC ne supportent pas l'adressage indirect, mais peuvent l'émuler grâce à un '''registre d'adresse''' dédié. Il s'agit du registre FSR, qui mémorise l'adresse à lire/écrire. Il est possible de copier un pointeur dedans, qui provient soit de l'accumulateur, soit de la mémoire SRAM. Dans les deux cas, la donnée adressée est lue ou écrite dans un registre INDR, est un registre d’interfaçage rendu adressable. Le registre FSR est directement connecté sur le bus d'adresse.
Les modèles de base se débrouillent avec un registre FSR et un registre INDR, mais les modèles plus performants ont deux ou trois copies de chaque registre. Les modèles PIC18 ajoutent aussi des instructions LOAD/STORE qui émulent les modes d'adressage à post- ou pré-incrément/décrément, et le mode d'adressage "Base + Indice + Décalage", encore une fois en utilisant les registres FSR et INDR.
Avec tout ce qu'on vient de dire, vous devriez pouvoir comprendre la microarchitecture d'un PIC, qui est résumée dans ce schéma.
[[File:DocPIC16F84 all.png|centre|vignette|upright=2.5|Microarchitecture du PIC16F84.]]
===Le Fairchild F8 et la console de jeu Fairchild Channel F===
Un autre exemple est la Fairchild F8 de la défunte entreprise Fairchild Semiconductor. Il incorpore un processeur 8 bits, c'est à dire que le processeur fait des calculs sur des entiers de 8 bits maximum, une mémoire RAM de 64 octets, ainsi qu'une mémoire ROM de 1 kibioctet. Les 64 octets de RAM sont certes très peu, mais c'est suffisant pour certaines applications simples, comme les caisses automatiques de l'époque, ou des applications embarquées. Et de toute façon, il est possible d'ajouter de la mémoire RAM supplémentaire si les 64 octets de RAM intégrée ne suffisent pas. Le système était donc modulaire, adaptable selon les besoins, peu cher pour son implémentation minimale sans RAM en plus.
Vu qu'il s'agit d'un des tout premiers ordinateurs, il est sorti à une époque où la technologie était rudimentaire. À cette époque, le processeur était composé de pièces détachées qu'il fallait souder ensemble pour obtenir un processeur fonctionnel. Ce n'est que plus tard qu'est apparu le micro-processeur, qui regroupe un processeur complet dans un seul circuit intégré. Le résultat est que le processeur du Fairchild F8 est coupé en deux, l'unité de calcul et l'unité de contrôle sont placés dans des pièces détachées séparés.
Le microcontrôleur est composé de trois à quatre pièces détachées, certaines étant optionnelles. La première est le '''3850 CPU''', qui regroupe l'unité de calcul et la mémoire RAM intégrée. La seconde est le PSU (''3851 Program Storage Unit''), qui regroupe la mémoire ROM et l'unité de contrôle, ''program counter'' inclut. S'il y a besoin d'utiliser plus de RAM, il faut ajouter un circuit d’interface mémoire, qui est au choix le ''3852 Dynamic Memory Interface'' (DMI) ou le ''3853 Static Memory Interface'', le premier étant connecté à une mémoire de type DRAM, l'autre à une SRAM (nous verrons ce que sont les DRAM et les SRAM dans le prochain chapitre).
[[File:Fairchild F8.png|centre|vignette|upright=2|Fairchild F8]]
Le système minimal est composé d'un PSU et d'un 3850, sans les circuits d'interface mémoire. Le tout donne un système avec un processeur 8 bit, 64 octets de RAM et 1 kibioctet de ROM, les deux mémoires étant intégrées dans le "processeur". Le processeur gérait 4 entrées-sorties, chacune étant reliée avec un bus de 8 bit au processeur. Au passage, en 1977, Mostek a créé un microcontrôleur qui regroupe un PSU et un 3850 : le Mostek 3870. Le système minimal n'avait pas de bus d'adresse, vu que la RAM était intégrée au processeur. C'est les 3852 et 3853 qui ajoutaient un bus d'adresse. Ils ajoutent un bus d'adresse de 16 bits, ce qui permet d'adresser 64 kibioctets de RAM.
[[File:Fairchild-Channel-F.jpg|vignette|un Fairchild Channel F]]
Le Fairchild F8 a été utilisé dans la Fairchild Channel F, une des toute première console de seconde génération, à savoir des consoles qui utilisaient des cartouches de jeu. Avant les consoles de seconde génération, les consoles étaient non-programmables. Elles étaient conçues pour faire tourner un jeu précis, aucun autre, le jeu étant implémenté dans leurs circuits.
La Fairchild Channel F est composé du système minimal, auquel on a ajouté une carte son rudimentaire et 2 kibioctets de mémoire vidéo. La mémoire vidéo sert uniquement pour afficher des images à l'écran : on écrit l'image à afficher dedans, un circuit vidéo se charge de l'afficher à l'écran automatiquement. Le processeur ne fait qu'écrire dans cette RAM vidéo, il ne peut pas en lire le contenu. De la RAM supplémentaire peut cependant être ajoutée dans les cartouches de jeu.
===Le HP Nanoprocessor : un processeur sans ALU===
Un dernier exemple est celui du processeur HP Nanoprocessor, de l'entreprise HP. Il a été commercialisé en 1974, en même temps que les premiers micro-processeurs d'Intel. Tous les processeurs de l'époque étaient des processeurs 8 bits et le HP Nanoprocessor ne faisait pas exception. Ce n'était pas un processeur haute performance, il était destiné à des applications d'informatique industrielle ou embarquée. D'ailleurs, il utilisait des transistors de type metal-gate, peu performants, là où ses contemporains utilisait des transistors en silicium, plus performants.
Mais une caractéristique qui rend cela encore plus claire est qu'il n'y a pas d'ALU ! En effet, ce processeur est incapable de faire des additions, des soustractions ou autres opérations simples ! Il est cependant capable d'effectuer des incrémentations et décrémentations, des décalages, des opérations logiques comme des ET/OU/NON/XOR et bien d'autres. Il supporte en tout 48 instructions, avec un support limité des modes d'adressage indirects. Les instructions de branchement étaient des instructions SKIP, il n'y avait pas d'instructions de branchement généralistes.
Pour ce qui est des registres, il disposait de 16 registres de 8 bits et d'un accumulateur. Niveau mémoire, il était relié à une mémoire ROM, rien de plus. Il n'avait de RAM supplémentaire qu'on pouvait lui adjoindre, il devait se débrouiller avec seulement ses registres. Et cela ne posait pas de problèmes pour son usage. Seul le mode d'adressage indirect à registre est supporté, il n'y a pas de registres d'indices. Ce mode d'adressage permet de lire des données en mémoire ROM, la ROM pouvant contenir des tableaux de valeurs constantes.
: Il est possible de lui adjoindre de la RAM via les ports d'entrée-sortie, ainsi qu'une ALU, mais RAM et ALU sont traités comme des périphériques avec lesquels on communique, ils ne sont pas intégrés au processeur.
Niveau micro-architecture, il incorporait une unité de calcul logique et un circuit comparateur. Le comparateur était un circuit comparateur série des plus basiques, qui était utilisé pour les instructions de branchement et associées. L'unité de calcul logique gérait des incrémentations/décrémentation, des décalages, les opérations logiques et quelques autres. L'unité de calcul logique était bit-slicée, à savoir conçue en assemblant 8 ALU de 1 bit chacune, enchainées en série. Le tout était combiné à des circuits de ''carry skip''.
[[File:Unité de calcul du HP nanonprocessor.png|centre|vignette|upright=2|Unité de calcul du HP nanoprocessor]]
Son unité de décodage d'instruction était très simple, essentiellement basée sur des portes NOR, grâce à un encodage efficace des instructions machine. Le ''program counter'' fait 11 bits, ce qui permet d'adresser une ROM de 2 kibioctets. Le ''program counter'' était relié à un circuit incrémenteur qui gérait les isntructions SKIP (il pouvait incrémenter le ''program counter'' par pas de 1 ou de 2 en cas de SKIP). Le processeur contient aussi deux registres, qui servent en quelque sorte de pile d'adresse de retour. Un premier registre mémorise l'adresse de retour d'une fonction, l'autre mémorise le ''program counter'' lors d'une interruption, pour savoir où brancher à la fin de l'interruption.
[[File:HP nanoprocessor.png|centre|vignette|upright=2.5|HP nanoprocessor]]
Fait intéressant, le concepteur du processeur a gracieusement donné les masques utilisés pour graver le silicium du processeur au site [https://www.cpushack.com/ CPU Shack]. Les masques en question sont disponibles ici :
* [https://www.cpushack.com/2020/08/20/hp-nanoprocessor-mask-set/ HP NanoProcessor Mask Set]
* [https://www.cpushack.com/2020/08/09/the-forgotten-ones-hp-nanoprocessor/ The Forgotten Ones: HP Nanoprocessor]
Les masques ont été analysés par Ken Shirrif dans cet article de blog :
* [https://www.righto.com/2020/09/hp-nanoprocessor-part-ii-reverse.html HP Nanoprocessor part II: Reverse-engineering the circuits from the masks]
==Les processeurs 8/16 bits à architecture Von Neumann==
L'usage d'une architecture Harvard est une solution pour adresser plus de mémoire avec des CPU 8 bits. Mais plusieurs microprocesseurs commerciaux n'utilisaient pas cette solution. À la place, c'était des architectures Von Neumann, mais qui étaient capables de gérer des adresses de 16 bits. Les données faisaient 8 bits, les registres faisaient 8 bits, mais quelques techniques permettaient de gérer des adresses de 16 bits. Nous parlerons de '''processeurs 8/16 bits''' pour les désigner, et nous allons les étudier à part.
Un point important est que la gestion d'adresses de 16 bits permet d'adresser 64 kibioctets, qui peuvent être remplis avec de la RAM et de la ROM. On a donc le meilleur des mondes : 64 kibioctets de mémoire, mais avec des données de 8 bits et les économies de circuit qui vont avec. L'avantage est que le processeur peut maintenant gérer une vraie pile d'appel, pas seulement une pile d'adresse de retour. Il lui suffit pour cela d'intégrer un pointeur de pile codé sur 16 bits.
===Les modes d'adressage par page des CPU Motorola===
Les processeurs Motorola 8 bits étaient des processeurs 8 bits avec un bus d'adresse de 16 bits. C'était des processeurs à accumulateur incorporant deux registres d'indice, un registre d'état, un pointeur de pile, et un ''program counter''. Tous les registres sont reliés au bus d'adresse, sauf le registre d'état et l’accumulateur. Tous les registres font 8 bits, sauf le ''program counter''. La pile est câblée pour être dans un bloc de 256 octets compris entre l'adresse 1 0000 0000 et l'adresse 1 1111 1111, ce qui fait que son adressage se fait avec un seul octet.
[[File:6502-architecture.svg|centre|vignette|upright=1.5|Architecture simplifiée du 6502.</br> X et Y : registres d'indice ;</br> S : le pointeur de pile ;</br> A : accumulateur ;</br>P : registre d'état.</br>]]
Les processeurs Motorola 8 bits utilisaient une méthode simple pour adresser 64 kibioctets de RAM, avec des registres de 8 bits. Pour cela, ils utilisaient une variante de l'adressage base + décalage. Elle améliore l'adressage absolu, qui intègre l'adresse à lire/écrire dans l'instruction elle-même. L'adresse en question est de 8 bits et n'encode que les 8 bits de poids faible de l'adresse, les 8 bits de poids fort sont dans un '''registre de page''' adressé implicitement. L'adresse finale est obtenue en concaténant ce registre avec l'adresse mémoire intégrée dans l’instruction. Le résultat est que la mémoire était découpée en blocs de 256 consécutifs, chacun pouvant servir de fenêtre de 256 octets. Une page est réservée pour la pile, la seconde, comme dit plus haut.
Formellement, ce mode d'adressage a des ressemblances avec la commutation de banques, une technique qu'on verra dans les chapitres sur l'espace d'adressage et la mémoire virtuelle. Mais ce n'en est pas du tout : le registre de page est utilisé uniquement pour les accès mémoire avec le mode d'adressage base + décalage, mais pas pour les autres accès mémoire, qui gèrent des adresses complètes. Notons que l'usage d'un registre de page dédié fait que celui-ci est adressé implicitement.
Il faut noter que la technique a été utilisée sur des processeurs 16 bits, pour contourner la petite taille des instructions. Un exemple est celui du HP 2100, un processeur 16 bits. Il avait un registre de page de 5 bits et encodait 10 bits d'adresse dans ses instructions. Ses instructions d'accès mémoire disposaient d'un bit qui choisit quel mode d'adressage utiliser. S'il était à 0, l'adressage absolu était utilisé, le registre de page n'était pas utilisé. Mais s'il était à 1, le registre de page était utilisé pour calculer l'adresse.
Une évolution de l'adressage précédent est le '''mode page direct'''. Avec lui, le registre de page est étendu et contient une adresse mémoire complète. L'adresse finale n'est pas obtenue par concaténation, mais en additionnant le registre de page avec l'adresse fournie par adressage absolu + décalage. Un exemple est celui des premiers processeurs Motorola, qui géraient des adresses courtes de 8 bits. L'adresse courte de 8 bits correspondait non pas aux 256 premiers octets de la mémoire, mais à une fenêtre de 256 octets déplaçable en mémoire. La position de la fenêtre de 256 octets était spécifiée par le registre de page de 16 bits, qui précisait l'adresse du début de la fenêtre, celle de sa première donnée.
Il s'agit donc formellement d'adressage base + décalage, à un détail près : il n'y a qu'un seul registre de base. Le fait que ce registre de base soit unique fait qu'il est adressé implicitement, on n'a pas à encoder le numéro/noms de registre dans l'instruction. Le registre de base est utilisé uniquement pour l'adressage absolu, pas pour les autres accès mémoire. S'il y a des ressemblances avec la segmentation, une technique de mémoire virtuelle qu'on abordera dans quelques chapitres, ce n'en est pas vu que le registre de base est utilisé seulement pour un mode d'adressage bien précis.
===Le ''pseudo-aliasing'' des registres des processeurs Intel x86===
Voyons maintenant le cas des anciens processeurs 8 bits d'Intel à savoir l'Intel 4004, 4040, 8008 et 8080. Le Z80, un processeur inspiré des CPU Intel 8 bits, est aussi concerné. Avant de poursuivre, parlons des registres de ces processeurs. Les premiers CPU Intel incorporaient 7 registres de 8 bits nommés A, B, C, D, E, F, H, L, SP. Ils correspondent respectivement à : l'accumulateur A ; six registres nommés B, C, D, E, H et L ; le registre d'état F ; le pointeur de pile SP. Le Z80 ajoute deux registres d'indice X et Y. De plus, le Z80 dispose de registres d'interruption, qui sont en quelque sorte des copies des registres A, B, C, D, E, F, H, L. Le tout est illustré dans le tableau ci-dessous.
{|class="wikitable" style="text-align:center;"
|-
!
! Registres des CPU Intel
! Registres supplémentaires du Z80
|-
! Accumulateur
| A
| A'
|-
! Registre d'état
| F
| F'
|-
! Registres généraux
| B, C, D, E, H, L
| B', C', D', E', H', L'
|-
! Pointeur de pile
| colspan="2" | SP (sauf pour le 8008)
|-
! Registres d'indice
|
| X et Y
|}
Le 8008 incorpore une pile d'appel de 7 adresses, dans le processeur lui-même. Il en est de la même avec le 4004 et le 4040, comme on le verra dans la section sur les processeurs 4 bits. Mais le 8080 et le 8085 ont remplacé le tout par un simple pointeur de pile, afin d'avoir une véritable pile d'appel. Autant c'est impossible d'avoir une pile d'appel avec seulement 256 octets de mémoire, autant on peut se le permettre avec 65 536 adresses.
Pour gérer des adresses de 16 bits, ils auraient pu utiliser des registres d'adresse séparés, mais on préféré un système de '''pseudo-''aliasing'' de registres'''. Formellement, c'est un système qui concatène deux registres 8 bits pour obtenir une adresse de 16 bits. L’appariement a lieu lors de certaines opérations bien précises, qui n'ont de sens que pour les adresses : la lecture/écriture en mémoire, et l'incrémentation.
Il y avait cependant des contraintes quant aux paires de registres possibles, toutes les paires de registres n'étaient pas autorisées. Les CPU concernés sont donc des processeurs hybrides accumulateur-registre généraux. L'accumulateur ne peut pas être appairé, seuls les registres généraux le peuvent. Le Z80 autorise plus de paires que les CPU Intel. Voici les paires de registres qui pouvaient servir d'adresse 16 bits :
* Les CPU 8008 d'Intel autorisait une seule paire formée des registres H et L.
* Les autres processeurs, à savoir le 8080, le 8085 et le Z80, autorisaient : les paires BC, DE et HL.
Le 8008 ne gérait que des opérations sur 8 bits. Mais le 8080 et le 8085 ont ajouté des instructions 16 bits qui agissaient sur des paires de registre, que le Z80 a repris. Une paire de registres est considérée comme un registre unique de 16 bits pour certaines opérations arithmétiques, dont l'incrémentation. Voici la liste des instructions concernées :
* INC et DEC pour l'incrémentation et la décrémentation ;
* DAD : additionne le registre HL avec une autre paire (Hl inclus) ;
* LXI : copie une constante immédiate dans une paire de registres ;
* LHLD : lit 16 depuis la mémoire et l'enregistre dans une paire de registres ;
* SHLD : copie 16 bits depuis une paire de registres et l'enregistre en mémoire ;
* PUSH et POP : empile ou dépilent une paire de registre sur la pile ;
* XTHL : échange la paire HL avec les 16 bits au sommet de la pile d'appel ;
* XCHG : échange le contenu de la paire HL et DE.
Pour résumer, le processeur avait des instructions LOAD, STORE, PUSH et POP adaptées pour gérer des paires de registre. De plus, l'instruction XCHG permettait d’échanger le contenu des paires DE et HL. L'instruction a été étendue sur les processeurs 16 bits pour échanger tous les registres. Mais l'implémentation était alors différente. L'incrémentation sur une paire de 16 bit était très utile, car les adresses sont souvent incrémentées quand on parcours un tableau. Ces instructions nous donnent quelques indices sur ce qu'il y a dans le processeur.
Le système de pseudo-aliasing a un impact sur le banc de registre. Le banc de registre regroupe les registres généraux et le pointeur de pile, mais ne contient pas l'accumulateur. Les contraintes sur les paires de registres possibles ne s'expliquent que d'une seule manière : le banc de registre contient des registres de 16 bits, une paire de registres 8 bits est mémorisée dans un registre unique. Il faut donc faire une différence entre les registres architecturaux de 8 bits, et les registres réels de 16 bits.
Le banc de registre a un port de 8 bits pour les données, qui est fabriqué à partir d'un port 16 bits auquel on a rajouté un multiplexeur pour choisir soit l'octet de poids faible, soit l'octet de poids fort. Le bus de données fait 8 bits, ce qui fait que les instructions LOAD, STORE, PUSH et POP pour paires 16 bits sont réalisées en deux fois : on lit/écrit l'octet de poids faible, puis celui de poids fort. Par contre, le bus d'adresse fait bien 16 bits. Cela suggère que le banc de registre dispose d'un port de 16 bits dédié aux adresses, en plus du port de données 8 bits.
[[File:Architecture d'un CPU 8-16 bits avec un banc de registre double port.png|centre|vignette|upright=2|Architecture d'un CPU 8-16 bits avec un banc de registre double port]]
L'incrémentation d'une paire 16 bits ne coute rien à implémenter, ou presque. En effet, le processeur incorpore un incrémenteur 16 bits pour le ''program counter'', qui est relié au bus d'adresse. L'idée est de rentabiliser cet incrémenteur, en lui permettant d'incrémenter des données/adresses de 16 bits obtenues via pseudo-aliasing. De même, il peut être utilisé pour incrémenter le pointeur de pile, voire un compteur de rafraichissement mémoire (pour rappel, le rafraîchissement mémoire demande de balayer la mémoire d'adresse en adresse et été fait par le CPU à l'époque). Pour cela, il suffit de connecter le ''program counter'', le banc de registre, et l'incrémenteur, via un bus dédié.
[[File:Calcul d'adresse par ALU dédiée avec PC séparé.png|centre|vignette|upright=2|Calcul d'adresse par ALU dédiée avec PC séparé]]
Notez qu'on peut encore simplifier le tout en placant le ''program counter'' dans le banc de registre, ce qui ne gênera pas le travail de l'incrémenteur mais simplifiera le câblage au bus d'adresse. Ce n'était pas systématique, certains processeurs mettaient le ''program counter'' dans le banc de registre, d'autres non.
: Inclure le ''program counter'' dans le banc de registre permet parfois de remplir un vide. Par exemple, sur un processeur avec 12 registres, le banc de registre devrait faire idéalement 16 registres, inclure le ''program counter'' dedans fait monter le tout à 13.
[[File:Architecture d'un CPU 8-16 bits.png|centre|vignette|upright=2|Architecture d'un CPU 8-16 bits]]
Les processeurs Intel 8 bits, à savoir le 8008, le 8080 et le 8085 ; mettaient le ''program counter'' dans le banc de registre. Vous avez donc toutes les armes pour comprendre leur micro-architecture. Par exemple, voici la micro-architecture du processeur 8080. Remarquez le banc de registre, qui contient tous les registres sauf l'accumulateur et le registre. Il a deux ports : un pour les adresses et un pour les données. Notez le dé-multiplexeur sur le port de donnée. Pour le reste, il s'agit d'une architecture à accumulateur hybride des plus classiques.
[[File:Intel 8080 arch.svg|centre|vignette|upright=3|Microarchitecture de l'Intel 8080.]]
Le Z80 est un processeur inspiré du design des processeurs Intel 8 bits, mais avec pas mal d'améliorations. Un point particulier de ce processeur est son banc de registre. Il contient tous les registres du processeur, y compris l'accumulateur et le registre d'état ! Les seuls registres en-dehors du banc de registre sont le ''program counter'' et un compteur de rafraichissement mémoire IR.
Un autre point particulier est que les registres dans le banc de registres avaient une copie séparée accessible uniquement pour les interruptions, via fenêtrage de registres. Et l'accumulateur et le registre d'état étant dans le banc de registre, il y avait deux accumulateurs et deux registres d'état. Les registres A, B, C, D, E et F étaient dupliqués, par le pointeur de pile ni les registres d'indice. Les copies des registres étaient nommées A', B', C', D', E' et F'.
Le Z80 supportait des instructions d'échange de registre en plus des CPU Intel 8 bits. L'instruction EX peut échanger soit le contenu des paires D,E et H,F, soit la paire A,F avec la paire A',F'. L'instruction EXX échange les paires BC, DE, HL avec les paires BC', DE', HL'. En faisant cela, le programmeur pouvait utiliser deux fois plus de registres généraux s'il n'utilisait pas les interruptions. L'échange de paires se fait sans copies de registres, mais simplement en modifiant l'adresse envoyée sur le banc de registre. Pour cela, plusieurs bascules mémorisent des bits qui indiquent si les paires ont été échangées ou non. Il y a une bascule pour les paires DE , HL ; une autre pour les paires A,F et paire A',F', une dernière pour l'instruction EXX. En combinant ces bascules avec les noms de registres envoyés par le séquenceur, on peut échanger les paires de registres.
==Le cas particulier des processeurs 4 bits : le 4004 d'Intel==
L'Intel 4004 était le tout premier micro-processeur. Il s'agissait d'un microprocesseur de 4 bits, basé sur une architecture à accumulateur. Il disposait d'un accumulateur et de 16 registres d'indice, tous de 4 bits. Il faisait des calculs sur des données de 4 bits, appelées des nibbles. Cependant, sur ses 46 instructions machines supportées, 41 agissaient sur des opérandes de 8 bits, les 5 restantes sur des opérandes de 16 bits. Simplement, les calculs se faisaient en deux fois, en échangeant des données entre mémoire RAM et accumulateur.
Le 4004 est un circuit intégré avec peu de broches. Il dispose notamment d'un bus de données/adresse, qui est multiplexé, c’est-à-dire qu'il sert alternativement de bus de données et de bus d'adresse selon les besoins. Le bus de commande mémoire fait 5 bits, dont 4 pour les chips de RAM, un pour la ROM. Les adresses sont codées sur 12 bits, les données sur 4 et les instructions sur 8 bits. L'envoi d'une adresse sur le bus se fait en plusieurs fois, de même que la lecture d'une instruction. Il s'agit là d'une adaptation pour outrepasser les limitations d'un processeur 4 bit.
[[File:Intel 4004 processor pinout.png|centre|vignette|upright=2|Broches de l'Intel 4004. Nous verrons à quoi elles servent plus bas.]]
===L'espace d'adressage de l'Intel 4004===
Les adresses du processeur sont sur 12 bits, ce qui fait 4096 adresses différentes. Elles regroupent à la fois la ROM et la mémoire RAM, vu que l'architecture est une sorte de mélange bizarre entre une architecture Von Neumann et Harvard. Le processeur gère bien deux espaces d'adressage séparés, mais la RAM et la ROM sont reliés au même bus. La sortie CM-ROM du processeur indique si l'adresse envoyée correspond à la RAM ou la ROM. Un circuit de décodage d'adresse active ou désactive la RAM selon la valeur de ce bit, l'inverse pour la ROM, en agissant sur leurs bits Chip Select. Seule la RAM ou la ROM répondent alors à l'adresse.
Pour ce qui est de la RAM, le circuit de décodage d'adresse pouvait gérer au maximum 1024 adresses différentes, chacune contenant un nibble. Pour cela, le CPU 4004 était relié à une ou plusieurs RAM externes, des Intel 4002. Chaque Intel 4002 contenait 64 nibbles de données, plus 16 nibbles de statut qu'on ne détaillera pas ici. Les nibbles de statut étaient accessibles en utilisant des instructions d'entrée-sortie, donc pas avec des lectures/écritures mémoire. Les 64 nibbles de données sont découpés en 4 groupes de 16 nibbles. Le CPU pouvait être relié à maximum 16 Intel 4002, ce qui fait 1024 nibbles de données et 256 nibbles de statut. L'ensemble permet de remplir l'espace d'adressage de 1024 adresses.
===Le registre de page et le pseudo-aliasing des registres===
Sélectionner une adresse mémoire utilisait un mélange entre pseudo-aliasing et registre de page. Pour les données, les 1024 adresses étaient découpées en 4 pages de 256 adresses. Pour la ROM, les 4096 adresses étaient découpées en 16 pages de 256 adresses. Localiser une donnée dans une page ne requiert que 8 bits, 2/4 bits supplémentaires permettent de sélectionner la page voulue. Le registre de page était dans le processeur lui-même, et était relié aux sorties du processeur nommées CM-RAM 0, 1, 2 et 3. Les 4 sorties encodaient un nombre qui permet de sélectionner le numéro de page voulu.
Le registre de page fait 5 bits : un pour distinguer RAM et ROM, 4 bits pour sélectionner la page voulue. L'avantage est que la carte mère gère au maximum 16 chips de RAM, ce qui colle parfaitement avec les 4 utilisés pour sélectionner une page. Un chip de RAM correspond à une page, et chacun est activé ou désactivé suivant la page sélectionnée. Pour cela, il suffit d'ajouter un décodeur sur la carte mère, qui prend les 4 bits du registre de page et fournit les signaux Chip Select aux différents chips de RAM.
Reste alors à utiliser les 8 bits d'adresse à l'intérieur d'un chip de RAM. Le 4004 permettait de concaténer deux registres d'indice de 4 bits pour former une adresse de 8 bits. Les instructions d'accès mémoire pouvaient ainsi préciser une paire de registre d'indice pour préciser quelle adresse lire/écrire. Idem pour les branchements indirects : le processeur supportait une instruction de branchement indirect qui précisait l'adresse dans une paire de registres d'indice. Les registres d'indice sont donc assez mal nommés sur cette architecture, vu qu'ils peuvent servir soit de registre d'indice, soit de demi-registre d'adresse. Il s'agit là du système de pseudo-aliasing des registres, mais appliqué aux registres d'indice.
L'Intel 4004 gérait deux instructions pour gérer les adresses mémoires. La première, l'instruction DCL (''Designate Command Line'') configure le registre de page. Elle prend en entrée un numéro de page et le copie dans le registre de page. L'opérande peut provenir d'un registre d'indice ou de l'accumulateur. La seconde, l'instruction SRC (''Send Register Control'') concatène deux registres d'indice pour obtenir une adresse de 8 bits. Un accès mémoire se fait donc en maximum trois instructions : une qui configure le registre de page si ce n'est pas déjà fait, une instruction SRC pour envoyer l'adresse, et une troisième instruction qui dit s'il faut faire une lecture ou une écriture.
===La microarchitecture de l'Intel 4004===
Il incorporait une pile d'adresse de retour intégrée au processeur. La pile d'adresse acceptait exactement 3 adresses maximum. Elle était regroupée avec le ''program counter'' dans un banc de registre, de 4 registres. Le ''program counter'' et le pointeur de pile faisaient chacun 12 bits, soit trois nibble. Ils étaient incrémentés par un incrémenteur dédié.
SI on omet le registre de page et la pile d'adresse, le 4004 est une architecture à accumulateur des plus classiques, avec un bus interne unique, un banc de registre pour les registres d'indices, un accumulateur relié à une unité de calcul. Les registres d'indice étaient dans un banc de registre séparés, car ils faisaient 4 bits chacun, contrairement au pointeur de pile et le ''program counter''. Un détail important est que les bancs de registres du 4004 étaient implémentés avec de la DRAM, et non des registres usuels fabriqués avec des bascules 1 bit.
[[File:Microarchitecture de l'Intel 4004.png|centre|vignette|upright=2.5|Microarchitecture de l'Intel 4004]]
<noinclude>
{{NavChapitre | book=Fonctionnement d'un ordinateur
| prev=Les architectures à pile et mémoire-mémoire
| prevText=Les architectures à pile et mémoire-mémoire
| next=Les processeurs de traitement du signal
| nextText=Les processeurs de traitement du signal
}}
</noinclude>
ml86tlufwdwlscm3jtniuwpca4ujrnu
765714
765713
2026-05-01T19:08:57Z
Mewtow
31375
/* Les processeurs 8/16 bits à architecture Harvard */
765714
wikitext
text/x-wiki
Nous avons déjà abordé la notion de processeur 8, 16, 32, 64 bits. Elle désigne la taille des registres généraux, ou de l'accumulateur. De nos jours, les processeurs 32 et 64 bits sont la norme, mais les premiers micro-processeurs étaient des processeurs 4 et 8, avant de passer rapidement au 16 bits. La raison est que leur budget en transistor limité faisait qu'on ne pouvait pas utiliser une ALU trop grande : une ALU 8 bit prend deux fois moins de place et de transistors qu'une ALU 16 bits. Cependant, les processeurs 8 bits avaient de sérieuses limitations qui étaient compensées par diverses solutions. Dans ce chapitre, nous allons faire une revue rapide des processeurs 8 bits et de leurs fonctionnalités.
La principale limitation des CPU 8 bits était l'adressage : des registres de 8 bits limitaient l'espace d'adressage à seulement 256 adresses, soit à peine 256 octets ! Intuitivement, on se dit que 256 octets est purement impraticable, on ne peut rien faire d'intéressant avec seulement 256 de RAM + ROM. Et c'est partiellement vrai. L'adage veut que 16 bits est la taille minimale intéressante, la limite à partir de laquelle on a assez de mémoire RAM/ROM pour coder des applications intéressantes. Mais 256 octets de RAM est largement suffisant sur de nombreux systèmes embarqués simples s'en accommodent : des caisses enregistreuses, des systèmes de régulation de feu de circulation, etc.
Pour les applications demandant plus de mémoire RAM, les CPU de l'époque contournaient la limitation de 256 octets de RAM avec de nombreux stratagèmes. Dans ce qui va suivre, nous allons séparer les CPU 8 bits selon qu'ils utilisent une architecture Harvard ou une architecture Von Neumann. La raison est qu'une architecture Harvard permet en soi de contourner partiellement ce problème d'adressage. Les choses sont plus compliquées avec une architecture Von Neumann.
==Les processeurs 8/16 bits à architecture Harvard ==
La première solution est d'utiliser une architecture Harvard. Le processeur 8 bit a alors deux espaces d'adressage : un pour la RAM, un autre pour la ROM. Et les deux utilisent des adresses de taille différente. La ROM est reliée à un bus d'adresse de 16 bits, alors que la RAM est elle connectée à un bus d'adresse de 8 bits. La RAM est donc limitée à 256 octets, alors que la ROM peut monter jusqu'à 64 kibioctets. Mine de rien, faire ainsi est largement suffisant.
Pour encore améliorer la situation, il est possible d'utiliser une architecture Harvard modifiée, qui permet de lire des données depuis la mémoire ROM. Cela réduit encore plus les besoins en mémoire RAM. Les constantes manipulées par le programme sont mémorisées en ROM, lues depuis la ROM, au lieu d'être chargées en RAM. Avec ce genre de stratagèmes, 256 octets de RAM est largement suffisant sur de nombreux systèmes, à condition qu'on ait assez de ROM pour coder un programme digne de ce nom. Par exemple, de nombreux systèmes embarqués simples s'en accommodent : des caisses enregistreuses, des systèmes de régulation de feu de circulation, etc.
Les processeurs 8 bits intègrent parfois les 256 octets de RAM directement dans le processeur, dans le banc de registres ! Beaucoup en implémentaient moins, avec par exemple seulement 64 octets de RAM, ou 32 octets, ou 128 octets. L'avantage est que cela élimine le bus pour les données, ce qui économise beaucoup de broches sur le circuit intégré du CPU. Et pour les applications demandant plus de RAM, on pouvait ajouter un circuit séparé qui permettait d'adresser une RAM plus grande. Et c'est ce qui explique que cette solution est beaucoup utilisée sur les microcontrôleurs peu puissants. Les exemples qui vont suivre devraient vous convaincre.
: Les processeurs de ce type implémentent des optimisations pour adresser plus de 256 octets de RAM. La plus connue est la commutation de banques. Mais nous n'avons pas encore abordé celle-ci, et il faudra attendre le chapitre sur l'espace d'adressage pour cela.
===Les microcontrôleurs PIC===
Les '''microcontrôleurs PIC''' regroupent des microcontrôleurs allant de microcontrôleurs 8 bits aux performances très faible, à des microcontrôleurs 32 bits bien plus puissants. Les microcontrôleurs PIC sont très utilisés dans l'embarqué ou d'informatique industrielle. Ils sont vendu à des volumes assez impressionnants, plusieurs millions par an. Et si vous avez ou êtes en train de faire des études d'électronique, je parie que vous les avez déjà vu en classe, ou que ce ne saurait tarder. Dans ce qui suit, nous allons nous concentrer sur les microcontrôleurs PIC 8 bits, à savoir les PIC 16, 16 et 18. Les PIC 24, qui sont des microcontrôleurs 16 bits, ne seront pas abordés.
Les microcontrôleurs PIC 8 bits sont une architecture Harvard, comme dit plus haut. Il y a aussi des registres pour les entrées et sorties. Les registres d'entrée-sortie permettent de lire ou écrire sur un port d'entrée-sortie ou de lire un ''timer''. En clair, les PIC ont un espace d'adressage séparé pour les entrées-sorties.
La mémoire ROM des PIC va de 1024 instructions à 4096 instructions. En comparaison, la mémoire RAM des microcontrôleurs PIC ne peut pas dépasser 256 adresses, et elle est encore plus petite en pratique sur certains modèles. Pour donner un exemple, le PIC16F84 a une RAM composée de 68 "registres" de 8 bits. Le terme "registres" devrait vous faire tiquer, mais c'est bien le terme utilisé dans la documentation des PIC. Et il faut admettre que la différence entre banc de registre et SRAM intégrée est floue, mais nous expliquerons pourquoi dans quelques paragraphes.
: Les PIC 18 peuvent adresser plus de 256 octets de RAM en utilisant la commutation de banques, une technique qui sera abordée dans plusieurs chapitres.
[[File:DocPIC16F84 3.png|centre|vignette|upright=3|Espaces d'adressage du PIC16F84.]]
Un détail est que la SRAM n'a qu'un seul port qui sert à la fois pour les lectures et écritures. Pour compenser, les PIC sont des architectures à accumulateur, où une opérande est lue depuis la SRAM, l'autre depuis l'accumulateur. Leur implémentation de l'accumulateur ajoute une petite subtilité : le résultat d'une opération arithmétique peut être enregistré ailleurs que dans l'accumulateur. Le résultat peut aussi remplacer la seconde opérande, celle lue en mémoire RAM. Dit autrement, le résultat est enregistré dans l'adresse mémoire source. Les instructions de calcul ont le choix : un bit dans leur encodage précise où enregistrer le résultat.
{|
|-
|[[File:DocPIC16F84 4.png|centre|vignette|upright=2|Microarchitecture simplifiée d'un microcontroleur PIC (ici, un 16F84).]]
|[[File:DocPIC16F84 5.png|centre|vignette|upright=2|Microarchitecture simplifiée d'un microcontroleur PIC (ici, un 16F84), avec les branchements directs.]]
|}
Outre l'accumulateur, les PIC disposent de registres de contrôle, d'un ''program counter'', d'un registre d'état, et d'un pointeur de pile. Un détail très important est que les registres sont mappés en mémoire, à quelques exceptions près ! En clair, on peut y accéder en lisant/écrivant à une adresse mémoire bien précise. Les seules registres qui ne sont pas mappés en mémoire sont l'accumulateur, les registres d'entrée-sortie, et la pile d'adresses de retour intégrée au processeur (voir plus bas). Par exemple, sur les modèles 16F, l'espace d'adressage fait 128 octets, dont 32 sont réservés aux registres du processeur, ce qui fait que seules 96 octets sont adressables comme de la RAM. Mais les 128 octets sont un seul et unique SRAM dans le processeur. Ce qui explique qu'il est difficile de séparer banc de registre et RAM principale sur ce processeur : les deux sont fusionnées !
: Les modèles PIC 17 ont rendu l'accumulateur mappé en mémoire RAM !
[[File:DocPIC16F84.png|centre|vignette|upright=2|DocPIC16F84]]
La petite taille de la ROM d'un PIC n'est pas une surprise. Les architectures 8 bits sont conçues pour ne pas utiliser beaucoup de transistors et être très simples. Aussi, utiliser une petite ROM est nécessaire. Mais il faut aussi adapter le jeu d'instruction, pour qu'il ait une bonne densité de code. Par exemple, il faut faire en sorte d'avoir des instructions assez courtes. Si les instructions font 16 bits au lieu de 32, on divise par deux le nombre de transistors nécessaire pour la mémoire ROM. La conséquence est que le jeu d’instruction des PIC est adapté à cette contrainte.
Les microcontrôleurs PIC utilisent un jeu d'instruction propriétaire, dont les instructions sont très petites. Les premières versions du jeu d'instruction utilisaient des instructions codées sur 12 bits, dont 5 pour l'adresse mémoire de la seconde opérande. Pour les branchements, 3 bits étaient utilisés pour l'opcode, 9 pour l'adresse de destination. Par la suite, les instructions ont été étendues à 13 bits sur les PIC1670, puis à 14, 15 et 16 bits. Les adresses ont alors été élargies, ce qui permet d'adresser en peu plus de mémoire RAM.
Il est intéressant de regarder comment les PIC font pour obtenir des instructions aussi courtes. Premièrement, le fait d'utiliser une architecture à accumulateur, couplé à une RAM très petite aident grandement. Les architectures à accumulateur ont besoin de préciser un opcode et une adresse mémoire pour chaque instruction, pas besoin de préciser de noms de registres ni le mode d'adressage. La taille des adresses mémoire est censé être un problème pour la densité de code, mais les adresses d'un processeur 8 bits font 8 bits. On peut alors avoir un jeu d'instruction étoffé, en utilisant des instructions 16 bits, qui concatènent un opcode et une adresse mémoire, d'un octet chacun.
Mais d'autres optimisations permettent d'avoir une bonne densité de code. Les PIC ont des branchements pour les appels et retour de fonction. Les PIC incorporent une pile d'appel de retour, qui fait 2 à 8 adresses suivant les modèles. Elle permet d'économiser quelques registres, car la pile d'appel n'est pas mappé dans l'espace d'adressage, elle n'est pas adressable. On économise ainsi 2 à 8 registres, sur 32-256 registres. De plus, cela simplifie l'encodage des instructions d'appel/retour de fonction, qui n'ont pas à préciser où enregistre l'adresse de retour.
Les PIC n'ont pas d'instructions de branchement conditionnels, ils font avec une SKIP instruction et des branchements inconditionnels. Du moins, c'est le principe, car si vous regardez la liste des instructions ci-dessous, vous verrez qu'il n'y a pas d'instruction SKIP. A la place, les instructions SKIP sont fusionnées avec d'autres instructions. Elles sont notamment fusionnées avec les instructions d'incrémentation et de décrémentation. Les PIC supportent une incrémentation normale, une décrémentation normale, une décrémentation fusionnée avec une instruction SKIP, et une incrémentation fusionnée avec une instruction SKIP. Les deux dernières incrémentent/décrémentent l'accumulateur et SKIP l'instruction suivante si le résultat est zéro. Elles permettent de fortement simplifier l'implémentation des boucles qui s'exécutent tant que leur compteur atteint zéro.
Les PIC disposent aussi d'instructions de manipulation de bit, pour tester/masquer un bit dans une opérande, 4 en tout. Il y a en a 4 en tout : mettre à 0, mettre à 1, tester si bit = 1, tester si bit = 0. Les instructions qui testent un bit prennent leur opérande dans l'accumulateur. Elles font le test du bit et décident s'il faut skipper l'instruction suivante ou non. Il y a aussi deux instructions de rotation à gauche et droite, qui tiennent compte de la retenue mémorisée dans le registre d'état. Par contre, il n'y a pas d'instructions de décalages, qui peuvent être émulées avec une rotation suivie d'un ET bit à bit. Mentionnons aussi une instruction pour inverser deux ''nibbles'' dans un octet.
Les modèles haute performance ajoutent des instructions d'addition avec retenue entrante, idem pour la soustraction. De telles instructions ssont très utiles pour faire des additions/soustractions sur des opérandes de 16 bits. Le processeur a beau être un CPU 8 bits, il peut être utilisé pour faire des calculs 16 bits, la performance est alors amoindrie, mais ce n'est pas un problème pour les applications d'un tel microcontroleur.
Les modèles intiaux, comme les PIC 10 et 12, ne supportaient pas les interruptions, mais c'est chose réglé sur les modèles plus récents. Ils ont même des registres séparés pour les interruptions et les programmes normaux. De plus, ils intégrent nativement un ''watchdog timer''.
{|class="wikitable" style="text-align:center"
|+ Jeu d'instruction des dodèles PCI 16
|-
! colspan="5" | Instructions diverses
|-
| colspan="3" | 00 0000 0000 0000 || NOP || Ne fait rien
|-
| colspan="3" | 00 0000 0000 1000 || RETURN || Instruction de retour pour une fonction
|-
| colspan="3" | 00 0000 0000 1001 || NOP || Instruction de retour pour une interruption
|-
| colspan="3" | 00 0000 0110 0011 || SLEEP || Mise en veille
|-
| colspan="3" | 00 0000 0110 0100 || CLRWDT || RESET le ''watchdog timer'', intégré dans le PIC
|-
! colspan="5" | Instructions de manipulation de bit
|-
| 0100 || Position du bit dans l'opérande || Adresse mémoire || BCF || Met le bit à 1
|-
| 0101 || Position du bit dans l'opérande || Adresse mémoire || BSF || Met le bit à 0
|-
| 0110 || Position du bit dans l'opérande || Adresse mémoire || BTFSC || Teste si le bit adressé est à 1
|-
| 0111 || Position du bit dans l'opérande || Adresse mémoire || BTFSS || Teste si le bit adressé est à 0
|-
! colspan="5" | Branchements
|-
| colspan="2" | 100 || Adresse mémoire || CALL || Appel de fonction
|-
| colspan="2" | 100 || Adresse mémoire || GOTO || Branchement inconditionnel
|-
! colspan="5" | Instructions logiques/arithmétiques avec opérande lue en mémoire RAM
|-
| colspan="5" | ''Le bit '''d''' dans l'opcode indique la destination : accumulateur ou adresse mémoire''.
|-
| colspan="2" | 0000001 || Adresse mémoire || MOVWF || Store (accumulateur vers destination)
|-
| colspan="2" | 000001d || Adresse mémoire || MOVWF || Met à zéro la destination (adresse ou registre)
|-
| colspan="2" | 000001d || Adresse mémoire || SUBWF || Soustraction
|-
| colspan="2" | 000010d|| Adresse mémoire || DECF || Décrémentation
|-
| colspan="2" | 000100d|| Adresse mémoire || IORWF || OU bit à bit
|-
| colspan="2" | 000101d|| Adresse mémoire || ANDWF || ET bit à bit
|-
| colspan="2" | 000110d || Adresse mémoire || XORWF || XOR bit à bit
|-
| colspan="2" | 000111d || Adresse mémoire || ADDWF VWF || Addition
|-
| colspan="2" | 001000d || Adresse mémoire || MOVF || LOAD
|-
| colspan="2" | 001001d || Adresse mémoire || COMF || NOT bit à bit
|-
| colspan="2" | 001010d || Adresse mémoire || INCF || Incrémentation
|-
| colspan="2" | 001011d || Adresse mémoire || DECFSZ || Décrémentation, puis instruction SKIP si résultat = 0
|-
| colspan="2" | 001100d || Adresse mémoire || RRF || Rotation à droite avec retenue entrante
|-
| colspan="2" | 001101d || Adresse mémoire || RLF || Rotation à gauche avec retenue entrante
|-
| colspan="2" | 001110d || Adresse mémoire || SWAPF || Echange deux ''niblle'' dans un octet
|-
| colspan="2" | 001111d || Adresse mémoire || INCFSZ || Incrémentation, puis instruction SKIP si résultat = 0
|-
! colspan="5" | Instructions logiques/arithmétiques avec constante immédiate
|-
| colspan="2" | 1100xx || Constante immédiate (8bits) || MOVLW || Copie constante dans accumulateur
|-
| colspan="2" | 1101xx || Constante immédiate (8bits) || RETLW || MOV fusionné avec un retour de fonction
|-
| colspan="2" | 111000 || Constante immédiate (8bits) || IORLW || OU
|-
| colspan="2" | 111001 || Constante immédiate (8bits) || ANDLW || ET
|-
| colspan="2" | 111010 || Constante immédiate (8bits) || XORLW || XOR
|-
| colspan="2" | 11110x || Constante immédiate (8bits) || SUBLW || Soustraction
|-
| colspan="2" | 11111x || Constante immédiate (8bits) || ADDLW || Addition
|}
Les PIC gèrent l'adressage absolu et immédiat, mais pas plus. L'adressage absolu, celui où l'adresse est intégrée dans l'instruction, est très simple à implémenter. Les adresses prennent moins d'un octet, vu que la taille de la RAM est très petite, les adresses sont très courtes, les intégrer dans des instructions elles-mêmes courtes n'est pas un problème. L'adresse est encodée sur 5 à 7 bits, selon le modèle, ce qui permet d'adresser entre 32 et 128 octets.
Les PIC ne supportent pas l'adressage indirect, mais peuvent l'émuler grâce à un '''registre d'adresse''' dédié. Il s'agit du registre FSR, qui mémorise l'adresse à lire/écrire. Il est possible de copier un pointeur dedans, qui provient soit de l'accumulateur, soit de la mémoire SRAM. Dans les deux cas, la donnée adressée est lue ou écrite dans un registre INDR, est un registre d’interfaçage rendu adressable. Le registre FSR est directement connecté sur le bus d'adresse.
Les modèles de base se débrouillent avec un registre FSR et un registre INDR, mais les modèles plus performants ont deux ou trois copies de chaque registre. Les modèles PIC18 ajoutent aussi des instructions LOAD/STORE qui émulent les modes d'adressage à post- ou pré-incrément/décrément, et le mode d'adressage "Base + Indice + Décalage", encore une fois en utilisant les registres FSR et INDR.
Avec tout ce qu'on vient de dire, vous devriez pouvoir comprendre la microarchitecture d'un PIC, qui est résumée dans ce schéma.
[[File:DocPIC16F84 all.png|centre|vignette|upright=2.5|Microarchitecture du PIC16F84.]]
===Le Fairchild F8 et la console de jeu Fairchild Channel F===
Un autre exemple est la Fairchild F8 de la défunte entreprise Fairchild Semiconductor. Il incorpore un processeur 8 bits, c'est à dire que le processeur fait des calculs sur des entiers de 8 bits maximum, une mémoire RAM de 64 octets, ainsi qu'une mémoire ROM de 1 kibioctet. Les 64 octets de RAM sont certes très peu, mais c'est suffisant pour certaines applications simples, comme les caisses automatiques de l'époque, ou des applications embarquées. Et de toute façon, il est possible d'ajouter de la mémoire RAM supplémentaire si les 64 octets de RAM intégrée ne suffisent pas. Le système était donc modulaire, adaptable selon les besoins, peu cher pour son implémentation minimale sans RAM en plus.
Vu qu'il s'agit d'un des tout premiers ordinateurs, il est sorti à une époque où la technologie était rudimentaire. À cette époque, le processeur était composé de pièces détachées qu'il fallait souder ensemble pour obtenir un processeur fonctionnel. Ce n'est que plus tard qu'est apparu le micro-processeur, qui regroupe un processeur complet dans un seul circuit intégré. Le résultat est que le processeur du Fairchild F8 est coupé en deux, l'unité de calcul et l'unité de contrôle sont placés dans des pièces détachées séparés.
Le microcontrôleur est composé de trois à quatre pièces détachées, certaines étant optionnelles. La première est le '''3850 CPU''', qui regroupe l'unité de calcul et la mémoire RAM intégrée. La seconde est le PSU (''3851 Program Storage Unit''), qui regroupe la mémoire ROM et l'unité de contrôle, ''program counter'' inclut. S'il y a besoin d'utiliser plus de RAM, il faut ajouter un circuit d’interface mémoire, qui est au choix le ''3852 Dynamic Memory Interface'' (DMI) ou le ''3853 Static Memory Interface'', le premier étant connecté à une mémoire de type DRAM, l'autre à une SRAM (nous verrons ce que sont les DRAM et les SRAM dans le prochain chapitre).
[[File:Fairchild F8.png|centre|vignette|upright=2|Fairchild F8]]
Le système minimal est composé d'un PSU et d'un 3850, sans les circuits d'interface mémoire. Le tout donne un système avec un processeur 8 bit, 64 octets de RAM et 1 kibioctet de ROM, les deux mémoires étant intégrées dans le "processeur". Le processeur gérait 4 entrées-sorties, chacune étant reliée avec un bus de 8 bit au processeur. Au passage, en 1977, Mostek a créé un microcontrôleur qui regroupe un PSU et un 3850 : le Mostek 3870. Le système minimal n'avait pas de bus d'adresse, vu que la RAM était intégrée au processeur. C'est les 3852 et 3853 qui ajoutaient un bus d'adresse. Ils ajoutent un bus d'adresse de 16 bits, ce qui permet d'adresser 64 kibioctets de RAM.
[[File:Fairchild-Channel-F.jpg|vignette|un Fairchild Channel F]]
Le Fairchild F8 a été utilisé dans la Fairchild Channel F, une des toute première console de seconde génération, à savoir des consoles qui utilisaient des cartouches de jeu. Avant les consoles de seconde génération, les consoles étaient non-programmables. Elles étaient conçues pour faire tourner un jeu précis, aucun autre, le jeu étant implémenté dans leurs circuits.
La Fairchild Channel F est composé du système minimal, auquel on a ajouté une carte son rudimentaire et 2 kibioctets de mémoire vidéo. La mémoire vidéo sert uniquement pour afficher des images à l'écran : on écrit l'image à afficher dedans, un circuit vidéo se charge de l'afficher à l'écran automatiquement. Le processeur ne fait qu'écrire dans cette RAM vidéo, il ne peut pas en lire le contenu. De la RAM supplémentaire peut cependant être ajoutée dans les cartouches de jeu.
===Le HP Nanoprocessor : un processeur sans ALU===
Un dernier exemple est celui du processeur HP Nanoprocessor, de l'entreprise HP. Il a été commercialisé en 1974, en même temps que les premiers micro-processeurs d'Intel. Tous les processeurs de l'époque étaient des processeurs 8 bits et le HP Nanoprocessor ne faisait pas exception. Ce n'était pas un processeur haute performance, il était destiné à des applications d'informatique industrielle ou embarquée. D'ailleurs, il utilisait des transistors de type metal-gate, peu performants, là où ses contemporains utilisait des transistors en silicium, plus performants.
Mais une caractéristique qui rend cela encore plus claire est qu'il n'y a pas d'ALU ! En effet, ce processeur est incapable de faire des additions, des soustractions ou autres opérations simples ! Il est cependant capable d'effectuer des incrémentations et décrémentations, des décalages, des opérations logiques comme des ET/OU/NON/XOR et bien d'autres. Il supporte en tout 48 instructions, avec un support limité des modes d'adressage indirects. Les instructions de branchement étaient des instructions SKIP, il n'y avait pas d'instructions de branchement généralistes.
Pour ce qui est des registres, il disposait de 16 registres de 8 bits et d'un accumulateur. Niveau mémoire, il était relié à une mémoire ROM, rien de plus. Il n'avait de RAM supplémentaire qu'on pouvait lui adjoindre, il devait se débrouiller avec seulement ses registres. Et cela ne posait pas de problèmes pour son usage. Seul le mode d'adressage indirect à registre est supporté, il n'y a pas de registres d'indices. Ce mode d'adressage permet de lire des données en mémoire ROM, la ROM pouvant contenir des tableaux de valeurs constantes.
: Il est possible de lui adjoindre de la RAM via les ports d'entrée-sortie, ainsi qu'une ALU, mais RAM et ALU sont traités comme des périphériques avec lesquels on communique, ils ne sont pas intégrés au processeur.
Niveau micro-architecture, il incorporait une unité de calcul logique et un circuit comparateur. Le comparateur était un circuit comparateur série des plus basiques, qui était utilisé pour les instructions de branchement et associées. L'unité de calcul logique gérait des incrémentations/décrémentation, des décalages, les opérations logiques et quelques autres. L'unité de calcul logique était bit-slicée, à savoir conçue en assemblant 8 ALU de 1 bit chacune, enchainées en série. Le tout était combiné à des circuits de ''carry skip''.
[[File:Unité de calcul du HP nanonprocessor.png|centre|vignette|upright=2|Unité de calcul du HP nanoprocessor]]
Son unité de décodage d'instruction était très simple, essentiellement basée sur des portes NOR, grâce à un encodage efficace des instructions machine. Le ''program counter'' fait 11 bits, ce qui permet d'adresser une ROM de 2 kibioctets. Le ''program counter'' était relié à un circuit incrémenteur qui gérait les isntructions SKIP (il pouvait incrémenter le ''program counter'' par pas de 1 ou de 2 en cas de SKIP). Le processeur contient aussi deux registres, qui servent en quelque sorte de pile d'adresse de retour. Un premier registre mémorise l'adresse de retour d'une fonction, l'autre mémorise le ''program counter'' lors d'une interruption, pour savoir où brancher à la fin de l'interruption.
[[File:HP nanoprocessor.png|centre|vignette|upright=2.5|HP nanoprocessor]]
Fait intéressant, le concepteur du processeur a gracieusement donné les masques utilisés pour graver le silicium du processeur au site [https://www.cpushack.com/ CPU Shack]. Les masques en question sont disponibles ici :
* [https://www.cpushack.com/2020/08/20/hp-nanoprocessor-mask-set/ HP NanoProcessor Mask Set]
* [https://www.cpushack.com/2020/08/09/the-forgotten-ones-hp-nanoprocessor/ The Forgotten Ones: HP Nanoprocessor]
Les masques ont été analysés par Ken Shirrif dans cet article de blog :
* [https://www.righto.com/2020/09/hp-nanoprocessor-part-ii-reverse.html HP Nanoprocessor part II: Reverse-engineering the circuits from the masks]
==Les processeurs 8/16 bits à architecture Von Neumann==
L'usage d'une architecture Harvard est une solution pour adresser plus de mémoire avec des CPU 8 bits. Mais plusieurs microprocesseurs commerciaux n'utilisaient pas cette solution. À la place, c'était des architectures Von Neumann, mais qui étaient capables de gérer des adresses de 16 bits. Les données faisaient 8 bits, les registres faisaient 8 bits, mais quelques techniques permettaient de gérer des adresses de 16 bits. Nous parlerons de '''processeurs 8/16 bits''' pour les désigner, et nous allons les étudier à part.
Un point important est que la gestion d'adresses de 16 bits permet d'adresser 64 kibioctets, qui peuvent être remplis avec de la RAM et de la ROM. On a donc le meilleur des mondes : 64 kibioctets de mémoire, mais avec des données de 8 bits et les économies de circuit qui vont avec. L'avantage est que le processeur peut maintenant gérer une vraie pile d'appel, pas seulement une pile d'adresse de retour. Il lui suffit pour cela d'intégrer un pointeur de pile codé sur 16 bits.
===Les modes d'adressage par page des CPU Motorola===
Les processeurs Motorola 8 bits étaient des processeurs 8 bits avec un bus d'adresse de 16 bits. C'était des processeurs à accumulateur incorporant deux registres d'indice, un registre d'état, un pointeur de pile, et un ''program counter''. Tous les registres sont reliés au bus d'adresse, sauf le registre d'état et l’accumulateur. Tous les registres font 8 bits, sauf le ''program counter''. La pile est câblée pour être dans un bloc de 256 octets compris entre l'adresse 1 0000 0000 et l'adresse 1 1111 1111, ce qui fait que son adressage se fait avec un seul octet.
[[File:6502-architecture.svg|centre|vignette|upright=1.5|Architecture simplifiée du 6502.</br> X et Y : registres d'indice ;</br> S : le pointeur de pile ;</br> A : accumulateur ;</br>P : registre d'état.</br>]]
Les processeurs Motorola 8 bits utilisaient une méthode simple pour adresser 64 kibioctets de RAM, avec des registres de 8 bits. Pour cela, ils utilisaient une variante de l'adressage base + décalage. Elle améliore l'adressage absolu, qui intègre l'adresse à lire/écrire dans l'instruction elle-même. L'adresse en question est de 8 bits et n'encode que les 8 bits de poids faible de l'adresse, les 8 bits de poids fort sont dans un '''registre de page''' adressé implicitement. L'adresse finale est obtenue en concaténant ce registre avec l'adresse mémoire intégrée dans l’instruction. Le résultat est que la mémoire était découpée en blocs de 256 consécutifs, chacun pouvant servir de fenêtre de 256 octets. Une page est réservée pour la pile, la seconde, comme dit plus haut.
Formellement, ce mode d'adressage a des ressemblances avec la commutation de banques, une technique qu'on verra dans les chapitres sur l'espace d'adressage et la mémoire virtuelle. Mais ce n'en est pas du tout : le registre de page est utilisé uniquement pour les accès mémoire avec le mode d'adressage base + décalage, mais pas pour les autres accès mémoire, qui gèrent des adresses complètes. Notons que l'usage d'un registre de page dédié fait que celui-ci est adressé implicitement.
Il faut noter que la technique a été utilisée sur des processeurs 16 bits, pour contourner la petite taille des instructions. Un exemple est celui du HP 2100, un processeur 16 bits. Il avait un registre de page de 5 bits et encodait 10 bits d'adresse dans ses instructions. Ses instructions d'accès mémoire disposaient d'un bit qui choisit quel mode d'adressage utiliser. S'il était à 0, l'adressage absolu était utilisé, le registre de page n'était pas utilisé. Mais s'il était à 1, le registre de page était utilisé pour calculer l'adresse.
Une évolution de l'adressage précédent est le '''mode page direct'''. Avec lui, le registre de page est étendu et contient une adresse mémoire complète. L'adresse finale n'est pas obtenue par concaténation, mais en additionnant le registre de page avec l'adresse fournie par adressage absolu + décalage. Un exemple est celui des premiers processeurs Motorola, qui géraient des adresses courtes de 8 bits. L'adresse courte de 8 bits correspondait non pas aux 256 premiers octets de la mémoire, mais à une fenêtre de 256 octets déplaçable en mémoire. La position de la fenêtre de 256 octets était spécifiée par le registre de page de 16 bits, qui précisait l'adresse du début de la fenêtre, celle de sa première donnée.
Il s'agit donc formellement d'adressage base + décalage, à un détail près : il n'y a qu'un seul registre de base. Le fait que ce registre de base soit unique fait qu'il est adressé implicitement, on n'a pas à encoder le numéro/noms de registre dans l'instruction. Le registre de base est utilisé uniquement pour l'adressage absolu, pas pour les autres accès mémoire. S'il y a des ressemblances avec la segmentation, une technique de mémoire virtuelle qu'on abordera dans quelques chapitres, ce n'en est pas vu que le registre de base est utilisé seulement pour un mode d'adressage bien précis.
===Le ''pseudo-aliasing'' des registres des processeurs Intel x86===
Voyons maintenant le cas des anciens processeurs 8 bits d'Intel à savoir l'Intel 4004, 4040, 8008 et 8080. Le Z80, un processeur inspiré des CPU Intel 8 bits, est aussi concerné. Avant de poursuivre, parlons des registres de ces processeurs. Les premiers CPU Intel incorporaient 7 registres de 8 bits nommés A, B, C, D, E, F, H, L, SP. Ils correspondent respectivement à : l'accumulateur A ; six registres nommés B, C, D, E, H et L ; le registre d'état F ; le pointeur de pile SP. Le Z80 ajoute deux registres d'indice X et Y. De plus, le Z80 dispose de registres d'interruption, qui sont en quelque sorte des copies des registres A, B, C, D, E, F, H, L. Le tout est illustré dans le tableau ci-dessous.
{|class="wikitable" style="text-align:center;"
|-
!
! Registres des CPU Intel
! Registres supplémentaires du Z80
|-
! Accumulateur
| A
| A'
|-
! Registre d'état
| F
| F'
|-
! Registres généraux
| B, C, D, E, H, L
| B', C', D', E', H', L'
|-
! Pointeur de pile
| colspan="2" | SP (sauf pour le 8008)
|-
! Registres d'indice
|
| X et Y
|}
Le 8008 incorpore une pile d'appel de 7 adresses, dans le processeur lui-même. Il en est de la même avec le 4004 et le 4040, comme on le verra dans la section sur les processeurs 4 bits. Mais le 8080 et le 8085 ont remplacé le tout par un simple pointeur de pile, afin d'avoir une véritable pile d'appel. Autant c'est impossible d'avoir une pile d'appel avec seulement 256 octets de mémoire, autant on peut se le permettre avec 65 536 adresses.
Pour gérer des adresses de 16 bits, ils auraient pu utiliser des registres d'adresse séparés, mais on préféré un système de '''pseudo-''aliasing'' de registres'''. Formellement, c'est un système qui concatène deux registres 8 bits pour obtenir une adresse de 16 bits. L’appariement a lieu lors de certaines opérations bien précises, qui n'ont de sens que pour les adresses : la lecture/écriture en mémoire, et l'incrémentation.
Il y avait cependant des contraintes quant aux paires de registres possibles, toutes les paires de registres n'étaient pas autorisées. Les CPU concernés sont donc des processeurs hybrides accumulateur-registre généraux. L'accumulateur ne peut pas être appairé, seuls les registres généraux le peuvent. Le Z80 autorise plus de paires que les CPU Intel. Voici les paires de registres qui pouvaient servir d'adresse 16 bits :
* Les CPU 8008 d'Intel autorisait une seule paire formée des registres H et L.
* Les autres processeurs, à savoir le 8080, le 8085 et le Z80, autorisaient : les paires BC, DE et HL.
Le 8008 ne gérait que des opérations sur 8 bits. Mais le 8080 et le 8085 ont ajouté des instructions 16 bits qui agissaient sur des paires de registre, que le Z80 a repris. Une paire de registres est considérée comme un registre unique de 16 bits pour certaines opérations arithmétiques, dont l'incrémentation. Voici la liste des instructions concernées :
* INC et DEC pour l'incrémentation et la décrémentation ;
* DAD : additionne le registre HL avec une autre paire (Hl inclus) ;
* LXI : copie une constante immédiate dans une paire de registres ;
* LHLD : lit 16 depuis la mémoire et l'enregistre dans une paire de registres ;
* SHLD : copie 16 bits depuis une paire de registres et l'enregistre en mémoire ;
* PUSH et POP : empile ou dépilent une paire de registre sur la pile ;
* XTHL : échange la paire HL avec les 16 bits au sommet de la pile d'appel ;
* XCHG : échange le contenu de la paire HL et DE.
Pour résumer, le processeur avait des instructions LOAD, STORE, PUSH et POP adaptées pour gérer des paires de registre. De plus, l'instruction XCHG permettait d’échanger le contenu des paires DE et HL. L'instruction a été étendue sur les processeurs 16 bits pour échanger tous les registres. Mais l'implémentation était alors différente. L'incrémentation sur une paire de 16 bit était très utile, car les adresses sont souvent incrémentées quand on parcours un tableau. Ces instructions nous donnent quelques indices sur ce qu'il y a dans le processeur.
Le système de pseudo-aliasing a un impact sur le banc de registre. Le banc de registre regroupe les registres généraux et le pointeur de pile, mais ne contient pas l'accumulateur. Les contraintes sur les paires de registres possibles ne s'expliquent que d'une seule manière : le banc de registre contient des registres de 16 bits, une paire de registres 8 bits est mémorisée dans un registre unique. Il faut donc faire une différence entre les registres architecturaux de 8 bits, et les registres réels de 16 bits.
Le banc de registre a un port de 8 bits pour les données, qui est fabriqué à partir d'un port 16 bits auquel on a rajouté un multiplexeur pour choisir soit l'octet de poids faible, soit l'octet de poids fort. Le bus de données fait 8 bits, ce qui fait que les instructions LOAD, STORE, PUSH et POP pour paires 16 bits sont réalisées en deux fois : on lit/écrit l'octet de poids faible, puis celui de poids fort. Par contre, le bus d'adresse fait bien 16 bits. Cela suggère que le banc de registre dispose d'un port de 16 bits dédié aux adresses, en plus du port de données 8 bits.
[[File:Architecture d'un CPU 8-16 bits avec un banc de registre double port.png|centre|vignette|upright=2|Architecture d'un CPU 8-16 bits avec un banc de registre double port]]
L'incrémentation d'une paire 16 bits ne coute rien à implémenter, ou presque. En effet, le processeur incorpore un incrémenteur 16 bits pour le ''program counter'', qui est relié au bus d'adresse. L'idée est de rentabiliser cet incrémenteur, en lui permettant d'incrémenter des données/adresses de 16 bits obtenues via pseudo-aliasing. De même, il peut être utilisé pour incrémenter le pointeur de pile, voire un compteur de rafraichissement mémoire (pour rappel, le rafraîchissement mémoire demande de balayer la mémoire d'adresse en adresse et été fait par le CPU à l'époque). Pour cela, il suffit de connecter le ''program counter'', le banc de registre, et l'incrémenteur, via un bus dédié.
[[File:Calcul d'adresse par ALU dédiée avec PC séparé.png|centre|vignette|upright=2|Calcul d'adresse par ALU dédiée avec PC séparé]]
Notez qu'on peut encore simplifier le tout en placant le ''program counter'' dans le banc de registre, ce qui ne gênera pas le travail de l'incrémenteur mais simplifiera le câblage au bus d'adresse. Ce n'était pas systématique, certains processeurs mettaient le ''program counter'' dans le banc de registre, d'autres non.
: Inclure le ''program counter'' dans le banc de registre permet parfois de remplir un vide. Par exemple, sur un processeur avec 12 registres, le banc de registre devrait faire idéalement 16 registres, inclure le ''program counter'' dedans fait monter le tout à 13.
[[File:Architecture d'un CPU 8-16 bits.png|centre|vignette|upright=2|Architecture d'un CPU 8-16 bits]]
Les processeurs Intel 8 bits, à savoir le 8008, le 8080 et le 8085 ; mettaient le ''program counter'' dans le banc de registre. Vous avez donc toutes les armes pour comprendre leur micro-architecture. Par exemple, voici la micro-architecture du processeur 8080. Remarquez le banc de registre, qui contient tous les registres sauf l'accumulateur et le registre. Il a deux ports : un pour les adresses et un pour les données. Notez le dé-multiplexeur sur le port de donnée. Pour le reste, il s'agit d'une architecture à accumulateur hybride des plus classiques.
[[File:Intel 8080 arch.svg|centre|vignette|upright=3|Microarchitecture de l'Intel 8080.]]
Le Z80 est un processeur inspiré du design des processeurs Intel 8 bits, mais avec pas mal d'améliorations. Un point particulier de ce processeur est son banc de registre. Il contient tous les registres du processeur, y compris l'accumulateur et le registre d'état ! Les seuls registres en-dehors du banc de registre sont le ''program counter'' et un compteur de rafraichissement mémoire IR.
Un autre point particulier est que les registres dans le banc de registres avaient une copie séparée accessible uniquement pour les interruptions, via fenêtrage de registres. Et l'accumulateur et le registre d'état étant dans le banc de registre, il y avait deux accumulateurs et deux registres d'état. Les registres A, B, C, D, E et F étaient dupliqués, par le pointeur de pile ni les registres d'indice. Les copies des registres étaient nommées A', B', C', D', E' et F'.
Le Z80 supportait des instructions d'échange de registre en plus des CPU Intel 8 bits. L'instruction EX peut échanger soit le contenu des paires D,E et H,F, soit la paire A,F avec la paire A',F'. L'instruction EXX échange les paires BC, DE, HL avec les paires BC', DE', HL'. En faisant cela, le programmeur pouvait utiliser deux fois plus de registres généraux s'il n'utilisait pas les interruptions. L'échange de paires se fait sans copies de registres, mais simplement en modifiant l'adresse envoyée sur le banc de registre. Pour cela, plusieurs bascules mémorisent des bits qui indiquent si les paires ont été échangées ou non. Il y a une bascule pour les paires DE , HL ; une autre pour les paires A,F et paire A',F', une dernière pour l'instruction EXX. En combinant ces bascules avec les noms de registres envoyés par le séquenceur, on peut échanger les paires de registres.
==Le cas particulier des processeurs 4 bits : le 4004 d'Intel==
L'Intel 4004 était le tout premier micro-processeur. Il s'agissait d'un microprocesseur de 4 bits, basé sur une architecture à accumulateur. Il disposait d'un accumulateur et de 16 registres d'indice, tous de 4 bits. Il faisait des calculs sur des données de 4 bits, appelées des nibbles. Cependant, sur ses 46 instructions machines supportées, 41 agissaient sur des opérandes de 8 bits, les 5 restantes sur des opérandes de 16 bits. Simplement, les calculs se faisaient en deux fois, en échangeant des données entre mémoire RAM et accumulateur.
Le 4004 est un circuit intégré avec peu de broches. Il dispose notamment d'un bus de données/adresse, qui est multiplexé, c’est-à-dire qu'il sert alternativement de bus de données et de bus d'adresse selon les besoins. Le bus de commande mémoire fait 5 bits, dont 4 pour les chips de RAM, un pour la ROM. Les adresses sont codées sur 12 bits, les données sur 4 et les instructions sur 8 bits. L'envoi d'une adresse sur le bus se fait en plusieurs fois, de même que la lecture d'une instruction. Il s'agit là d'une adaptation pour outrepasser les limitations d'un processeur 4 bit.
[[File:Intel 4004 processor pinout.png|centre|vignette|upright=2|Broches de l'Intel 4004. Nous verrons à quoi elles servent plus bas.]]
===L'espace d'adressage de l'Intel 4004===
Les adresses du processeur sont sur 12 bits, ce qui fait 4096 adresses différentes. Elles regroupent à la fois la ROM et la mémoire RAM, vu que l'architecture est une sorte de mélange bizarre entre une architecture Von Neumann et Harvard. Le processeur gère bien deux espaces d'adressage séparés, mais la RAM et la ROM sont reliés au même bus. La sortie CM-ROM du processeur indique si l'adresse envoyée correspond à la RAM ou la ROM. Un circuit de décodage d'adresse active ou désactive la RAM selon la valeur de ce bit, l'inverse pour la ROM, en agissant sur leurs bits Chip Select. Seule la RAM ou la ROM répondent alors à l'adresse.
Pour ce qui est de la RAM, le circuit de décodage d'adresse pouvait gérer au maximum 1024 adresses différentes, chacune contenant un nibble. Pour cela, le CPU 4004 était relié à une ou plusieurs RAM externes, des Intel 4002. Chaque Intel 4002 contenait 64 nibbles de données, plus 16 nibbles de statut qu'on ne détaillera pas ici. Les nibbles de statut étaient accessibles en utilisant des instructions d'entrée-sortie, donc pas avec des lectures/écritures mémoire. Les 64 nibbles de données sont découpés en 4 groupes de 16 nibbles. Le CPU pouvait être relié à maximum 16 Intel 4002, ce qui fait 1024 nibbles de données et 256 nibbles de statut. L'ensemble permet de remplir l'espace d'adressage de 1024 adresses.
===Le registre de page et le pseudo-aliasing des registres===
Sélectionner une adresse mémoire utilisait un mélange entre pseudo-aliasing et registre de page. Pour les données, les 1024 adresses étaient découpées en 4 pages de 256 adresses. Pour la ROM, les 4096 adresses étaient découpées en 16 pages de 256 adresses. Localiser une donnée dans une page ne requiert que 8 bits, 2/4 bits supplémentaires permettent de sélectionner la page voulue. Le registre de page était dans le processeur lui-même, et était relié aux sorties du processeur nommées CM-RAM 0, 1, 2 et 3. Les 4 sorties encodaient un nombre qui permet de sélectionner le numéro de page voulu.
Le registre de page fait 5 bits : un pour distinguer RAM et ROM, 4 bits pour sélectionner la page voulue. L'avantage est que la carte mère gère au maximum 16 chips de RAM, ce qui colle parfaitement avec les 4 utilisés pour sélectionner une page. Un chip de RAM correspond à une page, et chacun est activé ou désactivé suivant la page sélectionnée. Pour cela, il suffit d'ajouter un décodeur sur la carte mère, qui prend les 4 bits du registre de page et fournit les signaux Chip Select aux différents chips de RAM.
Reste alors à utiliser les 8 bits d'adresse à l'intérieur d'un chip de RAM. Le 4004 permettait de concaténer deux registres d'indice de 4 bits pour former une adresse de 8 bits. Les instructions d'accès mémoire pouvaient ainsi préciser une paire de registre d'indice pour préciser quelle adresse lire/écrire. Idem pour les branchements indirects : le processeur supportait une instruction de branchement indirect qui précisait l'adresse dans une paire de registres d'indice. Les registres d'indice sont donc assez mal nommés sur cette architecture, vu qu'ils peuvent servir soit de registre d'indice, soit de demi-registre d'adresse. Il s'agit là du système de pseudo-aliasing des registres, mais appliqué aux registres d'indice.
L'Intel 4004 gérait deux instructions pour gérer les adresses mémoires. La première, l'instruction DCL (''Designate Command Line'') configure le registre de page. Elle prend en entrée un numéro de page et le copie dans le registre de page. L'opérande peut provenir d'un registre d'indice ou de l'accumulateur. La seconde, l'instruction SRC (''Send Register Control'') concatène deux registres d'indice pour obtenir une adresse de 8 bits. Un accès mémoire se fait donc en maximum trois instructions : une qui configure le registre de page si ce n'est pas déjà fait, une instruction SRC pour envoyer l'adresse, et une troisième instruction qui dit s'il faut faire une lecture ou une écriture.
===La microarchitecture de l'Intel 4004===
Il incorporait une pile d'adresse de retour intégrée au processeur. La pile d'adresse acceptait exactement 3 adresses maximum. Elle était regroupée avec le ''program counter'' dans un banc de registre, de 4 registres. Le ''program counter'' et le pointeur de pile faisaient chacun 12 bits, soit trois nibble. Ils étaient incrémentés par un incrémenteur dédié.
SI on omet le registre de page et la pile d'adresse, le 4004 est une architecture à accumulateur des plus classiques, avec un bus interne unique, un banc de registre pour les registres d'indices, un accumulateur relié à une unité de calcul. Les registres d'indice étaient dans un banc de registre séparés, car ils faisaient 4 bits chacun, contrairement au pointeur de pile et le ''program counter''. Un détail important est que les bancs de registres du 4004 étaient implémentés avec de la DRAM, et non des registres usuels fabriqués avec des bascules 1 bit.
[[File:Microarchitecture de l'Intel 4004.png|centre|vignette|upright=2.5|Microarchitecture de l'Intel 4004]]
<noinclude>
{{NavChapitre | book=Fonctionnement d'un ordinateur
| prev=Les architectures à pile et mémoire-mémoire
| prevText=Les architectures à pile et mémoire-mémoire
| next=Les processeurs de traitement du signal
| nextText=Les processeurs de traitement du signal
}}
</noinclude>
6s502nv7iof3n8bg7tyb83n9z0glxzs
765715
765714
2026-05-01T19:18:41Z
Mewtow
31375
/* Les microcontrôleurs PIC */
765715
wikitext
text/x-wiki
Nous avons déjà abordé la notion de processeur 8, 16, 32, 64 bits. Elle désigne la taille des registres généraux, ou de l'accumulateur. De nos jours, les processeurs 32 et 64 bits sont la norme, mais les premiers micro-processeurs étaient des processeurs 4 et 8, avant de passer rapidement au 16 bits. La raison est que leur budget en transistor limité faisait qu'on ne pouvait pas utiliser une ALU trop grande : une ALU 8 bit prend deux fois moins de place et de transistors qu'une ALU 16 bits. Cependant, les processeurs 8 bits avaient de sérieuses limitations qui étaient compensées par diverses solutions. Dans ce chapitre, nous allons faire une revue rapide des processeurs 8 bits et de leurs fonctionnalités.
La principale limitation des CPU 8 bits était l'adressage : des registres de 8 bits limitaient l'espace d'adressage à seulement 256 adresses, soit à peine 256 octets ! Intuitivement, on se dit que 256 octets est purement impraticable, on ne peut rien faire d'intéressant avec seulement 256 de RAM + ROM. Et c'est partiellement vrai. L'adage veut que 16 bits est la taille minimale intéressante, la limite à partir de laquelle on a assez de mémoire RAM/ROM pour coder des applications intéressantes. Mais 256 octets de RAM est largement suffisant sur de nombreux systèmes embarqués simples s'en accommodent : des caisses enregistreuses, des systèmes de régulation de feu de circulation, etc.
Pour les applications demandant plus de mémoire RAM, les CPU de l'époque contournaient la limitation de 256 octets de RAM avec de nombreux stratagèmes. Dans ce qui va suivre, nous allons séparer les CPU 8 bits selon qu'ils utilisent une architecture Harvard ou une architecture Von Neumann. La raison est qu'une architecture Harvard permet en soi de contourner partiellement ce problème d'adressage. Les choses sont plus compliquées avec une architecture Von Neumann.
==Les processeurs 8/16 bits à architecture Harvard ==
La première solution est d'utiliser une architecture Harvard. Le processeur 8 bit a alors deux espaces d'adressage : un pour la RAM, un autre pour la ROM. Et les deux utilisent des adresses de taille différente. La ROM est reliée à un bus d'adresse de 16 bits, alors que la RAM est elle connectée à un bus d'adresse de 8 bits. La RAM est donc limitée à 256 octets, alors que la ROM peut monter jusqu'à 64 kibioctets. Mine de rien, faire ainsi est largement suffisant.
Pour encore améliorer la situation, il est possible d'utiliser une architecture Harvard modifiée, qui permet de lire des données depuis la mémoire ROM. Cela réduit encore plus les besoins en mémoire RAM. Les constantes manipulées par le programme sont mémorisées en ROM, lues depuis la ROM, au lieu d'être chargées en RAM. Avec ce genre de stratagèmes, 256 octets de RAM est largement suffisant sur de nombreux systèmes, à condition qu'on ait assez de ROM pour coder un programme digne de ce nom. Par exemple, de nombreux systèmes embarqués simples s'en accommodent : des caisses enregistreuses, des systèmes de régulation de feu de circulation, etc.
Les processeurs 8 bits intègrent parfois les 256 octets de RAM directement dans le processeur, dans le banc de registres ! Beaucoup en implémentaient moins, avec par exemple seulement 64 octets de RAM, ou 32 octets, ou 128 octets. L'avantage est que cela élimine le bus pour les données, ce qui économise beaucoup de broches sur le circuit intégré du CPU. Et pour les applications demandant plus de RAM, on pouvait ajouter un circuit séparé qui permettait d'adresser une RAM plus grande. Et c'est ce qui explique que cette solution est beaucoup utilisée sur les microcontrôleurs peu puissants. Les exemples qui vont suivre devraient vous convaincre.
: Les processeurs de ce type implémentent des optimisations pour adresser plus de 256 octets de RAM. La plus connue est la commutation de banques. Mais nous n'avons pas encore abordé celle-ci, et il faudra attendre le chapitre sur l'espace d'adressage pour cela.
===Les microcontrôleurs PIC===
Les '''microcontrôleurs PIC''' regroupent des microcontrôleurs allant de microcontrôleurs 8 bits aux performances très faible, à des microcontrôleurs 32 bits bien plus puissants. Les microcontrôleurs PIC sont très utilisés dans l'embarqué ou d'informatique industrielle. Ils sont vendu à des volumes assez impressionnants, plusieurs millions par an. Et si vous avez ou êtes en train de faire des études d'électronique, je parie que vous les avez déjà vu en classe, ou que ce ne saurait tarder. Dans ce qui suit, nous allons nous concentrer sur les microcontrôleurs PIC 8 bits, à savoir les PIC 16, 16 et 18. Les PIC 24, qui sont des microcontrôleurs 16 bits, ne seront pas abordés.
Les microcontrôleurs PIC 8 bits sont une architecture Harvard, comme dit plus haut. Il y a aussi des registres pour les entrées et sorties. Les registres d'entrée-sortie permettent de lire ou écrire sur un port d'entrée-sortie ou de lire un ''timer''. En clair, les PIC ont un espace d'adressage séparé pour les entrées-sorties.
La mémoire ROM des PIC va de 1024 instructions à 4096 instructions. En comparaison, la mémoire RAM des microcontrôleurs PIC ne peut pas dépasser 256 adresses, et elle est encore plus petite en pratique sur certains modèles. Pour donner un exemple, le PIC16F84 a une RAM composée de 68 "registres" de 8 bits. Le terme "registres" devrait vous faire tiquer, mais c'est bien le terme utilisé dans la documentation des PIC. Et il faut admettre que la différence entre banc de registre et SRAM intégrée est floue, mais nous expliquerons pourquoi dans quelques paragraphes.
: Les PIC 18 peuvent adresser plus de 256 octets de RAM en utilisant la commutation de banques, une technique qui sera abordée dans plusieurs chapitres.
[[File:DocPIC16F84 3.png|centre|vignette|upright=3|Espaces d'adressage du PIC16F84.]]
Un détail est que la SRAM n'a qu'un seul port qui sert à la fois pour les lectures et écritures. Pour compenser, les PIC sont des architectures à accumulateur, où une opérande est lue depuis la SRAM, l'autre depuis l'accumulateur. Leur implémentation de l'accumulateur ajoute une petite subtilité : le résultat d'une opération arithmétique peut être enregistré ailleurs que dans l'accumulateur. Le résultat peut aussi remplacer la seconde opérande, celle lue en mémoire RAM. Dit autrement, le résultat est enregistré dans l'adresse mémoire source. Les instructions de calcul ont le choix : un bit dans leur encodage précise où enregistrer le résultat.
{|
|-
|[[File:DocPIC16F84 4.png|centre|vignette|upright=2|Microarchitecture simplifiée d'un microcontroleur PIC (ici, un 16F84).]]
|[[File:DocPIC16F84 5.png|centre|vignette|upright=2|Microarchitecture simplifiée d'un microcontroleur PIC (ici, un 16F84), avec les branchements directs.]]
|}
Outre l'accumulateur, les PIC disposent de registres de contrôle, d'un ''program counter'', d'un registre d'état, et d'un pointeur de pile. Un détail très important est que les registres sont mappés en mémoire, à quelques exceptions près ! En clair, on peut y accéder en lisant/écrivant à une adresse mémoire bien précise. Les seules registres qui ne sont pas mappés en mémoire sont l'accumulateur, les registres d'entrée-sortie, et la pile d'adresses de retour intégrée au processeur (voir plus bas). Par exemple, sur les modèles 16F, l'espace d'adressage fait 128 octets, dont 32 sont réservés aux registres du processeur, ce qui fait que seules 96 octets sont adressables comme de la RAM. Mais les 128 octets sont un seul et unique SRAM dans le processeur. Ce qui explique qu'il est difficile de séparer banc de registre et RAM principale sur ce processeur : les deux sont fusionnées !
: Les modèles PIC 17 ont rendu l'accumulateur mappé en mémoire RAM !
[[File:DocPIC16F84.png|centre|vignette|upright=2|DocPIC16F84]]
La petite taille de la ROM d'un PIC n'est pas une surprise. Les architectures 8 bits sont conçues pour ne pas utiliser beaucoup de transistors et être très simples. Aussi, utiliser une petite ROM est nécessaire. Mais il faut aussi adapter le jeu d'instruction, pour qu'il ait une bonne densité de code. Par exemple, il faut faire en sorte d'avoir des instructions assez courtes. Si les instructions font 16 bits au lieu de 32, on divise par deux le nombre de transistors nécessaire pour la mémoire ROM. La conséquence est que le jeu d’instruction des PIC est adapté à cette contrainte.
Les microcontrôleurs PIC utilisent un jeu d'instruction propriétaire, dont les instructions sont très petites. Les premières versions du jeu d'instruction utilisaient des instructions codées sur 12 bits, dont 5 pour l'adresse mémoire de la seconde opérande. Pour les branchements, 3 bits étaient utilisés pour l'opcode, 9 pour l'adresse de destination. Par la suite, les instructions ont été étendues à 13 bits sur les PIC1670, puis à 14, 15 et 16 bits. Les adresses ont alors été élargies, ce qui permet d'adresser en peu plus de mémoire RAM.
Il est intéressant de regarder comment les PIC font pour obtenir des instructions aussi courtes. Premièrement, le fait d'utiliser une architecture à accumulateur, couplé à une RAM très petite aident grandement. Les architectures à accumulateur ont besoin de préciser un opcode et une adresse mémoire pour chaque instruction, pas besoin de préciser de noms de registres ni le mode d'adressage. La taille des adresses mémoire est censé être un problème pour la densité de code, mais les adresses d'un processeur 8 bits font 8 bits. On peut alors avoir un jeu d'instruction étoffé, en utilisant des instructions 16 bits, qui concatènent un opcode et une adresse mémoire, d'un octet chacun.
Mais d'autres optimisations permettent d'avoir une bonne densité de code. Les PIC ont des branchements pour les appels et retour de fonction. Les PIC incorporent une pile d'appel de retour, qui fait 2 à 8 adresses suivant les modèles. Elle permet d'économiser quelques registres, car la pile d'appel n'est pas mappé dans l'espace d'adressage, elle n'est pas adressable. On économise ainsi 2 à 8 registres, sur 32-256 registres. De plus, cela simplifie l'encodage des instructions d'appel/retour de fonction, qui n'ont pas à préciser où enregistre l'adresse de retour.
Les PIC n'ont pas d'instructions de branchement conditionnels, ils font avec une SKIP instruction et des branchements inconditionnels. Du moins, c'est le principe, car si vous regardez la liste des instructions ci-dessous, vous verrez qu'il n'y a pas d'instruction SKIP. A la place, les instructions SKIP sont fusionnées avec d'autres instructions. Elles sont notamment fusionnées avec les instructions d'incrémentation et de décrémentation. Les PIC supportent une incrémentation normale, une décrémentation normale, une décrémentation fusionnée avec une instruction SKIP, et une incrémentation fusionnée avec une instruction SKIP. Les deux dernières incrémentent/décrémentent l'accumulateur et SKIP l'instruction suivante si le résultat est zéro. Elles permettent de fortement simplifier l'implémentation des boucles qui s'exécutent tant que leur compteur atteint zéro.
Les PIC disposent aussi d'instructions de manipulation de bit, pour tester/masquer un bit dans une opérande, 4 en tout. Il y a en a 4 en tout : mettre à 0, mettre à 1, tester si bit = 1, tester si bit = 0. Les instructions qui testent un bit prennent leur opérande dans l'accumulateur. Elles font le test du bit et décident s'il faut skipper l'instruction suivante ou non. Il y a aussi deux instructions de rotation à gauche et droite, qui tiennent compte de la retenue mémorisée dans le registre d'état. Par contre, il n'y a pas d'instructions de décalages, qui peuvent être émulées avec une rotation suivie d'un ET bit à bit. Mentionnons aussi une instruction pour inverser deux ''nibbles'' dans un octet.
Les modèles haute performance ajoutent des instructions d'addition avec retenue entrante, idem pour la soustraction. De telles instructions ssont très utiles pour faire des additions/soustractions sur des opérandes de 16 bits. Le processeur a beau être un CPU 8 bits, il peut être utilisé pour faire des calculs 16 bits, la performance est alors amoindrie, mais ce n'est pas un problème pour les applications d'un tel microcontroleur.
Les modèles intiaux, comme les PIC 10 et 12, ne supportaient pas les interruptions, mais c'est chose réglé sur les modèles plus récents. Ils ont même des registres séparés pour les interruptions et les programmes normaux. De plus, ils intégrent nativement un ''watchdog timer''.
{|class="wikitable" style="text-align:center"
|+ Jeu d'instruction des dodèles PCI 16
|-
! colspan="5" | Instructions diverses
|-
| colspan="3" | 00 0000 0000 0000 || NOP || Ne fait rien
|-
| colspan="3" | 00 0000 0000 1000 || RETURN || Instruction de retour pour une fonction
|-
| colspan="3" | 00 0000 0000 1001 || NOP || Instruction de retour pour une interruption
|-
| colspan="3" | 00 0000 0110 0011 || SLEEP || Mise en veille
|-
| colspan="3" | 00 0000 0110 0100 || CLRWDT || RESET le ''watchdog timer'', intégré dans le PIC
|-
! colspan="5" | Instructions de manipulation de bit
|-
| 0100 || Position du bit dans l'opérande || Adresse mémoire || BCF || Met le bit à 1
|-
| 0101 || Position du bit dans l'opérande || Adresse mémoire || BSF || Met le bit à 0
|-
| 0110 || Position du bit dans l'opérande || Adresse mémoire || BTFSC || Teste si le bit adressé est à 1
|-
| 0111 || Position du bit dans l'opérande || Adresse mémoire || BTFSS || Teste si le bit adressé est à 0
|-
! colspan="5" | Branchements
|-
| colspan="2" | 100 || Adresse mémoire || CALL || Appel de fonction
|-
| colspan="2" | 100 || Adresse mémoire || GOTO || Branchement inconditionnel
|-
! colspan="5" | Instructions logiques/arithmétiques avec opérande lue en mémoire RAM
|-
| colspan="5" | ''Le bit '''d''' dans l'opcode indique la destination : accumulateur ou adresse mémoire''.
|-
| colspan="2" | 0000001 || Adresse mémoire || MOVWF || Store (accumulateur vers destination)
|-
| colspan="2" | 000001d || Adresse mémoire || MOVWF || Met à zéro la destination (adresse ou registre)
|-
| colspan="2" | 000001d || Adresse mémoire || SUBWF || Soustraction
|-
| colspan="2" | 000010d|| Adresse mémoire || DECF || Décrémentation
|-
| colspan="2" | 000100d|| Adresse mémoire || IORWF || OU bit à bit
|-
| colspan="2" | 000101d|| Adresse mémoire || ANDWF || ET bit à bit
|-
| colspan="2" | 000110d || Adresse mémoire || XORWF || XOR bit à bit
|-
| colspan="2" | 000111d || Adresse mémoire || ADDWF VWF || Addition
|-
| colspan="2" | 001000d || Adresse mémoire || MOVF || LOAD
|-
| colspan="2" | 001001d || Adresse mémoire || COMF || NOT bit à bit
|-
| colspan="2" | 001010d || Adresse mémoire || INCF || Incrémentation
|-
| colspan="2" | 001011d || Adresse mémoire || DECFSZ || Décrémentation, puis instruction SKIP si résultat = 0
|-
| colspan="2" | 001100d || Adresse mémoire || RRF || Rotation à droite avec retenue entrante
|-
| colspan="2" | 001101d || Adresse mémoire || RLF || Rotation à gauche avec retenue entrante
|-
| colspan="2" | 001110d || Adresse mémoire || SWAPF || Echange deux ''niblle'' dans un octet
|-
| colspan="2" | 001111d || Adresse mémoire || INCFSZ || Incrémentation, puis instruction SKIP si résultat = 0
|-
! colspan="5" | Instructions logiques/arithmétiques avec constante immédiate
|-
| colspan="2" | 1100xx || Constante immédiate (8bits) || MOVLW || Copie constante dans accumulateur
|-
| colspan="2" | 1101xx || Constante immédiate (8bits) || RETLW || MOV fusionné avec un retour de fonction
|-
| colspan="2" | 111000 || Constante immédiate (8bits) || IORLW || OU
|-
| colspan="2" | 111001 || Constante immédiate (8bits) || ANDLW || ET
|-
| colspan="2" | 111010 || Constante immédiate (8bits) || XORLW || XOR
|-
| colspan="2" | 11110x || Constante immédiate (8bits) || SUBLW || Soustraction
|-
| colspan="2" | 11111x || Constante immédiate (8bits) || ADDLW || Addition
|}
Les PIC gèrent l'adressage absolu et immédiat, mais pas plus. L'adressage absolu, celui où l'adresse est intégrée dans l'instruction, est très simple à implémenter. Les adresses prennent moins d'un octet, vu que la taille de la RAM est très petite, les adresses sont très courtes, les intégrer dans des instructions elles-mêmes courtes n'est pas un problème. L'adresse est encodée sur 5 à 7 bits, selon le modèle, ce qui permet d'adresser entre 32 et 128 octets.
Les PIC ne supportent pas l'adressage indirect, mais peuvent l'émuler grâce à un '''registre d'adresse''' dédié. Il s'agit du registre FSR, qui mémorise l'adresse à lire/écrire. Il est possible de copier un pointeur dedans, qui provient soit de l'accumulateur, soit de la mémoire SRAM. Dans les deux cas, la donnée adressée est lue ou écrite dans un registre INDR, est un registre d’interfaçage rendu adressable. Le registre FSR est directement connecté sur le bus d'adresse.
Les modèles de base se débrouillent avec un registre FSR et un registre INDR, mais les modèles plus performants ont deux ou trois copies de chaque registre. Les modèles PIC18 ajoutent aussi des instructions LOAD/STORE qui émulent les modes d'adressage à post- ou pré-incrément/décrément, et le mode d'adressage "Base + Indice + Décalage", encore une fois en utilisant les registres FSR et INDR.
Avec tout ce qu'on vient de dire, vous devriez pouvoir comprendre la microarchitecture d'un PIC, qui est résumée dans ce schéma.
[[File:DocPIC16F84 all.png|centre|vignette|upright=2.5|Microarchitecture du PIC16F84.]]
===Les microcontrôleurs Intel 8051/8031===
Les microcontrôleurs Intel 8051/8031 sont des microcontrôleurs 8 bits, commercialisés par Intel. Elle contient un processeur 8/16 bits, de la mémoire ROM, une RAM de 128 octets, des ''timers'', et de nombreuses entrée-sorties. L'ensemble utilise une architecture Harvard, contrairement à ce que pourrait faire croire le schéma ci-dessous.
[[File:Microcontroller 8051.gif|centre|vignette|upright=2|Microcontrôleur 8051]]
===Le Fairchild F8 et la console de jeu Fairchild Channel F===
Un autre exemple est la Fairchild F8 de la défunte entreprise Fairchild Semiconductor. Il incorpore un processeur 8 bits, c'est à dire que le processeur fait des calculs sur des entiers de 8 bits maximum, une mémoire RAM de 64 octets, ainsi qu'une mémoire ROM de 1 kibioctet. Les 64 octets de RAM sont certes très peu, mais c'est suffisant pour certaines applications simples, comme les caisses automatiques de l'époque, ou des applications embarquées. Et de toute façon, il est possible d'ajouter de la mémoire RAM supplémentaire si les 64 octets de RAM intégrée ne suffisent pas. Le système était donc modulaire, adaptable selon les besoins, peu cher pour son implémentation minimale sans RAM en plus.
Vu qu'il s'agit d'un des tout premiers ordinateurs, il est sorti à une époque où la technologie était rudimentaire. À cette époque, le processeur était composé de pièces détachées qu'il fallait souder ensemble pour obtenir un processeur fonctionnel. Ce n'est que plus tard qu'est apparu le micro-processeur, qui regroupe un processeur complet dans un seul circuit intégré. Le résultat est que le processeur du Fairchild F8 est coupé en deux, l'unité de calcul et l'unité de contrôle sont placés dans des pièces détachées séparés.
Le microcontrôleur est composé de trois à quatre pièces détachées, certaines étant optionnelles. La première est le '''3850 CPU''', qui regroupe l'unité de calcul et la mémoire RAM intégrée. La seconde est le PSU (''3851 Program Storage Unit''), qui regroupe la mémoire ROM et l'unité de contrôle, ''program counter'' inclut. S'il y a besoin d'utiliser plus de RAM, il faut ajouter un circuit d’interface mémoire, qui est au choix le ''3852 Dynamic Memory Interface'' (DMI) ou le ''3853 Static Memory Interface'', le premier étant connecté à une mémoire de type DRAM, l'autre à une SRAM (nous verrons ce que sont les DRAM et les SRAM dans le prochain chapitre).
[[File:Fairchild F8.png|centre|vignette|upright=2|Fairchild F8]]
Le système minimal est composé d'un PSU et d'un 3850, sans les circuits d'interface mémoire. Le tout donne un système avec un processeur 8 bit, 64 octets de RAM et 1 kibioctet de ROM, les deux mémoires étant intégrées dans le "processeur". Le processeur gérait 4 entrées-sorties, chacune étant reliée avec un bus de 8 bit au processeur. Au passage, en 1977, Mostek a créé un microcontrôleur qui regroupe un PSU et un 3850 : le Mostek 3870. Le système minimal n'avait pas de bus d'adresse, vu que la RAM était intégrée au processeur. C'est les 3852 et 3853 qui ajoutaient un bus d'adresse. Ils ajoutent un bus d'adresse de 16 bits, ce qui permet d'adresser 64 kibioctets de RAM.
[[File:Fairchild-Channel-F.jpg|vignette|un Fairchild Channel F]]
Le Fairchild F8 a été utilisé dans la Fairchild Channel F, une des toute première console de seconde génération, à savoir des consoles qui utilisaient des cartouches de jeu. Avant les consoles de seconde génération, les consoles étaient non-programmables. Elles étaient conçues pour faire tourner un jeu précis, aucun autre, le jeu étant implémenté dans leurs circuits.
La Fairchild Channel F est composé du système minimal, auquel on a ajouté une carte son rudimentaire et 2 kibioctets de mémoire vidéo. La mémoire vidéo sert uniquement pour afficher des images à l'écran : on écrit l'image à afficher dedans, un circuit vidéo se charge de l'afficher à l'écran automatiquement. Le processeur ne fait qu'écrire dans cette RAM vidéo, il ne peut pas en lire le contenu. De la RAM supplémentaire peut cependant être ajoutée dans les cartouches de jeu.
===Le HP Nanoprocessor : un processeur sans ALU===
Un dernier exemple est celui du processeur HP Nanoprocessor, de l'entreprise HP. Il a été commercialisé en 1974, en même temps que les premiers micro-processeurs d'Intel. Tous les processeurs de l'époque étaient des processeurs 8 bits et le HP Nanoprocessor ne faisait pas exception. Ce n'était pas un processeur haute performance, il était destiné à des applications d'informatique industrielle ou embarquée. D'ailleurs, il utilisait des transistors de type metal-gate, peu performants, là où ses contemporains utilisait des transistors en silicium, plus performants.
Mais une caractéristique qui rend cela encore plus claire est qu'il n'y a pas d'ALU ! En effet, ce processeur est incapable de faire des additions, des soustractions ou autres opérations simples ! Il est cependant capable d'effectuer des incrémentations et décrémentations, des décalages, des opérations logiques comme des ET/OU/NON/XOR et bien d'autres. Il supporte en tout 48 instructions, avec un support limité des modes d'adressage indirects. Les instructions de branchement étaient des instructions SKIP, il n'y avait pas d'instructions de branchement généralistes.
Pour ce qui est des registres, il disposait de 16 registres de 8 bits et d'un accumulateur. Niveau mémoire, il était relié à une mémoire ROM, rien de plus. Il n'avait de RAM supplémentaire qu'on pouvait lui adjoindre, il devait se débrouiller avec seulement ses registres. Et cela ne posait pas de problèmes pour son usage. Seul le mode d'adressage indirect à registre est supporté, il n'y a pas de registres d'indices. Ce mode d'adressage permet de lire des données en mémoire ROM, la ROM pouvant contenir des tableaux de valeurs constantes.
: Il est possible de lui adjoindre de la RAM via les ports d'entrée-sortie, ainsi qu'une ALU, mais RAM et ALU sont traités comme des périphériques avec lesquels on communique, ils ne sont pas intégrés au processeur.
Niveau micro-architecture, il incorporait une unité de calcul logique et un circuit comparateur. Le comparateur était un circuit comparateur série des plus basiques, qui était utilisé pour les instructions de branchement et associées. L'unité de calcul logique gérait des incrémentations/décrémentation, des décalages, les opérations logiques et quelques autres. L'unité de calcul logique était bit-slicée, à savoir conçue en assemblant 8 ALU de 1 bit chacune, enchainées en série. Le tout était combiné à des circuits de ''carry skip''.
[[File:Unité de calcul du HP nanonprocessor.png|centre|vignette|upright=2|Unité de calcul du HP nanoprocessor]]
Son unité de décodage d'instruction était très simple, essentiellement basée sur des portes NOR, grâce à un encodage efficace des instructions machine. Le ''program counter'' fait 11 bits, ce qui permet d'adresser une ROM de 2 kibioctets. Le ''program counter'' était relié à un circuit incrémenteur qui gérait les isntructions SKIP (il pouvait incrémenter le ''program counter'' par pas de 1 ou de 2 en cas de SKIP). Le processeur contient aussi deux registres, qui servent en quelque sorte de pile d'adresse de retour. Un premier registre mémorise l'adresse de retour d'une fonction, l'autre mémorise le ''program counter'' lors d'une interruption, pour savoir où brancher à la fin de l'interruption.
[[File:HP nanoprocessor.png|centre|vignette|upright=2.5|HP nanoprocessor]]
Fait intéressant, le concepteur du processeur a gracieusement donné les masques utilisés pour graver le silicium du processeur au site [https://www.cpushack.com/ CPU Shack]. Les masques en question sont disponibles ici :
* [https://www.cpushack.com/2020/08/20/hp-nanoprocessor-mask-set/ HP NanoProcessor Mask Set]
* [https://www.cpushack.com/2020/08/09/the-forgotten-ones-hp-nanoprocessor/ The Forgotten Ones: HP Nanoprocessor]
Les masques ont été analysés par Ken Shirrif dans cet article de blog :
* [https://www.righto.com/2020/09/hp-nanoprocessor-part-ii-reverse.html HP Nanoprocessor part II: Reverse-engineering the circuits from the masks]
==Les processeurs 8/16 bits à architecture Von Neumann==
L'usage d'une architecture Harvard est une solution pour adresser plus de mémoire avec des CPU 8 bits. Mais plusieurs microprocesseurs commerciaux n'utilisaient pas cette solution. À la place, c'était des architectures Von Neumann, mais qui étaient capables de gérer des adresses de 16 bits. Les données faisaient 8 bits, les registres faisaient 8 bits, mais quelques techniques permettaient de gérer des adresses de 16 bits. Nous parlerons de '''processeurs 8/16 bits''' pour les désigner, et nous allons les étudier à part.
Un point important est que la gestion d'adresses de 16 bits permet d'adresser 64 kibioctets, qui peuvent être remplis avec de la RAM et de la ROM. On a donc le meilleur des mondes : 64 kibioctets de mémoire, mais avec des données de 8 bits et les économies de circuit qui vont avec. L'avantage est que le processeur peut maintenant gérer une vraie pile d'appel, pas seulement une pile d'adresse de retour. Il lui suffit pour cela d'intégrer un pointeur de pile codé sur 16 bits.
===Les modes d'adressage par page des CPU Motorola===
Les processeurs Motorola 8 bits étaient des processeurs 8 bits avec un bus d'adresse de 16 bits. C'était des processeurs à accumulateur incorporant deux registres d'indice, un registre d'état, un pointeur de pile, et un ''program counter''. Tous les registres sont reliés au bus d'adresse, sauf le registre d'état et l’accumulateur. Tous les registres font 8 bits, sauf le ''program counter''. La pile est câblée pour être dans un bloc de 256 octets compris entre l'adresse 1 0000 0000 et l'adresse 1 1111 1111, ce qui fait que son adressage se fait avec un seul octet.
[[File:6502-architecture.svg|centre|vignette|upright=1.5|Architecture simplifiée du 6502.</br> X et Y : registres d'indice ;</br> S : le pointeur de pile ;</br> A : accumulateur ;</br>P : registre d'état.</br>]]
Les processeurs Motorola 8 bits utilisaient une méthode simple pour adresser 64 kibioctets de RAM, avec des registres de 8 bits. Pour cela, ils utilisaient une variante de l'adressage base + décalage. Elle améliore l'adressage absolu, qui intègre l'adresse à lire/écrire dans l'instruction elle-même. L'adresse en question est de 8 bits et n'encode que les 8 bits de poids faible de l'adresse, les 8 bits de poids fort sont dans un '''registre de page''' adressé implicitement. L'adresse finale est obtenue en concaténant ce registre avec l'adresse mémoire intégrée dans l’instruction. Le résultat est que la mémoire était découpée en blocs de 256 consécutifs, chacun pouvant servir de fenêtre de 256 octets. Une page est réservée pour la pile, la seconde, comme dit plus haut.
Formellement, ce mode d'adressage a des ressemblances avec la commutation de banques, une technique qu'on verra dans les chapitres sur l'espace d'adressage et la mémoire virtuelle. Mais ce n'en est pas du tout : le registre de page est utilisé uniquement pour les accès mémoire avec le mode d'adressage base + décalage, mais pas pour les autres accès mémoire, qui gèrent des adresses complètes. Notons que l'usage d'un registre de page dédié fait que celui-ci est adressé implicitement.
Il faut noter que la technique a été utilisée sur des processeurs 16 bits, pour contourner la petite taille des instructions. Un exemple est celui du HP 2100, un processeur 16 bits. Il avait un registre de page de 5 bits et encodait 10 bits d'adresse dans ses instructions. Ses instructions d'accès mémoire disposaient d'un bit qui choisit quel mode d'adressage utiliser. S'il était à 0, l'adressage absolu était utilisé, le registre de page n'était pas utilisé. Mais s'il était à 1, le registre de page était utilisé pour calculer l'adresse.
Une évolution de l'adressage précédent est le '''mode page direct'''. Avec lui, le registre de page est étendu et contient une adresse mémoire complète. L'adresse finale n'est pas obtenue par concaténation, mais en additionnant le registre de page avec l'adresse fournie par adressage absolu + décalage. Un exemple est celui des premiers processeurs Motorola, qui géraient des adresses courtes de 8 bits. L'adresse courte de 8 bits correspondait non pas aux 256 premiers octets de la mémoire, mais à une fenêtre de 256 octets déplaçable en mémoire. La position de la fenêtre de 256 octets était spécifiée par le registre de page de 16 bits, qui précisait l'adresse du début de la fenêtre, celle de sa première donnée.
Il s'agit donc formellement d'adressage base + décalage, à un détail près : il n'y a qu'un seul registre de base. Le fait que ce registre de base soit unique fait qu'il est adressé implicitement, on n'a pas à encoder le numéro/noms de registre dans l'instruction. Le registre de base est utilisé uniquement pour l'adressage absolu, pas pour les autres accès mémoire. S'il y a des ressemblances avec la segmentation, une technique de mémoire virtuelle qu'on abordera dans quelques chapitres, ce n'en est pas vu que le registre de base est utilisé seulement pour un mode d'adressage bien précis.
===Le ''pseudo-aliasing'' des registres des processeurs Intel x86===
Voyons maintenant le cas des anciens processeurs 8 bits d'Intel à savoir l'Intel 4004, 4040, 8008 et 8080. Le Z80, un processeur inspiré des CPU Intel 8 bits, est aussi concerné. Avant de poursuivre, parlons des registres de ces processeurs. Les premiers CPU Intel incorporaient 7 registres de 8 bits nommés A, B, C, D, E, F, H, L, SP. Ils correspondent respectivement à : l'accumulateur A ; six registres nommés B, C, D, E, H et L ; le registre d'état F ; le pointeur de pile SP. Le Z80 ajoute deux registres d'indice X et Y. De plus, le Z80 dispose de registres d'interruption, qui sont en quelque sorte des copies des registres A, B, C, D, E, F, H, L. Le tout est illustré dans le tableau ci-dessous.
{|class="wikitable" style="text-align:center;"
|-
!
! Registres des CPU Intel
! Registres supplémentaires du Z80
|-
! Accumulateur
| A
| A'
|-
! Registre d'état
| F
| F'
|-
! Registres généraux
| B, C, D, E, H, L
| B', C', D', E', H', L'
|-
! Pointeur de pile
| colspan="2" | SP (sauf pour le 8008)
|-
! Registres d'indice
|
| X et Y
|}
Le 8008 incorpore une pile d'appel de 7 adresses, dans le processeur lui-même. Il en est de la même avec le 4004 et le 4040, comme on le verra dans la section sur les processeurs 4 bits. Mais le 8080 et le 8085 ont remplacé le tout par un simple pointeur de pile, afin d'avoir une véritable pile d'appel. Autant c'est impossible d'avoir une pile d'appel avec seulement 256 octets de mémoire, autant on peut se le permettre avec 65 536 adresses.
Pour gérer des adresses de 16 bits, ils auraient pu utiliser des registres d'adresse séparés, mais on préféré un système de '''pseudo-''aliasing'' de registres'''. Formellement, c'est un système qui concatène deux registres 8 bits pour obtenir une adresse de 16 bits. L’appariement a lieu lors de certaines opérations bien précises, qui n'ont de sens que pour les adresses : la lecture/écriture en mémoire, et l'incrémentation.
Il y avait cependant des contraintes quant aux paires de registres possibles, toutes les paires de registres n'étaient pas autorisées. Les CPU concernés sont donc des processeurs hybrides accumulateur-registre généraux. L'accumulateur ne peut pas être appairé, seuls les registres généraux le peuvent. Le Z80 autorise plus de paires que les CPU Intel. Voici les paires de registres qui pouvaient servir d'adresse 16 bits :
* Les CPU 8008 d'Intel autorisait une seule paire formée des registres H et L.
* Les autres processeurs, à savoir le 8080, le 8085 et le Z80, autorisaient : les paires BC, DE et HL.
Le 8008 ne gérait que des opérations sur 8 bits. Mais le 8080 et le 8085 ont ajouté des instructions 16 bits qui agissaient sur des paires de registre, que le Z80 a repris. Une paire de registres est considérée comme un registre unique de 16 bits pour certaines opérations arithmétiques, dont l'incrémentation. Voici la liste des instructions concernées :
* INC et DEC pour l'incrémentation et la décrémentation ;
* DAD : additionne le registre HL avec une autre paire (Hl inclus) ;
* LXI : copie une constante immédiate dans une paire de registres ;
* LHLD : lit 16 depuis la mémoire et l'enregistre dans une paire de registres ;
* SHLD : copie 16 bits depuis une paire de registres et l'enregistre en mémoire ;
* PUSH et POP : empile ou dépilent une paire de registre sur la pile ;
* XTHL : échange la paire HL avec les 16 bits au sommet de la pile d'appel ;
* XCHG : échange le contenu de la paire HL et DE.
Pour résumer, le processeur avait des instructions LOAD, STORE, PUSH et POP adaptées pour gérer des paires de registre. De plus, l'instruction XCHG permettait d’échanger le contenu des paires DE et HL. L'instruction a été étendue sur les processeurs 16 bits pour échanger tous les registres. Mais l'implémentation était alors différente. L'incrémentation sur une paire de 16 bit était très utile, car les adresses sont souvent incrémentées quand on parcours un tableau. Ces instructions nous donnent quelques indices sur ce qu'il y a dans le processeur.
Le système de pseudo-aliasing a un impact sur le banc de registre. Le banc de registre regroupe les registres généraux et le pointeur de pile, mais ne contient pas l'accumulateur. Les contraintes sur les paires de registres possibles ne s'expliquent que d'une seule manière : le banc de registre contient des registres de 16 bits, une paire de registres 8 bits est mémorisée dans un registre unique. Il faut donc faire une différence entre les registres architecturaux de 8 bits, et les registres réels de 16 bits.
Le banc de registre a un port de 8 bits pour les données, qui est fabriqué à partir d'un port 16 bits auquel on a rajouté un multiplexeur pour choisir soit l'octet de poids faible, soit l'octet de poids fort. Le bus de données fait 8 bits, ce qui fait que les instructions LOAD, STORE, PUSH et POP pour paires 16 bits sont réalisées en deux fois : on lit/écrit l'octet de poids faible, puis celui de poids fort. Par contre, le bus d'adresse fait bien 16 bits. Cela suggère que le banc de registre dispose d'un port de 16 bits dédié aux adresses, en plus du port de données 8 bits.
[[File:Architecture d'un CPU 8-16 bits avec un banc de registre double port.png|centre|vignette|upright=2|Architecture d'un CPU 8-16 bits avec un banc de registre double port]]
L'incrémentation d'une paire 16 bits ne coute rien à implémenter, ou presque. En effet, le processeur incorpore un incrémenteur 16 bits pour le ''program counter'', qui est relié au bus d'adresse. L'idée est de rentabiliser cet incrémenteur, en lui permettant d'incrémenter des données/adresses de 16 bits obtenues via pseudo-aliasing. De même, il peut être utilisé pour incrémenter le pointeur de pile, voire un compteur de rafraichissement mémoire (pour rappel, le rafraîchissement mémoire demande de balayer la mémoire d'adresse en adresse et été fait par le CPU à l'époque). Pour cela, il suffit de connecter le ''program counter'', le banc de registre, et l'incrémenteur, via un bus dédié.
[[File:Calcul d'adresse par ALU dédiée avec PC séparé.png|centre|vignette|upright=2|Calcul d'adresse par ALU dédiée avec PC séparé]]
Notez qu'on peut encore simplifier le tout en placant le ''program counter'' dans le banc de registre, ce qui ne gênera pas le travail de l'incrémenteur mais simplifiera le câblage au bus d'adresse. Ce n'était pas systématique, certains processeurs mettaient le ''program counter'' dans le banc de registre, d'autres non.
: Inclure le ''program counter'' dans le banc de registre permet parfois de remplir un vide. Par exemple, sur un processeur avec 12 registres, le banc de registre devrait faire idéalement 16 registres, inclure le ''program counter'' dedans fait monter le tout à 13.
[[File:Architecture d'un CPU 8-16 bits.png|centre|vignette|upright=2|Architecture d'un CPU 8-16 bits]]
Les processeurs Intel 8 bits, à savoir le 8008, le 8080 et le 8085 ; mettaient le ''program counter'' dans le banc de registre. Vous avez donc toutes les armes pour comprendre leur micro-architecture. Par exemple, voici la micro-architecture du processeur 8080. Remarquez le banc de registre, qui contient tous les registres sauf l'accumulateur et le registre. Il a deux ports : un pour les adresses et un pour les données. Notez le dé-multiplexeur sur le port de donnée. Pour le reste, il s'agit d'une architecture à accumulateur hybride des plus classiques.
[[File:Intel 8080 arch.svg|centre|vignette|upright=3|Microarchitecture de l'Intel 8080.]]
Le Z80 est un processeur inspiré du design des processeurs Intel 8 bits, mais avec pas mal d'améliorations. Un point particulier de ce processeur est son banc de registre. Il contient tous les registres du processeur, y compris l'accumulateur et le registre d'état ! Les seuls registres en-dehors du banc de registre sont le ''program counter'' et un compteur de rafraichissement mémoire IR.
Un autre point particulier est que les registres dans le banc de registres avaient une copie séparée accessible uniquement pour les interruptions, via fenêtrage de registres. Et l'accumulateur et le registre d'état étant dans le banc de registre, il y avait deux accumulateurs et deux registres d'état. Les registres A, B, C, D, E et F étaient dupliqués, par le pointeur de pile ni les registres d'indice. Les copies des registres étaient nommées A', B', C', D', E' et F'.
Le Z80 supportait des instructions d'échange de registre en plus des CPU Intel 8 bits. L'instruction EX peut échanger soit le contenu des paires D,E et H,F, soit la paire A,F avec la paire A',F'. L'instruction EXX échange les paires BC, DE, HL avec les paires BC', DE', HL'. En faisant cela, le programmeur pouvait utiliser deux fois plus de registres généraux s'il n'utilisait pas les interruptions. L'échange de paires se fait sans copies de registres, mais simplement en modifiant l'adresse envoyée sur le banc de registre. Pour cela, plusieurs bascules mémorisent des bits qui indiquent si les paires ont été échangées ou non. Il y a une bascule pour les paires DE , HL ; une autre pour les paires A,F et paire A',F', une dernière pour l'instruction EXX. En combinant ces bascules avec les noms de registres envoyés par le séquenceur, on peut échanger les paires de registres.
==Le cas particulier des processeurs 4 bits : le 4004 d'Intel==
L'Intel 4004 était le tout premier micro-processeur. Il s'agissait d'un microprocesseur de 4 bits, basé sur une architecture à accumulateur. Il disposait d'un accumulateur et de 16 registres d'indice, tous de 4 bits. Il faisait des calculs sur des données de 4 bits, appelées des nibbles. Cependant, sur ses 46 instructions machines supportées, 41 agissaient sur des opérandes de 8 bits, les 5 restantes sur des opérandes de 16 bits. Simplement, les calculs se faisaient en deux fois, en échangeant des données entre mémoire RAM et accumulateur.
Le 4004 est un circuit intégré avec peu de broches. Il dispose notamment d'un bus de données/adresse, qui est multiplexé, c’est-à-dire qu'il sert alternativement de bus de données et de bus d'adresse selon les besoins. Le bus de commande mémoire fait 5 bits, dont 4 pour les chips de RAM, un pour la ROM. Les adresses sont codées sur 12 bits, les données sur 4 et les instructions sur 8 bits. L'envoi d'une adresse sur le bus se fait en plusieurs fois, de même que la lecture d'une instruction. Il s'agit là d'une adaptation pour outrepasser les limitations d'un processeur 4 bit.
[[File:Intel 4004 processor pinout.png|centre|vignette|upright=2|Broches de l'Intel 4004. Nous verrons à quoi elles servent plus bas.]]
===L'espace d'adressage de l'Intel 4004===
Les adresses du processeur sont sur 12 bits, ce qui fait 4096 adresses différentes. Elles regroupent à la fois la ROM et la mémoire RAM, vu que l'architecture est une sorte de mélange bizarre entre une architecture Von Neumann et Harvard. Le processeur gère bien deux espaces d'adressage séparés, mais la RAM et la ROM sont reliés au même bus. La sortie CM-ROM du processeur indique si l'adresse envoyée correspond à la RAM ou la ROM. Un circuit de décodage d'adresse active ou désactive la RAM selon la valeur de ce bit, l'inverse pour la ROM, en agissant sur leurs bits Chip Select. Seule la RAM ou la ROM répondent alors à l'adresse.
Pour ce qui est de la RAM, le circuit de décodage d'adresse pouvait gérer au maximum 1024 adresses différentes, chacune contenant un nibble. Pour cela, le CPU 4004 était relié à une ou plusieurs RAM externes, des Intel 4002. Chaque Intel 4002 contenait 64 nibbles de données, plus 16 nibbles de statut qu'on ne détaillera pas ici. Les nibbles de statut étaient accessibles en utilisant des instructions d'entrée-sortie, donc pas avec des lectures/écritures mémoire. Les 64 nibbles de données sont découpés en 4 groupes de 16 nibbles. Le CPU pouvait être relié à maximum 16 Intel 4002, ce qui fait 1024 nibbles de données et 256 nibbles de statut. L'ensemble permet de remplir l'espace d'adressage de 1024 adresses.
===Le registre de page et le pseudo-aliasing des registres===
Sélectionner une adresse mémoire utilisait un mélange entre pseudo-aliasing et registre de page. Pour les données, les 1024 adresses étaient découpées en 4 pages de 256 adresses. Pour la ROM, les 4096 adresses étaient découpées en 16 pages de 256 adresses. Localiser une donnée dans une page ne requiert que 8 bits, 2/4 bits supplémentaires permettent de sélectionner la page voulue. Le registre de page était dans le processeur lui-même, et était relié aux sorties du processeur nommées CM-RAM 0, 1, 2 et 3. Les 4 sorties encodaient un nombre qui permet de sélectionner le numéro de page voulu.
Le registre de page fait 5 bits : un pour distinguer RAM et ROM, 4 bits pour sélectionner la page voulue. L'avantage est que la carte mère gère au maximum 16 chips de RAM, ce qui colle parfaitement avec les 4 utilisés pour sélectionner une page. Un chip de RAM correspond à une page, et chacun est activé ou désactivé suivant la page sélectionnée. Pour cela, il suffit d'ajouter un décodeur sur la carte mère, qui prend les 4 bits du registre de page et fournit les signaux Chip Select aux différents chips de RAM.
Reste alors à utiliser les 8 bits d'adresse à l'intérieur d'un chip de RAM. Le 4004 permettait de concaténer deux registres d'indice de 4 bits pour former une adresse de 8 bits. Les instructions d'accès mémoire pouvaient ainsi préciser une paire de registre d'indice pour préciser quelle adresse lire/écrire. Idem pour les branchements indirects : le processeur supportait une instruction de branchement indirect qui précisait l'adresse dans une paire de registres d'indice. Les registres d'indice sont donc assez mal nommés sur cette architecture, vu qu'ils peuvent servir soit de registre d'indice, soit de demi-registre d'adresse. Il s'agit là du système de pseudo-aliasing des registres, mais appliqué aux registres d'indice.
L'Intel 4004 gérait deux instructions pour gérer les adresses mémoires. La première, l'instruction DCL (''Designate Command Line'') configure le registre de page. Elle prend en entrée un numéro de page et le copie dans le registre de page. L'opérande peut provenir d'un registre d'indice ou de l'accumulateur. La seconde, l'instruction SRC (''Send Register Control'') concatène deux registres d'indice pour obtenir une adresse de 8 bits. Un accès mémoire se fait donc en maximum trois instructions : une qui configure le registre de page si ce n'est pas déjà fait, une instruction SRC pour envoyer l'adresse, et une troisième instruction qui dit s'il faut faire une lecture ou une écriture.
===La microarchitecture de l'Intel 4004===
Il incorporait une pile d'adresse de retour intégrée au processeur. La pile d'adresse acceptait exactement 3 adresses maximum. Elle était regroupée avec le ''program counter'' dans un banc de registre, de 4 registres. Le ''program counter'' et le pointeur de pile faisaient chacun 12 bits, soit trois nibble. Ils étaient incrémentés par un incrémenteur dédié.
SI on omet le registre de page et la pile d'adresse, le 4004 est une architecture à accumulateur des plus classiques, avec un bus interne unique, un banc de registre pour les registres d'indices, un accumulateur relié à une unité de calcul. Les registres d'indice étaient dans un banc de registre séparés, car ils faisaient 4 bits chacun, contrairement au pointeur de pile et le ''program counter''. Un détail important est que les bancs de registres du 4004 étaient implémentés avec de la DRAM, et non des registres usuels fabriqués avec des bascules 1 bit.
[[File:Microarchitecture de l'Intel 4004.png|centre|vignette|upright=2.5|Microarchitecture de l'Intel 4004]]
<noinclude>
{{NavChapitre | book=Fonctionnement d'un ordinateur
| prev=Les architectures à pile et mémoire-mémoire
| prevText=Les architectures à pile et mémoire-mémoire
| next=Les processeurs de traitement du signal
| nextText=Les processeurs de traitement du signal
}}
</noinclude>
gbxx5yatxt2znim7qmtot296ov40ena
765716
765715
2026-05-01T19:27:33Z
Mewtow
31375
/* Les microcontrôleurs Intel 8051/8031 */
765716
wikitext
text/x-wiki
Nous avons déjà abordé la notion de processeur 8, 16, 32, 64 bits. Elle désigne la taille des registres généraux, ou de l'accumulateur. De nos jours, les processeurs 32 et 64 bits sont la norme, mais les premiers micro-processeurs étaient des processeurs 4 et 8, avant de passer rapidement au 16 bits. La raison est que leur budget en transistor limité faisait qu'on ne pouvait pas utiliser une ALU trop grande : une ALU 8 bit prend deux fois moins de place et de transistors qu'une ALU 16 bits. Cependant, les processeurs 8 bits avaient de sérieuses limitations qui étaient compensées par diverses solutions. Dans ce chapitre, nous allons faire une revue rapide des processeurs 8 bits et de leurs fonctionnalités.
La principale limitation des CPU 8 bits était l'adressage : des registres de 8 bits limitaient l'espace d'adressage à seulement 256 adresses, soit à peine 256 octets ! Intuitivement, on se dit que 256 octets est purement impraticable, on ne peut rien faire d'intéressant avec seulement 256 de RAM + ROM. Et c'est partiellement vrai. L'adage veut que 16 bits est la taille minimale intéressante, la limite à partir de laquelle on a assez de mémoire RAM/ROM pour coder des applications intéressantes. Mais 256 octets de RAM est largement suffisant sur de nombreux systèmes embarqués simples s'en accommodent : des caisses enregistreuses, des systèmes de régulation de feu de circulation, etc.
Pour les applications demandant plus de mémoire RAM, les CPU de l'époque contournaient la limitation de 256 octets de RAM avec de nombreux stratagèmes. Dans ce qui va suivre, nous allons séparer les CPU 8 bits selon qu'ils utilisent une architecture Harvard ou une architecture Von Neumann. La raison est qu'une architecture Harvard permet en soi de contourner partiellement ce problème d'adressage. Les choses sont plus compliquées avec une architecture Von Neumann.
==Les processeurs 8/16 bits à architecture Harvard ==
La première solution est d'utiliser une architecture Harvard. Le processeur 8 bit a alors deux espaces d'adressage : un pour la RAM, un autre pour la ROM. Et les deux utilisent des adresses de taille différente. La ROM est reliée à un bus d'adresse de 16 bits, alors que la RAM est elle connectée à un bus d'adresse de 8 bits. La RAM est donc limitée à 256 octets, alors que la ROM peut monter jusqu'à 64 kibioctets. Mine de rien, faire ainsi est largement suffisant.
Pour encore améliorer la situation, il est possible d'utiliser une architecture Harvard modifiée, qui permet de lire des données depuis la mémoire ROM. Cela réduit encore plus les besoins en mémoire RAM. Les constantes manipulées par le programme sont mémorisées en ROM, lues depuis la ROM, au lieu d'être chargées en RAM. Avec ce genre de stratagèmes, 256 octets de RAM est largement suffisant sur de nombreux systèmes, à condition qu'on ait assez de ROM pour coder un programme digne de ce nom. Par exemple, de nombreux systèmes embarqués simples s'en accommodent : des caisses enregistreuses, des systèmes de régulation de feu de circulation, etc.
Les processeurs 8 bits intègrent parfois les 256 octets de RAM directement dans le processeur, dans le banc de registres ! Beaucoup en implémentaient moins, avec par exemple seulement 64 octets de RAM, ou 32 octets, ou 128 octets. L'avantage est que cela élimine le bus pour les données, ce qui économise beaucoup de broches sur le circuit intégré du CPU. Et pour les applications demandant plus de RAM, on pouvait ajouter un circuit séparé qui permettait d'adresser une RAM plus grande. Et c'est ce qui explique que cette solution est beaucoup utilisée sur les microcontrôleurs peu puissants. Les exemples qui vont suivre devraient vous convaincre.
: Les processeurs de ce type implémentent des optimisations pour adresser plus de 256 octets de RAM. La plus connue est la commutation de banques. Mais nous n'avons pas encore abordé celle-ci, et il faudra attendre le chapitre sur l'espace d'adressage pour cela.
===Les microcontrôleurs PIC===
Les '''microcontrôleurs PIC''' regroupent des microcontrôleurs allant de microcontrôleurs 8 bits aux performances très faible, à des microcontrôleurs 32 bits bien plus puissants. Les microcontrôleurs PIC sont très utilisés dans l'embarqué ou d'informatique industrielle. Ils sont vendu à des volumes assez impressionnants, plusieurs millions par an. Et si vous avez ou êtes en train de faire des études d'électronique, je parie que vous les avez déjà vu en classe, ou que ce ne saurait tarder. Dans ce qui suit, nous allons nous concentrer sur les microcontrôleurs PIC 8 bits, à savoir les PIC 16, 16 et 18. Les PIC 24, qui sont des microcontrôleurs 16 bits, ne seront pas abordés.
Les microcontrôleurs PIC 8 bits sont une architecture Harvard, comme dit plus haut. Il y a aussi des registres pour les entrées et sorties. Les registres d'entrée-sortie permettent de lire ou écrire sur un port d'entrée-sortie ou de lire un ''timer''. En clair, les PIC ont un espace d'adressage séparé pour les entrées-sorties.
La mémoire ROM des PIC va de 1024 instructions à 4096 instructions. En comparaison, la mémoire RAM des microcontrôleurs PIC ne peut pas dépasser 256 adresses, et elle est encore plus petite en pratique sur certains modèles. Pour donner un exemple, le PIC16F84 a une RAM composée de 68 "registres" de 8 bits. Le terme "registres" devrait vous faire tiquer, mais c'est bien le terme utilisé dans la documentation des PIC. Et il faut admettre que la différence entre banc de registre et SRAM intégrée est floue, mais nous expliquerons pourquoi dans quelques paragraphes.
: Les PIC 18 peuvent adresser plus de 256 octets de RAM en utilisant la commutation de banques, une technique qui sera abordée dans plusieurs chapitres.
[[File:DocPIC16F84 3.png|centre|vignette|upright=3|Espaces d'adressage du PIC16F84.]]
Un détail est que la SRAM n'a qu'un seul port qui sert à la fois pour les lectures et écritures. Pour compenser, les PIC sont des architectures à accumulateur, où une opérande est lue depuis la SRAM, l'autre depuis l'accumulateur. Leur implémentation de l'accumulateur ajoute une petite subtilité : le résultat d'une opération arithmétique peut être enregistré ailleurs que dans l'accumulateur. Le résultat peut aussi remplacer la seconde opérande, celle lue en mémoire RAM. Dit autrement, le résultat est enregistré dans l'adresse mémoire source. Les instructions de calcul ont le choix : un bit dans leur encodage précise où enregistrer le résultat.
{|
|-
|[[File:DocPIC16F84 4.png|centre|vignette|upright=2|Microarchitecture simplifiée d'un microcontroleur PIC (ici, un 16F84).]]
|[[File:DocPIC16F84 5.png|centre|vignette|upright=2|Microarchitecture simplifiée d'un microcontroleur PIC (ici, un 16F84), avec les branchements directs.]]
|}
Outre l'accumulateur, les PIC disposent de registres de contrôle, d'un ''program counter'', d'un registre d'état, et d'un pointeur de pile. Un détail très important est que les registres sont mappés en mémoire, à quelques exceptions près ! En clair, on peut y accéder en lisant/écrivant à une adresse mémoire bien précise. Les seules registres qui ne sont pas mappés en mémoire sont l'accumulateur, les registres d'entrée-sortie, et la pile d'adresses de retour intégrée au processeur (voir plus bas). Par exemple, sur les modèles 16F, l'espace d'adressage fait 128 octets, dont 32 sont réservés aux registres du processeur, ce qui fait que seules 96 octets sont adressables comme de la RAM. Mais les 128 octets sont un seul et unique SRAM dans le processeur. Ce qui explique qu'il est difficile de séparer banc de registre et RAM principale sur ce processeur : les deux sont fusionnées !
: Les modèles PIC 17 ont rendu l'accumulateur mappé en mémoire RAM !
[[File:DocPIC16F84.png|centre|vignette|upright=2|DocPIC16F84]]
La petite taille de la ROM d'un PIC n'est pas une surprise. Les architectures 8 bits sont conçues pour ne pas utiliser beaucoup de transistors et être très simples. Aussi, utiliser une petite ROM est nécessaire. Mais il faut aussi adapter le jeu d'instruction, pour qu'il ait une bonne densité de code. Par exemple, il faut faire en sorte d'avoir des instructions assez courtes. Si les instructions font 16 bits au lieu de 32, on divise par deux le nombre de transistors nécessaire pour la mémoire ROM. La conséquence est que le jeu d’instruction des PIC est adapté à cette contrainte.
Les microcontrôleurs PIC utilisent un jeu d'instruction propriétaire, dont les instructions sont très petites. Les premières versions du jeu d'instruction utilisaient des instructions codées sur 12 bits, dont 5 pour l'adresse mémoire de la seconde opérande. Pour les branchements, 3 bits étaient utilisés pour l'opcode, 9 pour l'adresse de destination. Par la suite, les instructions ont été étendues à 13 bits sur les PIC1670, puis à 14, 15 et 16 bits. Les adresses ont alors été élargies, ce qui permet d'adresser en peu plus de mémoire RAM.
Il est intéressant de regarder comment les PIC font pour obtenir des instructions aussi courtes. Premièrement, le fait d'utiliser une architecture à accumulateur, couplé à une RAM très petite aident grandement. Les architectures à accumulateur ont besoin de préciser un opcode et une adresse mémoire pour chaque instruction, pas besoin de préciser de noms de registres ni le mode d'adressage. La taille des adresses mémoire est censé être un problème pour la densité de code, mais les adresses d'un processeur 8 bits font 8 bits. On peut alors avoir un jeu d'instruction étoffé, en utilisant des instructions 16 bits, qui concatènent un opcode et une adresse mémoire, d'un octet chacun.
Mais d'autres optimisations permettent d'avoir une bonne densité de code. Les PIC ont des branchements pour les appels et retour de fonction. Les PIC incorporent une pile d'appel de retour, qui fait 2 à 8 adresses suivant les modèles. Elle permet d'économiser quelques registres, car la pile d'appel n'est pas mappé dans l'espace d'adressage, elle n'est pas adressable. On économise ainsi 2 à 8 registres, sur 32-256 registres. De plus, cela simplifie l'encodage des instructions d'appel/retour de fonction, qui n'ont pas à préciser où enregistre l'adresse de retour.
Les PIC n'ont pas d'instructions de branchement conditionnels, ils font avec une SKIP instruction et des branchements inconditionnels. Du moins, c'est le principe, car si vous regardez la liste des instructions ci-dessous, vous verrez qu'il n'y a pas d'instruction SKIP. A la place, les instructions SKIP sont fusionnées avec d'autres instructions. Elles sont notamment fusionnées avec les instructions d'incrémentation et de décrémentation. Les PIC supportent une incrémentation normale, une décrémentation normale, une décrémentation fusionnée avec une instruction SKIP, et une incrémentation fusionnée avec une instruction SKIP. Les deux dernières incrémentent/décrémentent l'accumulateur et SKIP l'instruction suivante si le résultat est zéro. Elles permettent de fortement simplifier l'implémentation des boucles qui s'exécutent tant que leur compteur atteint zéro.
Les PIC disposent aussi d'instructions de manipulation de bit, pour tester/masquer un bit dans une opérande, 4 en tout. Il y a en a 4 en tout : mettre à 0, mettre à 1, tester si bit = 1, tester si bit = 0. Les instructions qui testent un bit prennent leur opérande dans l'accumulateur. Elles font le test du bit et décident s'il faut skipper l'instruction suivante ou non. Il y a aussi deux instructions de rotation à gauche et droite, qui tiennent compte de la retenue mémorisée dans le registre d'état. Par contre, il n'y a pas d'instructions de décalages, qui peuvent être émulées avec une rotation suivie d'un ET bit à bit. Mentionnons aussi une instruction pour inverser deux ''nibbles'' dans un octet.
Les modèles haute performance ajoutent des instructions d'addition avec retenue entrante, idem pour la soustraction. De telles instructions ssont très utiles pour faire des additions/soustractions sur des opérandes de 16 bits. Le processeur a beau être un CPU 8 bits, il peut être utilisé pour faire des calculs 16 bits, la performance est alors amoindrie, mais ce n'est pas un problème pour les applications d'un tel microcontroleur.
Les modèles intiaux, comme les PIC 10 et 12, ne supportaient pas les interruptions, mais c'est chose réglé sur les modèles plus récents. Ils ont même des registres séparés pour les interruptions et les programmes normaux. De plus, ils intégrent nativement un ''watchdog timer''.
{|class="wikitable" style="text-align:center"
|+ Jeu d'instruction des dodèles PCI 16
|-
! colspan="5" | Instructions diverses
|-
| colspan="3" | 00 0000 0000 0000 || NOP || Ne fait rien
|-
| colspan="3" | 00 0000 0000 1000 || RETURN || Instruction de retour pour une fonction
|-
| colspan="3" | 00 0000 0000 1001 || NOP || Instruction de retour pour une interruption
|-
| colspan="3" | 00 0000 0110 0011 || SLEEP || Mise en veille
|-
| colspan="3" | 00 0000 0110 0100 || CLRWDT || RESET le ''watchdog timer'', intégré dans le PIC
|-
! colspan="5" | Instructions de manipulation de bit
|-
| 0100 || Position du bit dans l'opérande || Adresse mémoire || BCF || Met le bit à 1
|-
| 0101 || Position du bit dans l'opérande || Adresse mémoire || BSF || Met le bit à 0
|-
| 0110 || Position du bit dans l'opérande || Adresse mémoire || BTFSC || Teste si le bit adressé est à 1
|-
| 0111 || Position du bit dans l'opérande || Adresse mémoire || BTFSS || Teste si le bit adressé est à 0
|-
! colspan="5" | Branchements
|-
| colspan="2" | 100 || Adresse mémoire || CALL || Appel de fonction
|-
| colspan="2" | 100 || Adresse mémoire || GOTO || Branchement inconditionnel
|-
! colspan="5" | Instructions logiques/arithmétiques avec opérande lue en mémoire RAM
|-
| colspan="5" | ''Le bit '''d''' dans l'opcode indique la destination : accumulateur ou adresse mémoire''.
|-
| colspan="2" | 0000001 || Adresse mémoire || MOVWF || Store (accumulateur vers destination)
|-
| colspan="2" | 000001d || Adresse mémoire || MOVWF || Met à zéro la destination (adresse ou registre)
|-
| colspan="2" | 000001d || Adresse mémoire || SUBWF || Soustraction
|-
| colspan="2" | 000010d|| Adresse mémoire || DECF || Décrémentation
|-
| colspan="2" | 000100d|| Adresse mémoire || IORWF || OU bit à bit
|-
| colspan="2" | 000101d|| Adresse mémoire || ANDWF || ET bit à bit
|-
| colspan="2" | 000110d || Adresse mémoire || XORWF || XOR bit à bit
|-
| colspan="2" | 000111d || Adresse mémoire || ADDWF VWF || Addition
|-
| colspan="2" | 001000d || Adresse mémoire || MOVF || LOAD
|-
| colspan="2" | 001001d || Adresse mémoire || COMF || NOT bit à bit
|-
| colspan="2" | 001010d || Adresse mémoire || INCF || Incrémentation
|-
| colspan="2" | 001011d || Adresse mémoire || DECFSZ || Décrémentation, puis instruction SKIP si résultat = 0
|-
| colspan="2" | 001100d || Adresse mémoire || RRF || Rotation à droite avec retenue entrante
|-
| colspan="2" | 001101d || Adresse mémoire || RLF || Rotation à gauche avec retenue entrante
|-
| colspan="2" | 001110d || Adresse mémoire || SWAPF || Echange deux ''niblle'' dans un octet
|-
| colspan="2" | 001111d || Adresse mémoire || INCFSZ || Incrémentation, puis instruction SKIP si résultat = 0
|-
! colspan="5" | Instructions logiques/arithmétiques avec constante immédiate
|-
| colspan="2" | 1100xx || Constante immédiate (8bits) || MOVLW || Copie constante dans accumulateur
|-
| colspan="2" | 1101xx || Constante immédiate (8bits) || RETLW || MOV fusionné avec un retour de fonction
|-
| colspan="2" | 111000 || Constante immédiate (8bits) || IORLW || OU
|-
| colspan="2" | 111001 || Constante immédiate (8bits) || ANDLW || ET
|-
| colspan="2" | 111010 || Constante immédiate (8bits) || XORLW || XOR
|-
| colspan="2" | 11110x || Constante immédiate (8bits) || SUBLW || Soustraction
|-
| colspan="2" | 11111x || Constante immédiate (8bits) || ADDLW || Addition
|}
Les PIC gèrent l'adressage absolu et immédiat, mais pas plus. L'adressage absolu, celui où l'adresse est intégrée dans l'instruction, est très simple à implémenter. Les adresses prennent moins d'un octet, vu que la taille de la RAM est très petite, les adresses sont très courtes, les intégrer dans des instructions elles-mêmes courtes n'est pas un problème. L'adresse est encodée sur 5 à 7 bits, selon le modèle, ce qui permet d'adresser entre 32 et 128 octets.
Les PIC ne supportent pas l'adressage indirect, mais peuvent l'émuler grâce à un '''registre d'adresse''' dédié. Il s'agit du registre FSR, qui mémorise l'adresse à lire/écrire. Il est possible de copier un pointeur dedans, qui provient soit de l'accumulateur, soit de la mémoire SRAM. Dans les deux cas, la donnée adressée est lue ou écrite dans un registre INDR, est un registre d’interfaçage rendu adressable. Le registre FSR est directement connecté sur le bus d'adresse.
Les modèles de base se débrouillent avec un registre FSR et un registre INDR, mais les modèles plus performants ont deux ou trois copies de chaque registre. Les modèles PIC18 ajoutent aussi des instructions LOAD/STORE qui émulent les modes d'adressage à post- ou pré-incrément/décrément, et le mode d'adressage "Base + Indice + Décalage", encore une fois en utilisant les registres FSR et INDR.
Avec tout ce qu'on vient de dire, vous devriez pouvoir comprendre la microarchitecture d'un PIC, qui est résumée dans ce schéma.
[[File:DocPIC16F84 all.png|centre|vignette|upright=2.5|Microarchitecture du PIC16F84.]]
===Les microcontrôleurs Intel 8051/8031===
Les microcontrôleurs Intel 8051/8031 sont des microcontrôleurs 8 bits, commercialisés par Intel. Elle contient un processeur 8/16 bits, de la mémoire ROM, une RAM de 128 à 256 octets, des ''timers'', et de nombreuses entrées-sorties. Il est relié à 4 ports sur lesquels il peut lire ou écrire 8 bits par port. Il contient aussi deux ''timers'' de 16 bits chacun, qui déclenchent des interruptions quand ils tombent à zéro ou à une valeur configurable. Il supporte des interruptions. L'ensemble utilise une architecture Harvard, contrairement à ce que pourrait faire croire le schéma ci-dessous.
[[File:Microcontroller 8051.gif|centre|vignette|upright=2.5|Microcontrôleur 8051]]
[[File:Pinagem8031.jpg|vignette|Broches du 8051.]]
Ils ont de nombreuses ressemblances avec les microcontrôleurs PIC. Le processeur est une architecture à accumulateur de 8 bits, ses registres sont mappés en mémoire RAM, il a un registre d'adresse dédié à l'adressage indirect, et j'en passe. Mais il y a quelques différences. La première est que le processeur supporte les opérations de multiplications et de divisions. Une autre particularité est que le processeur incorpore une unité de calcul de 1 bit. Elle permet de faire des opérations sur des bits, avec 17 instructions possibles au total. L'ALU de 1 bit est reliée à un accumulateur de 1 bit et 32 registres de 1 bits. Elle peut lire des opérandes de 1 bit en mémoire RAM, dans 144 adresses prédéterminées.
[[File:Intel 8051 arch.svg|centre|vignette|upright=2|Microarchitecture de l'Intel 8051.]]
===Le Fairchild F8 et la console de jeu Fairchild Channel F===
Un autre exemple est la Fairchild F8 de la défunte entreprise Fairchild Semiconductor. Il incorpore un processeur 8 bits, c'est à dire que le processeur fait des calculs sur des entiers de 8 bits maximum, une mémoire RAM de 64 octets, ainsi qu'une mémoire ROM de 1 kibioctet. Les 64 octets de RAM sont certes très peu, mais c'est suffisant pour certaines applications simples, comme les caisses automatiques de l'époque, ou des applications embarquées. Et de toute façon, il est possible d'ajouter de la mémoire RAM supplémentaire si les 64 octets de RAM intégrée ne suffisent pas. Le système était donc modulaire, adaptable selon les besoins, peu cher pour son implémentation minimale sans RAM en plus.
Vu qu'il s'agit d'un des tout premiers ordinateurs, il est sorti à une époque où la technologie était rudimentaire. À cette époque, le processeur était composé de pièces détachées qu'il fallait souder ensemble pour obtenir un processeur fonctionnel. Ce n'est que plus tard qu'est apparu le micro-processeur, qui regroupe un processeur complet dans un seul circuit intégré. Le résultat est que le processeur du Fairchild F8 est coupé en deux, l'unité de calcul et l'unité de contrôle sont placés dans des pièces détachées séparés.
Le microcontrôleur est composé de trois à quatre pièces détachées, certaines étant optionnelles. La première est le '''3850 CPU''', qui regroupe l'unité de calcul et la mémoire RAM intégrée. La seconde est le PSU (''3851 Program Storage Unit''), qui regroupe la mémoire ROM et l'unité de contrôle, ''program counter'' inclut. S'il y a besoin d'utiliser plus de RAM, il faut ajouter un circuit d’interface mémoire, qui est au choix le ''3852 Dynamic Memory Interface'' (DMI) ou le ''3853 Static Memory Interface'', le premier étant connecté à une mémoire de type DRAM, l'autre à une SRAM (nous verrons ce que sont les DRAM et les SRAM dans le prochain chapitre).
[[File:Fairchild F8.png|centre|vignette|upright=2|Fairchild F8]]
Le système minimal est composé d'un PSU et d'un 3850, sans les circuits d'interface mémoire. Le tout donne un système avec un processeur 8 bit, 64 octets de RAM et 1 kibioctet de ROM, les deux mémoires étant intégrées dans le "processeur". Le processeur gérait 4 entrées-sorties, chacune étant reliée avec un bus de 8 bit au processeur. Au passage, en 1977, Mostek a créé un microcontrôleur qui regroupe un PSU et un 3850 : le Mostek 3870. Le système minimal n'avait pas de bus d'adresse, vu que la RAM était intégrée au processeur. C'est les 3852 et 3853 qui ajoutaient un bus d'adresse. Ils ajoutent un bus d'adresse de 16 bits, ce qui permet d'adresser 64 kibioctets de RAM.
[[File:Fairchild-Channel-F.jpg|vignette|un Fairchild Channel F]]
Le Fairchild F8 a été utilisé dans la Fairchild Channel F, une des toute première console de seconde génération, à savoir des consoles qui utilisaient des cartouches de jeu. Avant les consoles de seconde génération, les consoles étaient non-programmables. Elles étaient conçues pour faire tourner un jeu précis, aucun autre, le jeu étant implémenté dans leurs circuits.
La Fairchild Channel F est composé du système minimal, auquel on a ajouté une carte son rudimentaire et 2 kibioctets de mémoire vidéo. La mémoire vidéo sert uniquement pour afficher des images à l'écran : on écrit l'image à afficher dedans, un circuit vidéo se charge de l'afficher à l'écran automatiquement. Le processeur ne fait qu'écrire dans cette RAM vidéo, il ne peut pas en lire le contenu. De la RAM supplémentaire peut cependant être ajoutée dans les cartouches de jeu.
===Le HP Nanoprocessor : un processeur sans ALU===
Un dernier exemple est celui du processeur HP Nanoprocessor, de l'entreprise HP. Il a été commercialisé en 1974, en même temps que les premiers micro-processeurs d'Intel. Tous les processeurs de l'époque étaient des processeurs 8 bits et le HP Nanoprocessor ne faisait pas exception. Ce n'était pas un processeur haute performance, il était destiné à des applications d'informatique industrielle ou embarquée. D'ailleurs, il utilisait des transistors de type metal-gate, peu performants, là où ses contemporains utilisait des transistors en silicium, plus performants.
Mais une caractéristique qui rend cela encore plus claire est qu'il n'y a pas d'ALU ! En effet, ce processeur est incapable de faire des additions, des soustractions ou autres opérations simples ! Il est cependant capable d'effectuer des incrémentations et décrémentations, des décalages, des opérations logiques comme des ET/OU/NON/XOR et bien d'autres. Il supporte en tout 48 instructions, avec un support limité des modes d'adressage indirects. Les instructions de branchement étaient des instructions SKIP, il n'y avait pas d'instructions de branchement généralistes.
Pour ce qui est des registres, il disposait de 16 registres de 8 bits et d'un accumulateur. Niveau mémoire, il était relié à une mémoire ROM, rien de plus. Il n'avait de RAM supplémentaire qu'on pouvait lui adjoindre, il devait se débrouiller avec seulement ses registres. Et cela ne posait pas de problèmes pour son usage. Seul le mode d'adressage indirect à registre est supporté, il n'y a pas de registres d'indices. Ce mode d'adressage permet de lire des données en mémoire ROM, la ROM pouvant contenir des tableaux de valeurs constantes.
: Il est possible de lui adjoindre de la RAM via les ports d'entrée-sortie, ainsi qu'une ALU, mais RAM et ALU sont traités comme des périphériques avec lesquels on communique, ils ne sont pas intégrés au processeur.
Niveau micro-architecture, il incorporait une unité de calcul logique et un circuit comparateur. Le comparateur était un circuit comparateur série des plus basiques, qui était utilisé pour les instructions de branchement et associées. L'unité de calcul logique gérait des incrémentations/décrémentation, des décalages, les opérations logiques et quelques autres. L'unité de calcul logique était bit-slicée, à savoir conçue en assemblant 8 ALU de 1 bit chacune, enchainées en série. Le tout était combiné à des circuits de ''carry skip''.
[[File:Unité de calcul du HP nanonprocessor.png|centre|vignette|upright=2|Unité de calcul du HP nanoprocessor]]
Son unité de décodage d'instruction était très simple, essentiellement basée sur des portes NOR, grâce à un encodage efficace des instructions machine. Le ''program counter'' fait 11 bits, ce qui permet d'adresser une ROM de 2 kibioctets. Le ''program counter'' était relié à un circuit incrémenteur qui gérait les isntructions SKIP (il pouvait incrémenter le ''program counter'' par pas de 1 ou de 2 en cas de SKIP). Le processeur contient aussi deux registres, qui servent en quelque sorte de pile d'adresse de retour. Un premier registre mémorise l'adresse de retour d'une fonction, l'autre mémorise le ''program counter'' lors d'une interruption, pour savoir où brancher à la fin de l'interruption.
[[File:HP nanoprocessor.png|centre|vignette|upright=2.5|HP nanoprocessor]]
Fait intéressant, le concepteur du processeur a gracieusement donné les masques utilisés pour graver le silicium du processeur au site [https://www.cpushack.com/ CPU Shack]. Les masques en question sont disponibles ici :
* [https://www.cpushack.com/2020/08/20/hp-nanoprocessor-mask-set/ HP NanoProcessor Mask Set]
* [https://www.cpushack.com/2020/08/09/the-forgotten-ones-hp-nanoprocessor/ The Forgotten Ones: HP Nanoprocessor]
Les masques ont été analysés par Ken Shirrif dans cet article de blog :
* [https://www.righto.com/2020/09/hp-nanoprocessor-part-ii-reverse.html HP Nanoprocessor part II: Reverse-engineering the circuits from the masks]
==Les processeurs 8/16 bits à architecture Von Neumann==
L'usage d'une architecture Harvard est une solution pour adresser plus de mémoire avec des CPU 8 bits. Mais plusieurs microprocesseurs commerciaux n'utilisaient pas cette solution. À la place, c'était des architectures Von Neumann, mais qui étaient capables de gérer des adresses de 16 bits. Les données faisaient 8 bits, les registres faisaient 8 bits, mais quelques techniques permettaient de gérer des adresses de 16 bits. Nous parlerons de '''processeurs 8/16 bits''' pour les désigner, et nous allons les étudier à part.
Un point important est que la gestion d'adresses de 16 bits permet d'adresser 64 kibioctets, qui peuvent être remplis avec de la RAM et de la ROM. On a donc le meilleur des mondes : 64 kibioctets de mémoire, mais avec des données de 8 bits et les économies de circuit qui vont avec. L'avantage est que le processeur peut maintenant gérer une vraie pile d'appel, pas seulement une pile d'adresse de retour. Il lui suffit pour cela d'intégrer un pointeur de pile codé sur 16 bits.
===Les modes d'adressage par page des CPU Motorola===
Les processeurs Motorola 8 bits étaient des processeurs 8 bits avec un bus d'adresse de 16 bits. C'était des processeurs à accumulateur incorporant deux registres d'indice, un registre d'état, un pointeur de pile, et un ''program counter''. Tous les registres sont reliés au bus d'adresse, sauf le registre d'état et l’accumulateur. Tous les registres font 8 bits, sauf le ''program counter''. La pile est câblée pour être dans un bloc de 256 octets compris entre l'adresse 1 0000 0000 et l'adresse 1 1111 1111, ce qui fait que son adressage se fait avec un seul octet.
[[File:6502-architecture.svg|centre|vignette|upright=1.5|Architecture simplifiée du 6502.</br> X et Y : registres d'indice ;</br> S : le pointeur de pile ;</br> A : accumulateur ;</br>P : registre d'état.</br>]]
Les processeurs Motorola 8 bits utilisaient une méthode simple pour adresser 64 kibioctets de RAM, avec des registres de 8 bits. Pour cela, ils utilisaient une variante de l'adressage base + décalage. Elle améliore l'adressage absolu, qui intègre l'adresse à lire/écrire dans l'instruction elle-même. L'adresse en question est de 8 bits et n'encode que les 8 bits de poids faible de l'adresse, les 8 bits de poids fort sont dans un '''registre de page''' adressé implicitement. L'adresse finale est obtenue en concaténant ce registre avec l'adresse mémoire intégrée dans l’instruction. Le résultat est que la mémoire était découpée en blocs de 256 consécutifs, chacun pouvant servir de fenêtre de 256 octets. Une page est réservée pour la pile, la seconde, comme dit plus haut.
Formellement, ce mode d'adressage a des ressemblances avec la commutation de banques, une technique qu'on verra dans les chapitres sur l'espace d'adressage et la mémoire virtuelle. Mais ce n'en est pas du tout : le registre de page est utilisé uniquement pour les accès mémoire avec le mode d'adressage base + décalage, mais pas pour les autres accès mémoire, qui gèrent des adresses complètes. Notons que l'usage d'un registre de page dédié fait que celui-ci est adressé implicitement.
Il faut noter que la technique a été utilisée sur des processeurs 16 bits, pour contourner la petite taille des instructions. Un exemple est celui du HP 2100, un processeur 16 bits. Il avait un registre de page de 5 bits et encodait 10 bits d'adresse dans ses instructions. Ses instructions d'accès mémoire disposaient d'un bit qui choisit quel mode d'adressage utiliser. S'il était à 0, l'adressage absolu était utilisé, le registre de page n'était pas utilisé. Mais s'il était à 1, le registre de page était utilisé pour calculer l'adresse.
Une évolution de l'adressage précédent est le '''mode page direct'''. Avec lui, le registre de page est étendu et contient une adresse mémoire complète. L'adresse finale n'est pas obtenue par concaténation, mais en additionnant le registre de page avec l'adresse fournie par adressage absolu + décalage. Un exemple est celui des premiers processeurs Motorola, qui géraient des adresses courtes de 8 bits. L'adresse courte de 8 bits correspondait non pas aux 256 premiers octets de la mémoire, mais à une fenêtre de 256 octets déplaçable en mémoire. La position de la fenêtre de 256 octets était spécifiée par le registre de page de 16 bits, qui précisait l'adresse du début de la fenêtre, celle de sa première donnée.
Il s'agit donc formellement d'adressage base + décalage, à un détail près : il n'y a qu'un seul registre de base. Le fait que ce registre de base soit unique fait qu'il est adressé implicitement, on n'a pas à encoder le numéro/noms de registre dans l'instruction. Le registre de base est utilisé uniquement pour l'adressage absolu, pas pour les autres accès mémoire. S'il y a des ressemblances avec la segmentation, une technique de mémoire virtuelle qu'on abordera dans quelques chapitres, ce n'en est pas vu que le registre de base est utilisé seulement pour un mode d'adressage bien précis.
===Le ''pseudo-aliasing'' des registres des processeurs Intel x86===
Voyons maintenant le cas des anciens processeurs 8 bits d'Intel à savoir l'Intel 4004, 4040, 8008 et 8080. Le Z80, un processeur inspiré des CPU Intel 8 bits, est aussi concerné. Avant de poursuivre, parlons des registres de ces processeurs. Les premiers CPU Intel incorporaient 7 registres de 8 bits nommés A, B, C, D, E, F, H, L, SP. Ils correspondent respectivement à : l'accumulateur A ; six registres nommés B, C, D, E, H et L ; le registre d'état F ; le pointeur de pile SP. Le Z80 ajoute deux registres d'indice X et Y. De plus, le Z80 dispose de registres d'interruption, qui sont en quelque sorte des copies des registres A, B, C, D, E, F, H, L. Le tout est illustré dans le tableau ci-dessous.
{|class="wikitable" style="text-align:center;"
|-
!
! Registres des CPU Intel
! Registres supplémentaires du Z80
|-
! Accumulateur
| A
| A'
|-
! Registre d'état
| F
| F'
|-
! Registres généraux
| B, C, D, E, H, L
| B', C', D', E', H', L'
|-
! Pointeur de pile
| colspan="2" | SP (sauf pour le 8008)
|-
! Registres d'indice
|
| X et Y
|}
Le 8008 incorpore une pile d'appel de 7 adresses, dans le processeur lui-même. Il en est de la même avec le 4004 et le 4040, comme on le verra dans la section sur les processeurs 4 bits. Mais le 8080 et le 8085 ont remplacé le tout par un simple pointeur de pile, afin d'avoir une véritable pile d'appel. Autant c'est impossible d'avoir une pile d'appel avec seulement 256 octets de mémoire, autant on peut se le permettre avec 65 536 adresses.
Pour gérer des adresses de 16 bits, ils auraient pu utiliser des registres d'adresse séparés, mais on préféré un système de '''pseudo-''aliasing'' de registres'''. Formellement, c'est un système qui concatène deux registres 8 bits pour obtenir une adresse de 16 bits. L’appariement a lieu lors de certaines opérations bien précises, qui n'ont de sens que pour les adresses : la lecture/écriture en mémoire, et l'incrémentation.
Il y avait cependant des contraintes quant aux paires de registres possibles, toutes les paires de registres n'étaient pas autorisées. Les CPU concernés sont donc des processeurs hybrides accumulateur-registre généraux. L'accumulateur ne peut pas être appairé, seuls les registres généraux le peuvent. Le Z80 autorise plus de paires que les CPU Intel. Voici les paires de registres qui pouvaient servir d'adresse 16 bits :
* Les CPU 8008 d'Intel autorisait une seule paire formée des registres H et L.
* Les autres processeurs, à savoir le 8080, le 8085 et le Z80, autorisaient : les paires BC, DE et HL.
Le 8008 ne gérait que des opérations sur 8 bits. Mais le 8080 et le 8085 ont ajouté des instructions 16 bits qui agissaient sur des paires de registre, que le Z80 a repris. Une paire de registres est considérée comme un registre unique de 16 bits pour certaines opérations arithmétiques, dont l'incrémentation. Voici la liste des instructions concernées :
* INC et DEC pour l'incrémentation et la décrémentation ;
* DAD : additionne le registre HL avec une autre paire (Hl inclus) ;
* LXI : copie une constante immédiate dans une paire de registres ;
* LHLD : lit 16 depuis la mémoire et l'enregistre dans une paire de registres ;
* SHLD : copie 16 bits depuis une paire de registres et l'enregistre en mémoire ;
* PUSH et POP : empile ou dépilent une paire de registre sur la pile ;
* XTHL : échange la paire HL avec les 16 bits au sommet de la pile d'appel ;
* XCHG : échange le contenu de la paire HL et DE.
Pour résumer, le processeur avait des instructions LOAD, STORE, PUSH et POP adaptées pour gérer des paires de registre. De plus, l'instruction XCHG permettait d’échanger le contenu des paires DE et HL. L'instruction a été étendue sur les processeurs 16 bits pour échanger tous les registres. Mais l'implémentation était alors différente. L'incrémentation sur une paire de 16 bit était très utile, car les adresses sont souvent incrémentées quand on parcours un tableau. Ces instructions nous donnent quelques indices sur ce qu'il y a dans le processeur.
Le système de pseudo-aliasing a un impact sur le banc de registre. Le banc de registre regroupe les registres généraux et le pointeur de pile, mais ne contient pas l'accumulateur. Les contraintes sur les paires de registres possibles ne s'expliquent que d'une seule manière : le banc de registre contient des registres de 16 bits, une paire de registres 8 bits est mémorisée dans un registre unique. Il faut donc faire une différence entre les registres architecturaux de 8 bits, et les registres réels de 16 bits.
Le banc de registre a un port de 8 bits pour les données, qui est fabriqué à partir d'un port 16 bits auquel on a rajouté un multiplexeur pour choisir soit l'octet de poids faible, soit l'octet de poids fort. Le bus de données fait 8 bits, ce qui fait que les instructions LOAD, STORE, PUSH et POP pour paires 16 bits sont réalisées en deux fois : on lit/écrit l'octet de poids faible, puis celui de poids fort. Par contre, le bus d'adresse fait bien 16 bits. Cela suggère que le banc de registre dispose d'un port de 16 bits dédié aux adresses, en plus du port de données 8 bits.
[[File:Architecture d'un CPU 8-16 bits avec un banc de registre double port.png|centre|vignette|upright=2|Architecture d'un CPU 8-16 bits avec un banc de registre double port]]
L'incrémentation d'une paire 16 bits ne coute rien à implémenter, ou presque. En effet, le processeur incorpore un incrémenteur 16 bits pour le ''program counter'', qui est relié au bus d'adresse. L'idée est de rentabiliser cet incrémenteur, en lui permettant d'incrémenter des données/adresses de 16 bits obtenues via pseudo-aliasing. De même, il peut être utilisé pour incrémenter le pointeur de pile, voire un compteur de rafraichissement mémoire (pour rappel, le rafraîchissement mémoire demande de balayer la mémoire d'adresse en adresse et été fait par le CPU à l'époque). Pour cela, il suffit de connecter le ''program counter'', le banc de registre, et l'incrémenteur, via un bus dédié.
[[File:Calcul d'adresse par ALU dédiée avec PC séparé.png|centre|vignette|upright=2|Calcul d'adresse par ALU dédiée avec PC séparé]]
Notez qu'on peut encore simplifier le tout en placant le ''program counter'' dans le banc de registre, ce qui ne gênera pas le travail de l'incrémenteur mais simplifiera le câblage au bus d'adresse. Ce n'était pas systématique, certains processeurs mettaient le ''program counter'' dans le banc de registre, d'autres non.
: Inclure le ''program counter'' dans le banc de registre permet parfois de remplir un vide. Par exemple, sur un processeur avec 12 registres, le banc de registre devrait faire idéalement 16 registres, inclure le ''program counter'' dedans fait monter le tout à 13.
[[File:Architecture d'un CPU 8-16 bits.png|centre|vignette|upright=2|Architecture d'un CPU 8-16 bits]]
Les processeurs Intel 8 bits, à savoir le 8008, le 8080 et le 8085 ; mettaient le ''program counter'' dans le banc de registre. Vous avez donc toutes les armes pour comprendre leur micro-architecture. Par exemple, voici la micro-architecture du processeur 8080. Remarquez le banc de registre, qui contient tous les registres sauf l'accumulateur et le registre. Il a deux ports : un pour les adresses et un pour les données. Notez le dé-multiplexeur sur le port de donnée. Pour le reste, il s'agit d'une architecture à accumulateur hybride des plus classiques.
[[File:Intel 8080 arch.svg|centre|vignette|upright=3|Microarchitecture de l'Intel 8080.]]
Le Z80 est un processeur inspiré du design des processeurs Intel 8 bits, mais avec pas mal d'améliorations. Un point particulier de ce processeur est son banc de registre. Il contient tous les registres du processeur, y compris l'accumulateur et le registre d'état ! Les seuls registres en-dehors du banc de registre sont le ''program counter'' et un compteur de rafraichissement mémoire IR.
Un autre point particulier est que les registres dans le banc de registres avaient une copie séparée accessible uniquement pour les interruptions, via fenêtrage de registres. Et l'accumulateur et le registre d'état étant dans le banc de registre, il y avait deux accumulateurs et deux registres d'état. Les registres A, B, C, D, E et F étaient dupliqués, par le pointeur de pile ni les registres d'indice. Les copies des registres étaient nommées A', B', C', D', E' et F'.
Le Z80 supportait des instructions d'échange de registre en plus des CPU Intel 8 bits. L'instruction EX peut échanger soit le contenu des paires D,E et H,F, soit la paire A,F avec la paire A',F'. L'instruction EXX échange les paires BC, DE, HL avec les paires BC', DE', HL'. En faisant cela, le programmeur pouvait utiliser deux fois plus de registres généraux s'il n'utilisait pas les interruptions. L'échange de paires se fait sans copies de registres, mais simplement en modifiant l'adresse envoyée sur le banc de registre. Pour cela, plusieurs bascules mémorisent des bits qui indiquent si les paires ont été échangées ou non. Il y a une bascule pour les paires DE , HL ; une autre pour les paires A,F et paire A',F', une dernière pour l'instruction EXX. En combinant ces bascules avec les noms de registres envoyés par le séquenceur, on peut échanger les paires de registres.
==Le cas particulier des processeurs 4 bits : le 4004 d'Intel==
L'Intel 4004 était le tout premier micro-processeur. Il s'agissait d'un microprocesseur de 4 bits, basé sur une architecture à accumulateur. Il disposait d'un accumulateur et de 16 registres d'indice, tous de 4 bits. Il faisait des calculs sur des données de 4 bits, appelées des nibbles. Cependant, sur ses 46 instructions machines supportées, 41 agissaient sur des opérandes de 8 bits, les 5 restantes sur des opérandes de 16 bits. Simplement, les calculs se faisaient en deux fois, en échangeant des données entre mémoire RAM et accumulateur.
Le 4004 est un circuit intégré avec peu de broches. Il dispose notamment d'un bus de données/adresse, qui est multiplexé, c’est-à-dire qu'il sert alternativement de bus de données et de bus d'adresse selon les besoins. Le bus de commande mémoire fait 5 bits, dont 4 pour les chips de RAM, un pour la ROM. Les adresses sont codées sur 12 bits, les données sur 4 et les instructions sur 8 bits. L'envoi d'une adresse sur le bus se fait en plusieurs fois, de même que la lecture d'une instruction. Il s'agit là d'une adaptation pour outrepasser les limitations d'un processeur 4 bit.
[[File:Intel 4004 processor pinout.png|centre|vignette|upright=2|Broches de l'Intel 4004. Nous verrons à quoi elles servent plus bas.]]
===L'espace d'adressage de l'Intel 4004===
Les adresses du processeur sont sur 12 bits, ce qui fait 4096 adresses différentes. Elles regroupent à la fois la ROM et la mémoire RAM, vu que l'architecture est une sorte de mélange bizarre entre une architecture Von Neumann et Harvard. Le processeur gère bien deux espaces d'adressage séparés, mais la RAM et la ROM sont reliés au même bus. La sortie CM-ROM du processeur indique si l'adresse envoyée correspond à la RAM ou la ROM. Un circuit de décodage d'adresse active ou désactive la RAM selon la valeur de ce bit, l'inverse pour la ROM, en agissant sur leurs bits Chip Select. Seule la RAM ou la ROM répondent alors à l'adresse.
Pour ce qui est de la RAM, le circuit de décodage d'adresse pouvait gérer au maximum 1024 adresses différentes, chacune contenant un nibble. Pour cela, le CPU 4004 était relié à une ou plusieurs RAM externes, des Intel 4002. Chaque Intel 4002 contenait 64 nibbles de données, plus 16 nibbles de statut qu'on ne détaillera pas ici. Les nibbles de statut étaient accessibles en utilisant des instructions d'entrée-sortie, donc pas avec des lectures/écritures mémoire. Les 64 nibbles de données sont découpés en 4 groupes de 16 nibbles. Le CPU pouvait être relié à maximum 16 Intel 4002, ce qui fait 1024 nibbles de données et 256 nibbles de statut. L'ensemble permet de remplir l'espace d'adressage de 1024 adresses.
===Le registre de page et le pseudo-aliasing des registres===
Sélectionner une adresse mémoire utilisait un mélange entre pseudo-aliasing et registre de page. Pour les données, les 1024 adresses étaient découpées en 4 pages de 256 adresses. Pour la ROM, les 4096 adresses étaient découpées en 16 pages de 256 adresses. Localiser une donnée dans une page ne requiert que 8 bits, 2/4 bits supplémentaires permettent de sélectionner la page voulue. Le registre de page était dans le processeur lui-même, et était relié aux sorties du processeur nommées CM-RAM 0, 1, 2 et 3. Les 4 sorties encodaient un nombre qui permet de sélectionner le numéro de page voulu.
Le registre de page fait 5 bits : un pour distinguer RAM et ROM, 4 bits pour sélectionner la page voulue. L'avantage est que la carte mère gère au maximum 16 chips de RAM, ce qui colle parfaitement avec les 4 utilisés pour sélectionner une page. Un chip de RAM correspond à une page, et chacun est activé ou désactivé suivant la page sélectionnée. Pour cela, il suffit d'ajouter un décodeur sur la carte mère, qui prend les 4 bits du registre de page et fournit les signaux Chip Select aux différents chips de RAM.
Reste alors à utiliser les 8 bits d'adresse à l'intérieur d'un chip de RAM. Le 4004 permettait de concaténer deux registres d'indice de 4 bits pour former une adresse de 8 bits. Les instructions d'accès mémoire pouvaient ainsi préciser une paire de registre d'indice pour préciser quelle adresse lire/écrire. Idem pour les branchements indirects : le processeur supportait une instruction de branchement indirect qui précisait l'adresse dans une paire de registres d'indice. Les registres d'indice sont donc assez mal nommés sur cette architecture, vu qu'ils peuvent servir soit de registre d'indice, soit de demi-registre d'adresse. Il s'agit là du système de pseudo-aliasing des registres, mais appliqué aux registres d'indice.
L'Intel 4004 gérait deux instructions pour gérer les adresses mémoires. La première, l'instruction DCL (''Designate Command Line'') configure le registre de page. Elle prend en entrée un numéro de page et le copie dans le registre de page. L'opérande peut provenir d'un registre d'indice ou de l'accumulateur. La seconde, l'instruction SRC (''Send Register Control'') concatène deux registres d'indice pour obtenir une adresse de 8 bits. Un accès mémoire se fait donc en maximum trois instructions : une qui configure le registre de page si ce n'est pas déjà fait, une instruction SRC pour envoyer l'adresse, et une troisième instruction qui dit s'il faut faire une lecture ou une écriture.
===La microarchitecture de l'Intel 4004===
Il incorporait une pile d'adresse de retour intégrée au processeur. La pile d'adresse acceptait exactement 3 adresses maximum. Elle était regroupée avec le ''program counter'' dans un banc de registre, de 4 registres. Le ''program counter'' et le pointeur de pile faisaient chacun 12 bits, soit trois nibble. Ils étaient incrémentés par un incrémenteur dédié.
SI on omet le registre de page et la pile d'adresse, le 4004 est une architecture à accumulateur des plus classiques, avec un bus interne unique, un banc de registre pour les registres d'indices, un accumulateur relié à une unité de calcul. Les registres d'indice étaient dans un banc de registre séparés, car ils faisaient 4 bits chacun, contrairement au pointeur de pile et le ''program counter''. Un détail important est que les bancs de registres du 4004 étaient implémentés avec de la DRAM, et non des registres usuels fabriqués avec des bascules 1 bit.
[[File:Microarchitecture de l'Intel 4004.png|centre|vignette|upright=2.5|Microarchitecture de l'Intel 4004]]
<noinclude>
{{NavChapitre | book=Fonctionnement d'un ordinateur
| prev=Les architectures à pile et mémoire-mémoire
| prevText=Les architectures à pile et mémoire-mémoire
| next=Les processeurs de traitement du signal
| nextText=Les processeurs de traitement du signal
}}
</noinclude>
lkeujvtha5wux596u4wfk96gept96cm
765717
765716
2026-05-01T19:33:35Z
Mewtow
31375
/* Les microcontrôleurs Intel 8051/8031 */
765717
wikitext
text/x-wiki
Nous avons déjà abordé la notion de processeur 8, 16, 32, 64 bits. Elle désigne la taille des registres généraux, ou de l'accumulateur. De nos jours, les processeurs 32 et 64 bits sont la norme, mais les premiers micro-processeurs étaient des processeurs 4 et 8, avant de passer rapidement au 16 bits. La raison est que leur budget en transistor limité faisait qu'on ne pouvait pas utiliser une ALU trop grande : une ALU 8 bit prend deux fois moins de place et de transistors qu'une ALU 16 bits. Cependant, les processeurs 8 bits avaient de sérieuses limitations qui étaient compensées par diverses solutions. Dans ce chapitre, nous allons faire une revue rapide des processeurs 8 bits et de leurs fonctionnalités.
La principale limitation des CPU 8 bits était l'adressage : des registres de 8 bits limitaient l'espace d'adressage à seulement 256 adresses, soit à peine 256 octets ! Intuitivement, on se dit que 256 octets est purement impraticable, on ne peut rien faire d'intéressant avec seulement 256 de RAM + ROM. Et c'est partiellement vrai. L'adage veut que 16 bits est la taille minimale intéressante, la limite à partir de laquelle on a assez de mémoire RAM/ROM pour coder des applications intéressantes. Mais 256 octets de RAM est largement suffisant sur de nombreux systèmes embarqués simples s'en accommodent : des caisses enregistreuses, des systèmes de régulation de feu de circulation, etc.
Pour les applications demandant plus de mémoire RAM, les CPU de l'époque contournaient la limitation de 256 octets de RAM avec de nombreux stratagèmes. Dans ce qui va suivre, nous allons séparer les CPU 8 bits selon qu'ils utilisent une architecture Harvard ou une architecture Von Neumann. La raison est qu'une architecture Harvard permet en soi de contourner partiellement ce problème d'adressage. Les choses sont plus compliquées avec une architecture Von Neumann.
==Les processeurs 8/16 bits à architecture Harvard ==
La première solution est d'utiliser une architecture Harvard. Le processeur 8 bit a alors deux espaces d'adressage : un pour la RAM, un autre pour la ROM. Et les deux utilisent des adresses de taille différente. La ROM est reliée à un bus d'adresse de 16 bits, alors que la RAM est elle connectée à un bus d'adresse de 8 bits. La RAM est donc limitée à 256 octets, alors que la ROM peut monter jusqu'à 64 kibioctets. Mine de rien, faire ainsi est largement suffisant.
Pour encore améliorer la situation, il est possible d'utiliser une architecture Harvard modifiée, qui permet de lire des données depuis la mémoire ROM. Cela réduit encore plus les besoins en mémoire RAM. Les constantes manipulées par le programme sont mémorisées en ROM, lues depuis la ROM, au lieu d'être chargées en RAM. Avec ce genre de stratagèmes, 256 octets de RAM est largement suffisant sur de nombreux systèmes, à condition qu'on ait assez de ROM pour coder un programme digne de ce nom. Par exemple, de nombreux systèmes embarqués simples s'en accommodent : des caisses enregistreuses, des systèmes de régulation de feu de circulation, etc.
Les processeurs 8 bits intègrent parfois les 256 octets de RAM directement dans le processeur, dans le banc de registres ! Beaucoup en implémentaient moins, avec par exemple seulement 64 octets de RAM, ou 32 octets, ou 128 octets. L'avantage est que cela élimine le bus pour les données, ce qui économise beaucoup de broches sur le circuit intégré du CPU. Et pour les applications demandant plus de RAM, on pouvait ajouter un circuit séparé qui permettait d'adresser une RAM plus grande. Et c'est ce qui explique que cette solution est beaucoup utilisée sur les microcontrôleurs peu puissants. Les exemples qui vont suivre devraient vous convaincre.
: Les processeurs de ce type implémentent des optimisations pour adresser plus de 256 octets de RAM. La plus connue est la commutation de banques. Mais nous n'avons pas encore abordé celle-ci, et il faudra attendre le chapitre sur l'espace d'adressage pour cela.
===Les microcontrôleurs PIC===
Les '''microcontrôleurs PIC''' regroupent des microcontrôleurs allant de microcontrôleurs 8 bits aux performances très faible, à des microcontrôleurs 32 bits bien plus puissants. Les microcontrôleurs PIC sont très utilisés dans l'embarqué ou d'informatique industrielle. Ils sont vendu à des volumes assez impressionnants, plusieurs millions par an. Et si vous avez ou êtes en train de faire des études d'électronique, je parie que vous les avez déjà vu en classe, ou que ce ne saurait tarder. Dans ce qui suit, nous allons nous concentrer sur les microcontrôleurs PIC 8 bits, à savoir les PIC 16, 16 et 18. Les PIC 24, qui sont des microcontrôleurs 16 bits, ne seront pas abordés.
Les microcontrôleurs PIC 8 bits sont une architecture Harvard, comme dit plus haut. Il y a aussi des registres pour les entrées et sorties. Les registres d'entrée-sortie permettent de lire ou écrire sur un port d'entrée-sortie ou de lire un ''timer''. En clair, les PIC ont un espace d'adressage séparé pour les entrées-sorties.
La mémoire ROM des PIC va de 1024 instructions à 4096 instructions. En comparaison, la mémoire RAM des microcontrôleurs PIC ne peut pas dépasser 256 adresses, et elle est encore plus petite en pratique sur certains modèles. Pour donner un exemple, le PIC16F84 a une RAM composée de 68 "registres" de 8 bits. Le terme "registres" devrait vous faire tiquer, mais c'est bien le terme utilisé dans la documentation des PIC. Et il faut admettre que la différence entre banc de registre et SRAM intégrée est floue, mais nous expliquerons pourquoi dans quelques paragraphes.
: Les PIC 18 peuvent adresser plus de 256 octets de RAM en utilisant la commutation de banques, une technique qui sera abordée dans plusieurs chapitres.
[[File:DocPIC16F84 3.png|centre|vignette|upright=3|Espaces d'adressage du PIC16F84.]]
Un détail est que la SRAM n'a qu'un seul port qui sert à la fois pour les lectures et écritures. Pour compenser, les PIC sont des architectures à accumulateur, où une opérande est lue depuis la SRAM, l'autre depuis l'accumulateur. Leur implémentation de l'accumulateur ajoute une petite subtilité : le résultat d'une opération arithmétique peut être enregistré ailleurs que dans l'accumulateur. Le résultat peut aussi remplacer la seconde opérande, celle lue en mémoire RAM. Dit autrement, le résultat est enregistré dans l'adresse mémoire source. Les instructions de calcul ont le choix : un bit dans leur encodage précise où enregistrer le résultat.
{|
|-
|[[File:DocPIC16F84 4.png|centre|vignette|upright=2|Microarchitecture simplifiée d'un microcontroleur PIC (ici, un 16F84).]]
|[[File:DocPIC16F84 5.png|centre|vignette|upright=2|Microarchitecture simplifiée d'un microcontroleur PIC (ici, un 16F84), avec les branchements directs.]]
|}
Outre l'accumulateur, les PIC disposent de registres de contrôle, d'un ''program counter'', d'un registre d'état, et d'un pointeur de pile. Un détail très important est que les registres sont mappés en mémoire, à quelques exceptions près ! En clair, on peut y accéder en lisant/écrivant à une adresse mémoire bien précise. Les seules registres qui ne sont pas mappés en mémoire sont l'accumulateur, les registres d'entrée-sortie, et la pile d'adresses de retour intégrée au processeur (voir plus bas). Par exemple, sur les modèles 16F, l'espace d'adressage fait 128 octets, dont 32 sont réservés aux registres du processeur, ce qui fait que seules 96 octets sont adressables comme de la RAM. Mais les 128 octets sont un seul et unique SRAM dans le processeur. Ce qui explique qu'il est difficile de séparer banc de registre et RAM principale sur ce processeur : les deux sont fusionnées !
: Les modèles PIC 17 ont rendu l'accumulateur mappé en mémoire RAM !
[[File:DocPIC16F84.png|centre|vignette|upright=2|DocPIC16F84]]
La petite taille de la ROM d'un PIC n'est pas une surprise. Les architectures 8 bits sont conçues pour ne pas utiliser beaucoup de transistors et être très simples. Aussi, utiliser une petite ROM est nécessaire. Mais il faut aussi adapter le jeu d'instruction, pour qu'il ait une bonne densité de code. Par exemple, il faut faire en sorte d'avoir des instructions assez courtes. Si les instructions font 16 bits au lieu de 32, on divise par deux le nombre de transistors nécessaire pour la mémoire ROM. La conséquence est que le jeu d’instruction des PIC est adapté à cette contrainte.
Les microcontrôleurs PIC utilisent un jeu d'instruction propriétaire, dont les instructions sont très petites. Les premières versions du jeu d'instruction utilisaient des instructions codées sur 12 bits, dont 5 pour l'adresse mémoire de la seconde opérande. Pour les branchements, 3 bits étaient utilisés pour l'opcode, 9 pour l'adresse de destination. Par la suite, les instructions ont été étendues à 13 bits sur les PIC1670, puis à 14, 15 et 16 bits. Les adresses ont alors été élargies, ce qui permet d'adresser en peu plus de mémoire RAM.
Il est intéressant de regarder comment les PIC font pour obtenir des instructions aussi courtes. Premièrement, le fait d'utiliser une architecture à accumulateur, couplé à une RAM très petite aident grandement. Les architectures à accumulateur ont besoin de préciser un opcode et une adresse mémoire pour chaque instruction, pas besoin de préciser de noms de registres ni le mode d'adressage. La taille des adresses mémoire est censé être un problème pour la densité de code, mais les adresses d'un processeur 8 bits font 8 bits. On peut alors avoir un jeu d'instruction étoffé, en utilisant des instructions 16 bits, qui concatènent un opcode et une adresse mémoire, d'un octet chacun.
Mais d'autres optimisations permettent d'avoir une bonne densité de code. Les PIC ont des branchements pour les appels et retour de fonction. Les PIC incorporent une pile d'appel de retour, qui fait 2 à 8 adresses suivant les modèles. Elle permet d'économiser quelques registres, car la pile d'appel n'est pas mappé dans l'espace d'adressage, elle n'est pas adressable. On économise ainsi 2 à 8 registres, sur 32-256 registres. De plus, cela simplifie l'encodage des instructions d'appel/retour de fonction, qui n'ont pas à préciser où enregistre l'adresse de retour.
Les PIC n'ont pas d'instructions de branchement conditionnels, ils font avec une SKIP instruction et des branchements inconditionnels. Du moins, c'est le principe, car si vous regardez la liste des instructions ci-dessous, vous verrez qu'il n'y a pas d'instruction SKIP. A la place, les instructions SKIP sont fusionnées avec d'autres instructions. Elles sont notamment fusionnées avec les instructions d'incrémentation et de décrémentation. Les PIC supportent une incrémentation normale, une décrémentation normale, une décrémentation fusionnée avec une instruction SKIP, et une incrémentation fusionnée avec une instruction SKIP. Les deux dernières incrémentent/décrémentent l'accumulateur et SKIP l'instruction suivante si le résultat est zéro. Elles permettent de fortement simplifier l'implémentation des boucles qui s'exécutent tant que leur compteur atteint zéro.
Les PIC disposent aussi d'instructions de manipulation de bit, pour tester/masquer un bit dans une opérande, 4 en tout. Il y a en a 4 en tout : mettre à 0, mettre à 1, tester si bit = 1, tester si bit = 0. Les instructions qui testent un bit prennent leur opérande dans l'accumulateur. Elles font le test du bit et décident s'il faut skipper l'instruction suivante ou non. Il y a aussi deux instructions de rotation à gauche et droite, qui tiennent compte de la retenue mémorisée dans le registre d'état. Par contre, il n'y a pas d'instructions de décalages, qui peuvent être émulées avec une rotation suivie d'un ET bit à bit. Mentionnons aussi une instruction pour inverser deux ''nibbles'' dans un octet.
Les modèles haute performance ajoutent des instructions d'addition avec retenue entrante, idem pour la soustraction. De telles instructions ssont très utiles pour faire des additions/soustractions sur des opérandes de 16 bits. Le processeur a beau être un CPU 8 bits, il peut être utilisé pour faire des calculs 16 bits, la performance est alors amoindrie, mais ce n'est pas un problème pour les applications d'un tel microcontroleur.
Les modèles intiaux, comme les PIC 10 et 12, ne supportaient pas les interruptions, mais c'est chose réglé sur les modèles plus récents. Ils ont même des registres séparés pour les interruptions et les programmes normaux. De plus, ils intégrent nativement un ''watchdog timer''.
{|class="wikitable" style="text-align:center"
|+ Jeu d'instruction des dodèles PCI 16
|-
! colspan="5" | Instructions diverses
|-
| colspan="3" | 00 0000 0000 0000 || NOP || Ne fait rien
|-
| colspan="3" | 00 0000 0000 1000 || RETURN || Instruction de retour pour une fonction
|-
| colspan="3" | 00 0000 0000 1001 || NOP || Instruction de retour pour une interruption
|-
| colspan="3" | 00 0000 0110 0011 || SLEEP || Mise en veille
|-
| colspan="3" | 00 0000 0110 0100 || CLRWDT || RESET le ''watchdog timer'', intégré dans le PIC
|-
! colspan="5" | Instructions de manipulation de bit
|-
| 0100 || Position du bit dans l'opérande || Adresse mémoire || BCF || Met le bit à 1
|-
| 0101 || Position du bit dans l'opérande || Adresse mémoire || BSF || Met le bit à 0
|-
| 0110 || Position du bit dans l'opérande || Adresse mémoire || BTFSC || Teste si le bit adressé est à 1
|-
| 0111 || Position du bit dans l'opérande || Adresse mémoire || BTFSS || Teste si le bit adressé est à 0
|-
! colspan="5" | Branchements
|-
| colspan="2" | 100 || Adresse mémoire || CALL || Appel de fonction
|-
| colspan="2" | 100 || Adresse mémoire || GOTO || Branchement inconditionnel
|-
! colspan="5" | Instructions logiques/arithmétiques avec opérande lue en mémoire RAM
|-
| colspan="5" | ''Le bit '''d''' dans l'opcode indique la destination : accumulateur ou adresse mémoire''.
|-
| colspan="2" | 0000001 || Adresse mémoire || MOVWF || Store (accumulateur vers destination)
|-
| colspan="2" | 000001d || Adresse mémoire || MOVWF || Met à zéro la destination (adresse ou registre)
|-
| colspan="2" | 000001d || Adresse mémoire || SUBWF || Soustraction
|-
| colspan="2" | 000010d|| Adresse mémoire || DECF || Décrémentation
|-
| colspan="2" | 000100d|| Adresse mémoire || IORWF || OU bit à bit
|-
| colspan="2" | 000101d|| Adresse mémoire || ANDWF || ET bit à bit
|-
| colspan="2" | 000110d || Adresse mémoire || XORWF || XOR bit à bit
|-
| colspan="2" | 000111d || Adresse mémoire || ADDWF VWF || Addition
|-
| colspan="2" | 001000d || Adresse mémoire || MOVF || LOAD
|-
| colspan="2" | 001001d || Adresse mémoire || COMF || NOT bit à bit
|-
| colspan="2" | 001010d || Adresse mémoire || INCF || Incrémentation
|-
| colspan="2" | 001011d || Adresse mémoire || DECFSZ || Décrémentation, puis instruction SKIP si résultat = 0
|-
| colspan="2" | 001100d || Adresse mémoire || RRF || Rotation à droite avec retenue entrante
|-
| colspan="2" | 001101d || Adresse mémoire || RLF || Rotation à gauche avec retenue entrante
|-
| colspan="2" | 001110d || Adresse mémoire || SWAPF || Echange deux ''niblle'' dans un octet
|-
| colspan="2" | 001111d || Adresse mémoire || INCFSZ || Incrémentation, puis instruction SKIP si résultat = 0
|-
! colspan="5" | Instructions logiques/arithmétiques avec constante immédiate
|-
| colspan="2" | 1100xx || Constante immédiate (8bits) || MOVLW || Copie constante dans accumulateur
|-
| colspan="2" | 1101xx || Constante immédiate (8bits) || RETLW || MOV fusionné avec un retour de fonction
|-
| colspan="2" | 111000 || Constante immédiate (8bits) || IORLW || OU
|-
| colspan="2" | 111001 || Constante immédiate (8bits) || ANDLW || ET
|-
| colspan="2" | 111010 || Constante immédiate (8bits) || XORLW || XOR
|-
| colspan="2" | 11110x || Constante immédiate (8bits) || SUBLW || Soustraction
|-
| colspan="2" | 11111x || Constante immédiate (8bits) || ADDLW || Addition
|}
Les PIC gèrent l'adressage absolu et immédiat, mais pas plus. L'adressage absolu, celui où l'adresse est intégrée dans l'instruction, est très simple à implémenter. Les adresses prennent moins d'un octet, vu que la taille de la RAM est très petite, les adresses sont très courtes, les intégrer dans des instructions elles-mêmes courtes n'est pas un problème. L'adresse est encodée sur 5 à 7 bits, selon le modèle, ce qui permet d'adresser entre 32 et 128 octets.
Les PIC ne supportent pas l'adressage indirect, mais peuvent l'émuler grâce à un '''registre d'adresse''' dédié. Il s'agit du registre FSR, qui mémorise l'adresse à lire/écrire. Il est possible de copier un pointeur dedans, qui provient soit de l'accumulateur, soit de la mémoire SRAM. Dans les deux cas, la donnée adressée est lue ou écrite dans un registre INDR, est un registre d’interfaçage rendu adressable. Le registre FSR est directement connecté sur le bus d'adresse.
Les modèles de base se débrouillent avec un registre FSR et un registre INDR, mais les modèles plus performants ont deux ou trois copies de chaque registre. Les modèles PIC18 ajoutent aussi des instructions LOAD/STORE qui émulent les modes d'adressage à post- ou pré-incrément/décrément, et le mode d'adressage "Base + Indice + Décalage", encore une fois en utilisant les registres FSR et INDR.
Avec tout ce qu'on vient de dire, vous devriez pouvoir comprendre la microarchitecture d'un PIC, qui est résumée dans ce schéma.
[[File:DocPIC16F84 all.png|centre|vignette|upright=2.5|Microarchitecture du PIC16F84.]]
===Les microcontrôleurs Intel 8051/8031===
Les microcontrôleurs Intel 8051/8031 sont des microcontrôleurs 8 bits, commercialisés par Intel. Elle contient un processeur 8/16 bits, de la mémoire ROM, une RAM de 128 à 256 octets, des ''timers'', et de nombreuses entrées-sorties. Il est relié à 4 ports sur lesquels il peut lire ou écrire 8 bits par port. Il contient aussi deux ''timers'' de 16 bits chacun, qui déclenchent des interruptions quand ils tombent à zéro ou à une valeur configurable. Il supporte des interruptions. L'ensemble utilise une architecture Harvard, contrairement à ce que pourrait faire croire le schéma ci-dessous.
[[File:Microcontroller 8051.gif|centre|vignette|upright=2.5|Microcontrôleur 8051]]
[[File:Pinagem8031.jpg|vignette|Broches du 8051.]]
Ils ont de nombreuses ressemblances avec les microcontrôleurs PIC. Le processeur est une architecture à accumulateur de 8 bits, ses registres sont mappés en mémoire RAM, il a un registre d'adresse dédié à l'adressage indirect, et j'en passe. Pour les registres du processeur, 32 registres sont mappés en mémoire RAM, à savoir qu'on y accéde en lisant les 32 premières adresses. Mais il y a quelques différences. La première est que le processeur supporte les opérations de multiplications et de divisions.
Une autre particularité est que le processeur incorpore une '''unité de calcul de 1 bit'''. Elle permet de faire des opérations sur des bits, avec 17 instructions possibles au total. L'ALU de 1 bit est reliée à un accumulateur de 1 bit et 32 registres de 1 bits. Elle peut lire des opérandes de 1 bit en mémoire RAM ou sur les ports d'entrée-sortie, qui sont tous bit-adressables. Pour le dire autrement, chaque bit d'un port d'entrée-sortie a sa propre adresse mémoire, qui permet de le sélectionner. Il en est de même avec 18 adresses de la mémoire SRAM, ce qui permet d'adresser 144 bits (18 adresses * 8 bits par octet adressé).
[[File:Intel 8051 arch.svg|centre|vignette|upright=2|Microarchitecture de l'Intel 8051.]]
Avec ce qu'on vient de dire, on peut donner la ''memory map'' de ce microcontroleur, pour la SRAM. Les 32 premières adresses sont réservés aux registres du processeur, à l'exception de quelques registres. Les 18 adresses suivantes sont adressables bit par bit, ou octet par octet. L'intervalle bit-adressable va de l'adresse 32 (inclue) à l'adresse 47 (inclue). Le reste est de la mémoire RAM adressable non-affectée.
===Le Fairchild F8 et la console de jeu Fairchild Channel F===
Un autre exemple est la Fairchild F8 de la défunte entreprise Fairchild Semiconductor. Il incorpore un processeur 8 bits, c'est à dire que le processeur fait des calculs sur des entiers de 8 bits maximum, une mémoire RAM de 64 octets, ainsi qu'une mémoire ROM de 1 kibioctet. Les 64 octets de RAM sont certes très peu, mais c'est suffisant pour certaines applications simples, comme les caisses automatiques de l'époque, ou des applications embarquées. Et de toute façon, il est possible d'ajouter de la mémoire RAM supplémentaire si les 64 octets de RAM intégrée ne suffisent pas. Le système était donc modulaire, adaptable selon les besoins, peu cher pour son implémentation minimale sans RAM en plus.
Vu qu'il s'agit d'un des tout premiers ordinateurs, il est sorti à une époque où la technologie était rudimentaire. À cette époque, le processeur était composé de pièces détachées qu'il fallait souder ensemble pour obtenir un processeur fonctionnel. Ce n'est que plus tard qu'est apparu le micro-processeur, qui regroupe un processeur complet dans un seul circuit intégré. Le résultat est que le processeur du Fairchild F8 est coupé en deux, l'unité de calcul et l'unité de contrôle sont placés dans des pièces détachées séparés.
Le microcontrôleur est composé de trois à quatre pièces détachées, certaines étant optionnelles. La première est le '''3850 CPU''', qui regroupe l'unité de calcul et la mémoire RAM intégrée. La seconde est le PSU (''3851 Program Storage Unit''), qui regroupe la mémoire ROM et l'unité de contrôle, ''program counter'' inclut. S'il y a besoin d'utiliser plus de RAM, il faut ajouter un circuit d’interface mémoire, qui est au choix le ''3852 Dynamic Memory Interface'' (DMI) ou le ''3853 Static Memory Interface'', le premier étant connecté à une mémoire de type DRAM, l'autre à une SRAM (nous verrons ce que sont les DRAM et les SRAM dans le prochain chapitre).
[[File:Fairchild F8.png|centre|vignette|upright=2|Fairchild F8]]
Le système minimal est composé d'un PSU et d'un 3850, sans les circuits d'interface mémoire. Le tout donne un système avec un processeur 8 bit, 64 octets de RAM et 1 kibioctet de ROM, les deux mémoires étant intégrées dans le "processeur". Le processeur gérait 4 entrées-sorties, chacune étant reliée avec un bus de 8 bit au processeur. Au passage, en 1977, Mostek a créé un microcontrôleur qui regroupe un PSU et un 3850 : le Mostek 3870. Le système minimal n'avait pas de bus d'adresse, vu que la RAM était intégrée au processeur. C'est les 3852 et 3853 qui ajoutaient un bus d'adresse. Ils ajoutent un bus d'adresse de 16 bits, ce qui permet d'adresser 64 kibioctets de RAM.
[[File:Fairchild-Channel-F.jpg|vignette|un Fairchild Channel F]]
Le Fairchild F8 a été utilisé dans la Fairchild Channel F, une des toute première console de seconde génération, à savoir des consoles qui utilisaient des cartouches de jeu. Avant les consoles de seconde génération, les consoles étaient non-programmables. Elles étaient conçues pour faire tourner un jeu précis, aucun autre, le jeu étant implémenté dans leurs circuits.
La Fairchild Channel F est composé du système minimal, auquel on a ajouté une carte son rudimentaire et 2 kibioctets de mémoire vidéo. La mémoire vidéo sert uniquement pour afficher des images à l'écran : on écrit l'image à afficher dedans, un circuit vidéo se charge de l'afficher à l'écran automatiquement. Le processeur ne fait qu'écrire dans cette RAM vidéo, il ne peut pas en lire le contenu. De la RAM supplémentaire peut cependant être ajoutée dans les cartouches de jeu.
===Le HP Nanoprocessor : un processeur sans ALU===
Un dernier exemple est celui du processeur HP Nanoprocessor, de l'entreprise HP. Il a été commercialisé en 1974, en même temps que les premiers micro-processeurs d'Intel. Tous les processeurs de l'époque étaient des processeurs 8 bits et le HP Nanoprocessor ne faisait pas exception. Ce n'était pas un processeur haute performance, il était destiné à des applications d'informatique industrielle ou embarquée. D'ailleurs, il utilisait des transistors de type metal-gate, peu performants, là où ses contemporains utilisait des transistors en silicium, plus performants.
Mais une caractéristique qui rend cela encore plus claire est qu'il n'y a pas d'ALU ! En effet, ce processeur est incapable de faire des additions, des soustractions ou autres opérations simples ! Il est cependant capable d'effectuer des incrémentations et décrémentations, des décalages, des opérations logiques comme des ET/OU/NON/XOR et bien d'autres. Il supporte en tout 48 instructions, avec un support limité des modes d'adressage indirects. Les instructions de branchement étaient des instructions SKIP, il n'y avait pas d'instructions de branchement généralistes.
Pour ce qui est des registres, il disposait de 16 registres de 8 bits et d'un accumulateur. Niveau mémoire, il était relié à une mémoire ROM, rien de plus. Il n'avait de RAM supplémentaire qu'on pouvait lui adjoindre, il devait se débrouiller avec seulement ses registres. Et cela ne posait pas de problèmes pour son usage. Seul le mode d'adressage indirect à registre est supporté, il n'y a pas de registres d'indices. Ce mode d'adressage permet de lire des données en mémoire ROM, la ROM pouvant contenir des tableaux de valeurs constantes.
: Il est possible de lui adjoindre de la RAM via les ports d'entrée-sortie, ainsi qu'une ALU, mais RAM et ALU sont traités comme des périphériques avec lesquels on communique, ils ne sont pas intégrés au processeur.
Niveau micro-architecture, il incorporait une unité de calcul logique et un circuit comparateur. Le comparateur était un circuit comparateur série des plus basiques, qui était utilisé pour les instructions de branchement et associées. L'unité de calcul logique gérait des incrémentations/décrémentation, des décalages, les opérations logiques et quelques autres. L'unité de calcul logique était bit-slicée, à savoir conçue en assemblant 8 ALU de 1 bit chacune, enchainées en série. Le tout était combiné à des circuits de ''carry skip''.
[[File:Unité de calcul du HP nanonprocessor.png|centre|vignette|upright=2|Unité de calcul du HP nanoprocessor]]
Son unité de décodage d'instruction était très simple, essentiellement basée sur des portes NOR, grâce à un encodage efficace des instructions machine. Le ''program counter'' fait 11 bits, ce qui permet d'adresser une ROM de 2 kibioctets. Le ''program counter'' était relié à un circuit incrémenteur qui gérait les isntructions SKIP (il pouvait incrémenter le ''program counter'' par pas de 1 ou de 2 en cas de SKIP). Le processeur contient aussi deux registres, qui servent en quelque sorte de pile d'adresse de retour. Un premier registre mémorise l'adresse de retour d'une fonction, l'autre mémorise le ''program counter'' lors d'une interruption, pour savoir où brancher à la fin de l'interruption.
[[File:HP nanoprocessor.png|centre|vignette|upright=2.5|HP nanoprocessor]]
Fait intéressant, le concepteur du processeur a gracieusement donné les masques utilisés pour graver le silicium du processeur au site [https://www.cpushack.com/ CPU Shack]. Les masques en question sont disponibles ici :
* [https://www.cpushack.com/2020/08/20/hp-nanoprocessor-mask-set/ HP NanoProcessor Mask Set]
* [https://www.cpushack.com/2020/08/09/the-forgotten-ones-hp-nanoprocessor/ The Forgotten Ones: HP Nanoprocessor]
Les masques ont été analysés par Ken Shirrif dans cet article de blog :
* [https://www.righto.com/2020/09/hp-nanoprocessor-part-ii-reverse.html HP Nanoprocessor part II: Reverse-engineering the circuits from the masks]
==Les processeurs 8/16 bits à architecture Von Neumann==
L'usage d'une architecture Harvard est une solution pour adresser plus de mémoire avec des CPU 8 bits. Mais plusieurs microprocesseurs commerciaux n'utilisaient pas cette solution. À la place, c'était des architectures Von Neumann, mais qui étaient capables de gérer des adresses de 16 bits. Les données faisaient 8 bits, les registres faisaient 8 bits, mais quelques techniques permettaient de gérer des adresses de 16 bits. Nous parlerons de '''processeurs 8/16 bits''' pour les désigner, et nous allons les étudier à part.
Un point important est que la gestion d'adresses de 16 bits permet d'adresser 64 kibioctets, qui peuvent être remplis avec de la RAM et de la ROM. On a donc le meilleur des mondes : 64 kibioctets de mémoire, mais avec des données de 8 bits et les économies de circuit qui vont avec. L'avantage est que le processeur peut maintenant gérer une vraie pile d'appel, pas seulement une pile d'adresse de retour. Il lui suffit pour cela d'intégrer un pointeur de pile codé sur 16 bits.
===Les modes d'adressage par page des CPU Motorola===
Les processeurs Motorola 8 bits étaient des processeurs 8 bits avec un bus d'adresse de 16 bits. C'était des processeurs à accumulateur incorporant deux registres d'indice, un registre d'état, un pointeur de pile, et un ''program counter''. Tous les registres sont reliés au bus d'adresse, sauf le registre d'état et l’accumulateur. Tous les registres font 8 bits, sauf le ''program counter''. La pile est câblée pour être dans un bloc de 256 octets compris entre l'adresse 1 0000 0000 et l'adresse 1 1111 1111, ce qui fait que son adressage se fait avec un seul octet.
[[File:6502-architecture.svg|centre|vignette|upright=1.5|Architecture simplifiée du 6502.</br> X et Y : registres d'indice ;</br> S : le pointeur de pile ;</br> A : accumulateur ;</br>P : registre d'état.</br>]]
Les processeurs Motorola 8 bits utilisaient une méthode simple pour adresser 64 kibioctets de RAM, avec des registres de 8 bits. Pour cela, ils utilisaient une variante de l'adressage base + décalage. Elle améliore l'adressage absolu, qui intègre l'adresse à lire/écrire dans l'instruction elle-même. L'adresse en question est de 8 bits et n'encode que les 8 bits de poids faible de l'adresse, les 8 bits de poids fort sont dans un '''registre de page''' adressé implicitement. L'adresse finale est obtenue en concaténant ce registre avec l'adresse mémoire intégrée dans l’instruction. Le résultat est que la mémoire était découpée en blocs de 256 consécutifs, chacun pouvant servir de fenêtre de 256 octets. Une page est réservée pour la pile, la seconde, comme dit plus haut.
Formellement, ce mode d'adressage a des ressemblances avec la commutation de banques, une technique qu'on verra dans les chapitres sur l'espace d'adressage et la mémoire virtuelle. Mais ce n'en est pas du tout : le registre de page est utilisé uniquement pour les accès mémoire avec le mode d'adressage base + décalage, mais pas pour les autres accès mémoire, qui gèrent des adresses complètes. Notons que l'usage d'un registre de page dédié fait que celui-ci est adressé implicitement.
Il faut noter que la technique a été utilisée sur des processeurs 16 bits, pour contourner la petite taille des instructions. Un exemple est celui du HP 2100, un processeur 16 bits. Il avait un registre de page de 5 bits et encodait 10 bits d'adresse dans ses instructions. Ses instructions d'accès mémoire disposaient d'un bit qui choisit quel mode d'adressage utiliser. S'il était à 0, l'adressage absolu était utilisé, le registre de page n'était pas utilisé. Mais s'il était à 1, le registre de page était utilisé pour calculer l'adresse.
Une évolution de l'adressage précédent est le '''mode page direct'''. Avec lui, le registre de page est étendu et contient une adresse mémoire complète. L'adresse finale n'est pas obtenue par concaténation, mais en additionnant le registre de page avec l'adresse fournie par adressage absolu + décalage. Un exemple est celui des premiers processeurs Motorola, qui géraient des adresses courtes de 8 bits. L'adresse courte de 8 bits correspondait non pas aux 256 premiers octets de la mémoire, mais à une fenêtre de 256 octets déplaçable en mémoire. La position de la fenêtre de 256 octets était spécifiée par le registre de page de 16 bits, qui précisait l'adresse du début de la fenêtre, celle de sa première donnée.
Il s'agit donc formellement d'adressage base + décalage, à un détail près : il n'y a qu'un seul registre de base. Le fait que ce registre de base soit unique fait qu'il est adressé implicitement, on n'a pas à encoder le numéro/noms de registre dans l'instruction. Le registre de base est utilisé uniquement pour l'adressage absolu, pas pour les autres accès mémoire. S'il y a des ressemblances avec la segmentation, une technique de mémoire virtuelle qu'on abordera dans quelques chapitres, ce n'en est pas vu que le registre de base est utilisé seulement pour un mode d'adressage bien précis.
===Le ''pseudo-aliasing'' des registres des processeurs Intel x86===
Voyons maintenant le cas des anciens processeurs 8 bits d'Intel à savoir l'Intel 4004, 4040, 8008 et 8080. Le Z80, un processeur inspiré des CPU Intel 8 bits, est aussi concerné. Avant de poursuivre, parlons des registres de ces processeurs. Les premiers CPU Intel incorporaient 7 registres de 8 bits nommés A, B, C, D, E, F, H, L, SP. Ils correspondent respectivement à : l'accumulateur A ; six registres nommés B, C, D, E, H et L ; le registre d'état F ; le pointeur de pile SP. Le Z80 ajoute deux registres d'indice X et Y. De plus, le Z80 dispose de registres d'interruption, qui sont en quelque sorte des copies des registres A, B, C, D, E, F, H, L. Le tout est illustré dans le tableau ci-dessous.
{|class="wikitable" style="text-align:center;"
|-
!
! Registres des CPU Intel
! Registres supplémentaires du Z80
|-
! Accumulateur
| A
| A'
|-
! Registre d'état
| F
| F'
|-
! Registres généraux
| B, C, D, E, H, L
| B', C', D', E', H', L'
|-
! Pointeur de pile
| colspan="2" | SP (sauf pour le 8008)
|-
! Registres d'indice
|
| X et Y
|}
Le 8008 incorpore une pile d'appel de 7 adresses, dans le processeur lui-même. Il en est de la même avec le 4004 et le 4040, comme on le verra dans la section sur les processeurs 4 bits. Mais le 8080 et le 8085 ont remplacé le tout par un simple pointeur de pile, afin d'avoir une véritable pile d'appel. Autant c'est impossible d'avoir une pile d'appel avec seulement 256 octets de mémoire, autant on peut se le permettre avec 65 536 adresses.
Pour gérer des adresses de 16 bits, ils auraient pu utiliser des registres d'adresse séparés, mais on préféré un système de '''pseudo-''aliasing'' de registres'''. Formellement, c'est un système qui concatène deux registres 8 bits pour obtenir une adresse de 16 bits. L’appariement a lieu lors de certaines opérations bien précises, qui n'ont de sens que pour les adresses : la lecture/écriture en mémoire, et l'incrémentation.
Il y avait cependant des contraintes quant aux paires de registres possibles, toutes les paires de registres n'étaient pas autorisées. Les CPU concernés sont donc des processeurs hybrides accumulateur-registre généraux. L'accumulateur ne peut pas être appairé, seuls les registres généraux le peuvent. Le Z80 autorise plus de paires que les CPU Intel. Voici les paires de registres qui pouvaient servir d'adresse 16 bits :
* Les CPU 8008 d'Intel autorisait une seule paire formée des registres H et L.
* Les autres processeurs, à savoir le 8080, le 8085 et le Z80, autorisaient : les paires BC, DE et HL.
Le 8008 ne gérait que des opérations sur 8 bits. Mais le 8080 et le 8085 ont ajouté des instructions 16 bits qui agissaient sur des paires de registre, que le Z80 a repris. Une paire de registres est considérée comme un registre unique de 16 bits pour certaines opérations arithmétiques, dont l'incrémentation. Voici la liste des instructions concernées :
* INC et DEC pour l'incrémentation et la décrémentation ;
* DAD : additionne le registre HL avec une autre paire (Hl inclus) ;
* LXI : copie une constante immédiate dans une paire de registres ;
* LHLD : lit 16 depuis la mémoire et l'enregistre dans une paire de registres ;
* SHLD : copie 16 bits depuis une paire de registres et l'enregistre en mémoire ;
* PUSH et POP : empile ou dépilent une paire de registre sur la pile ;
* XTHL : échange la paire HL avec les 16 bits au sommet de la pile d'appel ;
* XCHG : échange le contenu de la paire HL et DE.
Pour résumer, le processeur avait des instructions LOAD, STORE, PUSH et POP adaptées pour gérer des paires de registre. De plus, l'instruction XCHG permettait d’échanger le contenu des paires DE et HL. L'instruction a été étendue sur les processeurs 16 bits pour échanger tous les registres. Mais l'implémentation était alors différente. L'incrémentation sur une paire de 16 bit était très utile, car les adresses sont souvent incrémentées quand on parcours un tableau. Ces instructions nous donnent quelques indices sur ce qu'il y a dans le processeur.
Le système de pseudo-aliasing a un impact sur le banc de registre. Le banc de registre regroupe les registres généraux et le pointeur de pile, mais ne contient pas l'accumulateur. Les contraintes sur les paires de registres possibles ne s'expliquent que d'une seule manière : le banc de registre contient des registres de 16 bits, une paire de registres 8 bits est mémorisée dans un registre unique. Il faut donc faire une différence entre les registres architecturaux de 8 bits, et les registres réels de 16 bits.
Le banc de registre a un port de 8 bits pour les données, qui est fabriqué à partir d'un port 16 bits auquel on a rajouté un multiplexeur pour choisir soit l'octet de poids faible, soit l'octet de poids fort. Le bus de données fait 8 bits, ce qui fait que les instructions LOAD, STORE, PUSH et POP pour paires 16 bits sont réalisées en deux fois : on lit/écrit l'octet de poids faible, puis celui de poids fort. Par contre, le bus d'adresse fait bien 16 bits. Cela suggère que le banc de registre dispose d'un port de 16 bits dédié aux adresses, en plus du port de données 8 bits.
[[File:Architecture d'un CPU 8-16 bits avec un banc de registre double port.png|centre|vignette|upright=2|Architecture d'un CPU 8-16 bits avec un banc de registre double port]]
L'incrémentation d'une paire 16 bits ne coute rien à implémenter, ou presque. En effet, le processeur incorpore un incrémenteur 16 bits pour le ''program counter'', qui est relié au bus d'adresse. L'idée est de rentabiliser cet incrémenteur, en lui permettant d'incrémenter des données/adresses de 16 bits obtenues via pseudo-aliasing. De même, il peut être utilisé pour incrémenter le pointeur de pile, voire un compteur de rafraichissement mémoire (pour rappel, le rafraîchissement mémoire demande de balayer la mémoire d'adresse en adresse et été fait par le CPU à l'époque). Pour cela, il suffit de connecter le ''program counter'', le banc de registre, et l'incrémenteur, via un bus dédié.
[[File:Calcul d'adresse par ALU dédiée avec PC séparé.png|centre|vignette|upright=2|Calcul d'adresse par ALU dédiée avec PC séparé]]
Notez qu'on peut encore simplifier le tout en placant le ''program counter'' dans le banc de registre, ce qui ne gênera pas le travail de l'incrémenteur mais simplifiera le câblage au bus d'adresse. Ce n'était pas systématique, certains processeurs mettaient le ''program counter'' dans le banc de registre, d'autres non.
: Inclure le ''program counter'' dans le banc de registre permet parfois de remplir un vide. Par exemple, sur un processeur avec 12 registres, le banc de registre devrait faire idéalement 16 registres, inclure le ''program counter'' dedans fait monter le tout à 13.
[[File:Architecture d'un CPU 8-16 bits.png|centre|vignette|upright=2|Architecture d'un CPU 8-16 bits]]
Les processeurs Intel 8 bits, à savoir le 8008, le 8080 et le 8085 ; mettaient le ''program counter'' dans le banc de registre. Vous avez donc toutes les armes pour comprendre leur micro-architecture. Par exemple, voici la micro-architecture du processeur 8080. Remarquez le banc de registre, qui contient tous les registres sauf l'accumulateur et le registre. Il a deux ports : un pour les adresses et un pour les données. Notez le dé-multiplexeur sur le port de donnée. Pour le reste, il s'agit d'une architecture à accumulateur hybride des plus classiques.
[[File:Intel 8080 arch.svg|centre|vignette|upright=3|Microarchitecture de l'Intel 8080.]]
Le Z80 est un processeur inspiré du design des processeurs Intel 8 bits, mais avec pas mal d'améliorations. Un point particulier de ce processeur est son banc de registre. Il contient tous les registres du processeur, y compris l'accumulateur et le registre d'état ! Les seuls registres en-dehors du banc de registre sont le ''program counter'' et un compteur de rafraichissement mémoire IR.
Un autre point particulier est que les registres dans le banc de registres avaient une copie séparée accessible uniquement pour les interruptions, via fenêtrage de registres. Et l'accumulateur et le registre d'état étant dans le banc de registre, il y avait deux accumulateurs et deux registres d'état. Les registres A, B, C, D, E et F étaient dupliqués, par le pointeur de pile ni les registres d'indice. Les copies des registres étaient nommées A', B', C', D', E' et F'.
Le Z80 supportait des instructions d'échange de registre en plus des CPU Intel 8 bits. L'instruction EX peut échanger soit le contenu des paires D,E et H,F, soit la paire A,F avec la paire A',F'. L'instruction EXX échange les paires BC, DE, HL avec les paires BC', DE', HL'. En faisant cela, le programmeur pouvait utiliser deux fois plus de registres généraux s'il n'utilisait pas les interruptions. L'échange de paires se fait sans copies de registres, mais simplement en modifiant l'adresse envoyée sur le banc de registre. Pour cela, plusieurs bascules mémorisent des bits qui indiquent si les paires ont été échangées ou non. Il y a une bascule pour les paires DE , HL ; une autre pour les paires A,F et paire A',F', une dernière pour l'instruction EXX. En combinant ces bascules avec les noms de registres envoyés par le séquenceur, on peut échanger les paires de registres.
==Le cas particulier des processeurs 4 bits : le 4004 d'Intel==
L'Intel 4004 était le tout premier micro-processeur. Il s'agissait d'un microprocesseur de 4 bits, basé sur une architecture à accumulateur. Il disposait d'un accumulateur et de 16 registres d'indice, tous de 4 bits. Il faisait des calculs sur des données de 4 bits, appelées des nibbles. Cependant, sur ses 46 instructions machines supportées, 41 agissaient sur des opérandes de 8 bits, les 5 restantes sur des opérandes de 16 bits. Simplement, les calculs se faisaient en deux fois, en échangeant des données entre mémoire RAM et accumulateur.
Le 4004 est un circuit intégré avec peu de broches. Il dispose notamment d'un bus de données/adresse, qui est multiplexé, c’est-à-dire qu'il sert alternativement de bus de données et de bus d'adresse selon les besoins. Le bus de commande mémoire fait 5 bits, dont 4 pour les chips de RAM, un pour la ROM. Les adresses sont codées sur 12 bits, les données sur 4 et les instructions sur 8 bits. L'envoi d'une adresse sur le bus se fait en plusieurs fois, de même que la lecture d'une instruction. Il s'agit là d'une adaptation pour outrepasser les limitations d'un processeur 4 bit.
[[File:Intel 4004 processor pinout.png|centre|vignette|upright=2|Broches de l'Intel 4004. Nous verrons à quoi elles servent plus bas.]]
===L'espace d'adressage de l'Intel 4004===
Les adresses du processeur sont sur 12 bits, ce qui fait 4096 adresses différentes. Elles regroupent à la fois la ROM et la mémoire RAM, vu que l'architecture est une sorte de mélange bizarre entre une architecture Von Neumann et Harvard. Le processeur gère bien deux espaces d'adressage séparés, mais la RAM et la ROM sont reliés au même bus. La sortie CM-ROM du processeur indique si l'adresse envoyée correspond à la RAM ou la ROM. Un circuit de décodage d'adresse active ou désactive la RAM selon la valeur de ce bit, l'inverse pour la ROM, en agissant sur leurs bits Chip Select. Seule la RAM ou la ROM répondent alors à l'adresse.
Pour ce qui est de la RAM, le circuit de décodage d'adresse pouvait gérer au maximum 1024 adresses différentes, chacune contenant un nibble. Pour cela, le CPU 4004 était relié à une ou plusieurs RAM externes, des Intel 4002. Chaque Intel 4002 contenait 64 nibbles de données, plus 16 nibbles de statut qu'on ne détaillera pas ici. Les nibbles de statut étaient accessibles en utilisant des instructions d'entrée-sortie, donc pas avec des lectures/écritures mémoire. Les 64 nibbles de données sont découpés en 4 groupes de 16 nibbles. Le CPU pouvait être relié à maximum 16 Intel 4002, ce qui fait 1024 nibbles de données et 256 nibbles de statut. L'ensemble permet de remplir l'espace d'adressage de 1024 adresses.
===Le registre de page et le pseudo-aliasing des registres===
Sélectionner une adresse mémoire utilisait un mélange entre pseudo-aliasing et registre de page. Pour les données, les 1024 adresses étaient découpées en 4 pages de 256 adresses. Pour la ROM, les 4096 adresses étaient découpées en 16 pages de 256 adresses. Localiser une donnée dans une page ne requiert que 8 bits, 2/4 bits supplémentaires permettent de sélectionner la page voulue. Le registre de page était dans le processeur lui-même, et était relié aux sorties du processeur nommées CM-RAM 0, 1, 2 et 3. Les 4 sorties encodaient un nombre qui permet de sélectionner le numéro de page voulu.
Le registre de page fait 5 bits : un pour distinguer RAM et ROM, 4 bits pour sélectionner la page voulue. L'avantage est que la carte mère gère au maximum 16 chips de RAM, ce qui colle parfaitement avec les 4 utilisés pour sélectionner une page. Un chip de RAM correspond à une page, et chacun est activé ou désactivé suivant la page sélectionnée. Pour cela, il suffit d'ajouter un décodeur sur la carte mère, qui prend les 4 bits du registre de page et fournit les signaux Chip Select aux différents chips de RAM.
Reste alors à utiliser les 8 bits d'adresse à l'intérieur d'un chip de RAM. Le 4004 permettait de concaténer deux registres d'indice de 4 bits pour former une adresse de 8 bits. Les instructions d'accès mémoire pouvaient ainsi préciser une paire de registre d'indice pour préciser quelle adresse lire/écrire. Idem pour les branchements indirects : le processeur supportait une instruction de branchement indirect qui précisait l'adresse dans une paire de registres d'indice. Les registres d'indice sont donc assez mal nommés sur cette architecture, vu qu'ils peuvent servir soit de registre d'indice, soit de demi-registre d'adresse. Il s'agit là du système de pseudo-aliasing des registres, mais appliqué aux registres d'indice.
L'Intel 4004 gérait deux instructions pour gérer les adresses mémoires. La première, l'instruction DCL (''Designate Command Line'') configure le registre de page. Elle prend en entrée un numéro de page et le copie dans le registre de page. L'opérande peut provenir d'un registre d'indice ou de l'accumulateur. La seconde, l'instruction SRC (''Send Register Control'') concatène deux registres d'indice pour obtenir une adresse de 8 bits. Un accès mémoire se fait donc en maximum trois instructions : une qui configure le registre de page si ce n'est pas déjà fait, une instruction SRC pour envoyer l'adresse, et une troisième instruction qui dit s'il faut faire une lecture ou une écriture.
===La microarchitecture de l'Intel 4004===
Il incorporait une pile d'adresse de retour intégrée au processeur. La pile d'adresse acceptait exactement 3 adresses maximum. Elle était regroupée avec le ''program counter'' dans un banc de registre, de 4 registres. Le ''program counter'' et le pointeur de pile faisaient chacun 12 bits, soit trois nibble. Ils étaient incrémentés par un incrémenteur dédié.
SI on omet le registre de page et la pile d'adresse, le 4004 est une architecture à accumulateur des plus classiques, avec un bus interne unique, un banc de registre pour les registres d'indices, un accumulateur relié à une unité de calcul. Les registres d'indice étaient dans un banc de registre séparés, car ils faisaient 4 bits chacun, contrairement au pointeur de pile et le ''program counter''. Un détail important est que les bancs de registres du 4004 étaient implémentés avec de la DRAM, et non des registres usuels fabriqués avec des bascules 1 bit.
[[File:Microarchitecture de l'Intel 4004.png|centre|vignette|upright=2.5|Microarchitecture de l'Intel 4004]]
<noinclude>
{{NavChapitre | book=Fonctionnement d'un ordinateur
| prev=Les architectures à pile et mémoire-mémoire
| prevText=Les architectures à pile et mémoire-mémoire
| next=Les processeurs de traitement du signal
| nextText=Les processeurs de traitement du signal
}}
</noinclude>
ir70ja37rcwa42jvym586i6vc2tmk1l
765721
765717
2026-05-01T20:09:47Z
Mewtow
31375
/* Les microcontrôleurs Intel 8051/8031 */
765721
wikitext
text/x-wiki
Nous avons déjà abordé la notion de processeur 8, 16, 32, 64 bits. Elle désigne la taille des registres généraux, ou de l'accumulateur. De nos jours, les processeurs 32 et 64 bits sont la norme, mais les premiers micro-processeurs étaient des processeurs 4 et 8, avant de passer rapidement au 16 bits. La raison est que leur budget en transistor limité faisait qu'on ne pouvait pas utiliser une ALU trop grande : une ALU 8 bit prend deux fois moins de place et de transistors qu'une ALU 16 bits. Cependant, les processeurs 8 bits avaient de sérieuses limitations qui étaient compensées par diverses solutions. Dans ce chapitre, nous allons faire une revue rapide des processeurs 8 bits et de leurs fonctionnalités.
La principale limitation des CPU 8 bits était l'adressage : des registres de 8 bits limitaient l'espace d'adressage à seulement 256 adresses, soit à peine 256 octets ! Intuitivement, on se dit que 256 octets est purement impraticable, on ne peut rien faire d'intéressant avec seulement 256 de RAM + ROM. Et c'est partiellement vrai. L'adage veut que 16 bits est la taille minimale intéressante, la limite à partir de laquelle on a assez de mémoire RAM/ROM pour coder des applications intéressantes. Mais 256 octets de RAM est largement suffisant sur de nombreux systèmes embarqués simples s'en accommodent : des caisses enregistreuses, des systèmes de régulation de feu de circulation, etc.
Pour les applications demandant plus de mémoire RAM, les CPU de l'époque contournaient la limitation de 256 octets de RAM avec de nombreux stratagèmes. Dans ce qui va suivre, nous allons séparer les CPU 8 bits selon qu'ils utilisent une architecture Harvard ou une architecture Von Neumann. La raison est qu'une architecture Harvard permet en soi de contourner partiellement ce problème d'adressage. Les choses sont plus compliquées avec une architecture Von Neumann.
==Les processeurs 8/16 bits à architecture Harvard ==
La première solution est d'utiliser une architecture Harvard. Le processeur 8 bit a alors deux espaces d'adressage : un pour la RAM, un autre pour la ROM. Et les deux utilisent des adresses de taille différente. La ROM est reliée à un bus d'adresse de 16 bits, alors que la RAM est elle connectée à un bus d'adresse de 8 bits. La RAM est donc limitée à 256 octets, alors que la ROM peut monter jusqu'à 64 kibioctets. Mine de rien, faire ainsi est largement suffisant.
Pour encore améliorer la situation, il est possible d'utiliser une architecture Harvard modifiée, qui permet de lire des données depuis la mémoire ROM. Cela réduit encore plus les besoins en mémoire RAM. Les constantes manipulées par le programme sont mémorisées en ROM, lues depuis la ROM, au lieu d'être chargées en RAM. Avec ce genre de stratagèmes, 256 octets de RAM est largement suffisant sur de nombreux systèmes, à condition qu'on ait assez de ROM pour coder un programme digne de ce nom. Par exemple, de nombreux systèmes embarqués simples s'en accommodent : des caisses enregistreuses, des systèmes de régulation de feu de circulation, etc.
Les processeurs 8 bits intègrent parfois les 256 octets de RAM directement dans le processeur, dans le banc de registres ! Beaucoup en implémentaient moins, avec par exemple seulement 64 octets de RAM, ou 32 octets, ou 128 octets. L'avantage est que cela élimine le bus pour les données, ce qui économise beaucoup de broches sur le circuit intégré du CPU. Et pour les applications demandant plus de RAM, on pouvait ajouter un circuit séparé qui permettait d'adresser une RAM plus grande. Et c'est ce qui explique que cette solution est beaucoup utilisée sur les microcontrôleurs peu puissants. Les exemples qui vont suivre devraient vous convaincre.
: Les processeurs de ce type implémentent des optimisations pour adresser plus de 256 octets de RAM. La plus connue est la commutation de banques. Mais nous n'avons pas encore abordé celle-ci, et il faudra attendre le chapitre sur l'espace d'adressage pour cela.
===Les microcontrôleurs PIC===
Les '''microcontrôleurs PIC''' regroupent des microcontrôleurs allant de microcontrôleurs 8 bits aux performances très faible, à des microcontrôleurs 32 bits bien plus puissants. Les microcontrôleurs PIC sont très utilisés dans l'embarqué ou d'informatique industrielle. Ils sont vendu à des volumes assez impressionnants, plusieurs millions par an. Et si vous avez ou êtes en train de faire des études d'électronique, je parie que vous les avez déjà vu en classe, ou que ce ne saurait tarder. Dans ce qui suit, nous allons nous concentrer sur les microcontrôleurs PIC 8 bits, à savoir les PIC 16, 16 et 18. Les PIC 24, qui sont des microcontrôleurs 16 bits, ne seront pas abordés.
Les microcontrôleurs PIC 8 bits sont une architecture Harvard, comme dit plus haut. Il y a aussi des registres pour les entrées et sorties. Les registres d'entrée-sortie permettent de lire ou écrire sur un port d'entrée-sortie ou de lire un ''timer''. En clair, les PIC ont un espace d'adressage séparé pour les entrées-sorties.
La mémoire ROM des PIC va de 1024 instructions à 4096 instructions. En comparaison, la mémoire RAM des microcontrôleurs PIC ne peut pas dépasser 256 adresses, et elle est encore plus petite en pratique sur certains modèles. Pour donner un exemple, le PIC16F84 a une RAM composée de 68 "registres" de 8 bits. Le terme "registres" devrait vous faire tiquer, mais c'est bien le terme utilisé dans la documentation des PIC. Et il faut admettre que la différence entre banc de registre et SRAM intégrée est floue, mais nous expliquerons pourquoi dans quelques paragraphes.
: Les PIC 18 peuvent adresser plus de 256 octets de RAM en utilisant la commutation de banques, une technique qui sera abordée dans plusieurs chapitres.
[[File:DocPIC16F84 3.png|centre|vignette|upright=3|Espaces d'adressage du PIC16F84.]]
Un détail est que la SRAM n'a qu'un seul port qui sert à la fois pour les lectures et écritures. Pour compenser, les PIC sont des architectures à accumulateur, où une opérande est lue depuis la SRAM, l'autre depuis l'accumulateur. Leur implémentation de l'accumulateur ajoute une petite subtilité : le résultat d'une opération arithmétique peut être enregistré ailleurs que dans l'accumulateur. Le résultat peut aussi remplacer la seconde opérande, celle lue en mémoire RAM. Dit autrement, le résultat est enregistré dans l'adresse mémoire source. Les instructions de calcul ont le choix : un bit dans leur encodage précise où enregistrer le résultat.
{|
|-
|[[File:DocPIC16F84 4.png|centre|vignette|upright=2|Microarchitecture simplifiée d'un microcontroleur PIC (ici, un 16F84).]]
|[[File:DocPIC16F84 5.png|centre|vignette|upright=2|Microarchitecture simplifiée d'un microcontroleur PIC (ici, un 16F84), avec les branchements directs.]]
|}
Outre l'accumulateur, les PIC disposent de registres de contrôle, d'un ''program counter'', d'un registre d'état, et d'un pointeur de pile. Un détail très important est que les registres sont mappés en mémoire, à quelques exceptions près ! En clair, on peut y accéder en lisant/écrivant à une adresse mémoire bien précise. Les seules registres qui ne sont pas mappés en mémoire sont l'accumulateur, les registres d'entrée-sortie, et la pile d'adresses de retour intégrée au processeur (voir plus bas). Par exemple, sur les modèles 16F, l'espace d'adressage fait 128 octets, dont 32 sont réservés aux registres du processeur, ce qui fait que seules 96 octets sont adressables comme de la RAM. Mais les 128 octets sont un seul et unique SRAM dans le processeur. Ce qui explique qu'il est difficile de séparer banc de registre et RAM principale sur ce processeur : les deux sont fusionnées !
: Les modèles PIC 17 ont rendu l'accumulateur mappé en mémoire RAM !
[[File:DocPIC16F84.png|centre|vignette|upright=2|DocPIC16F84]]
La petite taille de la ROM d'un PIC n'est pas une surprise. Les architectures 8 bits sont conçues pour ne pas utiliser beaucoup de transistors et être très simples. Aussi, utiliser une petite ROM est nécessaire. Mais il faut aussi adapter le jeu d'instruction, pour qu'il ait une bonne densité de code. Par exemple, il faut faire en sorte d'avoir des instructions assez courtes. Si les instructions font 16 bits au lieu de 32, on divise par deux le nombre de transistors nécessaire pour la mémoire ROM. La conséquence est que le jeu d’instruction des PIC est adapté à cette contrainte.
Les microcontrôleurs PIC utilisent un jeu d'instruction propriétaire, dont les instructions sont très petites. Les premières versions du jeu d'instruction utilisaient des instructions codées sur 12 bits, dont 5 pour l'adresse mémoire de la seconde opérande. Pour les branchements, 3 bits étaient utilisés pour l'opcode, 9 pour l'adresse de destination. Par la suite, les instructions ont été étendues à 13 bits sur les PIC1670, puis à 14, 15 et 16 bits. Les adresses ont alors été élargies, ce qui permet d'adresser en peu plus de mémoire RAM.
Il est intéressant de regarder comment les PIC font pour obtenir des instructions aussi courtes. Premièrement, le fait d'utiliser une architecture à accumulateur, couplé à une RAM très petite aident grandement. Les architectures à accumulateur ont besoin de préciser un opcode et une adresse mémoire pour chaque instruction, pas besoin de préciser de noms de registres ni le mode d'adressage. La taille des adresses mémoire est censé être un problème pour la densité de code, mais les adresses d'un processeur 8 bits font 8 bits. On peut alors avoir un jeu d'instruction étoffé, en utilisant des instructions 16 bits, qui concatènent un opcode et une adresse mémoire, d'un octet chacun.
Mais d'autres optimisations permettent d'avoir une bonne densité de code. Les PIC ont des branchements pour les appels et retour de fonction. Les PIC incorporent une pile d'appel de retour, qui fait 2 à 8 adresses suivant les modèles. Elle permet d'économiser quelques registres, car la pile d'appel n'est pas mappé dans l'espace d'adressage, elle n'est pas adressable. On économise ainsi 2 à 8 registres, sur 32-256 registres. De plus, cela simplifie l'encodage des instructions d'appel/retour de fonction, qui n'ont pas à préciser où enregistre l'adresse de retour.
Les PIC n'ont pas d'instructions de branchement conditionnels, ils font avec une SKIP instruction et des branchements inconditionnels. Du moins, c'est le principe, car si vous regardez la liste des instructions ci-dessous, vous verrez qu'il n'y a pas d'instruction SKIP. A la place, les instructions SKIP sont fusionnées avec d'autres instructions. Elles sont notamment fusionnées avec les instructions d'incrémentation et de décrémentation. Les PIC supportent une incrémentation normale, une décrémentation normale, une décrémentation fusionnée avec une instruction SKIP, et une incrémentation fusionnée avec une instruction SKIP. Les deux dernières incrémentent/décrémentent l'accumulateur et SKIP l'instruction suivante si le résultat est zéro. Elles permettent de fortement simplifier l'implémentation des boucles qui s'exécutent tant que leur compteur atteint zéro.
Les PIC disposent aussi d'instructions de manipulation de bit, pour tester/masquer un bit dans une opérande, 4 en tout. Il y a en a 4 en tout : mettre à 0, mettre à 1, tester si bit = 1, tester si bit = 0. Les instructions qui testent un bit prennent leur opérande dans l'accumulateur. Elles font le test du bit et décident s'il faut skipper l'instruction suivante ou non. Il y a aussi deux instructions de rotation à gauche et droite, qui tiennent compte de la retenue mémorisée dans le registre d'état. Par contre, il n'y a pas d'instructions de décalages, qui peuvent être émulées avec une rotation suivie d'un ET bit à bit. Mentionnons aussi une instruction pour inverser deux ''nibbles'' dans un octet.
Les modèles haute performance ajoutent des instructions d'addition avec retenue entrante, idem pour la soustraction. De telles instructions ssont très utiles pour faire des additions/soustractions sur des opérandes de 16 bits. Le processeur a beau être un CPU 8 bits, il peut être utilisé pour faire des calculs 16 bits, la performance est alors amoindrie, mais ce n'est pas un problème pour les applications d'un tel microcontroleur.
Les modèles intiaux, comme les PIC 10 et 12, ne supportaient pas les interruptions, mais c'est chose réglé sur les modèles plus récents. Ils ont même des registres séparés pour les interruptions et les programmes normaux. De plus, ils intégrent nativement un ''watchdog timer''.
{|class="wikitable" style="text-align:center"
|+ Jeu d'instruction des dodèles PCI 16
|-
! colspan="5" | Instructions diverses
|-
| colspan="3" | 00 0000 0000 0000 || NOP || Ne fait rien
|-
| colspan="3" | 00 0000 0000 1000 || RETURN || Instruction de retour pour une fonction
|-
| colspan="3" | 00 0000 0000 1001 || NOP || Instruction de retour pour une interruption
|-
| colspan="3" | 00 0000 0110 0011 || SLEEP || Mise en veille
|-
| colspan="3" | 00 0000 0110 0100 || CLRWDT || RESET le ''watchdog timer'', intégré dans le PIC
|-
! colspan="5" | Instructions de manipulation de bit
|-
| 0100 || Position du bit dans l'opérande || Adresse mémoire || BCF || Met le bit à 1
|-
| 0101 || Position du bit dans l'opérande || Adresse mémoire || BSF || Met le bit à 0
|-
| 0110 || Position du bit dans l'opérande || Adresse mémoire || BTFSC || Teste si le bit adressé est à 1
|-
| 0111 || Position du bit dans l'opérande || Adresse mémoire || BTFSS || Teste si le bit adressé est à 0
|-
! colspan="5" | Branchements
|-
| colspan="2" | 100 || Adresse mémoire || CALL || Appel de fonction
|-
| colspan="2" | 100 || Adresse mémoire || GOTO || Branchement inconditionnel
|-
! colspan="5" | Instructions logiques/arithmétiques avec opérande lue en mémoire RAM
|-
| colspan="5" | ''Le bit '''d''' dans l'opcode indique la destination : accumulateur ou adresse mémoire''.
|-
| colspan="2" | 0000001 || Adresse mémoire || MOVWF || Store (accumulateur vers destination)
|-
| colspan="2" | 000001d || Adresse mémoire || MOVWF || Met à zéro la destination (adresse ou registre)
|-
| colspan="2" | 000001d || Adresse mémoire || SUBWF || Soustraction
|-
| colspan="2" | 000010d|| Adresse mémoire || DECF || Décrémentation
|-
| colspan="2" | 000100d|| Adresse mémoire || IORWF || OU bit à bit
|-
| colspan="2" | 000101d|| Adresse mémoire || ANDWF || ET bit à bit
|-
| colspan="2" | 000110d || Adresse mémoire || XORWF || XOR bit à bit
|-
| colspan="2" | 000111d || Adresse mémoire || ADDWF VWF || Addition
|-
| colspan="2" | 001000d || Adresse mémoire || MOVF || LOAD
|-
| colspan="2" | 001001d || Adresse mémoire || COMF || NOT bit à bit
|-
| colspan="2" | 001010d || Adresse mémoire || INCF || Incrémentation
|-
| colspan="2" | 001011d || Adresse mémoire || DECFSZ || Décrémentation, puis instruction SKIP si résultat = 0
|-
| colspan="2" | 001100d || Adresse mémoire || RRF || Rotation à droite avec retenue entrante
|-
| colspan="2" | 001101d || Adresse mémoire || RLF || Rotation à gauche avec retenue entrante
|-
| colspan="2" | 001110d || Adresse mémoire || SWAPF || Echange deux ''niblle'' dans un octet
|-
| colspan="2" | 001111d || Adresse mémoire || INCFSZ || Incrémentation, puis instruction SKIP si résultat = 0
|-
! colspan="5" | Instructions logiques/arithmétiques avec constante immédiate
|-
| colspan="2" | 1100xx || Constante immédiate (8bits) || MOVLW || Copie constante dans accumulateur
|-
| colspan="2" | 1101xx || Constante immédiate (8bits) || RETLW || MOV fusionné avec un retour de fonction
|-
| colspan="2" | 111000 || Constante immédiate (8bits) || IORLW || OU
|-
| colspan="2" | 111001 || Constante immédiate (8bits) || ANDLW || ET
|-
| colspan="2" | 111010 || Constante immédiate (8bits) || XORLW || XOR
|-
| colspan="2" | 11110x || Constante immédiate (8bits) || SUBLW || Soustraction
|-
| colspan="2" | 11111x || Constante immédiate (8bits) || ADDLW || Addition
|}
Les PIC gèrent l'adressage absolu et immédiat, mais pas plus. L'adressage absolu, celui où l'adresse est intégrée dans l'instruction, est très simple à implémenter. Les adresses prennent moins d'un octet, vu que la taille de la RAM est très petite, les adresses sont très courtes, les intégrer dans des instructions elles-mêmes courtes n'est pas un problème. L'adresse est encodée sur 5 à 7 bits, selon le modèle, ce qui permet d'adresser entre 32 et 128 octets.
Les PIC ne supportent pas l'adressage indirect, mais peuvent l'émuler grâce à un '''registre d'adresse''' dédié. Il s'agit du registre FSR, qui mémorise l'adresse à lire/écrire. Il est possible de copier un pointeur dedans, qui provient soit de l'accumulateur, soit de la mémoire SRAM. Dans les deux cas, la donnée adressée est lue ou écrite dans un registre INDR, est un registre d’interfaçage rendu adressable. Le registre FSR est directement connecté sur le bus d'adresse.
Les modèles de base se débrouillent avec un registre FSR et un registre INDR, mais les modèles plus performants ont deux ou trois copies de chaque registre. Les modèles PIC18 ajoutent aussi des instructions LOAD/STORE qui émulent les modes d'adressage à post- ou pré-incrément/décrément, et le mode d'adressage "Base + Indice + Décalage", encore une fois en utilisant les registres FSR et INDR.
Avec tout ce qu'on vient de dire, vous devriez pouvoir comprendre la microarchitecture d'un PIC, qui est résumée dans ce schéma.
[[File:DocPIC16F84 all.png|centre|vignette|upright=2.5|Microarchitecture du PIC16F84.]]
===Les microcontrôleurs Intel 8051/8031===
Les microcontrôleurs Intel 8051/8031 sont des microcontrôleurs 8 bits, commercialisés par Intel. Elle contient un processeur 8/16 bits, de la mémoire ROM, une RAM de 128 octets, des ''timers'', et de nombreuses entrées-sorties. Il est relié à 4 ports sur lesquels il peut lire ou écrire 8 bits par port. Il contient aussi deux ''timers'' de 16 bits chacun, qui déclenchent des interruptions quand ils tombent à zéro ou à une valeur configurable. Il supporte des interruptions. L'ensemble utilise une architecture Harvard, contrairement à ce que pourrait faire croire le schéma ci-dessous.
[[File:Microcontroller 8051.gif|centre|vignette|upright=2.5|Microcontrôleur 8051]]
[[File:Pinagem8031.jpg|vignette|Broches du 8051.]]
Ils ont de nombreuses ressemblances avec les microcontrôleurs PIC. Le processeur du 8051 est une architecture à accumulateur de 8 bits, ses registres sont mappés en mémoire RAM, il a un registre d'adresse dédié à l'adressage indirect, un espace d'adressage séparé pour les entrées-sorties et j'en passe. Mais il y a aussi des différences notables. Par exemple, le 8051 n'a pas de pile d'adresse de retour, contrairement aux processeurs PIC. Il fait autrement, à savoir qu'il gère une pile d'appel placée en mémoire RAM,ce qui est très différent. De plus, le 8051 supporte les opérations de multiplications et de divisions, contrairement aux microcontrôleurs PIC qui se limitaient à l'addition et la soustraction.
Une autre particularité est que le processeur incorpore une '''unité de calcul de 1 bit'''. Elle permet de faire des opérations sur des bits, avec 17 instructions possibles au total. L'ALU de 1 bit est reliée à un accumulateur de 1 bit et 32 registres de 1 bits. Elle peut lire des opérandes de 1 bit en mémoire RAM ou sur les ports d'entrée-sortie, qui sont tous bit-adressables. Pour le dire autrement, chaque bit d'un port d'entrée-sortie a sa propre adresse mémoire, qui permet de le sélectionner. Il en est de même avec 18 adresses de la mémoire SRAM, ce qui permet d'adresser 144 bits (18 adresses * 8 bits par octet adressé).
[[File:Intel 8051 arch.svg|centre|vignette|upright=2|Microarchitecture de l'Intel 8051.]]
Les registres du processeur sont mappés en mémoire RAM, y compris l'accumulateur, le registre d'état, le ''program counter'', et bien d'autres. Par contre, ils sont placés de manière à ne pas remplacer de la mémoire RAM. Pour comprendre comment, faisons une remarque : le processeur gère nativement des adresses de 8 bits, mais a 128 octets de SRAM. L'idée est de placer les registres dans les 128 octets de poids fort, au sommet de l'espace d'adressage. D'ailleurs, les entrées-sorties sont mappées dans cette portion de l'espace d'adressage.
Avec ce qu'on vient de dire, on peut donner la ''memory map'' de ce microcontroleur, pour la SRAM. Les 32 premières adresses sont réservés à la mémoire SRAM, c'est 32 octets de RAM utilisable à volonté par le programmeur. Les 16 adresses suivantes sont adressables bit par bit, ou octet par octet. L'intervalle bit-adressable va de l'adresse 32 (inclue) à l'adresse 47 (inclue). Les 96 octets suivants sont de la mémoire RAM adressable, affectée par défaut à la pile d'appel mais adressable via adressage direct si besoin. Les 128 octets de poids fort sont réservés aux registres et aux entrée-sorties mappées en mémoire.
[[File:Memory map du 8051.png|centre|vignette|upright=2|Memory map du 8051]]
===Le Fairchild F8 et la console de jeu Fairchild Channel F===
Un autre exemple est la Fairchild F8 de la défunte entreprise Fairchild Semiconductor. Il incorpore un processeur 8 bits, c'est à dire que le processeur fait des calculs sur des entiers de 8 bits maximum, une mémoire RAM de 64 octets, ainsi qu'une mémoire ROM de 1 kibioctet. Les 64 octets de RAM sont certes très peu, mais c'est suffisant pour certaines applications simples, comme les caisses automatiques de l'époque, ou des applications embarquées. Et de toute façon, il est possible d'ajouter de la mémoire RAM supplémentaire si les 64 octets de RAM intégrée ne suffisent pas. Le système était donc modulaire, adaptable selon les besoins, peu cher pour son implémentation minimale sans RAM en plus.
Vu qu'il s'agit d'un des tout premiers ordinateurs, il est sorti à une époque où la technologie était rudimentaire. À cette époque, le processeur était composé de pièces détachées qu'il fallait souder ensemble pour obtenir un processeur fonctionnel. Ce n'est que plus tard qu'est apparu le micro-processeur, qui regroupe un processeur complet dans un seul circuit intégré. Le résultat est que le processeur du Fairchild F8 est coupé en deux, l'unité de calcul et l'unité de contrôle sont placés dans des pièces détachées séparés.
Le microcontrôleur est composé de trois à quatre pièces détachées, certaines étant optionnelles. La première est le '''3850 CPU''', qui regroupe l'unité de calcul et la mémoire RAM intégrée. La seconde est le PSU (''3851 Program Storage Unit''), qui regroupe la mémoire ROM et l'unité de contrôle, ''program counter'' inclut. S'il y a besoin d'utiliser plus de RAM, il faut ajouter un circuit d’interface mémoire, qui est au choix le ''3852 Dynamic Memory Interface'' (DMI) ou le ''3853 Static Memory Interface'', le premier étant connecté à une mémoire de type DRAM, l'autre à une SRAM (nous verrons ce que sont les DRAM et les SRAM dans le prochain chapitre).
[[File:Fairchild F8.png|centre|vignette|upright=2|Fairchild F8]]
Le système minimal est composé d'un PSU et d'un 3850, sans les circuits d'interface mémoire. Le tout donne un système avec un processeur 8 bit, 64 octets de RAM et 1 kibioctet de ROM, les deux mémoires étant intégrées dans le "processeur". Le processeur gérait 4 entrées-sorties, chacune étant reliée avec un bus de 8 bit au processeur. Au passage, en 1977, Mostek a créé un microcontrôleur qui regroupe un PSU et un 3850 : le Mostek 3870. Le système minimal n'avait pas de bus d'adresse, vu que la RAM était intégrée au processeur. C'est les 3852 et 3853 qui ajoutaient un bus d'adresse. Ils ajoutent un bus d'adresse de 16 bits, ce qui permet d'adresser 64 kibioctets de RAM.
[[File:Fairchild-Channel-F.jpg|vignette|un Fairchild Channel F]]
Le Fairchild F8 a été utilisé dans la Fairchild Channel F, une des toute première console de seconde génération, à savoir des consoles qui utilisaient des cartouches de jeu. Avant les consoles de seconde génération, les consoles étaient non-programmables. Elles étaient conçues pour faire tourner un jeu précis, aucun autre, le jeu étant implémenté dans leurs circuits.
La Fairchild Channel F est composé du système minimal, auquel on a ajouté une carte son rudimentaire et 2 kibioctets de mémoire vidéo. La mémoire vidéo sert uniquement pour afficher des images à l'écran : on écrit l'image à afficher dedans, un circuit vidéo se charge de l'afficher à l'écran automatiquement. Le processeur ne fait qu'écrire dans cette RAM vidéo, il ne peut pas en lire le contenu. De la RAM supplémentaire peut cependant être ajoutée dans les cartouches de jeu.
===Le HP Nanoprocessor : un processeur sans ALU===
Un dernier exemple est celui du processeur HP Nanoprocessor, de l'entreprise HP. Il a été commercialisé en 1974, en même temps que les premiers micro-processeurs d'Intel. Tous les processeurs de l'époque étaient des processeurs 8 bits et le HP Nanoprocessor ne faisait pas exception. Ce n'était pas un processeur haute performance, il était destiné à des applications d'informatique industrielle ou embarquée. D'ailleurs, il utilisait des transistors de type metal-gate, peu performants, là où ses contemporains utilisait des transistors en silicium, plus performants.
Mais une caractéristique qui rend cela encore plus claire est qu'il n'y a pas d'ALU ! En effet, ce processeur est incapable de faire des additions, des soustractions ou autres opérations simples ! Il est cependant capable d'effectuer des incrémentations et décrémentations, des décalages, des opérations logiques comme des ET/OU/NON/XOR et bien d'autres. Il supporte en tout 48 instructions, avec un support limité des modes d'adressage indirects. Les instructions de branchement étaient des instructions SKIP, il n'y avait pas d'instructions de branchement généralistes.
Pour ce qui est des registres, il disposait de 16 registres de 8 bits et d'un accumulateur. Niveau mémoire, il était relié à une mémoire ROM, rien de plus. Il n'avait de RAM supplémentaire qu'on pouvait lui adjoindre, il devait se débrouiller avec seulement ses registres. Et cela ne posait pas de problèmes pour son usage. Seul le mode d'adressage indirect à registre est supporté, il n'y a pas de registres d'indices. Ce mode d'adressage permet de lire des données en mémoire ROM, la ROM pouvant contenir des tableaux de valeurs constantes.
: Il est possible de lui adjoindre de la RAM via les ports d'entrée-sortie, ainsi qu'une ALU, mais RAM et ALU sont traités comme des périphériques avec lesquels on communique, ils ne sont pas intégrés au processeur.
Niveau micro-architecture, il incorporait une unité de calcul logique et un circuit comparateur. Le comparateur était un circuit comparateur série des plus basiques, qui était utilisé pour les instructions de branchement et associées. L'unité de calcul logique gérait des incrémentations/décrémentation, des décalages, les opérations logiques et quelques autres. L'unité de calcul logique était bit-slicée, à savoir conçue en assemblant 8 ALU de 1 bit chacune, enchainées en série. Le tout était combiné à des circuits de ''carry skip''.
[[File:Unité de calcul du HP nanonprocessor.png|centre|vignette|upright=2|Unité de calcul du HP nanoprocessor]]
Son unité de décodage d'instruction était très simple, essentiellement basée sur des portes NOR, grâce à un encodage efficace des instructions machine. Le ''program counter'' fait 11 bits, ce qui permet d'adresser une ROM de 2 kibioctets. Le ''program counter'' était relié à un circuit incrémenteur qui gérait les isntructions SKIP (il pouvait incrémenter le ''program counter'' par pas de 1 ou de 2 en cas de SKIP). Le processeur contient aussi deux registres, qui servent en quelque sorte de pile d'adresse de retour. Un premier registre mémorise l'adresse de retour d'une fonction, l'autre mémorise le ''program counter'' lors d'une interruption, pour savoir où brancher à la fin de l'interruption.
[[File:HP nanoprocessor.png|centre|vignette|upright=2.5|HP nanoprocessor]]
Fait intéressant, le concepteur du processeur a gracieusement donné les masques utilisés pour graver le silicium du processeur au site [https://www.cpushack.com/ CPU Shack]. Les masques en question sont disponibles ici :
* [https://www.cpushack.com/2020/08/20/hp-nanoprocessor-mask-set/ HP NanoProcessor Mask Set]
* [https://www.cpushack.com/2020/08/09/the-forgotten-ones-hp-nanoprocessor/ The Forgotten Ones: HP Nanoprocessor]
Les masques ont été analysés par Ken Shirrif dans cet article de blog :
* [https://www.righto.com/2020/09/hp-nanoprocessor-part-ii-reverse.html HP Nanoprocessor part II: Reverse-engineering the circuits from the masks]
==Les processeurs 8/16 bits à architecture Von Neumann==
L'usage d'une architecture Harvard est une solution pour adresser plus de mémoire avec des CPU 8 bits. Mais plusieurs microprocesseurs commerciaux n'utilisaient pas cette solution. À la place, c'était des architectures Von Neumann, mais qui étaient capables de gérer des adresses de 16 bits. Les données faisaient 8 bits, les registres faisaient 8 bits, mais quelques techniques permettaient de gérer des adresses de 16 bits. Nous parlerons de '''processeurs 8/16 bits''' pour les désigner, et nous allons les étudier à part.
Un point important est que la gestion d'adresses de 16 bits permet d'adresser 64 kibioctets, qui peuvent être remplis avec de la RAM et de la ROM. On a donc le meilleur des mondes : 64 kibioctets de mémoire, mais avec des données de 8 bits et les économies de circuit qui vont avec. L'avantage est que le processeur peut maintenant gérer une vraie pile d'appel, pas seulement une pile d'adresse de retour. Il lui suffit pour cela d'intégrer un pointeur de pile codé sur 16 bits.
===Les modes d'adressage par page des CPU Motorola===
Les processeurs Motorola 8 bits étaient des processeurs 8 bits avec un bus d'adresse de 16 bits. C'était des processeurs à accumulateur incorporant deux registres d'indice, un registre d'état, un pointeur de pile, et un ''program counter''. Tous les registres sont reliés au bus d'adresse, sauf le registre d'état et l’accumulateur. Tous les registres font 8 bits, sauf le ''program counter''. La pile est câblée pour être dans un bloc de 256 octets compris entre l'adresse 1 0000 0000 et l'adresse 1 1111 1111, ce qui fait que son adressage se fait avec un seul octet.
[[File:6502-architecture.svg|centre|vignette|upright=1.5|Architecture simplifiée du 6502.</br> X et Y : registres d'indice ;</br> S : le pointeur de pile ;</br> A : accumulateur ;</br>P : registre d'état.</br>]]
Les processeurs Motorola 8 bits utilisaient une méthode simple pour adresser 64 kibioctets de RAM, avec des registres de 8 bits. Pour cela, ils utilisaient une variante de l'adressage base + décalage. Elle améliore l'adressage absolu, qui intègre l'adresse à lire/écrire dans l'instruction elle-même. L'adresse en question est de 8 bits et n'encode que les 8 bits de poids faible de l'adresse, les 8 bits de poids fort sont dans un '''registre de page''' adressé implicitement. L'adresse finale est obtenue en concaténant ce registre avec l'adresse mémoire intégrée dans l’instruction. Le résultat est que la mémoire était découpée en blocs de 256 consécutifs, chacun pouvant servir de fenêtre de 256 octets. Une page est réservée pour la pile, la seconde, comme dit plus haut.
Formellement, ce mode d'adressage a des ressemblances avec la commutation de banques, une technique qu'on verra dans les chapitres sur l'espace d'adressage et la mémoire virtuelle. Mais ce n'en est pas du tout : le registre de page est utilisé uniquement pour les accès mémoire avec le mode d'adressage base + décalage, mais pas pour les autres accès mémoire, qui gèrent des adresses complètes. Notons que l'usage d'un registre de page dédié fait que celui-ci est adressé implicitement.
Il faut noter que la technique a été utilisée sur des processeurs 16 bits, pour contourner la petite taille des instructions. Un exemple est celui du HP 2100, un processeur 16 bits. Il avait un registre de page de 5 bits et encodait 10 bits d'adresse dans ses instructions. Ses instructions d'accès mémoire disposaient d'un bit qui choisit quel mode d'adressage utiliser. S'il était à 0, l'adressage absolu était utilisé, le registre de page n'était pas utilisé. Mais s'il était à 1, le registre de page était utilisé pour calculer l'adresse.
Une évolution de l'adressage précédent est le '''mode page direct'''. Avec lui, le registre de page est étendu et contient une adresse mémoire complète. L'adresse finale n'est pas obtenue par concaténation, mais en additionnant le registre de page avec l'adresse fournie par adressage absolu + décalage. Un exemple est celui des premiers processeurs Motorola, qui géraient des adresses courtes de 8 bits. L'adresse courte de 8 bits correspondait non pas aux 256 premiers octets de la mémoire, mais à une fenêtre de 256 octets déplaçable en mémoire. La position de la fenêtre de 256 octets était spécifiée par le registre de page de 16 bits, qui précisait l'adresse du début de la fenêtre, celle de sa première donnée.
Il s'agit donc formellement d'adressage base + décalage, à un détail près : il n'y a qu'un seul registre de base. Le fait que ce registre de base soit unique fait qu'il est adressé implicitement, on n'a pas à encoder le numéro/noms de registre dans l'instruction. Le registre de base est utilisé uniquement pour l'adressage absolu, pas pour les autres accès mémoire. S'il y a des ressemblances avec la segmentation, une technique de mémoire virtuelle qu'on abordera dans quelques chapitres, ce n'en est pas vu que le registre de base est utilisé seulement pour un mode d'adressage bien précis.
===Le ''pseudo-aliasing'' des registres des processeurs Intel x86===
Voyons maintenant le cas des anciens processeurs 8 bits d'Intel à savoir l'Intel 4004, 4040, 8008 et 8080. Le Z80, un processeur inspiré des CPU Intel 8 bits, est aussi concerné. Avant de poursuivre, parlons des registres de ces processeurs. Les premiers CPU Intel incorporaient 7 registres de 8 bits nommés A, B, C, D, E, F, H, L, SP. Ils correspondent respectivement à : l'accumulateur A ; six registres nommés B, C, D, E, H et L ; le registre d'état F ; le pointeur de pile SP. Le Z80 ajoute deux registres d'indice X et Y. De plus, le Z80 dispose de registres d'interruption, qui sont en quelque sorte des copies des registres A, B, C, D, E, F, H, L. Le tout est illustré dans le tableau ci-dessous.
{|class="wikitable" style="text-align:center;"
|-
!
! Registres des CPU Intel
! Registres supplémentaires du Z80
|-
! Accumulateur
| A
| A'
|-
! Registre d'état
| F
| F'
|-
! Registres généraux
| B, C, D, E, H, L
| B', C', D', E', H', L'
|-
! Pointeur de pile
| colspan="2" | SP (sauf pour le 8008)
|-
! Registres d'indice
|
| X et Y
|}
Le 8008 incorpore une pile d'appel de 7 adresses, dans le processeur lui-même. Il en est de la même avec le 4004 et le 4040, comme on le verra dans la section sur les processeurs 4 bits. Mais le 8080 et le 8085 ont remplacé le tout par un simple pointeur de pile, afin d'avoir une véritable pile d'appel. Autant c'est impossible d'avoir une pile d'appel avec seulement 256 octets de mémoire, autant on peut se le permettre avec 65 536 adresses.
Pour gérer des adresses de 16 bits, ils auraient pu utiliser des registres d'adresse séparés, mais on préféré un système de '''pseudo-''aliasing'' de registres'''. Formellement, c'est un système qui concatène deux registres 8 bits pour obtenir une adresse de 16 bits. L’appariement a lieu lors de certaines opérations bien précises, qui n'ont de sens que pour les adresses : la lecture/écriture en mémoire, et l'incrémentation.
Il y avait cependant des contraintes quant aux paires de registres possibles, toutes les paires de registres n'étaient pas autorisées. Les CPU concernés sont donc des processeurs hybrides accumulateur-registre généraux. L'accumulateur ne peut pas être appairé, seuls les registres généraux le peuvent. Le Z80 autorise plus de paires que les CPU Intel. Voici les paires de registres qui pouvaient servir d'adresse 16 bits :
* Les CPU 8008 d'Intel autorisait une seule paire formée des registres H et L.
* Les autres processeurs, à savoir le 8080, le 8085 et le Z80, autorisaient : les paires BC, DE et HL.
Le 8008 ne gérait que des opérations sur 8 bits. Mais le 8080 et le 8085 ont ajouté des instructions 16 bits qui agissaient sur des paires de registre, que le Z80 a repris. Une paire de registres est considérée comme un registre unique de 16 bits pour certaines opérations arithmétiques, dont l'incrémentation. Voici la liste des instructions concernées :
* INC et DEC pour l'incrémentation et la décrémentation ;
* DAD : additionne le registre HL avec une autre paire (Hl inclus) ;
* LXI : copie une constante immédiate dans une paire de registres ;
* LHLD : lit 16 depuis la mémoire et l'enregistre dans une paire de registres ;
* SHLD : copie 16 bits depuis une paire de registres et l'enregistre en mémoire ;
* PUSH et POP : empile ou dépilent une paire de registre sur la pile ;
* XTHL : échange la paire HL avec les 16 bits au sommet de la pile d'appel ;
* XCHG : échange le contenu de la paire HL et DE.
Pour résumer, le processeur avait des instructions LOAD, STORE, PUSH et POP adaptées pour gérer des paires de registre. De plus, l'instruction XCHG permettait d’échanger le contenu des paires DE et HL. L'instruction a été étendue sur les processeurs 16 bits pour échanger tous les registres. Mais l'implémentation était alors différente. L'incrémentation sur une paire de 16 bit était très utile, car les adresses sont souvent incrémentées quand on parcours un tableau. Ces instructions nous donnent quelques indices sur ce qu'il y a dans le processeur.
Le système de pseudo-aliasing a un impact sur le banc de registre. Le banc de registre regroupe les registres généraux et le pointeur de pile, mais ne contient pas l'accumulateur. Les contraintes sur les paires de registres possibles ne s'expliquent que d'une seule manière : le banc de registre contient des registres de 16 bits, une paire de registres 8 bits est mémorisée dans un registre unique. Il faut donc faire une différence entre les registres architecturaux de 8 bits, et les registres réels de 16 bits.
Le banc de registre a un port de 8 bits pour les données, qui est fabriqué à partir d'un port 16 bits auquel on a rajouté un multiplexeur pour choisir soit l'octet de poids faible, soit l'octet de poids fort. Le bus de données fait 8 bits, ce qui fait que les instructions LOAD, STORE, PUSH et POP pour paires 16 bits sont réalisées en deux fois : on lit/écrit l'octet de poids faible, puis celui de poids fort. Par contre, le bus d'adresse fait bien 16 bits. Cela suggère que le banc de registre dispose d'un port de 16 bits dédié aux adresses, en plus du port de données 8 bits.
[[File:Architecture d'un CPU 8-16 bits avec un banc de registre double port.png|centre|vignette|upright=2|Architecture d'un CPU 8-16 bits avec un banc de registre double port]]
L'incrémentation d'une paire 16 bits ne coute rien à implémenter, ou presque. En effet, le processeur incorpore un incrémenteur 16 bits pour le ''program counter'', qui est relié au bus d'adresse. L'idée est de rentabiliser cet incrémenteur, en lui permettant d'incrémenter des données/adresses de 16 bits obtenues via pseudo-aliasing. De même, il peut être utilisé pour incrémenter le pointeur de pile, voire un compteur de rafraichissement mémoire (pour rappel, le rafraîchissement mémoire demande de balayer la mémoire d'adresse en adresse et été fait par le CPU à l'époque). Pour cela, il suffit de connecter le ''program counter'', le banc de registre, et l'incrémenteur, via un bus dédié.
[[File:Calcul d'adresse par ALU dédiée avec PC séparé.png|centre|vignette|upright=2|Calcul d'adresse par ALU dédiée avec PC séparé]]
Notez qu'on peut encore simplifier le tout en placant le ''program counter'' dans le banc de registre, ce qui ne gênera pas le travail de l'incrémenteur mais simplifiera le câblage au bus d'adresse. Ce n'était pas systématique, certains processeurs mettaient le ''program counter'' dans le banc de registre, d'autres non.
: Inclure le ''program counter'' dans le banc de registre permet parfois de remplir un vide. Par exemple, sur un processeur avec 12 registres, le banc de registre devrait faire idéalement 16 registres, inclure le ''program counter'' dedans fait monter le tout à 13.
[[File:Architecture d'un CPU 8-16 bits.png|centre|vignette|upright=2|Architecture d'un CPU 8-16 bits]]
Les processeurs Intel 8 bits, à savoir le 8008, le 8080 et le 8085 ; mettaient le ''program counter'' dans le banc de registre. Vous avez donc toutes les armes pour comprendre leur micro-architecture. Par exemple, voici la micro-architecture du processeur 8080. Remarquez le banc de registre, qui contient tous les registres sauf l'accumulateur et le registre. Il a deux ports : un pour les adresses et un pour les données. Notez le dé-multiplexeur sur le port de donnée. Pour le reste, il s'agit d'une architecture à accumulateur hybride des plus classiques.
[[File:Intel 8080 arch.svg|centre|vignette|upright=3|Microarchitecture de l'Intel 8080.]]
Le Z80 est un processeur inspiré du design des processeurs Intel 8 bits, mais avec pas mal d'améliorations. Un point particulier de ce processeur est son banc de registre. Il contient tous les registres du processeur, y compris l'accumulateur et le registre d'état ! Les seuls registres en-dehors du banc de registre sont le ''program counter'' et un compteur de rafraichissement mémoire IR.
Un autre point particulier est que les registres dans le banc de registres avaient une copie séparée accessible uniquement pour les interruptions, via fenêtrage de registres. Et l'accumulateur et le registre d'état étant dans le banc de registre, il y avait deux accumulateurs et deux registres d'état. Les registres A, B, C, D, E et F étaient dupliqués, par le pointeur de pile ni les registres d'indice. Les copies des registres étaient nommées A', B', C', D', E' et F'.
Le Z80 supportait des instructions d'échange de registre en plus des CPU Intel 8 bits. L'instruction EX peut échanger soit le contenu des paires D,E et H,F, soit la paire A,F avec la paire A',F'. L'instruction EXX échange les paires BC, DE, HL avec les paires BC', DE', HL'. En faisant cela, le programmeur pouvait utiliser deux fois plus de registres généraux s'il n'utilisait pas les interruptions. L'échange de paires se fait sans copies de registres, mais simplement en modifiant l'adresse envoyée sur le banc de registre. Pour cela, plusieurs bascules mémorisent des bits qui indiquent si les paires ont été échangées ou non. Il y a une bascule pour les paires DE , HL ; une autre pour les paires A,F et paire A',F', une dernière pour l'instruction EXX. En combinant ces bascules avec les noms de registres envoyés par le séquenceur, on peut échanger les paires de registres.
==Le cas particulier des processeurs 4 bits : le 4004 d'Intel==
L'Intel 4004 était le tout premier micro-processeur. Il s'agissait d'un microprocesseur de 4 bits, basé sur une architecture à accumulateur. Il disposait d'un accumulateur et de 16 registres d'indice, tous de 4 bits. Il faisait des calculs sur des données de 4 bits, appelées des nibbles. Cependant, sur ses 46 instructions machines supportées, 41 agissaient sur des opérandes de 8 bits, les 5 restantes sur des opérandes de 16 bits. Simplement, les calculs se faisaient en deux fois, en échangeant des données entre mémoire RAM et accumulateur.
Le 4004 est un circuit intégré avec peu de broches. Il dispose notamment d'un bus de données/adresse, qui est multiplexé, c’est-à-dire qu'il sert alternativement de bus de données et de bus d'adresse selon les besoins. Le bus de commande mémoire fait 5 bits, dont 4 pour les chips de RAM, un pour la ROM. Les adresses sont codées sur 12 bits, les données sur 4 et les instructions sur 8 bits. L'envoi d'une adresse sur le bus se fait en plusieurs fois, de même que la lecture d'une instruction. Il s'agit là d'une adaptation pour outrepasser les limitations d'un processeur 4 bit.
[[File:Intel 4004 processor pinout.png|centre|vignette|upright=2|Broches de l'Intel 4004. Nous verrons à quoi elles servent plus bas.]]
===L'espace d'adressage de l'Intel 4004===
Les adresses du processeur sont sur 12 bits, ce qui fait 4096 adresses différentes. Elles regroupent à la fois la ROM et la mémoire RAM, vu que l'architecture est une sorte de mélange bizarre entre une architecture Von Neumann et Harvard. Le processeur gère bien deux espaces d'adressage séparés, mais la RAM et la ROM sont reliés au même bus. La sortie CM-ROM du processeur indique si l'adresse envoyée correspond à la RAM ou la ROM. Un circuit de décodage d'adresse active ou désactive la RAM selon la valeur de ce bit, l'inverse pour la ROM, en agissant sur leurs bits Chip Select. Seule la RAM ou la ROM répondent alors à l'adresse.
Pour ce qui est de la RAM, le circuit de décodage d'adresse pouvait gérer au maximum 1024 adresses différentes, chacune contenant un nibble. Pour cela, le CPU 4004 était relié à une ou plusieurs RAM externes, des Intel 4002. Chaque Intel 4002 contenait 64 nibbles de données, plus 16 nibbles de statut qu'on ne détaillera pas ici. Les nibbles de statut étaient accessibles en utilisant des instructions d'entrée-sortie, donc pas avec des lectures/écritures mémoire. Les 64 nibbles de données sont découpés en 4 groupes de 16 nibbles. Le CPU pouvait être relié à maximum 16 Intel 4002, ce qui fait 1024 nibbles de données et 256 nibbles de statut. L'ensemble permet de remplir l'espace d'adressage de 1024 adresses.
===Le registre de page et le pseudo-aliasing des registres===
Sélectionner une adresse mémoire utilisait un mélange entre pseudo-aliasing et registre de page. Pour les données, les 1024 adresses étaient découpées en 4 pages de 256 adresses. Pour la ROM, les 4096 adresses étaient découpées en 16 pages de 256 adresses. Localiser une donnée dans une page ne requiert que 8 bits, 2/4 bits supplémentaires permettent de sélectionner la page voulue. Le registre de page était dans le processeur lui-même, et était relié aux sorties du processeur nommées CM-RAM 0, 1, 2 et 3. Les 4 sorties encodaient un nombre qui permet de sélectionner le numéro de page voulu.
Le registre de page fait 5 bits : un pour distinguer RAM et ROM, 4 bits pour sélectionner la page voulue. L'avantage est que la carte mère gère au maximum 16 chips de RAM, ce qui colle parfaitement avec les 4 utilisés pour sélectionner une page. Un chip de RAM correspond à une page, et chacun est activé ou désactivé suivant la page sélectionnée. Pour cela, il suffit d'ajouter un décodeur sur la carte mère, qui prend les 4 bits du registre de page et fournit les signaux Chip Select aux différents chips de RAM.
Reste alors à utiliser les 8 bits d'adresse à l'intérieur d'un chip de RAM. Le 4004 permettait de concaténer deux registres d'indice de 4 bits pour former une adresse de 8 bits. Les instructions d'accès mémoire pouvaient ainsi préciser une paire de registre d'indice pour préciser quelle adresse lire/écrire. Idem pour les branchements indirects : le processeur supportait une instruction de branchement indirect qui précisait l'adresse dans une paire de registres d'indice. Les registres d'indice sont donc assez mal nommés sur cette architecture, vu qu'ils peuvent servir soit de registre d'indice, soit de demi-registre d'adresse. Il s'agit là du système de pseudo-aliasing des registres, mais appliqué aux registres d'indice.
L'Intel 4004 gérait deux instructions pour gérer les adresses mémoires. La première, l'instruction DCL (''Designate Command Line'') configure le registre de page. Elle prend en entrée un numéro de page et le copie dans le registre de page. L'opérande peut provenir d'un registre d'indice ou de l'accumulateur. La seconde, l'instruction SRC (''Send Register Control'') concatène deux registres d'indice pour obtenir une adresse de 8 bits. Un accès mémoire se fait donc en maximum trois instructions : une qui configure le registre de page si ce n'est pas déjà fait, une instruction SRC pour envoyer l'adresse, et une troisième instruction qui dit s'il faut faire une lecture ou une écriture.
===La microarchitecture de l'Intel 4004===
Il incorporait une pile d'adresse de retour intégrée au processeur. La pile d'adresse acceptait exactement 3 adresses maximum. Elle était regroupée avec le ''program counter'' dans un banc de registre, de 4 registres. Le ''program counter'' et le pointeur de pile faisaient chacun 12 bits, soit trois nibble. Ils étaient incrémentés par un incrémenteur dédié.
SI on omet le registre de page et la pile d'adresse, le 4004 est une architecture à accumulateur des plus classiques, avec un bus interne unique, un banc de registre pour les registres d'indices, un accumulateur relié à une unité de calcul. Les registres d'indice étaient dans un banc de registre séparés, car ils faisaient 4 bits chacun, contrairement au pointeur de pile et le ''program counter''. Un détail important est que les bancs de registres du 4004 étaient implémentés avec de la DRAM, et non des registres usuels fabriqués avec des bascules 1 bit.
[[File:Microarchitecture de l'Intel 4004.png|centre|vignette|upright=2.5|Microarchitecture de l'Intel 4004]]
<noinclude>
{{NavChapitre | book=Fonctionnement d'un ordinateur
| prev=Les architectures à pile et mémoire-mémoire
| prevText=Les architectures à pile et mémoire-mémoire
| next=Les processeurs de traitement du signal
| nextText=Les processeurs de traitement du signal
}}
</noinclude>
064ykdb8ti4go77f9vqm7jchj87mhax
765722
765721
2026-05-01T20:12:16Z
Mewtow
31375
/* Les microcontrôleurs Intel 8051/8031 */
765722
wikitext
text/x-wiki
Nous avons déjà abordé la notion de processeur 8, 16, 32, 64 bits. Elle désigne la taille des registres généraux, ou de l'accumulateur. De nos jours, les processeurs 32 et 64 bits sont la norme, mais les premiers micro-processeurs étaient des processeurs 4 et 8, avant de passer rapidement au 16 bits. La raison est que leur budget en transistor limité faisait qu'on ne pouvait pas utiliser une ALU trop grande : une ALU 8 bit prend deux fois moins de place et de transistors qu'une ALU 16 bits. Cependant, les processeurs 8 bits avaient de sérieuses limitations qui étaient compensées par diverses solutions. Dans ce chapitre, nous allons faire une revue rapide des processeurs 8 bits et de leurs fonctionnalités.
La principale limitation des CPU 8 bits était l'adressage : des registres de 8 bits limitaient l'espace d'adressage à seulement 256 adresses, soit à peine 256 octets ! Intuitivement, on se dit que 256 octets est purement impraticable, on ne peut rien faire d'intéressant avec seulement 256 de RAM + ROM. Et c'est partiellement vrai. L'adage veut que 16 bits est la taille minimale intéressante, la limite à partir de laquelle on a assez de mémoire RAM/ROM pour coder des applications intéressantes. Mais 256 octets de RAM est largement suffisant sur de nombreux systèmes embarqués simples s'en accommodent : des caisses enregistreuses, des systèmes de régulation de feu de circulation, etc.
Pour les applications demandant plus de mémoire RAM, les CPU de l'époque contournaient la limitation de 256 octets de RAM avec de nombreux stratagèmes. Dans ce qui va suivre, nous allons séparer les CPU 8 bits selon qu'ils utilisent une architecture Harvard ou une architecture Von Neumann. La raison est qu'une architecture Harvard permet en soi de contourner partiellement ce problème d'adressage. Les choses sont plus compliquées avec une architecture Von Neumann.
==Les processeurs 8/16 bits à architecture Harvard ==
La première solution est d'utiliser une architecture Harvard. Le processeur 8 bit a alors deux espaces d'adressage : un pour la RAM, un autre pour la ROM. Et les deux utilisent des adresses de taille différente. La ROM est reliée à un bus d'adresse de 16 bits, alors que la RAM est elle connectée à un bus d'adresse de 8 bits. La RAM est donc limitée à 256 octets, alors que la ROM peut monter jusqu'à 64 kibioctets. Mine de rien, faire ainsi est largement suffisant.
Pour encore améliorer la situation, il est possible d'utiliser une architecture Harvard modifiée, qui permet de lire des données depuis la mémoire ROM. Cela réduit encore plus les besoins en mémoire RAM. Les constantes manipulées par le programme sont mémorisées en ROM, lues depuis la ROM, au lieu d'être chargées en RAM. Avec ce genre de stratagèmes, 256 octets de RAM est largement suffisant sur de nombreux systèmes, à condition qu'on ait assez de ROM pour coder un programme digne de ce nom. Par exemple, de nombreux systèmes embarqués simples s'en accommodent : des caisses enregistreuses, des systèmes de régulation de feu de circulation, etc.
Les processeurs 8 bits intègrent parfois les 256 octets de RAM directement dans le processeur, dans le banc de registres ! Beaucoup en implémentaient moins, avec par exemple seulement 64 octets de RAM, ou 32 octets, ou 128 octets. L'avantage est que cela élimine le bus pour les données, ce qui économise beaucoup de broches sur le circuit intégré du CPU. Et pour les applications demandant plus de RAM, on pouvait ajouter un circuit séparé qui permettait d'adresser une RAM plus grande. Et c'est ce qui explique que cette solution est beaucoup utilisée sur les microcontrôleurs peu puissants. Les exemples qui vont suivre devraient vous convaincre.
: Les processeurs de ce type implémentent des optimisations pour adresser plus de 256 octets de RAM. La plus connue est la commutation de banques. Mais nous n'avons pas encore abordé celle-ci, et il faudra attendre le chapitre sur l'espace d'adressage pour cela.
===Les microcontrôleurs PIC===
Les '''microcontrôleurs PIC''' regroupent des microcontrôleurs allant de microcontrôleurs 8 bits aux performances très faible, à des microcontrôleurs 32 bits bien plus puissants. Les microcontrôleurs PIC sont très utilisés dans l'embarqué ou d'informatique industrielle. Ils sont vendu à des volumes assez impressionnants, plusieurs millions par an. Et si vous avez ou êtes en train de faire des études d'électronique, je parie que vous les avez déjà vu en classe, ou que ce ne saurait tarder. Dans ce qui suit, nous allons nous concentrer sur les microcontrôleurs PIC 8 bits, à savoir les PIC 16, 16 et 18. Les PIC 24, qui sont des microcontrôleurs 16 bits, ne seront pas abordés.
Les microcontrôleurs PIC 8 bits sont une architecture Harvard, comme dit plus haut. Il y a aussi des registres pour les entrées et sorties. Les registres d'entrée-sortie permettent de lire ou écrire sur un port d'entrée-sortie ou de lire un ''timer''. En clair, les PIC ont un espace d'adressage séparé pour les entrées-sorties.
La mémoire ROM des PIC va de 1024 instructions à 4096 instructions. En comparaison, la mémoire RAM des microcontrôleurs PIC ne peut pas dépasser 256 adresses, et elle est encore plus petite en pratique sur certains modèles. Pour donner un exemple, le PIC16F84 a une RAM composée de 68 "registres" de 8 bits. Le terme "registres" devrait vous faire tiquer, mais c'est bien le terme utilisé dans la documentation des PIC. Et il faut admettre que la différence entre banc de registre et SRAM intégrée est floue, mais nous expliquerons pourquoi dans quelques paragraphes.
: Les PIC 18 peuvent adresser plus de 256 octets de RAM en utilisant la commutation de banques, une technique qui sera abordée dans plusieurs chapitres.
[[File:DocPIC16F84 3.png|centre|vignette|upright=3|Espaces d'adressage du PIC16F84.]]
Un détail est que la SRAM n'a qu'un seul port qui sert à la fois pour les lectures et écritures. Pour compenser, les PIC sont des architectures à accumulateur, où une opérande est lue depuis la SRAM, l'autre depuis l'accumulateur. Leur implémentation de l'accumulateur ajoute une petite subtilité : le résultat d'une opération arithmétique peut être enregistré ailleurs que dans l'accumulateur. Le résultat peut aussi remplacer la seconde opérande, celle lue en mémoire RAM. Dit autrement, le résultat est enregistré dans l'adresse mémoire source. Les instructions de calcul ont le choix : un bit dans leur encodage précise où enregistrer le résultat.
{|
|-
|[[File:DocPIC16F84 4.png|centre|vignette|upright=2|Microarchitecture simplifiée d'un microcontroleur PIC (ici, un 16F84).]]
|[[File:DocPIC16F84 5.png|centre|vignette|upright=2|Microarchitecture simplifiée d'un microcontroleur PIC (ici, un 16F84), avec les branchements directs.]]
|}
Outre l'accumulateur, les PIC disposent de registres de contrôle, d'un ''program counter'', d'un registre d'état, et d'un pointeur de pile. Un détail très important est que les registres sont mappés en mémoire, à quelques exceptions près ! En clair, on peut y accéder en lisant/écrivant à une adresse mémoire bien précise. Les seules registres qui ne sont pas mappés en mémoire sont l'accumulateur, les registres d'entrée-sortie, et la pile d'adresses de retour intégrée au processeur (voir plus bas). Par exemple, sur les modèles 16F, l'espace d'adressage fait 128 octets, dont 32 sont réservés aux registres du processeur, ce qui fait que seules 96 octets sont adressables comme de la RAM. Mais les 128 octets sont un seul et unique SRAM dans le processeur. Ce qui explique qu'il est difficile de séparer banc de registre et RAM principale sur ce processeur : les deux sont fusionnées !
: Les modèles PIC 17 ont rendu l'accumulateur mappé en mémoire RAM !
[[File:DocPIC16F84.png|centre|vignette|upright=2|DocPIC16F84]]
La petite taille de la ROM d'un PIC n'est pas une surprise. Les architectures 8 bits sont conçues pour ne pas utiliser beaucoup de transistors et être très simples. Aussi, utiliser une petite ROM est nécessaire. Mais il faut aussi adapter le jeu d'instruction, pour qu'il ait une bonne densité de code. Par exemple, il faut faire en sorte d'avoir des instructions assez courtes. Si les instructions font 16 bits au lieu de 32, on divise par deux le nombre de transistors nécessaire pour la mémoire ROM. La conséquence est que le jeu d’instruction des PIC est adapté à cette contrainte.
Les microcontrôleurs PIC utilisent un jeu d'instruction propriétaire, dont les instructions sont très petites. Les premières versions du jeu d'instruction utilisaient des instructions codées sur 12 bits, dont 5 pour l'adresse mémoire de la seconde opérande. Pour les branchements, 3 bits étaient utilisés pour l'opcode, 9 pour l'adresse de destination. Par la suite, les instructions ont été étendues à 13 bits sur les PIC1670, puis à 14, 15 et 16 bits. Les adresses ont alors été élargies, ce qui permet d'adresser en peu plus de mémoire RAM.
Il est intéressant de regarder comment les PIC font pour obtenir des instructions aussi courtes. Premièrement, le fait d'utiliser une architecture à accumulateur, couplé à une RAM très petite aident grandement. Les architectures à accumulateur ont besoin de préciser un opcode et une adresse mémoire pour chaque instruction, pas besoin de préciser de noms de registres ni le mode d'adressage. La taille des adresses mémoire est censé être un problème pour la densité de code, mais les adresses d'un processeur 8 bits font 8 bits. On peut alors avoir un jeu d'instruction étoffé, en utilisant des instructions 16 bits, qui concatènent un opcode et une adresse mémoire, d'un octet chacun.
Mais d'autres optimisations permettent d'avoir une bonne densité de code. Les PIC ont des branchements pour les appels et retour de fonction. Les PIC incorporent une pile d'appel de retour, qui fait 2 à 8 adresses suivant les modèles. Elle permet d'économiser quelques registres, car la pile d'appel n'est pas mappé dans l'espace d'adressage, elle n'est pas adressable. On économise ainsi 2 à 8 registres, sur 32-256 registres. De plus, cela simplifie l'encodage des instructions d'appel/retour de fonction, qui n'ont pas à préciser où enregistre l'adresse de retour.
Les PIC n'ont pas d'instructions de branchement conditionnels, ils font avec une SKIP instruction et des branchements inconditionnels. Du moins, c'est le principe, car si vous regardez la liste des instructions ci-dessous, vous verrez qu'il n'y a pas d'instruction SKIP. A la place, les instructions SKIP sont fusionnées avec d'autres instructions. Elles sont notamment fusionnées avec les instructions d'incrémentation et de décrémentation. Les PIC supportent une incrémentation normale, une décrémentation normale, une décrémentation fusionnée avec une instruction SKIP, et une incrémentation fusionnée avec une instruction SKIP. Les deux dernières incrémentent/décrémentent l'accumulateur et SKIP l'instruction suivante si le résultat est zéro. Elles permettent de fortement simplifier l'implémentation des boucles qui s'exécutent tant que leur compteur atteint zéro.
Les PIC disposent aussi d'instructions de manipulation de bit, pour tester/masquer un bit dans une opérande, 4 en tout. Il y a en a 4 en tout : mettre à 0, mettre à 1, tester si bit = 1, tester si bit = 0. Les instructions qui testent un bit prennent leur opérande dans l'accumulateur. Elles font le test du bit et décident s'il faut skipper l'instruction suivante ou non. Il y a aussi deux instructions de rotation à gauche et droite, qui tiennent compte de la retenue mémorisée dans le registre d'état. Par contre, il n'y a pas d'instructions de décalages, qui peuvent être émulées avec une rotation suivie d'un ET bit à bit. Mentionnons aussi une instruction pour inverser deux ''nibbles'' dans un octet.
Les modèles haute performance ajoutent des instructions d'addition avec retenue entrante, idem pour la soustraction. De telles instructions ssont très utiles pour faire des additions/soustractions sur des opérandes de 16 bits. Le processeur a beau être un CPU 8 bits, il peut être utilisé pour faire des calculs 16 bits, la performance est alors amoindrie, mais ce n'est pas un problème pour les applications d'un tel microcontroleur.
Les modèles intiaux, comme les PIC 10 et 12, ne supportaient pas les interruptions, mais c'est chose réglé sur les modèles plus récents. Ils ont même des registres séparés pour les interruptions et les programmes normaux. De plus, ils intégrent nativement un ''watchdog timer''.
{|class="wikitable" style="text-align:center"
|+ Jeu d'instruction des dodèles PCI 16
|-
! colspan="5" | Instructions diverses
|-
| colspan="3" | 00 0000 0000 0000 || NOP || Ne fait rien
|-
| colspan="3" | 00 0000 0000 1000 || RETURN || Instruction de retour pour une fonction
|-
| colspan="3" | 00 0000 0000 1001 || NOP || Instruction de retour pour une interruption
|-
| colspan="3" | 00 0000 0110 0011 || SLEEP || Mise en veille
|-
| colspan="3" | 00 0000 0110 0100 || CLRWDT || RESET le ''watchdog timer'', intégré dans le PIC
|-
! colspan="5" | Instructions de manipulation de bit
|-
| 0100 || Position du bit dans l'opérande || Adresse mémoire || BCF || Met le bit à 1
|-
| 0101 || Position du bit dans l'opérande || Adresse mémoire || BSF || Met le bit à 0
|-
| 0110 || Position du bit dans l'opérande || Adresse mémoire || BTFSC || Teste si le bit adressé est à 1
|-
| 0111 || Position du bit dans l'opérande || Adresse mémoire || BTFSS || Teste si le bit adressé est à 0
|-
! colspan="5" | Branchements
|-
| colspan="2" | 100 || Adresse mémoire || CALL || Appel de fonction
|-
| colspan="2" | 100 || Adresse mémoire || GOTO || Branchement inconditionnel
|-
! colspan="5" | Instructions logiques/arithmétiques avec opérande lue en mémoire RAM
|-
| colspan="5" | ''Le bit '''d''' dans l'opcode indique la destination : accumulateur ou adresse mémoire''.
|-
| colspan="2" | 0000001 || Adresse mémoire || MOVWF || Store (accumulateur vers destination)
|-
| colspan="2" | 000001d || Adresse mémoire || MOVWF || Met à zéro la destination (adresse ou registre)
|-
| colspan="2" | 000001d || Adresse mémoire || SUBWF || Soustraction
|-
| colspan="2" | 000010d|| Adresse mémoire || DECF || Décrémentation
|-
| colspan="2" | 000100d|| Adresse mémoire || IORWF || OU bit à bit
|-
| colspan="2" | 000101d|| Adresse mémoire || ANDWF || ET bit à bit
|-
| colspan="2" | 000110d || Adresse mémoire || XORWF || XOR bit à bit
|-
| colspan="2" | 000111d || Adresse mémoire || ADDWF VWF || Addition
|-
| colspan="2" | 001000d || Adresse mémoire || MOVF || LOAD
|-
| colspan="2" | 001001d || Adresse mémoire || COMF || NOT bit à bit
|-
| colspan="2" | 001010d || Adresse mémoire || INCF || Incrémentation
|-
| colspan="2" | 001011d || Adresse mémoire || DECFSZ || Décrémentation, puis instruction SKIP si résultat = 0
|-
| colspan="2" | 001100d || Adresse mémoire || RRF || Rotation à droite avec retenue entrante
|-
| colspan="2" | 001101d || Adresse mémoire || RLF || Rotation à gauche avec retenue entrante
|-
| colspan="2" | 001110d || Adresse mémoire || SWAPF || Echange deux ''niblle'' dans un octet
|-
| colspan="2" | 001111d || Adresse mémoire || INCFSZ || Incrémentation, puis instruction SKIP si résultat = 0
|-
! colspan="5" | Instructions logiques/arithmétiques avec constante immédiate
|-
| colspan="2" | 1100xx || Constante immédiate (8bits) || MOVLW || Copie constante dans accumulateur
|-
| colspan="2" | 1101xx || Constante immédiate (8bits) || RETLW || MOV fusionné avec un retour de fonction
|-
| colspan="2" | 111000 || Constante immédiate (8bits) || IORLW || OU
|-
| colspan="2" | 111001 || Constante immédiate (8bits) || ANDLW || ET
|-
| colspan="2" | 111010 || Constante immédiate (8bits) || XORLW || XOR
|-
| colspan="2" | 11110x || Constante immédiate (8bits) || SUBLW || Soustraction
|-
| colspan="2" | 11111x || Constante immédiate (8bits) || ADDLW || Addition
|}
Les PIC gèrent l'adressage absolu et immédiat, mais pas plus. L'adressage absolu, celui où l'adresse est intégrée dans l'instruction, est très simple à implémenter. Les adresses prennent moins d'un octet, vu que la taille de la RAM est très petite, les adresses sont très courtes, les intégrer dans des instructions elles-mêmes courtes n'est pas un problème. L'adresse est encodée sur 5 à 7 bits, selon le modèle, ce qui permet d'adresser entre 32 et 128 octets.
Les PIC ne supportent pas l'adressage indirect, mais peuvent l'émuler grâce à un '''registre d'adresse''' dédié. Il s'agit du registre FSR, qui mémorise l'adresse à lire/écrire. Il est possible de copier un pointeur dedans, qui provient soit de l'accumulateur, soit de la mémoire SRAM. Dans les deux cas, la donnée adressée est lue ou écrite dans un registre INDR, est un registre d’interfaçage rendu adressable. Le registre FSR est directement connecté sur le bus d'adresse.
Les modèles de base se débrouillent avec un registre FSR et un registre INDR, mais les modèles plus performants ont deux ou trois copies de chaque registre. Les modèles PIC18 ajoutent aussi des instructions LOAD/STORE qui émulent les modes d'adressage à post- ou pré-incrément/décrément, et le mode d'adressage "Base + Indice + Décalage", encore une fois en utilisant les registres FSR et INDR.
Avec tout ce qu'on vient de dire, vous devriez pouvoir comprendre la microarchitecture d'un PIC, qui est résumée dans ce schéma.
[[File:DocPIC16F84 all.png|centre|vignette|upright=2.5|Microarchitecture du PIC16F84.]]
===Les microcontrôleurs Intel 8051/8031===
Les microcontrôleurs Intel 8051/8031 sont des microcontrôleurs 8 bits, commercialisés par Intel. Elle contient un processeur 8/16 bits, de la mémoire ROM, une RAM de 128 octets, des ''timers'', et de nombreuses entrées-sorties. Il est relié à 4 ports sur lesquels il peut lire ou écrire 8 bits par port. Il contient aussi deux ''timers'' de 16 bits chacun, qui déclenchent des interruptions quand ils tombent à zéro ou à une valeur configurable. Il supporte des interruptions. L'ensemble utilise une architecture Harvard, contrairement à ce que pourrait faire croire le schéma ci-dessous.
[[File:Microcontroller 8051.gif|centre|vignette|upright=2.5|Microcontrôleur 8051]]
[[File:Pinagem8031.jpg|vignette|Broches du 8051.]]
Ils ont de nombreuses ressemblances avec les microcontrôleurs PIC. Le processeur du 8051 est une architecture à accumulateur de 8 bits, ses registres sont mappés en mémoire RAM, il a un registre d'adresse dédié à l'adressage indirect, un espace d'adressage séparé pour les entrées-sorties et j'en passe. Mais il y a aussi des différences notables. Par exemple, le 8051 n'a pas de pile d'adresse de retour, contrairement aux processeurs PIC. Il fait autrement, à savoir qu'il gère une pile d'appel placée en mémoire RAM,ce qui est très différent. De plus, le 8051 supporte les opérations de multiplications et de divisions, contrairement aux microcontrôleurs PIC qui se limitaient à l'addition et la soustraction.
Une autre particularité est que le processeur incorpore une '''unité de calcul de 1 bit'''. Elle permet de faire des opérations sur des bits, avec 17 instructions possibles au total. L'ALU de 1 bit est reliée à un accumulateur de 1 bit et 32 registres de 1 bits. Elle peut lire des opérandes de 1 bit en mémoire RAM ou sur les ports d'entrée-sortie, qui sont tous bit-adressables. Pour le dire autrement, chaque bit d'un port d'entrée-sortie a sa propre adresse mémoire, qui permet de le sélectionner. Il en est de même avec 18 adresses de la mémoire SRAM, ce qui permet d'adresser 144 bits (18 adresses * 8 bits par octet adressé).
[[File:Intel 8051 arch.svg|centre|vignette|upright=2|Microarchitecture de l'Intel 8051.]]
Les registres du processeur sont mappés en mémoire RAM, y compris l'accumulateur, le registre d'état, le ''program counter'', et bien d'autres. Par contre, ils sont placés de manière à ne pas remplacer de la mémoire RAM. Pour comprendre comment, faisons une remarque : le processeur gère nativement des adresses de 8 bits, mais a 128 octets de SRAM. L'idée est de placer les registres dans les 128 octets de poids fort, au sommet de l'espace d'adressage. D'ailleurs, les entrées-sorties sont mappées dans cette portion de l'espace d'adressage.
Avec ce qu'on vient de dire, on peut donner la ''memory map'' de ce microcontroleur, pour la SRAM. Les 32 premières adresses sont réservés à la mémoire SRAM, c'est 32 octets de RAM utilisable à volonté par le programmeur. Les 16 adresses suivantes sont adressables bit par bit, ou octet par octet. L'intervalle bit-adressable va de l'adresse 32 (inclue) à l'adresse 47 (inclue). Les 96 octets suivants sont de la mémoire RAM adressable, affectée par défaut à la pile d'appel mais adressable via adressage direct si besoin. Les 128 octets de poids fort sont réservés aux registres et aux entrée-sorties mappées en mémoire.
[[File:Memory map du 8051.png|centre|vignette|upright=2|Memory map du 8051]]
Les 128 octets au sommet de l'espace d'adressage sont décrit dans le schéma ci-dessous. On voit que l'accumulateur est mappé dedans, de même que le registre d'état PSW et le ''program counter'' IP. Les ports d'entrée-sortie sont aussi mappés dedans. Une partie des octets sont bit-adressables, et cette partie inclus les registres du processeur et les ports d'entrées-sorties.
[[File:MFrey SFR MCS-51.svg|centre|vignette|upright=2|Memory map des 128 octets de poids fort du 8051]]
===Le Fairchild F8 et la console de jeu Fairchild Channel F===
Un autre exemple est la Fairchild F8 de la défunte entreprise Fairchild Semiconductor. Il incorpore un processeur 8 bits, c'est à dire que le processeur fait des calculs sur des entiers de 8 bits maximum, une mémoire RAM de 64 octets, ainsi qu'une mémoire ROM de 1 kibioctet. Les 64 octets de RAM sont certes très peu, mais c'est suffisant pour certaines applications simples, comme les caisses automatiques de l'époque, ou des applications embarquées. Et de toute façon, il est possible d'ajouter de la mémoire RAM supplémentaire si les 64 octets de RAM intégrée ne suffisent pas. Le système était donc modulaire, adaptable selon les besoins, peu cher pour son implémentation minimale sans RAM en plus.
Vu qu'il s'agit d'un des tout premiers ordinateurs, il est sorti à une époque où la technologie était rudimentaire. À cette époque, le processeur était composé de pièces détachées qu'il fallait souder ensemble pour obtenir un processeur fonctionnel. Ce n'est que plus tard qu'est apparu le micro-processeur, qui regroupe un processeur complet dans un seul circuit intégré. Le résultat est que le processeur du Fairchild F8 est coupé en deux, l'unité de calcul et l'unité de contrôle sont placés dans des pièces détachées séparés.
Le microcontrôleur est composé de trois à quatre pièces détachées, certaines étant optionnelles. La première est le '''3850 CPU''', qui regroupe l'unité de calcul et la mémoire RAM intégrée. La seconde est le PSU (''3851 Program Storage Unit''), qui regroupe la mémoire ROM et l'unité de contrôle, ''program counter'' inclut. S'il y a besoin d'utiliser plus de RAM, il faut ajouter un circuit d’interface mémoire, qui est au choix le ''3852 Dynamic Memory Interface'' (DMI) ou le ''3853 Static Memory Interface'', le premier étant connecté à une mémoire de type DRAM, l'autre à une SRAM (nous verrons ce que sont les DRAM et les SRAM dans le prochain chapitre).
[[File:Fairchild F8.png|centre|vignette|upright=2|Fairchild F8]]
Le système minimal est composé d'un PSU et d'un 3850, sans les circuits d'interface mémoire. Le tout donne un système avec un processeur 8 bit, 64 octets de RAM et 1 kibioctet de ROM, les deux mémoires étant intégrées dans le "processeur". Le processeur gérait 4 entrées-sorties, chacune étant reliée avec un bus de 8 bit au processeur. Au passage, en 1977, Mostek a créé un microcontrôleur qui regroupe un PSU et un 3850 : le Mostek 3870. Le système minimal n'avait pas de bus d'adresse, vu que la RAM était intégrée au processeur. C'est les 3852 et 3853 qui ajoutaient un bus d'adresse. Ils ajoutent un bus d'adresse de 16 bits, ce qui permet d'adresser 64 kibioctets de RAM.
[[File:Fairchild-Channel-F.jpg|vignette|un Fairchild Channel F]]
Le Fairchild F8 a été utilisé dans la Fairchild Channel F, une des toute première console de seconde génération, à savoir des consoles qui utilisaient des cartouches de jeu. Avant les consoles de seconde génération, les consoles étaient non-programmables. Elles étaient conçues pour faire tourner un jeu précis, aucun autre, le jeu étant implémenté dans leurs circuits.
La Fairchild Channel F est composé du système minimal, auquel on a ajouté une carte son rudimentaire et 2 kibioctets de mémoire vidéo. La mémoire vidéo sert uniquement pour afficher des images à l'écran : on écrit l'image à afficher dedans, un circuit vidéo se charge de l'afficher à l'écran automatiquement. Le processeur ne fait qu'écrire dans cette RAM vidéo, il ne peut pas en lire le contenu. De la RAM supplémentaire peut cependant être ajoutée dans les cartouches de jeu.
===Le HP Nanoprocessor : un processeur sans ALU===
Un dernier exemple est celui du processeur HP Nanoprocessor, de l'entreprise HP. Il a été commercialisé en 1974, en même temps que les premiers micro-processeurs d'Intel. Tous les processeurs de l'époque étaient des processeurs 8 bits et le HP Nanoprocessor ne faisait pas exception. Ce n'était pas un processeur haute performance, il était destiné à des applications d'informatique industrielle ou embarquée. D'ailleurs, il utilisait des transistors de type metal-gate, peu performants, là où ses contemporains utilisait des transistors en silicium, plus performants.
Mais une caractéristique qui rend cela encore plus claire est qu'il n'y a pas d'ALU ! En effet, ce processeur est incapable de faire des additions, des soustractions ou autres opérations simples ! Il est cependant capable d'effectuer des incrémentations et décrémentations, des décalages, des opérations logiques comme des ET/OU/NON/XOR et bien d'autres. Il supporte en tout 48 instructions, avec un support limité des modes d'adressage indirects. Les instructions de branchement étaient des instructions SKIP, il n'y avait pas d'instructions de branchement généralistes.
Pour ce qui est des registres, il disposait de 16 registres de 8 bits et d'un accumulateur. Niveau mémoire, il était relié à une mémoire ROM, rien de plus. Il n'avait de RAM supplémentaire qu'on pouvait lui adjoindre, il devait se débrouiller avec seulement ses registres. Et cela ne posait pas de problèmes pour son usage. Seul le mode d'adressage indirect à registre est supporté, il n'y a pas de registres d'indices. Ce mode d'adressage permet de lire des données en mémoire ROM, la ROM pouvant contenir des tableaux de valeurs constantes.
: Il est possible de lui adjoindre de la RAM via les ports d'entrée-sortie, ainsi qu'une ALU, mais RAM et ALU sont traités comme des périphériques avec lesquels on communique, ils ne sont pas intégrés au processeur.
Niveau micro-architecture, il incorporait une unité de calcul logique et un circuit comparateur. Le comparateur était un circuit comparateur série des plus basiques, qui était utilisé pour les instructions de branchement et associées. L'unité de calcul logique gérait des incrémentations/décrémentation, des décalages, les opérations logiques et quelques autres. L'unité de calcul logique était bit-slicée, à savoir conçue en assemblant 8 ALU de 1 bit chacune, enchainées en série. Le tout était combiné à des circuits de ''carry skip''.
[[File:Unité de calcul du HP nanonprocessor.png|centre|vignette|upright=2|Unité de calcul du HP nanoprocessor]]
Son unité de décodage d'instruction était très simple, essentiellement basée sur des portes NOR, grâce à un encodage efficace des instructions machine. Le ''program counter'' fait 11 bits, ce qui permet d'adresser une ROM de 2 kibioctets. Le ''program counter'' était relié à un circuit incrémenteur qui gérait les isntructions SKIP (il pouvait incrémenter le ''program counter'' par pas de 1 ou de 2 en cas de SKIP). Le processeur contient aussi deux registres, qui servent en quelque sorte de pile d'adresse de retour. Un premier registre mémorise l'adresse de retour d'une fonction, l'autre mémorise le ''program counter'' lors d'une interruption, pour savoir où brancher à la fin de l'interruption.
[[File:HP nanoprocessor.png|centre|vignette|upright=2.5|HP nanoprocessor]]
Fait intéressant, le concepteur du processeur a gracieusement donné les masques utilisés pour graver le silicium du processeur au site [https://www.cpushack.com/ CPU Shack]. Les masques en question sont disponibles ici :
* [https://www.cpushack.com/2020/08/20/hp-nanoprocessor-mask-set/ HP NanoProcessor Mask Set]
* [https://www.cpushack.com/2020/08/09/the-forgotten-ones-hp-nanoprocessor/ The Forgotten Ones: HP Nanoprocessor]
Les masques ont été analysés par Ken Shirrif dans cet article de blog :
* [https://www.righto.com/2020/09/hp-nanoprocessor-part-ii-reverse.html HP Nanoprocessor part II: Reverse-engineering the circuits from the masks]
==Les processeurs 8/16 bits à architecture Von Neumann==
L'usage d'une architecture Harvard est une solution pour adresser plus de mémoire avec des CPU 8 bits. Mais plusieurs microprocesseurs commerciaux n'utilisaient pas cette solution. À la place, c'était des architectures Von Neumann, mais qui étaient capables de gérer des adresses de 16 bits. Les données faisaient 8 bits, les registres faisaient 8 bits, mais quelques techniques permettaient de gérer des adresses de 16 bits. Nous parlerons de '''processeurs 8/16 bits''' pour les désigner, et nous allons les étudier à part.
Un point important est que la gestion d'adresses de 16 bits permet d'adresser 64 kibioctets, qui peuvent être remplis avec de la RAM et de la ROM. On a donc le meilleur des mondes : 64 kibioctets de mémoire, mais avec des données de 8 bits et les économies de circuit qui vont avec. L'avantage est que le processeur peut maintenant gérer une vraie pile d'appel, pas seulement une pile d'adresse de retour. Il lui suffit pour cela d'intégrer un pointeur de pile codé sur 16 bits.
===Les modes d'adressage par page des CPU Motorola===
Les processeurs Motorola 8 bits étaient des processeurs 8 bits avec un bus d'adresse de 16 bits. C'était des processeurs à accumulateur incorporant deux registres d'indice, un registre d'état, un pointeur de pile, et un ''program counter''. Tous les registres sont reliés au bus d'adresse, sauf le registre d'état et l’accumulateur. Tous les registres font 8 bits, sauf le ''program counter''. La pile est câblée pour être dans un bloc de 256 octets compris entre l'adresse 1 0000 0000 et l'adresse 1 1111 1111, ce qui fait que son adressage se fait avec un seul octet.
[[File:6502-architecture.svg|centre|vignette|upright=1.5|Architecture simplifiée du 6502.</br> X et Y : registres d'indice ;</br> S : le pointeur de pile ;</br> A : accumulateur ;</br>P : registre d'état.</br>]]
Les processeurs Motorola 8 bits utilisaient une méthode simple pour adresser 64 kibioctets de RAM, avec des registres de 8 bits. Pour cela, ils utilisaient une variante de l'adressage base + décalage. Elle améliore l'adressage absolu, qui intègre l'adresse à lire/écrire dans l'instruction elle-même. L'adresse en question est de 8 bits et n'encode que les 8 bits de poids faible de l'adresse, les 8 bits de poids fort sont dans un '''registre de page''' adressé implicitement. L'adresse finale est obtenue en concaténant ce registre avec l'adresse mémoire intégrée dans l’instruction. Le résultat est que la mémoire était découpée en blocs de 256 consécutifs, chacun pouvant servir de fenêtre de 256 octets. Une page est réservée pour la pile, la seconde, comme dit plus haut.
Formellement, ce mode d'adressage a des ressemblances avec la commutation de banques, une technique qu'on verra dans les chapitres sur l'espace d'adressage et la mémoire virtuelle. Mais ce n'en est pas du tout : le registre de page est utilisé uniquement pour les accès mémoire avec le mode d'adressage base + décalage, mais pas pour les autres accès mémoire, qui gèrent des adresses complètes. Notons que l'usage d'un registre de page dédié fait que celui-ci est adressé implicitement.
Il faut noter que la technique a été utilisée sur des processeurs 16 bits, pour contourner la petite taille des instructions. Un exemple est celui du HP 2100, un processeur 16 bits. Il avait un registre de page de 5 bits et encodait 10 bits d'adresse dans ses instructions. Ses instructions d'accès mémoire disposaient d'un bit qui choisit quel mode d'adressage utiliser. S'il était à 0, l'adressage absolu était utilisé, le registre de page n'était pas utilisé. Mais s'il était à 1, le registre de page était utilisé pour calculer l'adresse.
Une évolution de l'adressage précédent est le '''mode page direct'''. Avec lui, le registre de page est étendu et contient une adresse mémoire complète. L'adresse finale n'est pas obtenue par concaténation, mais en additionnant le registre de page avec l'adresse fournie par adressage absolu + décalage. Un exemple est celui des premiers processeurs Motorola, qui géraient des adresses courtes de 8 bits. L'adresse courte de 8 bits correspondait non pas aux 256 premiers octets de la mémoire, mais à une fenêtre de 256 octets déplaçable en mémoire. La position de la fenêtre de 256 octets était spécifiée par le registre de page de 16 bits, qui précisait l'adresse du début de la fenêtre, celle de sa première donnée.
Il s'agit donc formellement d'adressage base + décalage, à un détail près : il n'y a qu'un seul registre de base. Le fait que ce registre de base soit unique fait qu'il est adressé implicitement, on n'a pas à encoder le numéro/noms de registre dans l'instruction. Le registre de base est utilisé uniquement pour l'adressage absolu, pas pour les autres accès mémoire. S'il y a des ressemblances avec la segmentation, une technique de mémoire virtuelle qu'on abordera dans quelques chapitres, ce n'en est pas vu que le registre de base est utilisé seulement pour un mode d'adressage bien précis.
===Le ''pseudo-aliasing'' des registres des processeurs Intel x86===
Voyons maintenant le cas des anciens processeurs 8 bits d'Intel à savoir l'Intel 4004, 4040, 8008 et 8080. Le Z80, un processeur inspiré des CPU Intel 8 bits, est aussi concerné. Avant de poursuivre, parlons des registres de ces processeurs. Les premiers CPU Intel incorporaient 7 registres de 8 bits nommés A, B, C, D, E, F, H, L, SP. Ils correspondent respectivement à : l'accumulateur A ; six registres nommés B, C, D, E, H et L ; le registre d'état F ; le pointeur de pile SP. Le Z80 ajoute deux registres d'indice X et Y. De plus, le Z80 dispose de registres d'interruption, qui sont en quelque sorte des copies des registres A, B, C, D, E, F, H, L. Le tout est illustré dans le tableau ci-dessous.
{|class="wikitable" style="text-align:center;"
|-
!
! Registres des CPU Intel
! Registres supplémentaires du Z80
|-
! Accumulateur
| A
| A'
|-
! Registre d'état
| F
| F'
|-
! Registres généraux
| B, C, D, E, H, L
| B', C', D', E', H', L'
|-
! Pointeur de pile
| colspan="2" | SP (sauf pour le 8008)
|-
! Registres d'indice
|
| X et Y
|}
Le 8008 incorpore une pile d'appel de 7 adresses, dans le processeur lui-même. Il en est de la même avec le 4004 et le 4040, comme on le verra dans la section sur les processeurs 4 bits. Mais le 8080 et le 8085 ont remplacé le tout par un simple pointeur de pile, afin d'avoir une véritable pile d'appel. Autant c'est impossible d'avoir une pile d'appel avec seulement 256 octets de mémoire, autant on peut se le permettre avec 65 536 adresses.
Pour gérer des adresses de 16 bits, ils auraient pu utiliser des registres d'adresse séparés, mais on préféré un système de '''pseudo-''aliasing'' de registres'''. Formellement, c'est un système qui concatène deux registres 8 bits pour obtenir une adresse de 16 bits. L’appariement a lieu lors de certaines opérations bien précises, qui n'ont de sens que pour les adresses : la lecture/écriture en mémoire, et l'incrémentation.
Il y avait cependant des contraintes quant aux paires de registres possibles, toutes les paires de registres n'étaient pas autorisées. Les CPU concernés sont donc des processeurs hybrides accumulateur-registre généraux. L'accumulateur ne peut pas être appairé, seuls les registres généraux le peuvent. Le Z80 autorise plus de paires que les CPU Intel. Voici les paires de registres qui pouvaient servir d'adresse 16 bits :
* Les CPU 8008 d'Intel autorisait une seule paire formée des registres H et L.
* Les autres processeurs, à savoir le 8080, le 8085 et le Z80, autorisaient : les paires BC, DE et HL.
Le 8008 ne gérait que des opérations sur 8 bits. Mais le 8080 et le 8085 ont ajouté des instructions 16 bits qui agissaient sur des paires de registre, que le Z80 a repris. Une paire de registres est considérée comme un registre unique de 16 bits pour certaines opérations arithmétiques, dont l'incrémentation. Voici la liste des instructions concernées :
* INC et DEC pour l'incrémentation et la décrémentation ;
* DAD : additionne le registre HL avec une autre paire (Hl inclus) ;
* LXI : copie une constante immédiate dans une paire de registres ;
* LHLD : lit 16 depuis la mémoire et l'enregistre dans une paire de registres ;
* SHLD : copie 16 bits depuis une paire de registres et l'enregistre en mémoire ;
* PUSH et POP : empile ou dépilent une paire de registre sur la pile ;
* XTHL : échange la paire HL avec les 16 bits au sommet de la pile d'appel ;
* XCHG : échange le contenu de la paire HL et DE.
Pour résumer, le processeur avait des instructions LOAD, STORE, PUSH et POP adaptées pour gérer des paires de registre. De plus, l'instruction XCHG permettait d’échanger le contenu des paires DE et HL. L'instruction a été étendue sur les processeurs 16 bits pour échanger tous les registres. Mais l'implémentation était alors différente. L'incrémentation sur une paire de 16 bit était très utile, car les adresses sont souvent incrémentées quand on parcours un tableau. Ces instructions nous donnent quelques indices sur ce qu'il y a dans le processeur.
Le système de pseudo-aliasing a un impact sur le banc de registre. Le banc de registre regroupe les registres généraux et le pointeur de pile, mais ne contient pas l'accumulateur. Les contraintes sur les paires de registres possibles ne s'expliquent que d'une seule manière : le banc de registre contient des registres de 16 bits, une paire de registres 8 bits est mémorisée dans un registre unique. Il faut donc faire une différence entre les registres architecturaux de 8 bits, et les registres réels de 16 bits.
Le banc de registre a un port de 8 bits pour les données, qui est fabriqué à partir d'un port 16 bits auquel on a rajouté un multiplexeur pour choisir soit l'octet de poids faible, soit l'octet de poids fort. Le bus de données fait 8 bits, ce qui fait que les instructions LOAD, STORE, PUSH et POP pour paires 16 bits sont réalisées en deux fois : on lit/écrit l'octet de poids faible, puis celui de poids fort. Par contre, le bus d'adresse fait bien 16 bits. Cela suggère que le banc de registre dispose d'un port de 16 bits dédié aux adresses, en plus du port de données 8 bits.
[[File:Architecture d'un CPU 8-16 bits avec un banc de registre double port.png|centre|vignette|upright=2|Architecture d'un CPU 8-16 bits avec un banc de registre double port]]
L'incrémentation d'une paire 16 bits ne coute rien à implémenter, ou presque. En effet, le processeur incorpore un incrémenteur 16 bits pour le ''program counter'', qui est relié au bus d'adresse. L'idée est de rentabiliser cet incrémenteur, en lui permettant d'incrémenter des données/adresses de 16 bits obtenues via pseudo-aliasing. De même, il peut être utilisé pour incrémenter le pointeur de pile, voire un compteur de rafraichissement mémoire (pour rappel, le rafraîchissement mémoire demande de balayer la mémoire d'adresse en adresse et été fait par le CPU à l'époque). Pour cela, il suffit de connecter le ''program counter'', le banc de registre, et l'incrémenteur, via un bus dédié.
[[File:Calcul d'adresse par ALU dédiée avec PC séparé.png|centre|vignette|upright=2|Calcul d'adresse par ALU dédiée avec PC séparé]]
Notez qu'on peut encore simplifier le tout en placant le ''program counter'' dans le banc de registre, ce qui ne gênera pas le travail de l'incrémenteur mais simplifiera le câblage au bus d'adresse. Ce n'était pas systématique, certains processeurs mettaient le ''program counter'' dans le banc de registre, d'autres non.
: Inclure le ''program counter'' dans le banc de registre permet parfois de remplir un vide. Par exemple, sur un processeur avec 12 registres, le banc de registre devrait faire idéalement 16 registres, inclure le ''program counter'' dedans fait monter le tout à 13.
[[File:Architecture d'un CPU 8-16 bits.png|centre|vignette|upright=2|Architecture d'un CPU 8-16 bits]]
Les processeurs Intel 8 bits, à savoir le 8008, le 8080 et le 8085 ; mettaient le ''program counter'' dans le banc de registre. Vous avez donc toutes les armes pour comprendre leur micro-architecture. Par exemple, voici la micro-architecture du processeur 8080. Remarquez le banc de registre, qui contient tous les registres sauf l'accumulateur et le registre. Il a deux ports : un pour les adresses et un pour les données. Notez le dé-multiplexeur sur le port de donnée. Pour le reste, il s'agit d'une architecture à accumulateur hybride des plus classiques.
[[File:Intel 8080 arch.svg|centre|vignette|upright=3|Microarchitecture de l'Intel 8080.]]
Le Z80 est un processeur inspiré du design des processeurs Intel 8 bits, mais avec pas mal d'améliorations. Un point particulier de ce processeur est son banc de registre. Il contient tous les registres du processeur, y compris l'accumulateur et le registre d'état ! Les seuls registres en-dehors du banc de registre sont le ''program counter'' et un compteur de rafraichissement mémoire IR.
Un autre point particulier est que les registres dans le banc de registres avaient une copie séparée accessible uniquement pour les interruptions, via fenêtrage de registres. Et l'accumulateur et le registre d'état étant dans le banc de registre, il y avait deux accumulateurs et deux registres d'état. Les registres A, B, C, D, E et F étaient dupliqués, par le pointeur de pile ni les registres d'indice. Les copies des registres étaient nommées A', B', C', D', E' et F'.
Le Z80 supportait des instructions d'échange de registre en plus des CPU Intel 8 bits. L'instruction EX peut échanger soit le contenu des paires D,E et H,F, soit la paire A,F avec la paire A',F'. L'instruction EXX échange les paires BC, DE, HL avec les paires BC', DE', HL'. En faisant cela, le programmeur pouvait utiliser deux fois plus de registres généraux s'il n'utilisait pas les interruptions. L'échange de paires se fait sans copies de registres, mais simplement en modifiant l'adresse envoyée sur le banc de registre. Pour cela, plusieurs bascules mémorisent des bits qui indiquent si les paires ont été échangées ou non. Il y a une bascule pour les paires DE , HL ; une autre pour les paires A,F et paire A',F', une dernière pour l'instruction EXX. En combinant ces bascules avec les noms de registres envoyés par le séquenceur, on peut échanger les paires de registres.
==Le cas particulier des processeurs 4 bits : le 4004 d'Intel==
L'Intel 4004 était le tout premier micro-processeur. Il s'agissait d'un microprocesseur de 4 bits, basé sur une architecture à accumulateur. Il disposait d'un accumulateur et de 16 registres d'indice, tous de 4 bits. Il faisait des calculs sur des données de 4 bits, appelées des nibbles. Cependant, sur ses 46 instructions machines supportées, 41 agissaient sur des opérandes de 8 bits, les 5 restantes sur des opérandes de 16 bits. Simplement, les calculs se faisaient en deux fois, en échangeant des données entre mémoire RAM et accumulateur.
Le 4004 est un circuit intégré avec peu de broches. Il dispose notamment d'un bus de données/adresse, qui est multiplexé, c’est-à-dire qu'il sert alternativement de bus de données et de bus d'adresse selon les besoins. Le bus de commande mémoire fait 5 bits, dont 4 pour les chips de RAM, un pour la ROM. Les adresses sont codées sur 12 bits, les données sur 4 et les instructions sur 8 bits. L'envoi d'une adresse sur le bus se fait en plusieurs fois, de même que la lecture d'une instruction. Il s'agit là d'une adaptation pour outrepasser les limitations d'un processeur 4 bit.
[[File:Intel 4004 processor pinout.png|centre|vignette|upright=2|Broches de l'Intel 4004. Nous verrons à quoi elles servent plus bas.]]
===L'espace d'adressage de l'Intel 4004===
Les adresses du processeur sont sur 12 bits, ce qui fait 4096 adresses différentes. Elles regroupent à la fois la ROM et la mémoire RAM, vu que l'architecture est une sorte de mélange bizarre entre une architecture Von Neumann et Harvard. Le processeur gère bien deux espaces d'adressage séparés, mais la RAM et la ROM sont reliés au même bus. La sortie CM-ROM du processeur indique si l'adresse envoyée correspond à la RAM ou la ROM. Un circuit de décodage d'adresse active ou désactive la RAM selon la valeur de ce bit, l'inverse pour la ROM, en agissant sur leurs bits Chip Select. Seule la RAM ou la ROM répondent alors à l'adresse.
Pour ce qui est de la RAM, le circuit de décodage d'adresse pouvait gérer au maximum 1024 adresses différentes, chacune contenant un nibble. Pour cela, le CPU 4004 était relié à une ou plusieurs RAM externes, des Intel 4002. Chaque Intel 4002 contenait 64 nibbles de données, plus 16 nibbles de statut qu'on ne détaillera pas ici. Les nibbles de statut étaient accessibles en utilisant des instructions d'entrée-sortie, donc pas avec des lectures/écritures mémoire. Les 64 nibbles de données sont découpés en 4 groupes de 16 nibbles. Le CPU pouvait être relié à maximum 16 Intel 4002, ce qui fait 1024 nibbles de données et 256 nibbles de statut. L'ensemble permet de remplir l'espace d'adressage de 1024 adresses.
===Le registre de page et le pseudo-aliasing des registres===
Sélectionner une adresse mémoire utilisait un mélange entre pseudo-aliasing et registre de page. Pour les données, les 1024 adresses étaient découpées en 4 pages de 256 adresses. Pour la ROM, les 4096 adresses étaient découpées en 16 pages de 256 adresses. Localiser une donnée dans une page ne requiert que 8 bits, 2/4 bits supplémentaires permettent de sélectionner la page voulue. Le registre de page était dans le processeur lui-même, et était relié aux sorties du processeur nommées CM-RAM 0, 1, 2 et 3. Les 4 sorties encodaient un nombre qui permet de sélectionner le numéro de page voulu.
Le registre de page fait 5 bits : un pour distinguer RAM et ROM, 4 bits pour sélectionner la page voulue. L'avantage est que la carte mère gère au maximum 16 chips de RAM, ce qui colle parfaitement avec les 4 utilisés pour sélectionner une page. Un chip de RAM correspond à une page, et chacun est activé ou désactivé suivant la page sélectionnée. Pour cela, il suffit d'ajouter un décodeur sur la carte mère, qui prend les 4 bits du registre de page et fournit les signaux Chip Select aux différents chips de RAM.
Reste alors à utiliser les 8 bits d'adresse à l'intérieur d'un chip de RAM. Le 4004 permettait de concaténer deux registres d'indice de 4 bits pour former une adresse de 8 bits. Les instructions d'accès mémoire pouvaient ainsi préciser une paire de registre d'indice pour préciser quelle adresse lire/écrire. Idem pour les branchements indirects : le processeur supportait une instruction de branchement indirect qui précisait l'adresse dans une paire de registres d'indice. Les registres d'indice sont donc assez mal nommés sur cette architecture, vu qu'ils peuvent servir soit de registre d'indice, soit de demi-registre d'adresse. Il s'agit là du système de pseudo-aliasing des registres, mais appliqué aux registres d'indice.
L'Intel 4004 gérait deux instructions pour gérer les adresses mémoires. La première, l'instruction DCL (''Designate Command Line'') configure le registre de page. Elle prend en entrée un numéro de page et le copie dans le registre de page. L'opérande peut provenir d'un registre d'indice ou de l'accumulateur. La seconde, l'instruction SRC (''Send Register Control'') concatène deux registres d'indice pour obtenir une adresse de 8 bits. Un accès mémoire se fait donc en maximum trois instructions : une qui configure le registre de page si ce n'est pas déjà fait, une instruction SRC pour envoyer l'adresse, et une troisième instruction qui dit s'il faut faire une lecture ou une écriture.
===La microarchitecture de l'Intel 4004===
Il incorporait une pile d'adresse de retour intégrée au processeur. La pile d'adresse acceptait exactement 3 adresses maximum. Elle était regroupée avec le ''program counter'' dans un banc de registre, de 4 registres. Le ''program counter'' et le pointeur de pile faisaient chacun 12 bits, soit trois nibble. Ils étaient incrémentés par un incrémenteur dédié.
SI on omet le registre de page et la pile d'adresse, le 4004 est une architecture à accumulateur des plus classiques, avec un bus interne unique, un banc de registre pour les registres d'indices, un accumulateur relié à une unité de calcul. Les registres d'indice étaient dans un banc de registre séparés, car ils faisaient 4 bits chacun, contrairement au pointeur de pile et le ''program counter''. Un détail important est que les bancs de registres du 4004 étaient implémentés avec de la DRAM, et non des registres usuels fabriqués avec des bascules 1 bit.
[[File:Microarchitecture de l'Intel 4004.png|centre|vignette|upright=2.5|Microarchitecture de l'Intel 4004]]
<noinclude>
{{NavChapitre | book=Fonctionnement d'un ordinateur
| prev=Les architectures à pile et mémoire-mémoire
| prevText=Les architectures à pile et mémoire-mémoire
| next=Les processeurs de traitement du signal
| nextText=Les processeurs de traitement du signal
}}
</noinclude>
ttlis9ngaw9awwydls1odtduxsre20s
765723
765722
2026-05-01T20:13:30Z
Mewtow
31375
/* Les microcontrôleurs PIC */
765723
wikitext
text/x-wiki
Nous avons déjà abordé la notion de processeur 8, 16, 32, 64 bits. Elle désigne la taille des registres généraux, ou de l'accumulateur. De nos jours, les processeurs 32 et 64 bits sont la norme, mais les premiers micro-processeurs étaient des processeurs 4 et 8, avant de passer rapidement au 16 bits. La raison est que leur budget en transistor limité faisait qu'on ne pouvait pas utiliser une ALU trop grande : une ALU 8 bit prend deux fois moins de place et de transistors qu'une ALU 16 bits. Cependant, les processeurs 8 bits avaient de sérieuses limitations qui étaient compensées par diverses solutions. Dans ce chapitre, nous allons faire une revue rapide des processeurs 8 bits et de leurs fonctionnalités.
La principale limitation des CPU 8 bits était l'adressage : des registres de 8 bits limitaient l'espace d'adressage à seulement 256 adresses, soit à peine 256 octets ! Intuitivement, on se dit que 256 octets est purement impraticable, on ne peut rien faire d'intéressant avec seulement 256 de RAM + ROM. Et c'est partiellement vrai. L'adage veut que 16 bits est la taille minimale intéressante, la limite à partir de laquelle on a assez de mémoire RAM/ROM pour coder des applications intéressantes. Mais 256 octets de RAM est largement suffisant sur de nombreux systèmes embarqués simples s'en accommodent : des caisses enregistreuses, des systèmes de régulation de feu de circulation, etc.
Pour les applications demandant plus de mémoire RAM, les CPU de l'époque contournaient la limitation de 256 octets de RAM avec de nombreux stratagèmes. Dans ce qui va suivre, nous allons séparer les CPU 8 bits selon qu'ils utilisent une architecture Harvard ou une architecture Von Neumann. La raison est qu'une architecture Harvard permet en soi de contourner partiellement ce problème d'adressage. Les choses sont plus compliquées avec une architecture Von Neumann.
==Les processeurs 8/16 bits à architecture Harvard ==
La première solution est d'utiliser une architecture Harvard. Le processeur 8 bit a alors deux espaces d'adressage : un pour la RAM, un autre pour la ROM. Et les deux utilisent des adresses de taille différente. La ROM est reliée à un bus d'adresse de 16 bits, alors que la RAM est elle connectée à un bus d'adresse de 8 bits. La RAM est donc limitée à 256 octets, alors que la ROM peut monter jusqu'à 64 kibioctets. Mine de rien, faire ainsi est largement suffisant.
Pour encore améliorer la situation, il est possible d'utiliser une architecture Harvard modifiée, qui permet de lire des données depuis la mémoire ROM. Cela réduit encore plus les besoins en mémoire RAM. Les constantes manipulées par le programme sont mémorisées en ROM, lues depuis la ROM, au lieu d'être chargées en RAM. Avec ce genre de stratagèmes, 256 octets de RAM est largement suffisant sur de nombreux systèmes, à condition qu'on ait assez de ROM pour coder un programme digne de ce nom. Par exemple, de nombreux systèmes embarqués simples s'en accommodent : des caisses enregistreuses, des systèmes de régulation de feu de circulation, etc.
Les processeurs 8 bits intègrent parfois les 256 octets de RAM directement dans le processeur, dans le banc de registres ! Beaucoup en implémentaient moins, avec par exemple seulement 64 octets de RAM, ou 32 octets, ou 128 octets. L'avantage est que cela élimine le bus pour les données, ce qui économise beaucoup de broches sur le circuit intégré du CPU. Et pour les applications demandant plus de RAM, on pouvait ajouter un circuit séparé qui permettait d'adresser une RAM plus grande. Et c'est ce qui explique que cette solution est beaucoup utilisée sur les microcontrôleurs peu puissants. Les exemples qui vont suivre devraient vous convaincre.
: Les processeurs de ce type implémentent des optimisations pour adresser plus de 256 octets de RAM. La plus connue est la commutation de banques. Mais nous n'avons pas encore abordé celle-ci, et il faudra attendre le chapitre sur l'espace d'adressage pour cela.
===Les microcontrôleurs PIC===
Les '''microcontrôleurs PIC''' regroupent des microcontrôleurs allant de microcontrôleurs 8 bits aux performances très faible, à des microcontrôleurs 32 bits bien plus puissants. Les microcontrôleurs PIC sont très utilisés dans l'embarqué ou d'informatique industrielle. Ils sont vendu à des volumes assez impressionnants, plusieurs millions par an. Et si vous avez ou êtes en train de faire des études d'électronique, je parie que vous les avez déjà vu en classe, ou que ce ne saurait tarder. Dans ce qui suit, nous allons nous concentrer sur les microcontrôleurs PIC 8 bits, à savoir les PIC 16, 16 et 18. Les PIC 24, qui sont des microcontrôleurs 16 bits, ne seront pas abordés.
Les microcontrôleurs PIC 8 bits sont une architecture Harvard, comme dit plus haut. Il y a aussi des registres pour les entrées et sorties. Les registres d'entrée-sortie permettent de lire ou écrire sur un port d'entrée-sortie ou de lire un ''timer''. En clair, les PIC ont un espace d'adressage séparé pour les entrées-sorties.
La mémoire ROM des PIC va de 1024 instructions à 4096 instructions. En comparaison, la mémoire RAM des microcontrôleurs PIC ne peut pas dépasser 256 adresses, et elle est encore plus petite en pratique sur certains modèles. Pour donner un exemple, le PIC16F84 a une RAM composée de 68 "registres" de 8 bits. Le terme "registres" devrait vous faire tiquer, mais c'est bien le terme utilisé dans la documentation des PIC. Et il faut admettre que la différence entre banc de registre et SRAM intégrée est floue, mais nous expliquerons pourquoi dans quelques paragraphes.
: Les PIC 18 peuvent adresser plus de 256 octets de RAM en utilisant la commutation de banques, une technique qui sera abordée dans plusieurs chapitres.
[[File:DocPIC16F84 3.png|centre|vignette|upright=3|Espaces d'adressage du PIC16F84.]]
Un détail est que la SRAM n'a qu'un seul port qui sert à la fois pour les lectures et écritures. Pour compenser, les PIC sont des architectures à accumulateur, où une opérande est lue depuis la SRAM, l'autre depuis l'accumulateur. Leur implémentation de l'accumulateur ajoute une petite subtilité : le résultat d'une opération arithmétique peut être enregistré ailleurs que dans l'accumulateur. Le résultat peut aussi remplacer la seconde opérande, celle lue en mémoire RAM. Dit autrement, le résultat est enregistré dans l'adresse mémoire source. Les instructions de calcul ont le choix : un bit dans leur encodage précise où enregistrer le résultat.
{|
|-
|[[File:DocPIC16F84 4.png|centre|vignette|upright=2|Microarchitecture simplifiée d'un microcontroleur PIC (ici, un 16F84).]]
|[[File:DocPIC16F84 5.png|centre|vignette|upright=2|Microarchitecture simplifiée d'un microcontroleur PIC (ici, un 16F84), avec les branchements directs.]]
|}
Outre l'accumulateur, les PIC disposent de registres de contrôle, d'un ''program counter'', d'un registre d'état, et d'un pointeur de pile. Un détail très important est que les registres sont mappés en mémoire, à quelques exceptions près ! En clair, on peut y accéder en lisant/écrivant à une adresse mémoire bien précise. Les seules registres qui ne sont pas mappés en mémoire sont l'accumulateur, les registres d'entrée-sortie, et la pile d'adresses de retour intégrée au processeur (voir plus bas). Par exemple, sur les modèles 16F, l'espace d'adressage fait 128 octets, dont 32 sont réservés aux registres du processeur, ce qui fait que seules 96 octets sont adressables comme de la RAM. Mais les 128 octets sont un seul et unique SRAM dans le processeur. Ce qui explique qu'il est difficile de séparer banc de registre et RAM principale sur ce processeur : les deux sont fusionnées ! Cela gaspille quelques adresses mémoire, mais permet une implémentation plus simple, avec un banc de registre unique.
: Les modèles PIC 17 ont rendu l'accumulateur mappé en mémoire RAM !
[[File:DocPIC16F84.png|centre|vignette|upright=2|DocPIC16F84]]
La petite taille de la ROM d'un PIC n'est pas une surprise. Les architectures 8 bits sont conçues pour ne pas utiliser beaucoup de transistors et être très simples. Aussi, utiliser une petite ROM est nécessaire. Mais il faut aussi adapter le jeu d'instruction, pour qu'il ait une bonne densité de code. Par exemple, il faut faire en sorte d'avoir des instructions assez courtes. Si les instructions font 16 bits au lieu de 32, on divise par deux le nombre de transistors nécessaire pour la mémoire ROM. La conséquence est que le jeu d’instruction des PIC est adapté à cette contrainte.
Les microcontrôleurs PIC utilisent un jeu d'instruction propriétaire, dont les instructions sont très petites. Les premières versions du jeu d'instruction utilisaient des instructions codées sur 12 bits, dont 5 pour l'adresse mémoire de la seconde opérande. Pour les branchements, 3 bits étaient utilisés pour l'opcode, 9 pour l'adresse de destination. Par la suite, les instructions ont été étendues à 13 bits sur les PIC1670, puis à 14, 15 et 16 bits. Les adresses ont alors été élargies, ce qui permet d'adresser en peu plus de mémoire RAM.
Il est intéressant de regarder comment les PIC font pour obtenir des instructions aussi courtes. Premièrement, le fait d'utiliser une architecture à accumulateur, couplé à une RAM très petite aident grandement. Les architectures à accumulateur ont besoin de préciser un opcode et une adresse mémoire pour chaque instruction, pas besoin de préciser de noms de registres ni le mode d'adressage. La taille des adresses mémoire est censé être un problème pour la densité de code, mais les adresses d'un processeur 8 bits font 8 bits. On peut alors avoir un jeu d'instruction étoffé, en utilisant des instructions 16 bits, qui concatènent un opcode et une adresse mémoire, d'un octet chacun.
Mais d'autres optimisations permettent d'avoir une bonne densité de code. Les PIC ont des branchements pour les appels et retour de fonction. Les PIC incorporent une pile d'appel de retour, qui fait 2 à 8 adresses suivant les modèles. Elle permet d'économiser quelques registres, car la pile d'appel n'est pas mappé dans l'espace d'adressage, elle n'est pas adressable. On économise ainsi 2 à 8 registres, sur 32-256 registres. De plus, cela simplifie l'encodage des instructions d'appel/retour de fonction, qui n'ont pas à préciser où enregistre l'adresse de retour.
Les PIC n'ont pas d'instructions de branchement conditionnels, ils font avec une SKIP instruction et des branchements inconditionnels. Du moins, c'est le principe, car si vous regardez la liste des instructions ci-dessous, vous verrez qu'il n'y a pas d'instruction SKIP. A la place, les instructions SKIP sont fusionnées avec d'autres instructions. Elles sont notamment fusionnées avec les instructions d'incrémentation et de décrémentation. Les PIC supportent une incrémentation normale, une décrémentation normale, une décrémentation fusionnée avec une instruction SKIP, et une incrémentation fusionnée avec une instruction SKIP. Les deux dernières incrémentent/décrémentent l'accumulateur et SKIP l'instruction suivante si le résultat est zéro. Elles permettent de fortement simplifier l'implémentation des boucles qui s'exécutent tant que leur compteur atteint zéro.
Les PIC disposent aussi d'instructions de manipulation de bit, pour tester/masquer un bit dans une opérande, 4 en tout. Il y a en a 4 en tout : mettre à 0, mettre à 1, tester si bit = 1, tester si bit = 0. Les instructions qui testent un bit prennent leur opérande dans l'accumulateur. Elles font le test du bit et décident s'il faut skipper l'instruction suivante ou non. Il y a aussi deux instructions de rotation à gauche et droite, qui tiennent compte de la retenue mémorisée dans le registre d'état. Par contre, il n'y a pas d'instructions de décalages, qui peuvent être émulées avec une rotation suivie d'un ET bit à bit. Mentionnons aussi une instruction pour inverser deux ''nibbles'' dans un octet.
Les modèles haute performance ajoutent des instructions d'addition avec retenue entrante, idem pour la soustraction. De telles instructions ssont très utiles pour faire des additions/soustractions sur des opérandes de 16 bits. Le processeur a beau être un CPU 8 bits, il peut être utilisé pour faire des calculs 16 bits, la performance est alors amoindrie, mais ce n'est pas un problème pour les applications d'un tel microcontroleur.
Les modèles intiaux, comme les PIC 10 et 12, ne supportaient pas les interruptions, mais c'est chose réglé sur les modèles plus récents. Ils ont même des registres séparés pour les interruptions et les programmes normaux. De plus, ils intégrent nativement un ''watchdog timer''.
{|class="wikitable" style="text-align:center"
|+ Jeu d'instruction des dodèles PCI 16
|-
! colspan="5" | Instructions diverses
|-
| colspan="3" | 00 0000 0000 0000 || NOP || Ne fait rien
|-
| colspan="3" | 00 0000 0000 1000 || RETURN || Instruction de retour pour une fonction
|-
| colspan="3" | 00 0000 0000 1001 || NOP || Instruction de retour pour une interruption
|-
| colspan="3" | 00 0000 0110 0011 || SLEEP || Mise en veille
|-
| colspan="3" | 00 0000 0110 0100 || CLRWDT || RESET le ''watchdog timer'', intégré dans le PIC
|-
! colspan="5" | Instructions de manipulation de bit
|-
| 0100 || Position du bit dans l'opérande || Adresse mémoire || BCF || Met le bit à 1
|-
| 0101 || Position du bit dans l'opérande || Adresse mémoire || BSF || Met le bit à 0
|-
| 0110 || Position du bit dans l'opérande || Adresse mémoire || BTFSC || Teste si le bit adressé est à 1
|-
| 0111 || Position du bit dans l'opérande || Adresse mémoire || BTFSS || Teste si le bit adressé est à 0
|-
! colspan="5" | Branchements
|-
| colspan="2" | 100 || Adresse mémoire || CALL || Appel de fonction
|-
| colspan="2" | 100 || Adresse mémoire || GOTO || Branchement inconditionnel
|-
! colspan="5" | Instructions logiques/arithmétiques avec opérande lue en mémoire RAM
|-
| colspan="5" | ''Le bit '''d''' dans l'opcode indique la destination : accumulateur ou adresse mémoire''.
|-
| colspan="2" | 0000001 || Adresse mémoire || MOVWF || Store (accumulateur vers destination)
|-
| colspan="2" | 000001d || Adresse mémoire || MOVWF || Met à zéro la destination (adresse ou registre)
|-
| colspan="2" | 000001d || Adresse mémoire || SUBWF || Soustraction
|-
| colspan="2" | 000010d|| Adresse mémoire || DECF || Décrémentation
|-
| colspan="2" | 000100d|| Adresse mémoire || IORWF || OU bit à bit
|-
| colspan="2" | 000101d|| Adresse mémoire || ANDWF || ET bit à bit
|-
| colspan="2" | 000110d || Adresse mémoire || XORWF || XOR bit à bit
|-
| colspan="2" | 000111d || Adresse mémoire || ADDWF VWF || Addition
|-
| colspan="2" | 001000d || Adresse mémoire || MOVF || LOAD
|-
| colspan="2" | 001001d || Adresse mémoire || COMF || NOT bit à bit
|-
| colspan="2" | 001010d || Adresse mémoire || INCF || Incrémentation
|-
| colspan="2" | 001011d || Adresse mémoire || DECFSZ || Décrémentation, puis instruction SKIP si résultat = 0
|-
| colspan="2" | 001100d || Adresse mémoire || RRF || Rotation à droite avec retenue entrante
|-
| colspan="2" | 001101d || Adresse mémoire || RLF || Rotation à gauche avec retenue entrante
|-
| colspan="2" | 001110d || Adresse mémoire || SWAPF || Echange deux ''niblle'' dans un octet
|-
| colspan="2" | 001111d || Adresse mémoire || INCFSZ || Incrémentation, puis instruction SKIP si résultat = 0
|-
! colspan="5" | Instructions logiques/arithmétiques avec constante immédiate
|-
| colspan="2" | 1100xx || Constante immédiate (8bits) || MOVLW || Copie constante dans accumulateur
|-
| colspan="2" | 1101xx || Constante immédiate (8bits) || RETLW || MOV fusionné avec un retour de fonction
|-
| colspan="2" | 111000 || Constante immédiate (8bits) || IORLW || OU
|-
| colspan="2" | 111001 || Constante immédiate (8bits) || ANDLW || ET
|-
| colspan="2" | 111010 || Constante immédiate (8bits) || XORLW || XOR
|-
| colspan="2" | 11110x || Constante immédiate (8bits) || SUBLW || Soustraction
|-
| colspan="2" | 11111x || Constante immédiate (8bits) || ADDLW || Addition
|}
Les PIC gèrent l'adressage absolu et immédiat, mais pas plus. L'adressage absolu, celui où l'adresse est intégrée dans l'instruction, est très simple à implémenter. Les adresses prennent moins d'un octet, vu que la taille de la RAM est très petite, les adresses sont très courtes, les intégrer dans des instructions elles-mêmes courtes n'est pas un problème. L'adresse est encodée sur 5 à 7 bits, selon le modèle, ce qui permet d'adresser entre 32 et 128 octets.
Les PIC ne supportent pas l'adressage indirect, mais peuvent l'émuler grâce à un '''registre d'adresse''' dédié. Il s'agit du registre FSR, qui mémorise l'adresse à lire/écrire. Il est possible de copier un pointeur dedans, qui provient soit de l'accumulateur, soit de la mémoire SRAM. Dans les deux cas, la donnée adressée est lue ou écrite dans un registre INDR, est un registre d’interfaçage rendu adressable. Le registre FSR est directement connecté sur le bus d'adresse.
Les modèles de base se débrouillent avec un registre FSR et un registre INDR, mais les modèles plus performants ont deux ou trois copies de chaque registre. Les modèles PIC18 ajoutent aussi des instructions LOAD/STORE qui émulent les modes d'adressage à post- ou pré-incrément/décrément, et le mode d'adressage "Base + Indice + Décalage", encore une fois en utilisant les registres FSR et INDR.
Avec tout ce qu'on vient de dire, vous devriez pouvoir comprendre la microarchitecture d'un PIC, qui est résumée dans ce schéma.
[[File:DocPIC16F84 all.png|centre|vignette|upright=2.5|Microarchitecture du PIC16F84.]]
===Les microcontrôleurs Intel 8051/8031===
Les microcontrôleurs Intel 8051/8031 sont des microcontrôleurs 8 bits, commercialisés par Intel. Elle contient un processeur 8/16 bits, de la mémoire ROM, une RAM de 128 octets, des ''timers'', et de nombreuses entrées-sorties. Il est relié à 4 ports sur lesquels il peut lire ou écrire 8 bits par port. Il contient aussi deux ''timers'' de 16 bits chacun, qui déclenchent des interruptions quand ils tombent à zéro ou à une valeur configurable. Il supporte des interruptions. L'ensemble utilise une architecture Harvard, contrairement à ce que pourrait faire croire le schéma ci-dessous.
[[File:Microcontroller 8051.gif|centre|vignette|upright=2.5|Microcontrôleur 8051]]
[[File:Pinagem8031.jpg|vignette|Broches du 8051.]]
Ils ont de nombreuses ressemblances avec les microcontrôleurs PIC. Le processeur du 8051 est une architecture à accumulateur de 8 bits, ses registres sont mappés en mémoire RAM, il a un registre d'adresse dédié à l'adressage indirect, un espace d'adressage séparé pour les entrées-sorties et j'en passe. Mais il y a aussi des différences notables. Par exemple, le 8051 n'a pas de pile d'adresse de retour, contrairement aux processeurs PIC. Il fait autrement, à savoir qu'il gère une pile d'appel placée en mémoire RAM,ce qui est très différent. De plus, le 8051 supporte les opérations de multiplications et de divisions, contrairement aux microcontrôleurs PIC qui se limitaient à l'addition et la soustraction.
Une autre particularité est que le processeur incorpore une '''unité de calcul de 1 bit'''. Elle permet de faire des opérations sur des bits, avec 17 instructions possibles au total. L'ALU de 1 bit est reliée à un accumulateur de 1 bit et 32 registres de 1 bits. Elle peut lire des opérandes de 1 bit en mémoire RAM ou sur les ports d'entrée-sortie, qui sont tous bit-adressables. Pour le dire autrement, chaque bit d'un port d'entrée-sortie a sa propre adresse mémoire, qui permet de le sélectionner. Il en est de même avec 18 adresses de la mémoire SRAM, ce qui permet d'adresser 144 bits (18 adresses * 8 bits par octet adressé).
[[File:Intel 8051 arch.svg|centre|vignette|upright=2|Microarchitecture de l'Intel 8051.]]
Les registres du processeur sont mappés en mémoire RAM, y compris l'accumulateur, le registre d'état, le ''program counter'', et bien d'autres. Par contre, ils sont placés de manière à ne pas remplacer de la mémoire RAM. Pour comprendre comment, faisons une remarque : le processeur gère nativement des adresses de 8 bits, mais a 128 octets de SRAM. L'idée est de placer les registres dans les 128 octets de poids fort, au sommet de l'espace d'adressage. D'ailleurs, les entrées-sorties sont mappées dans cette portion de l'espace d'adressage.
Avec ce qu'on vient de dire, on peut donner la ''memory map'' de ce microcontroleur, pour la SRAM. Les 32 premières adresses sont réservés à la mémoire SRAM, c'est 32 octets de RAM utilisable à volonté par le programmeur. Les 16 adresses suivantes sont adressables bit par bit, ou octet par octet. L'intervalle bit-adressable va de l'adresse 32 (inclue) à l'adresse 47 (inclue). Les 96 octets suivants sont de la mémoire RAM adressable, affectée par défaut à la pile d'appel mais adressable via adressage direct si besoin. Les 128 octets de poids fort sont réservés aux registres et aux entrée-sorties mappées en mémoire.
[[File:Memory map du 8051.png|centre|vignette|upright=2|Memory map du 8051]]
Les 128 octets au sommet de l'espace d'adressage sont décrit dans le schéma ci-dessous. On voit que l'accumulateur est mappé dedans, de même que le registre d'état PSW et le ''program counter'' IP. Les ports d'entrée-sortie sont aussi mappés dedans. Une partie des octets sont bit-adressables, et cette partie inclus les registres du processeur et les ports d'entrées-sorties.
[[File:MFrey SFR MCS-51.svg|centre|vignette|upright=2|Memory map des 128 octets de poids fort du 8051]]
===Le Fairchild F8 et la console de jeu Fairchild Channel F===
Un autre exemple est la Fairchild F8 de la défunte entreprise Fairchild Semiconductor. Il incorpore un processeur 8 bits, c'est à dire que le processeur fait des calculs sur des entiers de 8 bits maximum, une mémoire RAM de 64 octets, ainsi qu'une mémoire ROM de 1 kibioctet. Les 64 octets de RAM sont certes très peu, mais c'est suffisant pour certaines applications simples, comme les caisses automatiques de l'époque, ou des applications embarquées. Et de toute façon, il est possible d'ajouter de la mémoire RAM supplémentaire si les 64 octets de RAM intégrée ne suffisent pas. Le système était donc modulaire, adaptable selon les besoins, peu cher pour son implémentation minimale sans RAM en plus.
Vu qu'il s'agit d'un des tout premiers ordinateurs, il est sorti à une époque où la technologie était rudimentaire. À cette époque, le processeur était composé de pièces détachées qu'il fallait souder ensemble pour obtenir un processeur fonctionnel. Ce n'est que plus tard qu'est apparu le micro-processeur, qui regroupe un processeur complet dans un seul circuit intégré. Le résultat est que le processeur du Fairchild F8 est coupé en deux, l'unité de calcul et l'unité de contrôle sont placés dans des pièces détachées séparés.
Le microcontrôleur est composé de trois à quatre pièces détachées, certaines étant optionnelles. La première est le '''3850 CPU''', qui regroupe l'unité de calcul et la mémoire RAM intégrée. La seconde est le PSU (''3851 Program Storage Unit''), qui regroupe la mémoire ROM et l'unité de contrôle, ''program counter'' inclut. S'il y a besoin d'utiliser plus de RAM, il faut ajouter un circuit d’interface mémoire, qui est au choix le ''3852 Dynamic Memory Interface'' (DMI) ou le ''3853 Static Memory Interface'', le premier étant connecté à une mémoire de type DRAM, l'autre à une SRAM (nous verrons ce que sont les DRAM et les SRAM dans le prochain chapitre).
[[File:Fairchild F8.png|centre|vignette|upright=2|Fairchild F8]]
Le système minimal est composé d'un PSU et d'un 3850, sans les circuits d'interface mémoire. Le tout donne un système avec un processeur 8 bit, 64 octets de RAM et 1 kibioctet de ROM, les deux mémoires étant intégrées dans le "processeur". Le processeur gérait 4 entrées-sorties, chacune étant reliée avec un bus de 8 bit au processeur. Au passage, en 1977, Mostek a créé un microcontrôleur qui regroupe un PSU et un 3850 : le Mostek 3870. Le système minimal n'avait pas de bus d'adresse, vu que la RAM était intégrée au processeur. C'est les 3852 et 3853 qui ajoutaient un bus d'adresse. Ils ajoutent un bus d'adresse de 16 bits, ce qui permet d'adresser 64 kibioctets de RAM.
[[File:Fairchild-Channel-F.jpg|vignette|un Fairchild Channel F]]
Le Fairchild F8 a été utilisé dans la Fairchild Channel F, une des toute première console de seconde génération, à savoir des consoles qui utilisaient des cartouches de jeu. Avant les consoles de seconde génération, les consoles étaient non-programmables. Elles étaient conçues pour faire tourner un jeu précis, aucun autre, le jeu étant implémenté dans leurs circuits.
La Fairchild Channel F est composé du système minimal, auquel on a ajouté une carte son rudimentaire et 2 kibioctets de mémoire vidéo. La mémoire vidéo sert uniquement pour afficher des images à l'écran : on écrit l'image à afficher dedans, un circuit vidéo se charge de l'afficher à l'écran automatiquement. Le processeur ne fait qu'écrire dans cette RAM vidéo, il ne peut pas en lire le contenu. De la RAM supplémentaire peut cependant être ajoutée dans les cartouches de jeu.
===Le HP Nanoprocessor : un processeur sans ALU===
Un dernier exemple est celui du processeur HP Nanoprocessor, de l'entreprise HP. Il a été commercialisé en 1974, en même temps que les premiers micro-processeurs d'Intel. Tous les processeurs de l'époque étaient des processeurs 8 bits et le HP Nanoprocessor ne faisait pas exception. Ce n'était pas un processeur haute performance, il était destiné à des applications d'informatique industrielle ou embarquée. D'ailleurs, il utilisait des transistors de type metal-gate, peu performants, là où ses contemporains utilisait des transistors en silicium, plus performants.
Mais une caractéristique qui rend cela encore plus claire est qu'il n'y a pas d'ALU ! En effet, ce processeur est incapable de faire des additions, des soustractions ou autres opérations simples ! Il est cependant capable d'effectuer des incrémentations et décrémentations, des décalages, des opérations logiques comme des ET/OU/NON/XOR et bien d'autres. Il supporte en tout 48 instructions, avec un support limité des modes d'adressage indirects. Les instructions de branchement étaient des instructions SKIP, il n'y avait pas d'instructions de branchement généralistes.
Pour ce qui est des registres, il disposait de 16 registres de 8 bits et d'un accumulateur. Niveau mémoire, il était relié à une mémoire ROM, rien de plus. Il n'avait de RAM supplémentaire qu'on pouvait lui adjoindre, il devait se débrouiller avec seulement ses registres. Et cela ne posait pas de problèmes pour son usage. Seul le mode d'adressage indirect à registre est supporté, il n'y a pas de registres d'indices. Ce mode d'adressage permet de lire des données en mémoire ROM, la ROM pouvant contenir des tableaux de valeurs constantes.
: Il est possible de lui adjoindre de la RAM via les ports d'entrée-sortie, ainsi qu'une ALU, mais RAM et ALU sont traités comme des périphériques avec lesquels on communique, ils ne sont pas intégrés au processeur.
Niveau micro-architecture, il incorporait une unité de calcul logique et un circuit comparateur. Le comparateur était un circuit comparateur série des plus basiques, qui était utilisé pour les instructions de branchement et associées. L'unité de calcul logique gérait des incrémentations/décrémentation, des décalages, les opérations logiques et quelques autres. L'unité de calcul logique était bit-slicée, à savoir conçue en assemblant 8 ALU de 1 bit chacune, enchainées en série. Le tout était combiné à des circuits de ''carry skip''.
[[File:Unité de calcul du HP nanonprocessor.png|centre|vignette|upright=2|Unité de calcul du HP nanoprocessor]]
Son unité de décodage d'instruction était très simple, essentiellement basée sur des portes NOR, grâce à un encodage efficace des instructions machine. Le ''program counter'' fait 11 bits, ce qui permet d'adresser une ROM de 2 kibioctets. Le ''program counter'' était relié à un circuit incrémenteur qui gérait les isntructions SKIP (il pouvait incrémenter le ''program counter'' par pas de 1 ou de 2 en cas de SKIP). Le processeur contient aussi deux registres, qui servent en quelque sorte de pile d'adresse de retour. Un premier registre mémorise l'adresse de retour d'une fonction, l'autre mémorise le ''program counter'' lors d'une interruption, pour savoir où brancher à la fin de l'interruption.
[[File:HP nanoprocessor.png|centre|vignette|upright=2.5|HP nanoprocessor]]
Fait intéressant, le concepteur du processeur a gracieusement donné les masques utilisés pour graver le silicium du processeur au site [https://www.cpushack.com/ CPU Shack]. Les masques en question sont disponibles ici :
* [https://www.cpushack.com/2020/08/20/hp-nanoprocessor-mask-set/ HP NanoProcessor Mask Set]
* [https://www.cpushack.com/2020/08/09/the-forgotten-ones-hp-nanoprocessor/ The Forgotten Ones: HP Nanoprocessor]
Les masques ont été analysés par Ken Shirrif dans cet article de blog :
* [https://www.righto.com/2020/09/hp-nanoprocessor-part-ii-reverse.html HP Nanoprocessor part II: Reverse-engineering the circuits from the masks]
==Les processeurs 8/16 bits à architecture Von Neumann==
L'usage d'une architecture Harvard est une solution pour adresser plus de mémoire avec des CPU 8 bits. Mais plusieurs microprocesseurs commerciaux n'utilisaient pas cette solution. À la place, c'était des architectures Von Neumann, mais qui étaient capables de gérer des adresses de 16 bits. Les données faisaient 8 bits, les registres faisaient 8 bits, mais quelques techniques permettaient de gérer des adresses de 16 bits. Nous parlerons de '''processeurs 8/16 bits''' pour les désigner, et nous allons les étudier à part.
Un point important est que la gestion d'adresses de 16 bits permet d'adresser 64 kibioctets, qui peuvent être remplis avec de la RAM et de la ROM. On a donc le meilleur des mondes : 64 kibioctets de mémoire, mais avec des données de 8 bits et les économies de circuit qui vont avec. L'avantage est que le processeur peut maintenant gérer une vraie pile d'appel, pas seulement une pile d'adresse de retour. Il lui suffit pour cela d'intégrer un pointeur de pile codé sur 16 bits.
===Les modes d'adressage par page des CPU Motorola===
Les processeurs Motorola 8 bits étaient des processeurs 8 bits avec un bus d'adresse de 16 bits. C'était des processeurs à accumulateur incorporant deux registres d'indice, un registre d'état, un pointeur de pile, et un ''program counter''. Tous les registres sont reliés au bus d'adresse, sauf le registre d'état et l’accumulateur. Tous les registres font 8 bits, sauf le ''program counter''. La pile est câblée pour être dans un bloc de 256 octets compris entre l'adresse 1 0000 0000 et l'adresse 1 1111 1111, ce qui fait que son adressage se fait avec un seul octet.
[[File:6502-architecture.svg|centre|vignette|upright=1.5|Architecture simplifiée du 6502.</br> X et Y : registres d'indice ;</br> S : le pointeur de pile ;</br> A : accumulateur ;</br>P : registre d'état.</br>]]
Les processeurs Motorola 8 bits utilisaient une méthode simple pour adresser 64 kibioctets de RAM, avec des registres de 8 bits. Pour cela, ils utilisaient une variante de l'adressage base + décalage. Elle améliore l'adressage absolu, qui intègre l'adresse à lire/écrire dans l'instruction elle-même. L'adresse en question est de 8 bits et n'encode que les 8 bits de poids faible de l'adresse, les 8 bits de poids fort sont dans un '''registre de page''' adressé implicitement. L'adresse finale est obtenue en concaténant ce registre avec l'adresse mémoire intégrée dans l’instruction. Le résultat est que la mémoire était découpée en blocs de 256 consécutifs, chacun pouvant servir de fenêtre de 256 octets. Une page est réservée pour la pile, la seconde, comme dit plus haut.
Formellement, ce mode d'adressage a des ressemblances avec la commutation de banques, une technique qu'on verra dans les chapitres sur l'espace d'adressage et la mémoire virtuelle. Mais ce n'en est pas du tout : le registre de page est utilisé uniquement pour les accès mémoire avec le mode d'adressage base + décalage, mais pas pour les autres accès mémoire, qui gèrent des adresses complètes. Notons que l'usage d'un registre de page dédié fait que celui-ci est adressé implicitement.
Il faut noter que la technique a été utilisée sur des processeurs 16 bits, pour contourner la petite taille des instructions. Un exemple est celui du HP 2100, un processeur 16 bits. Il avait un registre de page de 5 bits et encodait 10 bits d'adresse dans ses instructions. Ses instructions d'accès mémoire disposaient d'un bit qui choisit quel mode d'adressage utiliser. S'il était à 0, l'adressage absolu était utilisé, le registre de page n'était pas utilisé. Mais s'il était à 1, le registre de page était utilisé pour calculer l'adresse.
Une évolution de l'adressage précédent est le '''mode page direct'''. Avec lui, le registre de page est étendu et contient une adresse mémoire complète. L'adresse finale n'est pas obtenue par concaténation, mais en additionnant le registre de page avec l'adresse fournie par adressage absolu + décalage. Un exemple est celui des premiers processeurs Motorola, qui géraient des adresses courtes de 8 bits. L'adresse courte de 8 bits correspondait non pas aux 256 premiers octets de la mémoire, mais à une fenêtre de 256 octets déplaçable en mémoire. La position de la fenêtre de 256 octets était spécifiée par le registre de page de 16 bits, qui précisait l'adresse du début de la fenêtre, celle de sa première donnée.
Il s'agit donc formellement d'adressage base + décalage, à un détail près : il n'y a qu'un seul registre de base. Le fait que ce registre de base soit unique fait qu'il est adressé implicitement, on n'a pas à encoder le numéro/noms de registre dans l'instruction. Le registre de base est utilisé uniquement pour l'adressage absolu, pas pour les autres accès mémoire. S'il y a des ressemblances avec la segmentation, une technique de mémoire virtuelle qu'on abordera dans quelques chapitres, ce n'en est pas vu que le registre de base est utilisé seulement pour un mode d'adressage bien précis.
===Le ''pseudo-aliasing'' des registres des processeurs Intel x86===
Voyons maintenant le cas des anciens processeurs 8 bits d'Intel à savoir l'Intel 4004, 4040, 8008 et 8080. Le Z80, un processeur inspiré des CPU Intel 8 bits, est aussi concerné. Avant de poursuivre, parlons des registres de ces processeurs. Les premiers CPU Intel incorporaient 7 registres de 8 bits nommés A, B, C, D, E, F, H, L, SP. Ils correspondent respectivement à : l'accumulateur A ; six registres nommés B, C, D, E, H et L ; le registre d'état F ; le pointeur de pile SP. Le Z80 ajoute deux registres d'indice X et Y. De plus, le Z80 dispose de registres d'interruption, qui sont en quelque sorte des copies des registres A, B, C, D, E, F, H, L. Le tout est illustré dans le tableau ci-dessous.
{|class="wikitable" style="text-align:center;"
|-
!
! Registres des CPU Intel
! Registres supplémentaires du Z80
|-
! Accumulateur
| A
| A'
|-
! Registre d'état
| F
| F'
|-
! Registres généraux
| B, C, D, E, H, L
| B', C', D', E', H', L'
|-
! Pointeur de pile
| colspan="2" | SP (sauf pour le 8008)
|-
! Registres d'indice
|
| X et Y
|}
Le 8008 incorpore une pile d'appel de 7 adresses, dans le processeur lui-même. Il en est de la même avec le 4004 et le 4040, comme on le verra dans la section sur les processeurs 4 bits. Mais le 8080 et le 8085 ont remplacé le tout par un simple pointeur de pile, afin d'avoir une véritable pile d'appel. Autant c'est impossible d'avoir une pile d'appel avec seulement 256 octets de mémoire, autant on peut se le permettre avec 65 536 adresses.
Pour gérer des adresses de 16 bits, ils auraient pu utiliser des registres d'adresse séparés, mais on préféré un système de '''pseudo-''aliasing'' de registres'''. Formellement, c'est un système qui concatène deux registres 8 bits pour obtenir une adresse de 16 bits. L’appariement a lieu lors de certaines opérations bien précises, qui n'ont de sens que pour les adresses : la lecture/écriture en mémoire, et l'incrémentation.
Il y avait cependant des contraintes quant aux paires de registres possibles, toutes les paires de registres n'étaient pas autorisées. Les CPU concernés sont donc des processeurs hybrides accumulateur-registre généraux. L'accumulateur ne peut pas être appairé, seuls les registres généraux le peuvent. Le Z80 autorise plus de paires que les CPU Intel. Voici les paires de registres qui pouvaient servir d'adresse 16 bits :
* Les CPU 8008 d'Intel autorisait une seule paire formée des registres H et L.
* Les autres processeurs, à savoir le 8080, le 8085 et le Z80, autorisaient : les paires BC, DE et HL.
Le 8008 ne gérait que des opérations sur 8 bits. Mais le 8080 et le 8085 ont ajouté des instructions 16 bits qui agissaient sur des paires de registre, que le Z80 a repris. Une paire de registres est considérée comme un registre unique de 16 bits pour certaines opérations arithmétiques, dont l'incrémentation. Voici la liste des instructions concernées :
* INC et DEC pour l'incrémentation et la décrémentation ;
* DAD : additionne le registre HL avec une autre paire (Hl inclus) ;
* LXI : copie une constante immédiate dans une paire de registres ;
* LHLD : lit 16 depuis la mémoire et l'enregistre dans une paire de registres ;
* SHLD : copie 16 bits depuis une paire de registres et l'enregistre en mémoire ;
* PUSH et POP : empile ou dépilent une paire de registre sur la pile ;
* XTHL : échange la paire HL avec les 16 bits au sommet de la pile d'appel ;
* XCHG : échange le contenu de la paire HL et DE.
Pour résumer, le processeur avait des instructions LOAD, STORE, PUSH et POP adaptées pour gérer des paires de registre. De plus, l'instruction XCHG permettait d’échanger le contenu des paires DE et HL. L'instruction a été étendue sur les processeurs 16 bits pour échanger tous les registres. Mais l'implémentation était alors différente. L'incrémentation sur une paire de 16 bit était très utile, car les adresses sont souvent incrémentées quand on parcours un tableau. Ces instructions nous donnent quelques indices sur ce qu'il y a dans le processeur.
Le système de pseudo-aliasing a un impact sur le banc de registre. Le banc de registre regroupe les registres généraux et le pointeur de pile, mais ne contient pas l'accumulateur. Les contraintes sur les paires de registres possibles ne s'expliquent que d'une seule manière : le banc de registre contient des registres de 16 bits, une paire de registres 8 bits est mémorisée dans un registre unique. Il faut donc faire une différence entre les registres architecturaux de 8 bits, et les registres réels de 16 bits.
Le banc de registre a un port de 8 bits pour les données, qui est fabriqué à partir d'un port 16 bits auquel on a rajouté un multiplexeur pour choisir soit l'octet de poids faible, soit l'octet de poids fort. Le bus de données fait 8 bits, ce qui fait que les instructions LOAD, STORE, PUSH et POP pour paires 16 bits sont réalisées en deux fois : on lit/écrit l'octet de poids faible, puis celui de poids fort. Par contre, le bus d'adresse fait bien 16 bits. Cela suggère que le banc de registre dispose d'un port de 16 bits dédié aux adresses, en plus du port de données 8 bits.
[[File:Architecture d'un CPU 8-16 bits avec un banc de registre double port.png|centre|vignette|upright=2|Architecture d'un CPU 8-16 bits avec un banc de registre double port]]
L'incrémentation d'une paire 16 bits ne coute rien à implémenter, ou presque. En effet, le processeur incorpore un incrémenteur 16 bits pour le ''program counter'', qui est relié au bus d'adresse. L'idée est de rentabiliser cet incrémenteur, en lui permettant d'incrémenter des données/adresses de 16 bits obtenues via pseudo-aliasing. De même, il peut être utilisé pour incrémenter le pointeur de pile, voire un compteur de rafraichissement mémoire (pour rappel, le rafraîchissement mémoire demande de balayer la mémoire d'adresse en adresse et été fait par le CPU à l'époque). Pour cela, il suffit de connecter le ''program counter'', le banc de registre, et l'incrémenteur, via un bus dédié.
[[File:Calcul d'adresse par ALU dédiée avec PC séparé.png|centre|vignette|upright=2|Calcul d'adresse par ALU dédiée avec PC séparé]]
Notez qu'on peut encore simplifier le tout en placant le ''program counter'' dans le banc de registre, ce qui ne gênera pas le travail de l'incrémenteur mais simplifiera le câblage au bus d'adresse. Ce n'était pas systématique, certains processeurs mettaient le ''program counter'' dans le banc de registre, d'autres non.
: Inclure le ''program counter'' dans le banc de registre permet parfois de remplir un vide. Par exemple, sur un processeur avec 12 registres, le banc de registre devrait faire idéalement 16 registres, inclure le ''program counter'' dedans fait monter le tout à 13.
[[File:Architecture d'un CPU 8-16 bits.png|centre|vignette|upright=2|Architecture d'un CPU 8-16 bits]]
Les processeurs Intel 8 bits, à savoir le 8008, le 8080 et le 8085 ; mettaient le ''program counter'' dans le banc de registre. Vous avez donc toutes les armes pour comprendre leur micro-architecture. Par exemple, voici la micro-architecture du processeur 8080. Remarquez le banc de registre, qui contient tous les registres sauf l'accumulateur et le registre. Il a deux ports : un pour les adresses et un pour les données. Notez le dé-multiplexeur sur le port de donnée. Pour le reste, il s'agit d'une architecture à accumulateur hybride des plus classiques.
[[File:Intel 8080 arch.svg|centre|vignette|upright=3|Microarchitecture de l'Intel 8080.]]
Le Z80 est un processeur inspiré du design des processeurs Intel 8 bits, mais avec pas mal d'améliorations. Un point particulier de ce processeur est son banc de registre. Il contient tous les registres du processeur, y compris l'accumulateur et le registre d'état ! Les seuls registres en-dehors du banc de registre sont le ''program counter'' et un compteur de rafraichissement mémoire IR.
Un autre point particulier est que les registres dans le banc de registres avaient une copie séparée accessible uniquement pour les interruptions, via fenêtrage de registres. Et l'accumulateur et le registre d'état étant dans le banc de registre, il y avait deux accumulateurs et deux registres d'état. Les registres A, B, C, D, E et F étaient dupliqués, par le pointeur de pile ni les registres d'indice. Les copies des registres étaient nommées A', B', C', D', E' et F'.
Le Z80 supportait des instructions d'échange de registre en plus des CPU Intel 8 bits. L'instruction EX peut échanger soit le contenu des paires D,E et H,F, soit la paire A,F avec la paire A',F'. L'instruction EXX échange les paires BC, DE, HL avec les paires BC', DE', HL'. En faisant cela, le programmeur pouvait utiliser deux fois plus de registres généraux s'il n'utilisait pas les interruptions. L'échange de paires se fait sans copies de registres, mais simplement en modifiant l'adresse envoyée sur le banc de registre. Pour cela, plusieurs bascules mémorisent des bits qui indiquent si les paires ont été échangées ou non. Il y a une bascule pour les paires DE , HL ; une autre pour les paires A,F et paire A',F', une dernière pour l'instruction EXX. En combinant ces bascules avec les noms de registres envoyés par le séquenceur, on peut échanger les paires de registres.
==Le cas particulier des processeurs 4 bits : le 4004 d'Intel==
L'Intel 4004 était le tout premier micro-processeur. Il s'agissait d'un microprocesseur de 4 bits, basé sur une architecture à accumulateur. Il disposait d'un accumulateur et de 16 registres d'indice, tous de 4 bits. Il faisait des calculs sur des données de 4 bits, appelées des nibbles. Cependant, sur ses 46 instructions machines supportées, 41 agissaient sur des opérandes de 8 bits, les 5 restantes sur des opérandes de 16 bits. Simplement, les calculs se faisaient en deux fois, en échangeant des données entre mémoire RAM et accumulateur.
Le 4004 est un circuit intégré avec peu de broches. Il dispose notamment d'un bus de données/adresse, qui est multiplexé, c’est-à-dire qu'il sert alternativement de bus de données et de bus d'adresse selon les besoins. Le bus de commande mémoire fait 5 bits, dont 4 pour les chips de RAM, un pour la ROM. Les adresses sont codées sur 12 bits, les données sur 4 et les instructions sur 8 bits. L'envoi d'une adresse sur le bus se fait en plusieurs fois, de même que la lecture d'une instruction. Il s'agit là d'une adaptation pour outrepasser les limitations d'un processeur 4 bit.
[[File:Intel 4004 processor pinout.png|centre|vignette|upright=2|Broches de l'Intel 4004. Nous verrons à quoi elles servent plus bas.]]
===L'espace d'adressage de l'Intel 4004===
Les adresses du processeur sont sur 12 bits, ce qui fait 4096 adresses différentes. Elles regroupent à la fois la ROM et la mémoire RAM, vu que l'architecture est une sorte de mélange bizarre entre une architecture Von Neumann et Harvard. Le processeur gère bien deux espaces d'adressage séparés, mais la RAM et la ROM sont reliés au même bus. La sortie CM-ROM du processeur indique si l'adresse envoyée correspond à la RAM ou la ROM. Un circuit de décodage d'adresse active ou désactive la RAM selon la valeur de ce bit, l'inverse pour la ROM, en agissant sur leurs bits Chip Select. Seule la RAM ou la ROM répondent alors à l'adresse.
Pour ce qui est de la RAM, le circuit de décodage d'adresse pouvait gérer au maximum 1024 adresses différentes, chacune contenant un nibble. Pour cela, le CPU 4004 était relié à une ou plusieurs RAM externes, des Intel 4002. Chaque Intel 4002 contenait 64 nibbles de données, plus 16 nibbles de statut qu'on ne détaillera pas ici. Les nibbles de statut étaient accessibles en utilisant des instructions d'entrée-sortie, donc pas avec des lectures/écritures mémoire. Les 64 nibbles de données sont découpés en 4 groupes de 16 nibbles. Le CPU pouvait être relié à maximum 16 Intel 4002, ce qui fait 1024 nibbles de données et 256 nibbles de statut. L'ensemble permet de remplir l'espace d'adressage de 1024 adresses.
===Le registre de page et le pseudo-aliasing des registres===
Sélectionner une adresse mémoire utilisait un mélange entre pseudo-aliasing et registre de page. Pour les données, les 1024 adresses étaient découpées en 4 pages de 256 adresses. Pour la ROM, les 4096 adresses étaient découpées en 16 pages de 256 adresses. Localiser une donnée dans une page ne requiert que 8 bits, 2/4 bits supplémentaires permettent de sélectionner la page voulue. Le registre de page était dans le processeur lui-même, et était relié aux sorties du processeur nommées CM-RAM 0, 1, 2 et 3. Les 4 sorties encodaient un nombre qui permet de sélectionner le numéro de page voulu.
Le registre de page fait 5 bits : un pour distinguer RAM et ROM, 4 bits pour sélectionner la page voulue. L'avantage est que la carte mère gère au maximum 16 chips de RAM, ce qui colle parfaitement avec les 4 utilisés pour sélectionner une page. Un chip de RAM correspond à une page, et chacun est activé ou désactivé suivant la page sélectionnée. Pour cela, il suffit d'ajouter un décodeur sur la carte mère, qui prend les 4 bits du registre de page et fournit les signaux Chip Select aux différents chips de RAM.
Reste alors à utiliser les 8 bits d'adresse à l'intérieur d'un chip de RAM. Le 4004 permettait de concaténer deux registres d'indice de 4 bits pour former une adresse de 8 bits. Les instructions d'accès mémoire pouvaient ainsi préciser une paire de registre d'indice pour préciser quelle adresse lire/écrire. Idem pour les branchements indirects : le processeur supportait une instruction de branchement indirect qui précisait l'adresse dans une paire de registres d'indice. Les registres d'indice sont donc assez mal nommés sur cette architecture, vu qu'ils peuvent servir soit de registre d'indice, soit de demi-registre d'adresse. Il s'agit là du système de pseudo-aliasing des registres, mais appliqué aux registres d'indice.
L'Intel 4004 gérait deux instructions pour gérer les adresses mémoires. La première, l'instruction DCL (''Designate Command Line'') configure le registre de page. Elle prend en entrée un numéro de page et le copie dans le registre de page. L'opérande peut provenir d'un registre d'indice ou de l'accumulateur. La seconde, l'instruction SRC (''Send Register Control'') concatène deux registres d'indice pour obtenir une adresse de 8 bits. Un accès mémoire se fait donc en maximum trois instructions : une qui configure le registre de page si ce n'est pas déjà fait, une instruction SRC pour envoyer l'adresse, et une troisième instruction qui dit s'il faut faire une lecture ou une écriture.
===La microarchitecture de l'Intel 4004===
Il incorporait une pile d'adresse de retour intégrée au processeur. La pile d'adresse acceptait exactement 3 adresses maximum. Elle était regroupée avec le ''program counter'' dans un banc de registre, de 4 registres. Le ''program counter'' et le pointeur de pile faisaient chacun 12 bits, soit trois nibble. Ils étaient incrémentés par un incrémenteur dédié.
SI on omet le registre de page et la pile d'adresse, le 4004 est une architecture à accumulateur des plus classiques, avec un bus interne unique, un banc de registre pour les registres d'indices, un accumulateur relié à une unité de calcul. Les registres d'indice étaient dans un banc de registre séparés, car ils faisaient 4 bits chacun, contrairement au pointeur de pile et le ''program counter''. Un détail important est que les bancs de registres du 4004 étaient implémentés avec de la DRAM, et non des registres usuels fabriqués avec des bascules 1 bit.
[[File:Microarchitecture de l'Intel 4004.png|centre|vignette|upright=2.5|Microarchitecture de l'Intel 4004]]
<noinclude>
{{NavChapitre | book=Fonctionnement d'un ordinateur
| prev=Les architectures à pile et mémoire-mémoire
| prevText=Les architectures à pile et mémoire-mémoire
| next=Les processeurs de traitement du signal
| nextText=Les processeurs de traitement du signal
}}
</noinclude>
8ybo9i63m86at7gnnsknhg7wy2g0823
765724
765723
2026-05-01T20:17:50Z
Mewtow
31375
/* Les microcontrôleurs Intel 8051/8031 */
765724
wikitext
text/x-wiki
Nous avons déjà abordé la notion de processeur 8, 16, 32, 64 bits. Elle désigne la taille des registres généraux, ou de l'accumulateur. De nos jours, les processeurs 32 et 64 bits sont la norme, mais les premiers micro-processeurs étaient des processeurs 4 et 8, avant de passer rapidement au 16 bits. La raison est que leur budget en transistor limité faisait qu'on ne pouvait pas utiliser une ALU trop grande : une ALU 8 bit prend deux fois moins de place et de transistors qu'une ALU 16 bits. Cependant, les processeurs 8 bits avaient de sérieuses limitations qui étaient compensées par diverses solutions. Dans ce chapitre, nous allons faire une revue rapide des processeurs 8 bits et de leurs fonctionnalités.
La principale limitation des CPU 8 bits était l'adressage : des registres de 8 bits limitaient l'espace d'adressage à seulement 256 adresses, soit à peine 256 octets ! Intuitivement, on se dit que 256 octets est purement impraticable, on ne peut rien faire d'intéressant avec seulement 256 de RAM + ROM. Et c'est partiellement vrai. L'adage veut que 16 bits est la taille minimale intéressante, la limite à partir de laquelle on a assez de mémoire RAM/ROM pour coder des applications intéressantes. Mais 256 octets de RAM est largement suffisant sur de nombreux systèmes embarqués simples s'en accommodent : des caisses enregistreuses, des systèmes de régulation de feu de circulation, etc.
Pour les applications demandant plus de mémoire RAM, les CPU de l'époque contournaient la limitation de 256 octets de RAM avec de nombreux stratagèmes. Dans ce qui va suivre, nous allons séparer les CPU 8 bits selon qu'ils utilisent une architecture Harvard ou une architecture Von Neumann. La raison est qu'une architecture Harvard permet en soi de contourner partiellement ce problème d'adressage. Les choses sont plus compliquées avec une architecture Von Neumann.
==Les processeurs 8/16 bits à architecture Harvard ==
La première solution est d'utiliser une architecture Harvard. Le processeur 8 bit a alors deux espaces d'adressage : un pour la RAM, un autre pour la ROM. Et les deux utilisent des adresses de taille différente. La ROM est reliée à un bus d'adresse de 16 bits, alors que la RAM est elle connectée à un bus d'adresse de 8 bits. La RAM est donc limitée à 256 octets, alors que la ROM peut monter jusqu'à 64 kibioctets. Mine de rien, faire ainsi est largement suffisant.
Pour encore améliorer la situation, il est possible d'utiliser une architecture Harvard modifiée, qui permet de lire des données depuis la mémoire ROM. Cela réduit encore plus les besoins en mémoire RAM. Les constantes manipulées par le programme sont mémorisées en ROM, lues depuis la ROM, au lieu d'être chargées en RAM. Avec ce genre de stratagèmes, 256 octets de RAM est largement suffisant sur de nombreux systèmes, à condition qu'on ait assez de ROM pour coder un programme digne de ce nom. Par exemple, de nombreux systèmes embarqués simples s'en accommodent : des caisses enregistreuses, des systèmes de régulation de feu de circulation, etc.
Les processeurs 8 bits intègrent parfois les 256 octets de RAM directement dans le processeur, dans le banc de registres ! Beaucoup en implémentaient moins, avec par exemple seulement 64 octets de RAM, ou 32 octets, ou 128 octets. L'avantage est que cela élimine le bus pour les données, ce qui économise beaucoup de broches sur le circuit intégré du CPU. Et pour les applications demandant plus de RAM, on pouvait ajouter un circuit séparé qui permettait d'adresser une RAM plus grande. Et c'est ce qui explique que cette solution est beaucoup utilisée sur les microcontrôleurs peu puissants. Les exemples qui vont suivre devraient vous convaincre.
: Les processeurs de ce type implémentent des optimisations pour adresser plus de 256 octets de RAM. La plus connue est la commutation de banques. Mais nous n'avons pas encore abordé celle-ci, et il faudra attendre le chapitre sur l'espace d'adressage pour cela.
===Les microcontrôleurs PIC===
Les '''microcontrôleurs PIC''' regroupent des microcontrôleurs allant de microcontrôleurs 8 bits aux performances très faible, à des microcontrôleurs 32 bits bien plus puissants. Les microcontrôleurs PIC sont très utilisés dans l'embarqué ou d'informatique industrielle. Ils sont vendu à des volumes assez impressionnants, plusieurs millions par an. Et si vous avez ou êtes en train de faire des études d'électronique, je parie que vous les avez déjà vu en classe, ou que ce ne saurait tarder. Dans ce qui suit, nous allons nous concentrer sur les microcontrôleurs PIC 8 bits, à savoir les PIC 16, 16 et 18. Les PIC 24, qui sont des microcontrôleurs 16 bits, ne seront pas abordés.
Les microcontrôleurs PIC 8 bits sont une architecture Harvard, comme dit plus haut. Il y a aussi des registres pour les entrées et sorties. Les registres d'entrée-sortie permettent de lire ou écrire sur un port d'entrée-sortie ou de lire un ''timer''. En clair, les PIC ont un espace d'adressage séparé pour les entrées-sorties.
La mémoire ROM des PIC va de 1024 instructions à 4096 instructions. En comparaison, la mémoire RAM des microcontrôleurs PIC ne peut pas dépasser 256 adresses, et elle est encore plus petite en pratique sur certains modèles. Pour donner un exemple, le PIC16F84 a une RAM composée de 68 "registres" de 8 bits. Le terme "registres" devrait vous faire tiquer, mais c'est bien le terme utilisé dans la documentation des PIC. Et il faut admettre que la différence entre banc de registre et SRAM intégrée est floue, mais nous expliquerons pourquoi dans quelques paragraphes.
: Les PIC 18 peuvent adresser plus de 256 octets de RAM en utilisant la commutation de banques, une technique qui sera abordée dans plusieurs chapitres.
[[File:DocPIC16F84 3.png|centre|vignette|upright=3|Espaces d'adressage du PIC16F84.]]
Un détail est que la SRAM n'a qu'un seul port qui sert à la fois pour les lectures et écritures. Pour compenser, les PIC sont des architectures à accumulateur, où une opérande est lue depuis la SRAM, l'autre depuis l'accumulateur. Leur implémentation de l'accumulateur ajoute une petite subtilité : le résultat d'une opération arithmétique peut être enregistré ailleurs que dans l'accumulateur. Le résultat peut aussi remplacer la seconde opérande, celle lue en mémoire RAM. Dit autrement, le résultat est enregistré dans l'adresse mémoire source. Les instructions de calcul ont le choix : un bit dans leur encodage précise où enregistrer le résultat.
{|
|-
|[[File:DocPIC16F84 4.png|centre|vignette|upright=2|Microarchitecture simplifiée d'un microcontroleur PIC (ici, un 16F84).]]
|[[File:DocPIC16F84 5.png|centre|vignette|upright=2|Microarchitecture simplifiée d'un microcontroleur PIC (ici, un 16F84), avec les branchements directs.]]
|}
Outre l'accumulateur, les PIC disposent de registres de contrôle, d'un ''program counter'', d'un registre d'état, et d'un pointeur de pile. Un détail très important est que les registres sont mappés en mémoire, à quelques exceptions près ! En clair, on peut y accéder en lisant/écrivant à une adresse mémoire bien précise. Les seules registres qui ne sont pas mappés en mémoire sont l'accumulateur, les registres d'entrée-sortie, et la pile d'adresses de retour intégrée au processeur (voir plus bas). Par exemple, sur les modèles 16F, l'espace d'adressage fait 128 octets, dont 32 sont réservés aux registres du processeur, ce qui fait que seules 96 octets sont adressables comme de la RAM. Mais les 128 octets sont un seul et unique SRAM dans le processeur. Ce qui explique qu'il est difficile de séparer banc de registre et RAM principale sur ce processeur : les deux sont fusionnées ! Cela gaspille quelques adresses mémoire, mais permet une implémentation plus simple, avec un banc de registre unique.
: Les modèles PIC 17 ont rendu l'accumulateur mappé en mémoire RAM !
[[File:DocPIC16F84.png|centre|vignette|upright=2|DocPIC16F84]]
La petite taille de la ROM d'un PIC n'est pas une surprise. Les architectures 8 bits sont conçues pour ne pas utiliser beaucoup de transistors et être très simples. Aussi, utiliser une petite ROM est nécessaire. Mais il faut aussi adapter le jeu d'instruction, pour qu'il ait une bonne densité de code. Par exemple, il faut faire en sorte d'avoir des instructions assez courtes. Si les instructions font 16 bits au lieu de 32, on divise par deux le nombre de transistors nécessaire pour la mémoire ROM. La conséquence est que le jeu d’instruction des PIC est adapté à cette contrainte.
Les microcontrôleurs PIC utilisent un jeu d'instruction propriétaire, dont les instructions sont très petites. Les premières versions du jeu d'instruction utilisaient des instructions codées sur 12 bits, dont 5 pour l'adresse mémoire de la seconde opérande. Pour les branchements, 3 bits étaient utilisés pour l'opcode, 9 pour l'adresse de destination. Par la suite, les instructions ont été étendues à 13 bits sur les PIC1670, puis à 14, 15 et 16 bits. Les adresses ont alors été élargies, ce qui permet d'adresser en peu plus de mémoire RAM.
Il est intéressant de regarder comment les PIC font pour obtenir des instructions aussi courtes. Premièrement, le fait d'utiliser une architecture à accumulateur, couplé à une RAM très petite aident grandement. Les architectures à accumulateur ont besoin de préciser un opcode et une adresse mémoire pour chaque instruction, pas besoin de préciser de noms de registres ni le mode d'adressage. La taille des adresses mémoire est censé être un problème pour la densité de code, mais les adresses d'un processeur 8 bits font 8 bits. On peut alors avoir un jeu d'instruction étoffé, en utilisant des instructions 16 bits, qui concatènent un opcode et une adresse mémoire, d'un octet chacun.
Mais d'autres optimisations permettent d'avoir une bonne densité de code. Les PIC ont des branchements pour les appels et retour de fonction. Les PIC incorporent une pile d'appel de retour, qui fait 2 à 8 adresses suivant les modèles. Elle permet d'économiser quelques registres, car la pile d'appel n'est pas mappé dans l'espace d'adressage, elle n'est pas adressable. On économise ainsi 2 à 8 registres, sur 32-256 registres. De plus, cela simplifie l'encodage des instructions d'appel/retour de fonction, qui n'ont pas à préciser où enregistre l'adresse de retour.
Les PIC n'ont pas d'instructions de branchement conditionnels, ils font avec une SKIP instruction et des branchements inconditionnels. Du moins, c'est le principe, car si vous regardez la liste des instructions ci-dessous, vous verrez qu'il n'y a pas d'instruction SKIP. A la place, les instructions SKIP sont fusionnées avec d'autres instructions. Elles sont notamment fusionnées avec les instructions d'incrémentation et de décrémentation. Les PIC supportent une incrémentation normale, une décrémentation normale, une décrémentation fusionnée avec une instruction SKIP, et une incrémentation fusionnée avec une instruction SKIP. Les deux dernières incrémentent/décrémentent l'accumulateur et SKIP l'instruction suivante si le résultat est zéro. Elles permettent de fortement simplifier l'implémentation des boucles qui s'exécutent tant que leur compteur atteint zéro.
Les PIC disposent aussi d'instructions de manipulation de bit, pour tester/masquer un bit dans une opérande, 4 en tout. Il y a en a 4 en tout : mettre à 0, mettre à 1, tester si bit = 1, tester si bit = 0. Les instructions qui testent un bit prennent leur opérande dans l'accumulateur. Elles font le test du bit et décident s'il faut skipper l'instruction suivante ou non. Il y a aussi deux instructions de rotation à gauche et droite, qui tiennent compte de la retenue mémorisée dans le registre d'état. Par contre, il n'y a pas d'instructions de décalages, qui peuvent être émulées avec une rotation suivie d'un ET bit à bit. Mentionnons aussi une instruction pour inverser deux ''nibbles'' dans un octet.
Les modèles haute performance ajoutent des instructions d'addition avec retenue entrante, idem pour la soustraction. De telles instructions ssont très utiles pour faire des additions/soustractions sur des opérandes de 16 bits. Le processeur a beau être un CPU 8 bits, il peut être utilisé pour faire des calculs 16 bits, la performance est alors amoindrie, mais ce n'est pas un problème pour les applications d'un tel microcontroleur.
Les modèles intiaux, comme les PIC 10 et 12, ne supportaient pas les interruptions, mais c'est chose réglé sur les modèles plus récents. Ils ont même des registres séparés pour les interruptions et les programmes normaux. De plus, ils intégrent nativement un ''watchdog timer''.
{|class="wikitable" style="text-align:center"
|+ Jeu d'instruction des dodèles PCI 16
|-
! colspan="5" | Instructions diverses
|-
| colspan="3" | 00 0000 0000 0000 || NOP || Ne fait rien
|-
| colspan="3" | 00 0000 0000 1000 || RETURN || Instruction de retour pour une fonction
|-
| colspan="3" | 00 0000 0000 1001 || NOP || Instruction de retour pour une interruption
|-
| colspan="3" | 00 0000 0110 0011 || SLEEP || Mise en veille
|-
| colspan="3" | 00 0000 0110 0100 || CLRWDT || RESET le ''watchdog timer'', intégré dans le PIC
|-
! colspan="5" | Instructions de manipulation de bit
|-
| 0100 || Position du bit dans l'opérande || Adresse mémoire || BCF || Met le bit à 1
|-
| 0101 || Position du bit dans l'opérande || Adresse mémoire || BSF || Met le bit à 0
|-
| 0110 || Position du bit dans l'opérande || Adresse mémoire || BTFSC || Teste si le bit adressé est à 1
|-
| 0111 || Position du bit dans l'opérande || Adresse mémoire || BTFSS || Teste si le bit adressé est à 0
|-
! colspan="5" | Branchements
|-
| colspan="2" | 100 || Adresse mémoire || CALL || Appel de fonction
|-
| colspan="2" | 100 || Adresse mémoire || GOTO || Branchement inconditionnel
|-
! colspan="5" | Instructions logiques/arithmétiques avec opérande lue en mémoire RAM
|-
| colspan="5" | ''Le bit '''d''' dans l'opcode indique la destination : accumulateur ou adresse mémoire''.
|-
| colspan="2" | 0000001 || Adresse mémoire || MOVWF || Store (accumulateur vers destination)
|-
| colspan="2" | 000001d || Adresse mémoire || MOVWF || Met à zéro la destination (adresse ou registre)
|-
| colspan="2" | 000001d || Adresse mémoire || SUBWF || Soustraction
|-
| colspan="2" | 000010d|| Adresse mémoire || DECF || Décrémentation
|-
| colspan="2" | 000100d|| Adresse mémoire || IORWF || OU bit à bit
|-
| colspan="2" | 000101d|| Adresse mémoire || ANDWF || ET bit à bit
|-
| colspan="2" | 000110d || Adresse mémoire || XORWF || XOR bit à bit
|-
| colspan="2" | 000111d || Adresse mémoire || ADDWF VWF || Addition
|-
| colspan="2" | 001000d || Adresse mémoire || MOVF || LOAD
|-
| colspan="2" | 001001d || Adresse mémoire || COMF || NOT bit à bit
|-
| colspan="2" | 001010d || Adresse mémoire || INCF || Incrémentation
|-
| colspan="2" | 001011d || Adresse mémoire || DECFSZ || Décrémentation, puis instruction SKIP si résultat = 0
|-
| colspan="2" | 001100d || Adresse mémoire || RRF || Rotation à droite avec retenue entrante
|-
| colspan="2" | 001101d || Adresse mémoire || RLF || Rotation à gauche avec retenue entrante
|-
| colspan="2" | 001110d || Adresse mémoire || SWAPF || Echange deux ''niblle'' dans un octet
|-
| colspan="2" | 001111d || Adresse mémoire || INCFSZ || Incrémentation, puis instruction SKIP si résultat = 0
|-
! colspan="5" | Instructions logiques/arithmétiques avec constante immédiate
|-
| colspan="2" | 1100xx || Constante immédiate (8bits) || MOVLW || Copie constante dans accumulateur
|-
| colspan="2" | 1101xx || Constante immédiate (8bits) || RETLW || MOV fusionné avec un retour de fonction
|-
| colspan="2" | 111000 || Constante immédiate (8bits) || IORLW || OU
|-
| colspan="2" | 111001 || Constante immédiate (8bits) || ANDLW || ET
|-
| colspan="2" | 111010 || Constante immédiate (8bits) || XORLW || XOR
|-
| colspan="2" | 11110x || Constante immédiate (8bits) || SUBLW || Soustraction
|-
| colspan="2" | 11111x || Constante immédiate (8bits) || ADDLW || Addition
|}
Les PIC gèrent l'adressage absolu et immédiat, mais pas plus. L'adressage absolu, celui où l'adresse est intégrée dans l'instruction, est très simple à implémenter. Les adresses prennent moins d'un octet, vu que la taille de la RAM est très petite, les adresses sont très courtes, les intégrer dans des instructions elles-mêmes courtes n'est pas un problème. L'adresse est encodée sur 5 à 7 bits, selon le modèle, ce qui permet d'adresser entre 32 et 128 octets.
Les PIC ne supportent pas l'adressage indirect, mais peuvent l'émuler grâce à un '''registre d'adresse''' dédié. Il s'agit du registre FSR, qui mémorise l'adresse à lire/écrire. Il est possible de copier un pointeur dedans, qui provient soit de l'accumulateur, soit de la mémoire SRAM. Dans les deux cas, la donnée adressée est lue ou écrite dans un registre INDR, est un registre d’interfaçage rendu adressable. Le registre FSR est directement connecté sur le bus d'adresse.
Les modèles de base se débrouillent avec un registre FSR et un registre INDR, mais les modèles plus performants ont deux ou trois copies de chaque registre. Les modèles PIC18 ajoutent aussi des instructions LOAD/STORE qui émulent les modes d'adressage à post- ou pré-incrément/décrément, et le mode d'adressage "Base + Indice + Décalage", encore une fois en utilisant les registres FSR et INDR.
Avec tout ce qu'on vient de dire, vous devriez pouvoir comprendre la microarchitecture d'un PIC, qui est résumée dans ce schéma.
[[File:DocPIC16F84 all.png|centre|vignette|upright=2.5|Microarchitecture du PIC16F84.]]
===Les microcontrôleurs Intel 8051/8031===
Les microcontrôleurs Intel 8051/8031 sont des microcontrôleurs 8 bits, commercialisés par Intel. Elle contient un processeur 8/16 bits, de la mémoire ROM, une RAM de 128 octets, des ''timers'', et de nombreuses entrées-sorties. Il est relié à 4 ports sur lesquels il peut lire ou écrire 8 bits par port. Il contient aussi deux ''timers'' de 16 bits chacun, qui déclenchent des interruptions quand ils tombent à zéro ou à une valeur configurable. Il supporte des interruptions. L'ensemble utilise une architecture Harvard, contrairement à ce que pourrait faire croire le schéma ci-dessous.
[[File:Microcontroller 8051.gif|centre|vignette|upright=2.5|Microcontrôleur 8051]]
[[File:Pinagem8031.jpg|vignette|Broches du 8051.]]
Ils ont de nombreuses ressemblances avec les microcontrôleurs PIC. Le processeur du 8051 est une architecture à accumulateur de 8 bits, ses registres sont mappés en mémoire RAM, il a un registre d'adresse dédié à l'adressage indirect et j'en passe. Mais il y a aussi des différences notables. Par exemple, le 8051 n'a pas de pile d'adresse de retour, contrairement aux processeurs PIC. Il fait autrement, à savoir qu'il gère une pile d'appel placée en mémoire RAM,ce qui est très différent. De plus, le 8051 supporte les opérations de multiplications et de divisions, contrairement aux microcontrôleurs PIC qui se limitaient à l'addition et la soustraction.
Une autre différence est que les registres sont placés dans un banc de registre à part des 128 octets de SRAM. Il y a une SRAM séparée du banc de registre, contrairement à ce qu'on a sur les microcontrôleurs PIC. Par contre, les registres du processeur sont mappés en mémoire RAM, y compris l'accumulateur, le registre d'état, le ''program counter'', et bien d'autres. Mais le fait qu'ils soient séparés de la SRAM permet de les mapper dans l'espace d'adressage sans marcher sur les pieds de la SRAM. Pour comprendre comment, faisons une remarque : le processeur gère nativement des adresses de 8 bits, mais a 128 octets de SRAM. L'idée est de placer les registres dans les 128 octets de poids fort, au sommet de l'espace d'adressage. D'ailleurs, les entrées-sorties sont mappées dans cette portion de l'espace d'adressage.
Avec ce qu'on vient de dire, on peut donner la ''memory map'' de ce microcontroleur, pour la SRAM. Les 32 premières adresses sont réservés à la mémoire SRAM, c'est 32 octets de RAM utilisable à volonté par le programmeur. Les 16 adresses suivantes sont adressables bit par bit, ou octet par octet. L'intervalle bit-adressable va de l'adresse 32 (inclue) à l'adresse 47 (inclue). Les 96 octets suivants sont de la mémoire RAM adressable, affectée par défaut à la pile d'appel mais adressable via adressage direct si besoin. Les 128 octets de poids fort sont réservés aux registres et aux entrée-sorties mappées en mémoire.
[[File:Memory map du 8051.png|centre|vignette|upright=2|Memory map du 8051]]
Les 128 octets au sommet de l'espace d'adressage sont décrit dans le schéma ci-dessous. On voit que l'accumulateur est mappé dedans, de même que le registre d'état PSW et le ''program counter'' IP. Les ports d'entrée-sortie sont aussi mappés dedans. Une partie des octets sont bit-adressables, et cette partie inclus les registres du processeur et les ports d'entrées-sorties.
[[File:MFrey SFR MCS-51.svg|centre|vignette|upright=2|Memory map des 128 octets de poids fort du 8051]]
Une autre particularité est que le processeur incorpore une '''unité de calcul de 1 bit'''. Elle permet de faire des opérations sur des bits, avec 17 instructions possibles au total. L'ALU de 1 bit est reliée à un accumulateur de 1 bit et 32 registres de 1 bits. Elle peut lire des opérandes de 1 bit en mémoire RAM ou sur les ports d'entrée-sortie, qui sont tous bit-adressables. Pour le dire autrement, chaque bit d'un port d'entrée-sortie a sa propre adresse mémoire, qui permet de le sélectionner. Il en est de même avec 18 adresses de la mémoire SRAM, ce qui permet d'adresser 144 bits (18 adresses * 8 bits par octet adressé).
[[File:Intel 8051 arch.svg|centre|vignette|upright=2|Microarchitecture de l'Intel 8051.]]
===Le Fairchild F8 et la console de jeu Fairchild Channel F===
Un autre exemple est la Fairchild F8 de la défunte entreprise Fairchild Semiconductor. Il incorpore un processeur 8 bits, c'est à dire que le processeur fait des calculs sur des entiers de 8 bits maximum, une mémoire RAM de 64 octets, ainsi qu'une mémoire ROM de 1 kibioctet. Les 64 octets de RAM sont certes très peu, mais c'est suffisant pour certaines applications simples, comme les caisses automatiques de l'époque, ou des applications embarquées. Et de toute façon, il est possible d'ajouter de la mémoire RAM supplémentaire si les 64 octets de RAM intégrée ne suffisent pas. Le système était donc modulaire, adaptable selon les besoins, peu cher pour son implémentation minimale sans RAM en plus.
Vu qu'il s'agit d'un des tout premiers ordinateurs, il est sorti à une époque où la technologie était rudimentaire. À cette époque, le processeur était composé de pièces détachées qu'il fallait souder ensemble pour obtenir un processeur fonctionnel. Ce n'est que plus tard qu'est apparu le micro-processeur, qui regroupe un processeur complet dans un seul circuit intégré. Le résultat est que le processeur du Fairchild F8 est coupé en deux, l'unité de calcul et l'unité de contrôle sont placés dans des pièces détachées séparés.
Le microcontrôleur est composé de trois à quatre pièces détachées, certaines étant optionnelles. La première est le '''3850 CPU''', qui regroupe l'unité de calcul et la mémoire RAM intégrée. La seconde est le PSU (''3851 Program Storage Unit''), qui regroupe la mémoire ROM et l'unité de contrôle, ''program counter'' inclut. S'il y a besoin d'utiliser plus de RAM, il faut ajouter un circuit d’interface mémoire, qui est au choix le ''3852 Dynamic Memory Interface'' (DMI) ou le ''3853 Static Memory Interface'', le premier étant connecté à une mémoire de type DRAM, l'autre à une SRAM (nous verrons ce que sont les DRAM et les SRAM dans le prochain chapitre).
[[File:Fairchild F8.png|centre|vignette|upright=2|Fairchild F8]]
Le système minimal est composé d'un PSU et d'un 3850, sans les circuits d'interface mémoire. Le tout donne un système avec un processeur 8 bit, 64 octets de RAM et 1 kibioctet de ROM, les deux mémoires étant intégrées dans le "processeur". Le processeur gérait 4 entrées-sorties, chacune étant reliée avec un bus de 8 bit au processeur. Au passage, en 1977, Mostek a créé un microcontrôleur qui regroupe un PSU et un 3850 : le Mostek 3870. Le système minimal n'avait pas de bus d'adresse, vu que la RAM était intégrée au processeur. C'est les 3852 et 3853 qui ajoutaient un bus d'adresse. Ils ajoutent un bus d'adresse de 16 bits, ce qui permet d'adresser 64 kibioctets de RAM.
[[File:Fairchild-Channel-F.jpg|vignette|un Fairchild Channel F]]
Le Fairchild F8 a été utilisé dans la Fairchild Channel F, une des toute première console de seconde génération, à savoir des consoles qui utilisaient des cartouches de jeu. Avant les consoles de seconde génération, les consoles étaient non-programmables. Elles étaient conçues pour faire tourner un jeu précis, aucun autre, le jeu étant implémenté dans leurs circuits.
La Fairchild Channel F est composé du système minimal, auquel on a ajouté une carte son rudimentaire et 2 kibioctets de mémoire vidéo. La mémoire vidéo sert uniquement pour afficher des images à l'écran : on écrit l'image à afficher dedans, un circuit vidéo se charge de l'afficher à l'écran automatiquement. Le processeur ne fait qu'écrire dans cette RAM vidéo, il ne peut pas en lire le contenu. De la RAM supplémentaire peut cependant être ajoutée dans les cartouches de jeu.
===Le HP Nanoprocessor : un processeur sans ALU===
Un dernier exemple est celui du processeur HP Nanoprocessor, de l'entreprise HP. Il a été commercialisé en 1974, en même temps que les premiers micro-processeurs d'Intel. Tous les processeurs de l'époque étaient des processeurs 8 bits et le HP Nanoprocessor ne faisait pas exception. Ce n'était pas un processeur haute performance, il était destiné à des applications d'informatique industrielle ou embarquée. D'ailleurs, il utilisait des transistors de type metal-gate, peu performants, là où ses contemporains utilisait des transistors en silicium, plus performants.
Mais une caractéristique qui rend cela encore plus claire est qu'il n'y a pas d'ALU ! En effet, ce processeur est incapable de faire des additions, des soustractions ou autres opérations simples ! Il est cependant capable d'effectuer des incrémentations et décrémentations, des décalages, des opérations logiques comme des ET/OU/NON/XOR et bien d'autres. Il supporte en tout 48 instructions, avec un support limité des modes d'adressage indirects. Les instructions de branchement étaient des instructions SKIP, il n'y avait pas d'instructions de branchement généralistes.
Pour ce qui est des registres, il disposait de 16 registres de 8 bits et d'un accumulateur. Niveau mémoire, il était relié à une mémoire ROM, rien de plus. Il n'avait de RAM supplémentaire qu'on pouvait lui adjoindre, il devait se débrouiller avec seulement ses registres. Et cela ne posait pas de problèmes pour son usage. Seul le mode d'adressage indirect à registre est supporté, il n'y a pas de registres d'indices. Ce mode d'adressage permet de lire des données en mémoire ROM, la ROM pouvant contenir des tableaux de valeurs constantes.
: Il est possible de lui adjoindre de la RAM via les ports d'entrée-sortie, ainsi qu'une ALU, mais RAM et ALU sont traités comme des périphériques avec lesquels on communique, ils ne sont pas intégrés au processeur.
Niveau micro-architecture, il incorporait une unité de calcul logique et un circuit comparateur. Le comparateur était un circuit comparateur série des plus basiques, qui était utilisé pour les instructions de branchement et associées. L'unité de calcul logique gérait des incrémentations/décrémentation, des décalages, les opérations logiques et quelques autres. L'unité de calcul logique était bit-slicée, à savoir conçue en assemblant 8 ALU de 1 bit chacune, enchainées en série. Le tout était combiné à des circuits de ''carry skip''.
[[File:Unité de calcul du HP nanonprocessor.png|centre|vignette|upright=2|Unité de calcul du HP nanoprocessor]]
Son unité de décodage d'instruction était très simple, essentiellement basée sur des portes NOR, grâce à un encodage efficace des instructions machine. Le ''program counter'' fait 11 bits, ce qui permet d'adresser une ROM de 2 kibioctets. Le ''program counter'' était relié à un circuit incrémenteur qui gérait les isntructions SKIP (il pouvait incrémenter le ''program counter'' par pas de 1 ou de 2 en cas de SKIP). Le processeur contient aussi deux registres, qui servent en quelque sorte de pile d'adresse de retour. Un premier registre mémorise l'adresse de retour d'une fonction, l'autre mémorise le ''program counter'' lors d'une interruption, pour savoir où brancher à la fin de l'interruption.
[[File:HP nanoprocessor.png|centre|vignette|upright=2.5|HP nanoprocessor]]
Fait intéressant, le concepteur du processeur a gracieusement donné les masques utilisés pour graver le silicium du processeur au site [https://www.cpushack.com/ CPU Shack]. Les masques en question sont disponibles ici :
* [https://www.cpushack.com/2020/08/20/hp-nanoprocessor-mask-set/ HP NanoProcessor Mask Set]
* [https://www.cpushack.com/2020/08/09/the-forgotten-ones-hp-nanoprocessor/ The Forgotten Ones: HP Nanoprocessor]
Les masques ont été analysés par Ken Shirrif dans cet article de blog :
* [https://www.righto.com/2020/09/hp-nanoprocessor-part-ii-reverse.html HP Nanoprocessor part II: Reverse-engineering the circuits from the masks]
==Les processeurs 8/16 bits à architecture Von Neumann==
L'usage d'une architecture Harvard est une solution pour adresser plus de mémoire avec des CPU 8 bits. Mais plusieurs microprocesseurs commerciaux n'utilisaient pas cette solution. À la place, c'était des architectures Von Neumann, mais qui étaient capables de gérer des adresses de 16 bits. Les données faisaient 8 bits, les registres faisaient 8 bits, mais quelques techniques permettaient de gérer des adresses de 16 bits. Nous parlerons de '''processeurs 8/16 bits''' pour les désigner, et nous allons les étudier à part.
Un point important est que la gestion d'adresses de 16 bits permet d'adresser 64 kibioctets, qui peuvent être remplis avec de la RAM et de la ROM. On a donc le meilleur des mondes : 64 kibioctets de mémoire, mais avec des données de 8 bits et les économies de circuit qui vont avec. L'avantage est que le processeur peut maintenant gérer une vraie pile d'appel, pas seulement une pile d'adresse de retour. Il lui suffit pour cela d'intégrer un pointeur de pile codé sur 16 bits.
===Les modes d'adressage par page des CPU Motorola===
Les processeurs Motorola 8 bits étaient des processeurs 8 bits avec un bus d'adresse de 16 bits. C'était des processeurs à accumulateur incorporant deux registres d'indice, un registre d'état, un pointeur de pile, et un ''program counter''. Tous les registres sont reliés au bus d'adresse, sauf le registre d'état et l’accumulateur. Tous les registres font 8 bits, sauf le ''program counter''. La pile est câblée pour être dans un bloc de 256 octets compris entre l'adresse 1 0000 0000 et l'adresse 1 1111 1111, ce qui fait que son adressage se fait avec un seul octet.
[[File:6502-architecture.svg|centre|vignette|upright=1.5|Architecture simplifiée du 6502.</br> X et Y : registres d'indice ;</br> S : le pointeur de pile ;</br> A : accumulateur ;</br>P : registre d'état.</br>]]
Les processeurs Motorola 8 bits utilisaient une méthode simple pour adresser 64 kibioctets de RAM, avec des registres de 8 bits. Pour cela, ils utilisaient une variante de l'adressage base + décalage. Elle améliore l'adressage absolu, qui intègre l'adresse à lire/écrire dans l'instruction elle-même. L'adresse en question est de 8 bits et n'encode que les 8 bits de poids faible de l'adresse, les 8 bits de poids fort sont dans un '''registre de page''' adressé implicitement. L'adresse finale est obtenue en concaténant ce registre avec l'adresse mémoire intégrée dans l’instruction. Le résultat est que la mémoire était découpée en blocs de 256 consécutifs, chacun pouvant servir de fenêtre de 256 octets. Une page est réservée pour la pile, la seconde, comme dit plus haut.
Formellement, ce mode d'adressage a des ressemblances avec la commutation de banques, une technique qu'on verra dans les chapitres sur l'espace d'adressage et la mémoire virtuelle. Mais ce n'en est pas du tout : le registre de page est utilisé uniquement pour les accès mémoire avec le mode d'adressage base + décalage, mais pas pour les autres accès mémoire, qui gèrent des adresses complètes. Notons que l'usage d'un registre de page dédié fait que celui-ci est adressé implicitement.
Il faut noter que la technique a été utilisée sur des processeurs 16 bits, pour contourner la petite taille des instructions. Un exemple est celui du HP 2100, un processeur 16 bits. Il avait un registre de page de 5 bits et encodait 10 bits d'adresse dans ses instructions. Ses instructions d'accès mémoire disposaient d'un bit qui choisit quel mode d'adressage utiliser. S'il était à 0, l'adressage absolu était utilisé, le registre de page n'était pas utilisé. Mais s'il était à 1, le registre de page était utilisé pour calculer l'adresse.
Une évolution de l'adressage précédent est le '''mode page direct'''. Avec lui, le registre de page est étendu et contient une adresse mémoire complète. L'adresse finale n'est pas obtenue par concaténation, mais en additionnant le registre de page avec l'adresse fournie par adressage absolu + décalage. Un exemple est celui des premiers processeurs Motorola, qui géraient des adresses courtes de 8 bits. L'adresse courte de 8 bits correspondait non pas aux 256 premiers octets de la mémoire, mais à une fenêtre de 256 octets déplaçable en mémoire. La position de la fenêtre de 256 octets était spécifiée par le registre de page de 16 bits, qui précisait l'adresse du début de la fenêtre, celle de sa première donnée.
Il s'agit donc formellement d'adressage base + décalage, à un détail près : il n'y a qu'un seul registre de base. Le fait que ce registre de base soit unique fait qu'il est adressé implicitement, on n'a pas à encoder le numéro/noms de registre dans l'instruction. Le registre de base est utilisé uniquement pour l'adressage absolu, pas pour les autres accès mémoire. S'il y a des ressemblances avec la segmentation, une technique de mémoire virtuelle qu'on abordera dans quelques chapitres, ce n'en est pas vu que le registre de base est utilisé seulement pour un mode d'adressage bien précis.
===Le ''pseudo-aliasing'' des registres des processeurs Intel x86===
Voyons maintenant le cas des anciens processeurs 8 bits d'Intel à savoir l'Intel 4004, 4040, 8008 et 8080. Le Z80, un processeur inspiré des CPU Intel 8 bits, est aussi concerné. Avant de poursuivre, parlons des registres de ces processeurs. Les premiers CPU Intel incorporaient 7 registres de 8 bits nommés A, B, C, D, E, F, H, L, SP. Ils correspondent respectivement à : l'accumulateur A ; six registres nommés B, C, D, E, H et L ; le registre d'état F ; le pointeur de pile SP. Le Z80 ajoute deux registres d'indice X et Y. De plus, le Z80 dispose de registres d'interruption, qui sont en quelque sorte des copies des registres A, B, C, D, E, F, H, L. Le tout est illustré dans le tableau ci-dessous.
{|class="wikitable" style="text-align:center;"
|-
!
! Registres des CPU Intel
! Registres supplémentaires du Z80
|-
! Accumulateur
| A
| A'
|-
! Registre d'état
| F
| F'
|-
! Registres généraux
| B, C, D, E, H, L
| B', C', D', E', H', L'
|-
! Pointeur de pile
| colspan="2" | SP (sauf pour le 8008)
|-
! Registres d'indice
|
| X et Y
|}
Le 8008 incorpore une pile d'appel de 7 adresses, dans le processeur lui-même. Il en est de la même avec le 4004 et le 4040, comme on le verra dans la section sur les processeurs 4 bits. Mais le 8080 et le 8085 ont remplacé le tout par un simple pointeur de pile, afin d'avoir une véritable pile d'appel. Autant c'est impossible d'avoir une pile d'appel avec seulement 256 octets de mémoire, autant on peut se le permettre avec 65 536 adresses.
Pour gérer des adresses de 16 bits, ils auraient pu utiliser des registres d'adresse séparés, mais on préféré un système de '''pseudo-''aliasing'' de registres'''. Formellement, c'est un système qui concatène deux registres 8 bits pour obtenir une adresse de 16 bits. L’appariement a lieu lors de certaines opérations bien précises, qui n'ont de sens que pour les adresses : la lecture/écriture en mémoire, et l'incrémentation.
Il y avait cependant des contraintes quant aux paires de registres possibles, toutes les paires de registres n'étaient pas autorisées. Les CPU concernés sont donc des processeurs hybrides accumulateur-registre généraux. L'accumulateur ne peut pas être appairé, seuls les registres généraux le peuvent. Le Z80 autorise plus de paires que les CPU Intel. Voici les paires de registres qui pouvaient servir d'adresse 16 bits :
* Les CPU 8008 d'Intel autorisait une seule paire formée des registres H et L.
* Les autres processeurs, à savoir le 8080, le 8085 et le Z80, autorisaient : les paires BC, DE et HL.
Le 8008 ne gérait que des opérations sur 8 bits. Mais le 8080 et le 8085 ont ajouté des instructions 16 bits qui agissaient sur des paires de registre, que le Z80 a repris. Une paire de registres est considérée comme un registre unique de 16 bits pour certaines opérations arithmétiques, dont l'incrémentation. Voici la liste des instructions concernées :
* INC et DEC pour l'incrémentation et la décrémentation ;
* DAD : additionne le registre HL avec une autre paire (Hl inclus) ;
* LXI : copie une constante immédiate dans une paire de registres ;
* LHLD : lit 16 depuis la mémoire et l'enregistre dans une paire de registres ;
* SHLD : copie 16 bits depuis une paire de registres et l'enregistre en mémoire ;
* PUSH et POP : empile ou dépilent une paire de registre sur la pile ;
* XTHL : échange la paire HL avec les 16 bits au sommet de la pile d'appel ;
* XCHG : échange le contenu de la paire HL et DE.
Pour résumer, le processeur avait des instructions LOAD, STORE, PUSH et POP adaptées pour gérer des paires de registre. De plus, l'instruction XCHG permettait d’échanger le contenu des paires DE et HL. L'instruction a été étendue sur les processeurs 16 bits pour échanger tous les registres. Mais l'implémentation était alors différente. L'incrémentation sur une paire de 16 bit était très utile, car les adresses sont souvent incrémentées quand on parcours un tableau. Ces instructions nous donnent quelques indices sur ce qu'il y a dans le processeur.
Le système de pseudo-aliasing a un impact sur le banc de registre. Le banc de registre regroupe les registres généraux et le pointeur de pile, mais ne contient pas l'accumulateur. Les contraintes sur les paires de registres possibles ne s'expliquent que d'une seule manière : le banc de registre contient des registres de 16 bits, une paire de registres 8 bits est mémorisée dans un registre unique. Il faut donc faire une différence entre les registres architecturaux de 8 bits, et les registres réels de 16 bits.
Le banc de registre a un port de 8 bits pour les données, qui est fabriqué à partir d'un port 16 bits auquel on a rajouté un multiplexeur pour choisir soit l'octet de poids faible, soit l'octet de poids fort. Le bus de données fait 8 bits, ce qui fait que les instructions LOAD, STORE, PUSH et POP pour paires 16 bits sont réalisées en deux fois : on lit/écrit l'octet de poids faible, puis celui de poids fort. Par contre, le bus d'adresse fait bien 16 bits. Cela suggère que le banc de registre dispose d'un port de 16 bits dédié aux adresses, en plus du port de données 8 bits.
[[File:Architecture d'un CPU 8-16 bits avec un banc de registre double port.png|centre|vignette|upright=2|Architecture d'un CPU 8-16 bits avec un banc de registre double port]]
L'incrémentation d'une paire 16 bits ne coute rien à implémenter, ou presque. En effet, le processeur incorpore un incrémenteur 16 bits pour le ''program counter'', qui est relié au bus d'adresse. L'idée est de rentabiliser cet incrémenteur, en lui permettant d'incrémenter des données/adresses de 16 bits obtenues via pseudo-aliasing. De même, il peut être utilisé pour incrémenter le pointeur de pile, voire un compteur de rafraichissement mémoire (pour rappel, le rafraîchissement mémoire demande de balayer la mémoire d'adresse en adresse et été fait par le CPU à l'époque). Pour cela, il suffit de connecter le ''program counter'', le banc de registre, et l'incrémenteur, via un bus dédié.
[[File:Calcul d'adresse par ALU dédiée avec PC séparé.png|centre|vignette|upright=2|Calcul d'adresse par ALU dédiée avec PC séparé]]
Notez qu'on peut encore simplifier le tout en placant le ''program counter'' dans le banc de registre, ce qui ne gênera pas le travail de l'incrémenteur mais simplifiera le câblage au bus d'adresse. Ce n'était pas systématique, certains processeurs mettaient le ''program counter'' dans le banc de registre, d'autres non.
: Inclure le ''program counter'' dans le banc de registre permet parfois de remplir un vide. Par exemple, sur un processeur avec 12 registres, le banc de registre devrait faire idéalement 16 registres, inclure le ''program counter'' dedans fait monter le tout à 13.
[[File:Architecture d'un CPU 8-16 bits.png|centre|vignette|upright=2|Architecture d'un CPU 8-16 bits]]
Les processeurs Intel 8 bits, à savoir le 8008, le 8080 et le 8085 ; mettaient le ''program counter'' dans le banc de registre. Vous avez donc toutes les armes pour comprendre leur micro-architecture. Par exemple, voici la micro-architecture du processeur 8080. Remarquez le banc de registre, qui contient tous les registres sauf l'accumulateur et le registre. Il a deux ports : un pour les adresses et un pour les données. Notez le dé-multiplexeur sur le port de donnée. Pour le reste, il s'agit d'une architecture à accumulateur hybride des plus classiques.
[[File:Intel 8080 arch.svg|centre|vignette|upright=3|Microarchitecture de l'Intel 8080.]]
Le Z80 est un processeur inspiré du design des processeurs Intel 8 bits, mais avec pas mal d'améliorations. Un point particulier de ce processeur est son banc de registre. Il contient tous les registres du processeur, y compris l'accumulateur et le registre d'état ! Les seuls registres en-dehors du banc de registre sont le ''program counter'' et un compteur de rafraichissement mémoire IR.
Un autre point particulier est que les registres dans le banc de registres avaient une copie séparée accessible uniquement pour les interruptions, via fenêtrage de registres. Et l'accumulateur et le registre d'état étant dans le banc de registre, il y avait deux accumulateurs et deux registres d'état. Les registres A, B, C, D, E et F étaient dupliqués, par le pointeur de pile ni les registres d'indice. Les copies des registres étaient nommées A', B', C', D', E' et F'.
Le Z80 supportait des instructions d'échange de registre en plus des CPU Intel 8 bits. L'instruction EX peut échanger soit le contenu des paires D,E et H,F, soit la paire A,F avec la paire A',F'. L'instruction EXX échange les paires BC, DE, HL avec les paires BC', DE', HL'. En faisant cela, le programmeur pouvait utiliser deux fois plus de registres généraux s'il n'utilisait pas les interruptions. L'échange de paires se fait sans copies de registres, mais simplement en modifiant l'adresse envoyée sur le banc de registre. Pour cela, plusieurs bascules mémorisent des bits qui indiquent si les paires ont été échangées ou non. Il y a une bascule pour les paires DE , HL ; une autre pour les paires A,F et paire A',F', une dernière pour l'instruction EXX. En combinant ces bascules avec les noms de registres envoyés par le séquenceur, on peut échanger les paires de registres.
==Le cas particulier des processeurs 4 bits : le 4004 d'Intel==
L'Intel 4004 était le tout premier micro-processeur. Il s'agissait d'un microprocesseur de 4 bits, basé sur une architecture à accumulateur. Il disposait d'un accumulateur et de 16 registres d'indice, tous de 4 bits. Il faisait des calculs sur des données de 4 bits, appelées des nibbles. Cependant, sur ses 46 instructions machines supportées, 41 agissaient sur des opérandes de 8 bits, les 5 restantes sur des opérandes de 16 bits. Simplement, les calculs se faisaient en deux fois, en échangeant des données entre mémoire RAM et accumulateur.
Le 4004 est un circuit intégré avec peu de broches. Il dispose notamment d'un bus de données/adresse, qui est multiplexé, c’est-à-dire qu'il sert alternativement de bus de données et de bus d'adresse selon les besoins. Le bus de commande mémoire fait 5 bits, dont 4 pour les chips de RAM, un pour la ROM. Les adresses sont codées sur 12 bits, les données sur 4 et les instructions sur 8 bits. L'envoi d'une adresse sur le bus se fait en plusieurs fois, de même que la lecture d'une instruction. Il s'agit là d'une adaptation pour outrepasser les limitations d'un processeur 4 bit.
[[File:Intel 4004 processor pinout.png|centre|vignette|upright=2|Broches de l'Intel 4004. Nous verrons à quoi elles servent plus bas.]]
===L'espace d'adressage de l'Intel 4004===
Les adresses du processeur sont sur 12 bits, ce qui fait 4096 adresses différentes. Elles regroupent à la fois la ROM et la mémoire RAM, vu que l'architecture est une sorte de mélange bizarre entre une architecture Von Neumann et Harvard. Le processeur gère bien deux espaces d'adressage séparés, mais la RAM et la ROM sont reliés au même bus. La sortie CM-ROM du processeur indique si l'adresse envoyée correspond à la RAM ou la ROM. Un circuit de décodage d'adresse active ou désactive la RAM selon la valeur de ce bit, l'inverse pour la ROM, en agissant sur leurs bits Chip Select. Seule la RAM ou la ROM répondent alors à l'adresse.
Pour ce qui est de la RAM, le circuit de décodage d'adresse pouvait gérer au maximum 1024 adresses différentes, chacune contenant un nibble. Pour cela, le CPU 4004 était relié à une ou plusieurs RAM externes, des Intel 4002. Chaque Intel 4002 contenait 64 nibbles de données, plus 16 nibbles de statut qu'on ne détaillera pas ici. Les nibbles de statut étaient accessibles en utilisant des instructions d'entrée-sortie, donc pas avec des lectures/écritures mémoire. Les 64 nibbles de données sont découpés en 4 groupes de 16 nibbles. Le CPU pouvait être relié à maximum 16 Intel 4002, ce qui fait 1024 nibbles de données et 256 nibbles de statut. L'ensemble permet de remplir l'espace d'adressage de 1024 adresses.
===Le registre de page et le pseudo-aliasing des registres===
Sélectionner une adresse mémoire utilisait un mélange entre pseudo-aliasing et registre de page. Pour les données, les 1024 adresses étaient découpées en 4 pages de 256 adresses. Pour la ROM, les 4096 adresses étaient découpées en 16 pages de 256 adresses. Localiser une donnée dans une page ne requiert que 8 bits, 2/4 bits supplémentaires permettent de sélectionner la page voulue. Le registre de page était dans le processeur lui-même, et était relié aux sorties du processeur nommées CM-RAM 0, 1, 2 et 3. Les 4 sorties encodaient un nombre qui permet de sélectionner le numéro de page voulu.
Le registre de page fait 5 bits : un pour distinguer RAM et ROM, 4 bits pour sélectionner la page voulue. L'avantage est que la carte mère gère au maximum 16 chips de RAM, ce qui colle parfaitement avec les 4 utilisés pour sélectionner une page. Un chip de RAM correspond à une page, et chacun est activé ou désactivé suivant la page sélectionnée. Pour cela, il suffit d'ajouter un décodeur sur la carte mère, qui prend les 4 bits du registre de page et fournit les signaux Chip Select aux différents chips de RAM.
Reste alors à utiliser les 8 bits d'adresse à l'intérieur d'un chip de RAM. Le 4004 permettait de concaténer deux registres d'indice de 4 bits pour former une adresse de 8 bits. Les instructions d'accès mémoire pouvaient ainsi préciser une paire de registre d'indice pour préciser quelle adresse lire/écrire. Idem pour les branchements indirects : le processeur supportait une instruction de branchement indirect qui précisait l'adresse dans une paire de registres d'indice. Les registres d'indice sont donc assez mal nommés sur cette architecture, vu qu'ils peuvent servir soit de registre d'indice, soit de demi-registre d'adresse. Il s'agit là du système de pseudo-aliasing des registres, mais appliqué aux registres d'indice.
L'Intel 4004 gérait deux instructions pour gérer les adresses mémoires. La première, l'instruction DCL (''Designate Command Line'') configure le registre de page. Elle prend en entrée un numéro de page et le copie dans le registre de page. L'opérande peut provenir d'un registre d'indice ou de l'accumulateur. La seconde, l'instruction SRC (''Send Register Control'') concatène deux registres d'indice pour obtenir une adresse de 8 bits. Un accès mémoire se fait donc en maximum trois instructions : une qui configure le registre de page si ce n'est pas déjà fait, une instruction SRC pour envoyer l'adresse, et une troisième instruction qui dit s'il faut faire une lecture ou une écriture.
===La microarchitecture de l'Intel 4004===
Il incorporait une pile d'adresse de retour intégrée au processeur. La pile d'adresse acceptait exactement 3 adresses maximum. Elle était regroupée avec le ''program counter'' dans un banc de registre, de 4 registres. Le ''program counter'' et le pointeur de pile faisaient chacun 12 bits, soit trois nibble. Ils étaient incrémentés par un incrémenteur dédié.
SI on omet le registre de page et la pile d'adresse, le 4004 est une architecture à accumulateur des plus classiques, avec un bus interne unique, un banc de registre pour les registres d'indices, un accumulateur relié à une unité de calcul. Les registres d'indice étaient dans un banc de registre séparés, car ils faisaient 4 bits chacun, contrairement au pointeur de pile et le ''program counter''. Un détail important est que les bancs de registres du 4004 étaient implémentés avec de la DRAM, et non des registres usuels fabriqués avec des bascules 1 bit.
[[File:Microarchitecture de l'Intel 4004.png|centre|vignette|upright=2.5|Microarchitecture de l'Intel 4004]]
<noinclude>
{{NavChapitre | book=Fonctionnement d'un ordinateur
| prev=Les architectures à pile et mémoire-mémoire
| prevText=Les architectures à pile et mémoire-mémoire
| next=Les processeurs de traitement du signal
| nextText=Les processeurs de traitement du signal
}}
</noinclude>
9xmj3fher69agslvv6mm4hbfcleazrq
765725
765724
2026-05-01T20:18:48Z
Mewtow
31375
/* Les microcontrôleurs Intel 8051/8031 */
765725
wikitext
text/x-wiki
Nous avons déjà abordé la notion de processeur 8, 16, 32, 64 bits. Elle désigne la taille des registres généraux, ou de l'accumulateur. De nos jours, les processeurs 32 et 64 bits sont la norme, mais les premiers micro-processeurs étaient des processeurs 4 et 8, avant de passer rapidement au 16 bits. La raison est que leur budget en transistor limité faisait qu'on ne pouvait pas utiliser une ALU trop grande : une ALU 8 bit prend deux fois moins de place et de transistors qu'une ALU 16 bits. Cependant, les processeurs 8 bits avaient de sérieuses limitations qui étaient compensées par diverses solutions. Dans ce chapitre, nous allons faire une revue rapide des processeurs 8 bits et de leurs fonctionnalités.
La principale limitation des CPU 8 bits était l'adressage : des registres de 8 bits limitaient l'espace d'adressage à seulement 256 adresses, soit à peine 256 octets ! Intuitivement, on se dit que 256 octets est purement impraticable, on ne peut rien faire d'intéressant avec seulement 256 de RAM + ROM. Et c'est partiellement vrai. L'adage veut que 16 bits est la taille minimale intéressante, la limite à partir de laquelle on a assez de mémoire RAM/ROM pour coder des applications intéressantes. Mais 256 octets de RAM est largement suffisant sur de nombreux systèmes embarqués simples s'en accommodent : des caisses enregistreuses, des systèmes de régulation de feu de circulation, etc.
Pour les applications demandant plus de mémoire RAM, les CPU de l'époque contournaient la limitation de 256 octets de RAM avec de nombreux stratagèmes. Dans ce qui va suivre, nous allons séparer les CPU 8 bits selon qu'ils utilisent une architecture Harvard ou une architecture Von Neumann. La raison est qu'une architecture Harvard permet en soi de contourner partiellement ce problème d'adressage. Les choses sont plus compliquées avec une architecture Von Neumann.
==Les processeurs 8/16 bits à architecture Harvard ==
La première solution est d'utiliser une architecture Harvard. Le processeur 8 bit a alors deux espaces d'adressage : un pour la RAM, un autre pour la ROM. Et les deux utilisent des adresses de taille différente. La ROM est reliée à un bus d'adresse de 16 bits, alors que la RAM est elle connectée à un bus d'adresse de 8 bits. La RAM est donc limitée à 256 octets, alors que la ROM peut monter jusqu'à 64 kibioctets. Mine de rien, faire ainsi est largement suffisant.
Pour encore améliorer la situation, il est possible d'utiliser une architecture Harvard modifiée, qui permet de lire des données depuis la mémoire ROM. Cela réduit encore plus les besoins en mémoire RAM. Les constantes manipulées par le programme sont mémorisées en ROM, lues depuis la ROM, au lieu d'être chargées en RAM. Avec ce genre de stratagèmes, 256 octets de RAM est largement suffisant sur de nombreux systèmes, à condition qu'on ait assez de ROM pour coder un programme digne de ce nom. Par exemple, de nombreux systèmes embarqués simples s'en accommodent : des caisses enregistreuses, des systèmes de régulation de feu de circulation, etc.
Les processeurs 8 bits intègrent parfois les 256 octets de RAM directement dans le processeur, dans le banc de registres ! Beaucoup en implémentaient moins, avec par exemple seulement 64 octets de RAM, ou 32 octets, ou 128 octets. L'avantage est que cela élimine le bus pour les données, ce qui économise beaucoup de broches sur le circuit intégré du CPU. Et pour les applications demandant plus de RAM, on pouvait ajouter un circuit séparé qui permettait d'adresser une RAM plus grande. Et c'est ce qui explique que cette solution est beaucoup utilisée sur les microcontrôleurs peu puissants. Les exemples qui vont suivre devraient vous convaincre.
: Les processeurs de ce type implémentent des optimisations pour adresser plus de 256 octets de RAM. La plus connue est la commutation de banques. Mais nous n'avons pas encore abordé celle-ci, et il faudra attendre le chapitre sur l'espace d'adressage pour cela.
===Les microcontrôleurs PIC===
Les '''microcontrôleurs PIC''' regroupent des microcontrôleurs allant de microcontrôleurs 8 bits aux performances très faible, à des microcontrôleurs 32 bits bien plus puissants. Les microcontrôleurs PIC sont très utilisés dans l'embarqué ou d'informatique industrielle. Ils sont vendu à des volumes assez impressionnants, plusieurs millions par an. Et si vous avez ou êtes en train de faire des études d'électronique, je parie que vous les avez déjà vu en classe, ou que ce ne saurait tarder. Dans ce qui suit, nous allons nous concentrer sur les microcontrôleurs PIC 8 bits, à savoir les PIC 16, 16 et 18. Les PIC 24, qui sont des microcontrôleurs 16 bits, ne seront pas abordés.
Les microcontrôleurs PIC 8 bits sont une architecture Harvard, comme dit plus haut. Il y a aussi des registres pour les entrées et sorties. Les registres d'entrée-sortie permettent de lire ou écrire sur un port d'entrée-sortie ou de lire un ''timer''. En clair, les PIC ont un espace d'adressage séparé pour les entrées-sorties.
La mémoire ROM des PIC va de 1024 instructions à 4096 instructions. En comparaison, la mémoire RAM des microcontrôleurs PIC ne peut pas dépasser 256 adresses, et elle est encore plus petite en pratique sur certains modèles. Pour donner un exemple, le PIC16F84 a une RAM composée de 68 "registres" de 8 bits. Le terme "registres" devrait vous faire tiquer, mais c'est bien le terme utilisé dans la documentation des PIC. Et il faut admettre que la différence entre banc de registre et SRAM intégrée est floue, mais nous expliquerons pourquoi dans quelques paragraphes.
: Les PIC 18 peuvent adresser plus de 256 octets de RAM en utilisant la commutation de banques, une technique qui sera abordée dans plusieurs chapitres.
[[File:DocPIC16F84 3.png|centre|vignette|upright=3|Espaces d'adressage du PIC16F84.]]
Un détail est que la SRAM n'a qu'un seul port qui sert à la fois pour les lectures et écritures. Pour compenser, les PIC sont des architectures à accumulateur, où une opérande est lue depuis la SRAM, l'autre depuis l'accumulateur. Leur implémentation de l'accumulateur ajoute une petite subtilité : le résultat d'une opération arithmétique peut être enregistré ailleurs que dans l'accumulateur. Le résultat peut aussi remplacer la seconde opérande, celle lue en mémoire RAM. Dit autrement, le résultat est enregistré dans l'adresse mémoire source. Les instructions de calcul ont le choix : un bit dans leur encodage précise où enregistrer le résultat.
{|
|-
|[[File:DocPIC16F84 4.png|centre|vignette|upright=2|Microarchitecture simplifiée d'un microcontroleur PIC (ici, un 16F84).]]
|[[File:DocPIC16F84 5.png|centre|vignette|upright=2|Microarchitecture simplifiée d'un microcontroleur PIC (ici, un 16F84), avec les branchements directs.]]
|}
Outre l'accumulateur, les PIC disposent de registres de contrôle, d'un ''program counter'', d'un registre d'état, et d'un pointeur de pile. Un détail très important est que les registres sont mappés en mémoire, à quelques exceptions près ! En clair, on peut y accéder en lisant/écrivant à une adresse mémoire bien précise. Les seules registres qui ne sont pas mappés en mémoire sont l'accumulateur, les registres d'entrée-sortie, et la pile d'adresses de retour intégrée au processeur (voir plus bas). Par exemple, sur les modèles 16F, l'espace d'adressage fait 128 octets, dont 32 sont réservés aux registres du processeur, ce qui fait que seules 96 octets sont adressables comme de la RAM. Mais les 128 octets sont un seul et unique SRAM dans le processeur. Ce qui explique qu'il est difficile de séparer banc de registre et RAM principale sur ce processeur : les deux sont fusionnées ! Cela gaspille quelques adresses mémoire, mais permet une implémentation plus simple, avec un banc de registre unique.
: Les modèles PIC 17 ont rendu l'accumulateur mappé en mémoire RAM !
[[File:DocPIC16F84.png|centre|vignette|upright=2|DocPIC16F84]]
La petite taille de la ROM d'un PIC n'est pas une surprise. Les architectures 8 bits sont conçues pour ne pas utiliser beaucoup de transistors et être très simples. Aussi, utiliser une petite ROM est nécessaire. Mais il faut aussi adapter le jeu d'instruction, pour qu'il ait une bonne densité de code. Par exemple, il faut faire en sorte d'avoir des instructions assez courtes. Si les instructions font 16 bits au lieu de 32, on divise par deux le nombre de transistors nécessaire pour la mémoire ROM. La conséquence est que le jeu d’instruction des PIC est adapté à cette contrainte.
Les microcontrôleurs PIC utilisent un jeu d'instruction propriétaire, dont les instructions sont très petites. Les premières versions du jeu d'instruction utilisaient des instructions codées sur 12 bits, dont 5 pour l'adresse mémoire de la seconde opérande. Pour les branchements, 3 bits étaient utilisés pour l'opcode, 9 pour l'adresse de destination. Par la suite, les instructions ont été étendues à 13 bits sur les PIC1670, puis à 14, 15 et 16 bits. Les adresses ont alors été élargies, ce qui permet d'adresser en peu plus de mémoire RAM.
Il est intéressant de regarder comment les PIC font pour obtenir des instructions aussi courtes. Premièrement, le fait d'utiliser une architecture à accumulateur, couplé à une RAM très petite aident grandement. Les architectures à accumulateur ont besoin de préciser un opcode et une adresse mémoire pour chaque instruction, pas besoin de préciser de noms de registres ni le mode d'adressage. La taille des adresses mémoire est censé être un problème pour la densité de code, mais les adresses d'un processeur 8 bits font 8 bits. On peut alors avoir un jeu d'instruction étoffé, en utilisant des instructions 16 bits, qui concatènent un opcode et une adresse mémoire, d'un octet chacun.
Mais d'autres optimisations permettent d'avoir une bonne densité de code. Les PIC ont des branchements pour les appels et retour de fonction. Les PIC incorporent une pile d'appel de retour, qui fait 2 à 8 adresses suivant les modèles. Elle permet d'économiser quelques registres, car la pile d'appel n'est pas mappé dans l'espace d'adressage, elle n'est pas adressable. On économise ainsi 2 à 8 registres, sur 32-256 registres. De plus, cela simplifie l'encodage des instructions d'appel/retour de fonction, qui n'ont pas à préciser où enregistre l'adresse de retour.
Les PIC n'ont pas d'instructions de branchement conditionnels, ils font avec une SKIP instruction et des branchements inconditionnels. Du moins, c'est le principe, car si vous regardez la liste des instructions ci-dessous, vous verrez qu'il n'y a pas d'instruction SKIP. A la place, les instructions SKIP sont fusionnées avec d'autres instructions. Elles sont notamment fusionnées avec les instructions d'incrémentation et de décrémentation. Les PIC supportent une incrémentation normale, une décrémentation normale, une décrémentation fusionnée avec une instruction SKIP, et une incrémentation fusionnée avec une instruction SKIP. Les deux dernières incrémentent/décrémentent l'accumulateur et SKIP l'instruction suivante si le résultat est zéro. Elles permettent de fortement simplifier l'implémentation des boucles qui s'exécutent tant que leur compteur atteint zéro.
Les PIC disposent aussi d'instructions de manipulation de bit, pour tester/masquer un bit dans une opérande, 4 en tout. Il y a en a 4 en tout : mettre à 0, mettre à 1, tester si bit = 1, tester si bit = 0. Les instructions qui testent un bit prennent leur opérande dans l'accumulateur. Elles font le test du bit et décident s'il faut skipper l'instruction suivante ou non. Il y a aussi deux instructions de rotation à gauche et droite, qui tiennent compte de la retenue mémorisée dans le registre d'état. Par contre, il n'y a pas d'instructions de décalages, qui peuvent être émulées avec une rotation suivie d'un ET bit à bit. Mentionnons aussi une instruction pour inverser deux ''nibbles'' dans un octet.
Les modèles haute performance ajoutent des instructions d'addition avec retenue entrante, idem pour la soustraction. De telles instructions ssont très utiles pour faire des additions/soustractions sur des opérandes de 16 bits. Le processeur a beau être un CPU 8 bits, il peut être utilisé pour faire des calculs 16 bits, la performance est alors amoindrie, mais ce n'est pas un problème pour les applications d'un tel microcontroleur.
Les modèles intiaux, comme les PIC 10 et 12, ne supportaient pas les interruptions, mais c'est chose réglé sur les modèles plus récents. Ils ont même des registres séparés pour les interruptions et les programmes normaux. De plus, ils intégrent nativement un ''watchdog timer''.
{|class="wikitable" style="text-align:center"
|+ Jeu d'instruction des dodèles PCI 16
|-
! colspan="5" | Instructions diverses
|-
| colspan="3" | 00 0000 0000 0000 || NOP || Ne fait rien
|-
| colspan="3" | 00 0000 0000 1000 || RETURN || Instruction de retour pour une fonction
|-
| colspan="3" | 00 0000 0000 1001 || NOP || Instruction de retour pour une interruption
|-
| colspan="3" | 00 0000 0110 0011 || SLEEP || Mise en veille
|-
| colspan="3" | 00 0000 0110 0100 || CLRWDT || RESET le ''watchdog timer'', intégré dans le PIC
|-
! colspan="5" | Instructions de manipulation de bit
|-
| 0100 || Position du bit dans l'opérande || Adresse mémoire || BCF || Met le bit à 1
|-
| 0101 || Position du bit dans l'opérande || Adresse mémoire || BSF || Met le bit à 0
|-
| 0110 || Position du bit dans l'opérande || Adresse mémoire || BTFSC || Teste si le bit adressé est à 1
|-
| 0111 || Position du bit dans l'opérande || Adresse mémoire || BTFSS || Teste si le bit adressé est à 0
|-
! colspan="5" | Branchements
|-
| colspan="2" | 100 || Adresse mémoire || CALL || Appel de fonction
|-
| colspan="2" | 100 || Adresse mémoire || GOTO || Branchement inconditionnel
|-
! colspan="5" | Instructions logiques/arithmétiques avec opérande lue en mémoire RAM
|-
| colspan="5" | ''Le bit '''d''' dans l'opcode indique la destination : accumulateur ou adresse mémoire''.
|-
| colspan="2" | 0000001 || Adresse mémoire || MOVWF || Store (accumulateur vers destination)
|-
| colspan="2" | 000001d || Adresse mémoire || MOVWF || Met à zéro la destination (adresse ou registre)
|-
| colspan="2" | 000001d || Adresse mémoire || SUBWF || Soustraction
|-
| colspan="2" | 000010d|| Adresse mémoire || DECF || Décrémentation
|-
| colspan="2" | 000100d|| Adresse mémoire || IORWF || OU bit à bit
|-
| colspan="2" | 000101d|| Adresse mémoire || ANDWF || ET bit à bit
|-
| colspan="2" | 000110d || Adresse mémoire || XORWF || XOR bit à bit
|-
| colspan="2" | 000111d || Adresse mémoire || ADDWF VWF || Addition
|-
| colspan="2" | 001000d || Adresse mémoire || MOVF || LOAD
|-
| colspan="2" | 001001d || Adresse mémoire || COMF || NOT bit à bit
|-
| colspan="2" | 001010d || Adresse mémoire || INCF || Incrémentation
|-
| colspan="2" | 001011d || Adresse mémoire || DECFSZ || Décrémentation, puis instruction SKIP si résultat = 0
|-
| colspan="2" | 001100d || Adresse mémoire || RRF || Rotation à droite avec retenue entrante
|-
| colspan="2" | 001101d || Adresse mémoire || RLF || Rotation à gauche avec retenue entrante
|-
| colspan="2" | 001110d || Adresse mémoire || SWAPF || Echange deux ''niblle'' dans un octet
|-
| colspan="2" | 001111d || Adresse mémoire || INCFSZ || Incrémentation, puis instruction SKIP si résultat = 0
|-
! colspan="5" | Instructions logiques/arithmétiques avec constante immédiate
|-
| colspan="2" | 1100xx || Constante immédiate (8bits) || MOVLW || Copie constante dans accumulateur
|-
| colspan="2" | 1101xx || Constante immédiate (8bits) || RETLW || MOV fusionné avec un retour de fonction
|-
| colspan="2" | 111000 || Constante immédiate (8bits) || IORLW || OU
|-
| colspan="2" | 111001 || Constante immédiate (8bits) || ANDLW || ET
|-
| colspan="2" | 111010 || Constante immédiate (8bits) || XORLW || XOR
|-
| colspan="2" | 11110x || Constante immédiate (8bits) || SUBLW || Soustraction
|-
| colspan="2" | 11111x || Constante immédiate (8bits) || ADDLW || Addition
|}
Les PIC gèrent l'adressage absolu et immédiat, mais pas plus. L'adressage absolu, celui où l'adresse est intégrée dans l'instruction, est très simple à implémenter. Les adresses prennent moins d'un octet, vu que la taille de la RAM est très petite, les adresses sont très courtes, les intégrer dans des instructions elles-mêmes courtes n'est pas un problème. L'adresse est encodée sur 5 à 7 bits, selon le modèle, ce qui permet d'adresser entre 32 et 128 octets.
Les PIC ne supportent pas l'adressage indirect, mais peuvent l'émuler grâce à un '''registre d'adresse''' dédié. Il s'agit du registre FSR, qui mémorise l'adresse à lire/écrire. Il est possible de copier un pointeur dedans, qui provient soit de l'accumulateur, soit de la mémoire SRAM. Dans les deux cas, la donnée adressée est lue ou écrite dans un registre INDR, est un registre d’interfaçage rendu adressable. Le registre FSR est directement connecté sur le bus d'adresse.
Les modèles de base se débrouillent avec un registre FSR et un registre INDR, mais les modèles plus performants ont deux ou trois copies de chaque registre. Les modèles PIC18 ajoutent aussi des instructions LOAD/STORE qui émulent les modes d'adressage à post- ou pré-incrément/décrément, et le mode d'adressage "Base + Indice + Décalage", encore une fois en utilisant les registres FSR et INDR.
Avec tout ce qu'on vient de dire, vous devriez pouvoir comprendre la microarchitecture d'un PIC, qui est résumée dans ce schéma.
[[File:DocPIC16F84 all.png|centre|vignette|upright=2.5|Microarchitecture du PIC16F84.]]
===Les microcontrôleurs Intel 8051/8031===
Les microcontrôleurs Intel 8051/8031 sont des microcontrôleurs 8 bits, commercialisés par Intel. Elle contient un processeur 8/16 bits, de la mémoire ROM, une RAM de 128 octets, des ''timers'', et de nombreuses entrées-sorties. Il est relié à 4 ports sur lesquels il peut lire ou écrire 8 bits par port. Il contient aussi deux ''timers'' de 16 bits chacun, qui déclenchent des interruptions quand ils tombent à zéro ou à une valeur configurable. Il supporte des interruptions. L'ensemble utilise une architecture Harvard, contrairement à ce que pourrait faire croire le schéma ci-dessous.
[[File:Microcontroller 8051.gif|centre|vignette|upright=2.5|Microcontrôleur 8051]]
[[File:Pinagem8031.jpg|vignette|Broches du 8051.]]
Ils ont de nombreuses ressemblances avec les microcontrôleurs PIC. Le processeur du 8051 est une architecture à accumulateur de 8 bits, ses registres sont mappés en mémoire RAM, il a un registre d'adresse dédié à l'adressage indirect et j'en passe. Mais il y a aussi des différences notables. Par exemple, le 8051 n'a pas de pile d'adresse de retour, contrairement aux processeurs PIC. Il fait autrement, à savoir qu'il gère une pile d'appel placée en mémoire RAM,ce qui est très différent.
Une autre différence est que les registres sont placés dans un banc de registre à part des 128 octets de SRAM. Il y a une SRAM séparée du banc de registre, contrairement à ce qu'on a sur les microcontrôleurs PIC. Par contre, les registres du processeur sont mappés en mémoire RAM, y compris l'accumulateur, le registre d'état, le ''program counter'', et bien d'autres. Mais le fait qu'ils soient séparés de la SRAM permet de les mapper dans l'espace d'adressage sans marcher sur les pieds de la SRAM. Pour comprendre comment, faisons une remarque : le processeur gère nativement des adresses de 8 bits, mais a 128 octets de SRAM. L'idée est de placer les registres dans les 128 octets de poids fort, au sommet de l'espace d'adressage. D'ailleurs, les entrées-sorties sont mappées dans cette portion de l'espace d'adressage.
Avec ce qu'on vient de dire, on peut donner la ''memory map'' de ce microcontroleur, pour la SRAM. Les 32 premières adresses sont réservés à la mémoire SRAM, c'est 32 octets de RAM utilisable à volonté par le programmeur. Les 16 adresses suivantes sont adressables bit par bit, ou octet par octet. L'intervalle bit-adressable va de l'adresse 32 (inclue) à l'adresse 47 (inclue). Les 96 octets suivants sont de la mémoire RAM adressable, affectée par défaut à la pile d'appel mais adressable via adressage direct si besoin. Les 128 octets de poids fort sont réservés aux registres et aux entrée-sorties mappées en mémoire.
[[File:Memory map du 8051.png|centre|vignette|upright=2|Memory map du 8051]]
Les 128 octets au sommet de l'espace d'adressage sont décrit dans le schéma ci-dessous. On voit que l'accumulateur est mappé dedans, de même que le registre d'état PSW et le ''program counter'' IP. Les ports d'entrée-sortie sont aussi mappés dedans. Une partie des octets sont bit-adressables, et cette partie inclus les registres du processeur et les ports d'entrées-sorties.
[[File:MFrey SFR MCS-51.svg|centre|vignette|upright=2|Memory map des 128 octets de poids fort du 8051]]
Pour ce qui est des instructions, le 8051 supporte les opérations de multiplications et de divisions, contrairement aux microcontrôleurs PIC qui se limitaient à l'addition et la soustraction.
Une autre particularité est que le processeur incorpore une '''unité de calcul de 1 bit'''. Elle permet de faire des opérations sur des bits, avec 17 instructions possibles au total. L'ALU de 1 bit est reliée à un accumulateur de 1 bit et 32 registres de 1 bits. Elle peut lire des opérandes de 1 bit en mémoire RAM ou sur les ports d'entrée-sortie, qui sont tous bit-adressables. Pour le dire autrement, chaque bit d'un port d'entrée-sortie a sa propre adresse mémoire, qui permet de le sélectionner. Il en est de même avec 18 adresses de la mémoire SRAM, ce qui permet d'adresser 144 bits (18 adresses * 8 bits par octet adressé).
[[File:Intel 8051 arch.svg|centre|vignette|upright=2|Microarchitecture de l'Intel 8051.]]
===Le Fairchild F8 et la console de jeu Fairchild Channel F===
Un autre exemple est la Fairchild F8 de la défunte entreprise Fairchild Semiconductor. Il incorpore un processeur 8 bits, c'est à dire que le processeur fait des calculs sur des entiers de 8 bits maximum, une mémoire RAM de 64 octets, ainsi qu'une mémoire ROM de 1 kibioctet. Les 64 octets de RAM sont certes très peu, mais c'est suffisant pour certaines applications simples, comme les caisses automatiques de l'époque, ou des applications embarquées. Et de toute façon, il est possible d'ajouter de la mémoire RAM supplémentaire si les 64 octets de RAM intégrée ne suffisent pas. Le système était donc modulaire, adaptable selon les besoins, peu cher pour son implémentation minimale sans RAM en plus.
Vu qu'il s'agit d'un des tout premiers ordinateurs, il est sorti à une époque où la technologie était rudimentaire. À cette époque, le processeur était composé de pièces détachées qu'il fallait souder ensemble pour obtenir un processeur fonctionnel. Ce n'est que plus tard qu'est apparu le micro-processeur, qui regroupe un processeur complet dans un seul circuit intégré. Le résultat est que le processeur du Fairchild F8 est coupé en deux, l'unité de calcul et l'unité de contrôle sont placés dans des pièces détachées séparés.
Le microcontrôleur est composé de trois à quatre pièces détachées, certaines étant optionnelles. La première est le '''3850 CPU''', qui regroupe l'unité de calcul et la mémoire RAM intégrée. La seconde est le PSU (''3851 Program Storage Unit''), qui regroupe la mémoire ROM et l'unité de contrôle, ''program counter'' inclut. S'il y a besoin d'utiliser plus de RAM, il faut ajouter un circuit d’interface mémoire, qui est au choix le ''3852 Dynamic Memory Interface'' (DMI) ou le ''3853 Static Memory Interface'', le premier étant connecté à une mémoire de type DRAM, l'autre à une SRAM (nous verrons ce que sont les DRAM et les SRAM dans le prochain chapitre).
[[File:Fairchild F8.png|centre|vignette|upright=2|Fairchild F8]]
Le système minimal est composé d'un PSU et d'un 3850, sans les circuits d'interface mémoire. Le tout donne un système avec un processeur 8 bit, 64 octets de RAM et 1 kibioctet de ROM, les deux mémoires étant intégrées dans le "processeur". Le processeur gérait 4 entrées-sorties, chacune étant reliée avec un bus de 8 bit au processeur. Au passage, en 1977, Mostek a créé un microcontrôleur qui regroupe un PSU et un 3850 : le Mostek 3870. Le système minimal n'avait pas de bus d'adresse, vu que la RAM était intégrée au processeur. C'est les 3852 et 3853 qui ajoutaient un bus d'adresse. Ils ajoutent un bus d'adresse de 16 bits, ce qui permet d'adresser 64 kibioctets de RAM.
[[File:Fairchild-Channel-F.jpg|vignette|un Fairchild Channel F]]
Le Fairchild F8 a été utilisé dans la Fairchild Channel F, une des toute première console de seconde génération, à savoir des consoles qui utilisaient des cartouches de jeu. Avant les consoles de seconde génération, les consoles étaient non-programmables. Elles étaient conçues pour faire tourner un jeu précis, aucun autre, le jeu étant implémenté dans leurs circuits.
La Fairchild Channel F est composé du système minimal, auquel on a ajouté une carte son rudimentaire et 2 kibioctets de mémoire vidéo. La mémoire vidéo sert uniquement pour afficher des images à l'écran : on écrit l'image à afficher dedans, un circuit vidéo se charge de l'afficher à l'écran automatiquement. Le processeur ne fait qu'écrire dans cette RAM vidéo, il ne peut pas en lire le contenu. De la RAM supplémentaire peut cependant être ajoutée dans les cartouches de jeu.
===Le HP Nanoprocessor : un processeur sans ALU===
Un dernier exemple est celui du processeur HP Nanoprocessor, de l'entreprise HP. Il a été commercialisé en 1974, en même temps que les premiers micro-processeurs d'Intel. Tous les processeurs de l'époque étaient des processeurs 8 bits et le HP Nanoprocessor ne faisait pas exception. Ce n'était pas un processeur haute performance, il était destiné à des applications d'informatique industrielle ou embarquée. D'ailleurs, il utilisait des transistors de type metal-gate, peu performants, là où ses contemporains utilisait des transistors en silicium, plus performants.
Mais une caractéristique qui rend cela encore plus claire est qu'il n'y a pas d'ALU ! En effet, ce processeur est incapable de faire des additions, des soustractions ou autres opérations simples ! Il est cependant capable d'effectuer des incrémentations et décrémentations, des décalages, des opérations logiques comme des ET/OU/NON/XOR et bien d'autres. Il supporte en tout 48 instructions, avec un support limité des modes d'adressage indirects. Les instructions de branchement étaient des instructions SKIP, il n'y avait pas d'instructions de branchement généralistes.
Pour ce qui est des registres, il disposait de 16 registres de 8 bits et d'un accumulateur. Niveau mémoire, il était relié à une mémoire ROM, rien de plus. Il n'avait de RAM supplémentaire qu'on pouvait lui adjoindre, il devait se débrouiller avec seulement ses registres. Et cela ne posait pas de problèmes pour son usage. Seul le mode d'adressage indirect à registre est supporté, il n'y a pas de registres d'indices. Ce mode d'adressage permet de lire des données en mémoire ROM, la ROM pouvant contenir des tableaux de valeurs constantes.
: Il est possible de lui adjoindre de la RAM via les ports d'entrée-sortie, ainsi qu'une ALU, mais RAM et ALU sont traités comme des périphériques avec lesquels on communique, ils ne sont pas intégrés au processeur.
Niveau micro-architecture, il incorporait une unité de calcul logique et un circuit comparateur. Le comparateur était un circuit comparateur série des plus basiques, qui était utilisé pour les instructions de branchement et associées. L'unité de calcul logique gérait des incrémentations/décrémentation, des décalages, les opérations logiques et quelques autres. L'unité de calcul logique était bit-slicée, à savoir conçue en assemblant 8 ALU de 1 bit chacune, enchainées en série. Le tout était combiné à des circuits de ''carry skip''.
[[File:Unité de calcul du HP nanonprocessor.png|centre|vignette|upright=2|Unité de calcul du HP nanoprocessor]]
Son unité de décodage d'instruction était très simple, essentiellement basée sur des portes NOR, grâce à un encodage efficace des instructions machine. Le ''program counter'' fait 11 bits, ce qui permet d'adresser une ROM de 2 kibioctets. Le ''program counter'' était relié à un circuit incrémenteur qui gérait les isntructions SKIP (il pouvait incrémenter le ''program counter'' par pas de 1 ou de 2 en cas de SKIP). Le processeur contient aussi deux registres, qui servent en quelque sorte de pile d'adresse de retour. Un premier registre mémorise l'adresse de retour d'une fonction, l'autre mémorise le ''program counter'' lors d'une interruption, pour savoir où brancher à la fin de l'interruption.
[[File:HP nanoprocessor.png|centre|vignette|upright=2.5|HP nanoprocessor]]
Fait intéressant, le concepteur du processeur a gracieusement donné les masques utilisés pour graver le silicium du processeur au site [https://www.cpushack.com/ CPU Shack]. Les masques en question sont disponibles ici :
* [https://www.cpushack.com/2020/08/20/hp-nanoprocessor-mask-set/ HP NanoProcessor Mask Set]
* [https://www.cpushack.com/2020/08/09/the-forgotten-ones-hp-nanoprocessor/ The Forgotten Ones: HP Nanoprocessor]
Les masques ont été analysés par Ken Shirrif dans cet article de blog :
* [https://www.righto.com/2020/09/hp-nanoprocessor-part-ii-reverse.html HP Nanoprocessor part II: Reverse-engineering the circuits from the masks]
==Les processeurs 8/16 bits à architecture Von Neumann==
L'usage d'une architecture Harvard est une solution pour adresser plus de mémoire avec des CPU 8 bits. Mais plusieurs microprocesseurs commerciaux n'utilisaient pas cette solution. À la place, c'était des architectures Von Neumann, mais qui étaient capables de gérer des adresses de 16 bits. Les données faisaient 8 bits, les registres faisaient 8 bits, mais quelques techniques permettaient de gérer des adresses de 16 bits. Nous parlerons de '''processeurs 8/16 bits''' pour les désigner, et nous allons les étudier à part.
Un point important est que la gestion d'adresses de 16 bits permet d'adresser 64 kibioctets, qui peuvent être remplis avec de la RAM et de la ROM. On a donc le meilleur des mondes : 64 kibioctets de mémoire, mais avec des données de 8 bits et les économies de circuit qui vont avec. L'avantage est que le processeur peut maintenant gérer une vraie pile d'appel, pas seulement une pile d'adresse de retour. Il lui suffit pour cela d'intégrer un pointeur de pile codé sur 16 bits.
===Les modes d'adressage par page des CPU Motorola===
Les processeurs Motorola 8 bits étaient des processeurs 8 bits avec un bus d'adresse de 16 bits. C'était des processeurs à accumulateur incorporant deux registres d'indice, un registre d'état, un pointeur de pile, et un ''program counter''. Tous les registres sont reliés au bus d'adresse, sauf le registre d'état et l’accumulateur. Tous les registres font 8 bits, sauf le ''program counter''. La pile est câblée pour être dans un bloc de 256 octets compris entre l'adresse 1 0000 0000 et l'adresse 1 1111 1111, ce qui fait que son adressage se fait avec un seul octet.
[[File:6502-architecture.svg|centre|vignette|upright=1.5|Architecture simplifiée du 6502.</br> X et Y : registres d'indice ;</br> S : le pointeur de pile ;</br> A : accumulateur ;</br>P : registre d'état.</br>]]
Les processeurs Motorola 8 bits utilisaient une méthode simple pour adresser 64 kibioctets de RAM, avec des registres de 8 bits. Pour cela, ils utilisaient une variante de l'adressage base + décalage. Elle améliore l'adressage absolu, qui intègre l'adresse à lire/écrire dans l'instruction elle-même. L'adresse en question est de 8 bits et n'encode que les 8 bits de poids faible de l'adresse, les 8 bits de poids fort sont dans un '''registre de page''' adressé implicitement. L'adresse finale est obtenue en concaténant ce registre avec l'adresse mémoire intégrée dans l’instruction. Le résultat est que la mémoire était découpée en blocs de 256 consécutifs, chacun pouvant servir de fenêtre de 256 octets. Une page est réservée pour la pile, la seconde, comme dit plus haut.
Formellement, ce mode d'adressage a des ressemblances avec la commutation de banques, une technique qu'on verra dans les chapitres sur l'espace d'adressage et la mémoire virtuelle. Mais ce n'en est pas du tout : le registre de page est utilisé uniquement pour les accès mémoire avec le mode d'adressage base + décalage, mais pas pour les autres accès mémoire, qui gèrent des adresses complètes. Notons que l'usage d'un registre de page dédié fait que celui-ci est adressé implicitement.
Il faut noter que la technique a été utilisée sur des processeurs 16 bits, pour contourner la petite taille des instructions. Un exemple est celui du HP 2100, un processeur 16 bits. Il avait un registre de page de 5 bits et encodait 10 bits d'adresse dans ses instructions. Ses instructions d'accès mémoire disposaient d'un bit qui choisit quel mode d'adressage utiliser. S'il était à 0, l'adressage absolu était utilisé, le registre de page n'était pas utilisé. Mais s'il était à 1, le registre de page était utilisé pour calculer l'adresse.
Une évolution de l'adressage précédent est le '''mode page direct'''. Avec lui, le registre de page est étendu et contient une adresse mémoire complète. L'adresse finale n'est pas obtenue par concaténation, mais en additionnant le registre de page avec l'adresse fournie par adressage absolu + décalage. Un exemple est celui des premiers processeurs Motorola, qui géraient des adresses courtes de 8 bits. L'adresse courte de 8 bits correspondait non pas aux 256 premiers octets de la mémoire, mais à une fenêtre de 256 octets déplaçable en mémoire. La position de la fenêtre de 256 octets était spécifiée par le registre de page de 16 bits, qui précisait l'adresse du début de la fenêtre, celle de sa première donnée.
Il s'agit donc formellement d'adressage base + décalage, à un détail près : il n'y a qu'un seul registre de base. Le fait que ce registre de base soit unique fait qu'il est adressé implicitement, on n'a pas à encoder le numéro/noms de registre dans l'instruction. Le registre de base est utilisé uniquement pour l'adressage absolu, pas pour les autres accès mémoire. S'il y a des ressemblances avec la segmentation, une technique de mémoire virtuelle qu'on abordera dans quelques chapitres, ce n'en est pas vu que le registre de base est utilisé seulement pour un mode d'adressage bien précis.
===Le ''pseudo-aliasing'' des registres des processeurs Intel x86===
Voyons maintenant le cas des anciens processeurs 8 bits d'Intel à savoir l'Intel 4004, 4040, 8008 et 8080. Le Z80, un processeur inspiré des CPU Intel 8 bits, est aussi concerné. Avant de poursuivre, parlons des registres de ces processeurs. Les premiers CPU Intel incorporaient 7 registres de 8 bits nommés A, B, C, D, E, F, H, L, SP. Ils correspondent respectivement à : l'accumulateur A ; six registres nommés B, C, D, E, H et L ; le registre d'état F ; le pointeur de pile SP. Le Z80 ajoute deux registres d'indice X et Y. De plus, le Z80 dispose de registres d'interruption, qui sont en quelque sorte des copies des registres A, B, C, D, E, F, H, L. Le tout est illustré dans le tableau ci-dessous.
{|class="wikitable" style="text-align:center;"
|-
!
! Registres des CPU Intel
! Registres supplémentaires du Z80
|-
! Accumulateur
| A
| A'
|-
! Registre d'état
| F
| F'
|-
! Registres généraux
| B, C, D, E, H, L
| B', C', D', E', H', L'
|-
! Pointeur de pile
| colspan="2" | SP (sauf pour le 8008)
|-
! Registres d'indice
|
| X et Y
|}
Le 8008 incorpore une pile d'appel de 7 adresses, dans le processeur lui-même. Il en est de la même avec le 4004 et le 4040, comme on le verra dans la section sur les processeurs 4 bits. Mais le 8080 et le 8085 ont remplacé le tout par un simple pointeur de pile, afin d'avoir une véritable pile d'appel. Autant c'est impossible d'avoir une pile d'appel avec seulement 256 octets de mémoire, autant on peut se le permettre avec 65 536 adresses.
Pour gérer des adresses de 16 bits, ils auraient pu utiliser des registres d'adresse séparés, mais on préféré un système de '''pseudo-''aliasing'' de registres'''. Formellement, c'est un système qui concatène deux registres 8 bits pour obtenir une adresse de 16 bits. L’appariement a lieu lors de certaines opérations bien précises, qui n'ont de sens que pour les adresses : la lecture/écriture en mémoire, et l'incrémentation.
Il y avait cependant des contraintes quant aux paires de registres possibles, toutes les paires de registres n'étaient pas autorisées. Les CPU concernés sont donc des processeurs hybrides accumulateur-registre généraux. L'accumulateur ne peut pas être appairé, seuls les registres généraux le peuvent. Le Z80 autorise plus de paires que les CPU Intel. Voici les paires de registres qui pouvaient servir d'adresse 16 bits :
* Les CPU 8008 d'Intel autorisait une seule paire formée des registres H et L.
* Les autres processeurs, à savoir le 8080, le 8085 et le Z80, autorisaient : les paires BC, DE et HL.
Le 8008 ne gérait que des opérations sur 8 bits. Mais le 8080 et le 8085 ont ajouté des instructions 16 bits qui agissaient sur des paires de registre, que le Z80 a repris. Une paire de registres est considérée comme un registre unique de 16 bits pour certaines opérations arithmétiques, dont l'incrémentation. Voici la liste des instructions concernées :
* INC et DEC pour l'incrémentation et la décrémentation ;
* DAD : additionne le registre HL avec une autre paire (Hl inclus) ;
* LXI : copie une constante immédiate dans une paire de registres ;
* LHLD : lit 16 depuis la mémoire et l'enregistre dans une paire de registres ;
* SHLD : copie 16 bits depuis une paire de registres et l'enregistre en mémoire ;
* PUSH et POP : empile ou dépilent une paire de registre sur la pile ;
* XTHL : échange la paire HL avec les 16 bits au sommet de la pile d'appel ;
* XCHG : échange le contenu de la paire HL et DE.
Pour résumer, le processeur avait des instructions LOAD, STORE, PUSH et POP adaptées pour gérer des paires de registre. De plus, l'instruction XCHG permettait d’échanger le contenu des paires DE et HL. L'instruction a été étendue sur les processeurs 16 bits pour échanger tous les registres. Mais l'implémentation était alors différente. L'incrémentation sur une paire de 16 bit était très utile, car les adresses sont souvent incrémentées quand on parcours un tableau. Ces instructions nous donnent quelques indices sur ce qu'il y a dans le processeur.
Le système de pseudo-aliasing a un impact sur le banc de registre. Le banc de registre regroupe les registres généraux et le pointeur de pile, mais ne contient pas l'accumulateur. Les contraintes sur les paires de registres possibles ne s'expliquent que d'une seule manière : le banc de registre contient des registres de 16 bits, une paire de registres 8 bits est mémorisée dans un registre unique. Il faut donc faire une différence entre les registres architecturaux de 8 bits, et les registres réels de 16 bits.
Le banc de registre a un port de 8 bits pour les données, qui est fabriqué à partir d'un port 16 bits auquel on a rajouté un multiplexeur pour choisir soit l'octet de poids faible, soit l'octet de poids fort. Le bus de données fait 8 bits, ce qui fait que les instructions LOAD, STORE, PUSH et POP pour paires 16 bits sont réalisées en deux fois : on lit/écrit l'octet de poids faible, puis celui de poids fort. Par contre, le bus d'adresse fait bien 16 bits. Cela suggère que le banc de registre dispose d'un port de 16 bits dédié aux adresses, en plus du port de données 8 bits.
[[File:Architecture d'un CPU 8-16 bits avec un banc de registre double port.png|centre|vignette|upright=2|Architecture d'un CPU 8-16 bits avec un banc de registre double port]]
L'incrémentation d'une paire 16 bits ne coute rien à implémenter, ou presque. En effet, le processeur incorpore un incrémenteur 16 bits pour le ''program counter'', qui est relié au bus d'adresse. L'idée est de rentabiliser cet incrémenteur, en lui permettant d'incrémenter des données/adresses de 16 bits obtenues via pseudo-aliasing. De même, il peut être utilisé pour incrémenter le pointeur de pile, voire un compteur de rafraichissement mémoire (pour rappel, le rafraîchissement mémoire demande de balayer la mémoire d'adresse en adresse et été fait par le CPU à l'époque). Pour cela, il suffit de connecter le ''program counter'', le banc de registre, et l'incrémenteur, via un bus dédié.
[[File:Calcul d'adresse par ALU dédiée avec PC séparé.png|centre|vignette|upright=2|Calcul d'adresse par ALU dédiée avec PC séparé]]
Notez qu'on peut encore simplifier le tout en placant le ''program counter'' dans le banc de registre, ce qui ne gênera pas le travail de l'incrémenteur mais simplifiera le câblage au bus d'adresse. Ce n'était pas systématique, certains processeurs mettaient le ''program counter'' dans le banc de registre, d'autres non.
: Inclure le ''program counter'' dans le banc de registre permet parfois de remplir un vide. Par exemple, sur un processeur avec 12 registres, le banc de registre devrait faire idéalement 16 registres, inclure le ''program counter'' dedans fait monter le tout à 13.
[[File:Architecture d'un CPU 8-16 bits.png|centre|vignette|upright=2|Architecture d'un CPU 8-16 bits]]
Les processeurs Intel 8 bits, à savoir le 8008, le 8080 et le 8085 ; mettaient le ''program counter'' dans le banc de registre. Vous avez donc toutes les armes pour comprendre leur micro-architecture. Par exemple, voici la micro-architecture du processeur 8080. Remarquez le banc de registre, qui contient tous les registres sauf l'accumulateur et le registre. Il a deux ports : un pour les adresses et un pour les données. Notez le dé-multiplexeur sur le port de donnée. Pour le reste, il s'agit d'une architecture à accumulateur hybride des plus classiques.
[[File:Intel 8080 arch.svg|centre|vignette|upright=3|Microarchitecture de l'Intel 8080.]]
Le Z80 est un processeur inspiré du design des processeurs Intel 8 bits, mais avec pas mal d'améliorations. Un point particulier de ce processeur est son banc de registre. Il contient tous les registres du processeur, y compris l'accumulateur et le registre d'état ! Les seuls registres en-dehors du banc de registre sont le ''program counter'' et un compteur de rafraichissement mémoire IR.
Un autre point particulier est que les registres dans le banc de registres avaient une copie séparée accessible uniquement pour les interruptions, via fenêtrage de registres. Et l'accumulateur et le registre d'état étant dans le banc de registre, il y avait deux accumulateurs et deux registres d'état. Les registres A, B, C, D, E et F étaient dupliqués, par le pointeur de pile ni les registres d'indice. Les copies des registres étaient nommées A', B', C', D', E' et F'.
Le Z80 supportait des instructions d'échange de registre en plus des CPU Intel 8 bits. L'instruction EX peut échanger soit le contenu des paires D,E et H,F, soit la paire A,F avec la paire A',F'. L'instruction EXX échange les paires BC, DE, HL avec les paires BC', DE', HL'. En faisant cela, le programmeur pouvait utiliser deux fois plus de registres généraux s'il n'utilisait pas les interruptions. L'échange de paires se fait sans copies de registres, mais simplement en modifiant l'adresse envoyée sur le banc de registre. Pour cela, plusieurs bascules mémorisent des bits qui indiquent si les paires ont été échangées ou non. Il y a une bascule pour les paires DE , HL ; une autre pour les paires A,F et paire A',F', une dernière pour l'instruction EXX. En combinant ces bascules avec les noms de registres envoyés par le séquenceur, on peut échanger les paires de registres.
==Le cas particulier des processeurs 4 bits : le 4004 d'Intel==
L'Intel 4004 était le tout premier micro-processeur. Il s'agissait d'un microprocesseur de 4 bits, basé sur une architecture à accumulateur. Il disposait d'un accumulateur et de 16 registres d'indice, tous de 4 bits. Il faisait des calculs sur des données de 4 bits, appelées des nibbles. Cependant, sur ses 46 instructions machines supportées, 41 agissaient sur des opérandes de 8 bits, les 5 restantes sur des opérandes de 16 bits. Simplement, les calculs se faisaient en deux fois, en échangeant des données entre mémoire RAM et accumulateur.
Le 4004 est un circuit intégré avec peu de broches. Il dispose notamment d'un bus de données/adresse, qui est multiplexé, c’est-à-dire qu'il sert alternativement de bus de données et de bus d'adresse selon les besoins. Le bus de commande mémoire fait 5 bits, dont 4 pour les chips de RAM, un pour la ROM. Les adresses sont codées sur 12 bits, les données sur 4 et les instructions sur 8 bits. L'envoi d'une adresse sur le bus se fait en plusieurs fois, de même que la lecture d'une instruction. Il s'agit là d'une adaptation pour outrepasser les limitations d'un processeur 4 bit.
[[File:Intel 4004 processor pinout.png|centre|vignette|upright=2|Broches de l'Intel 4004. Nous verrons à quoi elles servent plus bas.]]
===L'espace d'adressage de l'Intel 4004===
Les adresses du processeur sont sur 12 bits, ce qui fait 4096 adresses différentes. Elles regroupent à la fois la ROM et la mémoire RAM, vu que l'architecture est une sorte de mélange bizarre entre une architecture Von Neumann et Harvard. Le processeur gère bien deux espaces d'adressage séparés, mais la RAM et la ROM sont reliés au même bus. La sortie CM-ROM du processeur indique si l'adresse envoyée correspond à la RAM ou la ROM. Un circuit de décodage d'adresse active ou désactive la RAM selon la valeur de ce bit, l'inverse pour la ROM, en agissant sur leurs bits Chip Select. Seule la RAM ou la ROM répondent alors à l'adresse.
Pour ce qui est de la RAM, le circuit de décodage d'adresse pouvait gérer au maximum 1024 adresses différentes, chacune contenant un nibble. Pour cela, le CPU 4004 était relié à une ou plusieurs RAM externes, des Intel 4002. Chaque Intel 4002 contenait 64 nibbles de données, plus 16 nibbles de statut qu'on ne détaillera pas ici. Les nibbles de statut étaient accessibles en utilisant des instructions d'entrée-sortie, donc pas avec des lectures/écritures mémoire. Les 64 nibbles de données sont découpés en 4 groupes de 16 nibbles. Le CPU pouvait être relié à maximum 16 Intel 4002, ce qui fait 1024 nibbles de données et 256 nibbles de statut. L'ensemble permet de remplir l'espace d'adressage de 1024 adresses.
===Le registre de page et le pseudo-aliasing des registres===
Sélectionner une adresse mémoire utilisait un mélange entre pseudo-aliasing et registre de page. Pour les données, les 1024 adresses étaient découpées en 4 pages de 256 adresses. Pour la ROM, les 4096 adresses étaient découpées en 16 pages de 256 adresses. Localiser une donnée dans une page ne requiert que 8 bits, 2/4 bits supplémentaires permettent de sélectionner la page voulue. Le registre de page était dans le processeur lui-même, et était relié aux sorties du processeur nommées CM-RAM 0, 1, 2 et 3. Les 4 sorties encodaient un nombre qui permet de sélectionner le numéro de page voulu.
Le registre de page fait 5 bits : un pour distinguer RAM et ROM, 4 bits pour sélectionner la page voulue. L'avantage est que la carte mère gère au maximum 16 chips de RAM, ce qui colle parfaitement avec les 4 utilisés pour sélectionner une page. Un chip de RAM correspond à une page, et chacun est activé ou désactivé suivant la page sélectionnée. Pour cela, il suffit d'ajouter un décodeur sur la carte mère, qui prend les 4 bits du registre de page et fournit les signaux Chip Select aux différents chips de RAM.
Reste alors à utiliser les 8 bits d'adresse à l'intérieur d'un chip de RAM. Le 4004 permettait de concaténer deux registres d'indice de 4 bits pour former une adresse de 8 bits. Les instructions d'accès mémoire pouvaient ainsi préciser une paire de registre d'indice pour préciser quelle adresse lire/écrire. Idem pour les branchements indirects : le processeur supportait une instruction de branchement indirect qui précisait l'adresse dans une paire de registres d'indice. Les registres d'indice sont donc assez mal nommés sur cette architecture, vu qu'ils peuvent servir soit de registre d'indice, soit de demi-registre d'adresse. Il s'agit là du système de pseudo-aliasing des registres, mais appliqué aux registres d'indice.
L'Intel 4004 gérait deux instructions pour gérer les adresses mémoires. La première, l'instruction DCL (''Designate Command Line'') configure le registre de page. Elle prend en entrée un numéro de page et le copie dans le registre de page. L'opérande peut provenir d'un registre d'indice ou de l'accumulateur. La seconde, l'instruction SRC (''Send Register Control'') concatène deux registres d'indice pour obtenir une adresse de 8 bits. Un accès mémoire se fait donc en maximum trois instructions : une qui configure le registre de page si ce n'est pas déjà fait, une instruction SRC pour envoyer l'adresse, et une troisième instruction qui dit s'il faut faire une lecture ou une écriture.
===La microarchitecture de l'Intel 4004===
Il incorporait une pile d'adresse de retour intégrée au processeur. La pile d'adresse acceptait exactement 3 adresses maximum. Elle était regroupée avec le ''program counter'' dans un banc de registre, de 4 registres. Le ''program counter'' et le pointeur de pile faisaient chacun 12 bits, soit trois nibble. Ils étaient incrémentés par un incrémenteur dédié.
SI on omet le registre de page et la pile d'adresse, le 4004 est une architecture à accumulateur des plus classiques, avec un bus interne unique, un banc de registre pour les registres d'indices, un accumulateur relié à une unité de calcul. Les registres d'indice étaient dans un banc de registre séparés, car ils faisaient 4 bits chacun, contrairement au pointeur de pile et le ''program counter''. Un détail important est que les bancs de registres du 4004 étaient implémentés avec de la DRAM, et non des registres usuels fabriqués avec des bascules 1 bit.
[[File:Microarchitecture de l'Intel 4004.png|centre|vignette|upright=2.5|Microarchitecture de l'Intel 4004]]
<noinclude>
{{NavChapitre | book=Fonctionnement d'un ordinateur
| prev=Les architectures à pile et mémoire-mémoire
| prevText=Les architectures à pile et mémoire-mémoire
| next=Les processeurs de traitement du signal
| nextText=Les processeurs de traitement du signal
}}
</noinclude>
sxduz4vrz6eaayy5wl2brqtqa0kdwcu
765726
765725
2026-05-01T20:19:38Z
Mewtow
31375
/* Les microcontrôleurs Intel 8051/8031 */
765726
wikitext
text/x-wiki
Nous avons déjà abordé la notion de processeur 8, 16, 32, 64 bits. Elle désigne la taille des registres généraux, ou de l'accumulateur. De nos jours, les processeurs 32 et 64 bits sont la norme, mais les premiers micro-processeurs étaient des processeurs 4 et 8, avant de passer rapidement au 16 bits. La raison est que leur budget en transistor limité faisait qu'on ne pouvait pas utiliser une ALU trop grande : une ALU 8 bit prend deux fois moins de place et de transistors qu'une ALU 16 bits. Cependant, les processeurs 8 bits avaient de sérieuses limitations qui étaient compensées par diverses solutions. Dans ce chapitre, nous allons faire une revue rapide des processeurs 8 bits et de leurs fonctionnalités.
La principale limitation des CPU 8 bits était l'adressage : des registres de 8 bits limitaient l'espace d'adressage à seulement 256 adresses, soit à peine 256 octets ! Intuitivement, on se dit que 256 octets est purement impraticable, on ne peut rien faire d'intéressant avec seulement 256 de RAM + ROM. Et c'est partiellement vrai. L'adage veut que 16 bits est la taille minimale intéressante, la limite à partir de laquelle on a assez de mémoire RAM/ROM pour coder des applications intéressantes. Mais 256 octets de RAM est largement suffisant sur de nombreux systèmes embarqués simples s'en accommodent : des caisses enregistreuses, des systèmes de régulation de feu de circulation, etc.
Pour les applications demandant plus de mémoire RAM, les CPU de l'époque contournaient la limitation de 256 octets de RAM avec de nombreux stratagèmes. Dans ce qui va suivre, nous allons séparer les CPU 8 bits selon qu'ils utilisent une architecture Harvard ou une architecture Von Neumann. La raison est qu'une architecture Harvard permet en soi de contourner partiellement ce problème d'adressage. Les choses sont plus compliquées avec une architecture Von Neumann.
==Les processeurs 8/16 bits à architecture Harvard ==
La première solution est d'utiliser une architecture Harvard. Le processeur 8 bit a alors deux espaces d'adressage : un pour la RAM, un autre pour la ROM. Et les deux utilisent des adresses de taille différente. La ROM est reliée à un bus d'adresse de 16 bits, alors que la RAM est elle connectée à un bus d'adresse de 8 bits. La RAM est donc limitée à 256 octets, alors que la ROM peut monter jusqu'à 64 kibioctets. Mine de rien, faire ainsi est largement suffisant.
Pour encore améliorer la situation, il est possible d'utiliser une architecture Harvard modifiée, qui permet de lire des données depuis la mémoire ROM. Cela réduit encore plus les besoins en mémoire RAM. Les constantes manipulées par le programme sont mémorisées en ROM, lues depuis la ROM, au lieu d'être chargées en RAM. Avec ce genre de stratagèmes, 256 octets de RAM est largement suffisant sur de nombreux systèmes, à condition qu'on ait assez de ROM pour coder un programme digne de ce nom. Par exemple, de nombreux systèmes embarqués simples s'en accommodent : des caisses enregistreuses, des systèmes de régulation de feu de circulation, etc.
Les processeurs 8 bits intègrent parfois les 256 octets de RAM directement dans le processeur, dans le banc de registres ! Beaucoup en implémentaient moins, avec par exemple seulement 64 octets de RAM, ou 32 octets, ou 128 octets. L'avantage est que cela élimine le bus pour les données, ce qui économise beaucoup de broches sur le circuit intégré du CPU. Et pour les applications demandant plus de RAM, on pouvait ajouter un circuit séparé qui permettait d'adresser une RAM plus grande. Et c'est ce qui explique que cette solution est beaucoup utilisée sur les microcontrôleurs peu puissants. Les exemples qui vont suivre devraient vous convaincre.
: Les processeurs de ce type implémentent des optimisations pour adresser plus de 256 octets de RAM. La plus connue est la commutation de banques. Mais nous n'avons pas encore abordé celle-ci, et il faudra attendre le chapitre sur l'espace d'adressage pour cela.
===Les microcontrôleurs PIC===
Les '''microcontrôleurs PIC''' regroupent des microcontrôleurs allant de microcontrôleurs 8 bits aux performances très faible, à des microcontrôleurs 32 bits bien plus puissants. Les microcontrôleurs PIC sont très utilisés dans l'embarqué ou d'informatique industrielle. Ils sont vendu à des volumes assez impressionnants, plusieurs millions par an. Et si vous avez ou êtes en train de faire des études d'électronique, je parie que vous les avez déjà vu en classe, ou que ce ne saurait tarder. Dans ce qui suit, nous allons nous concentrer sur les microcontrôleurs PIC 8 bits, à savoir les PIC 16, 16 et 18. Les PIC 24, qui sont des microcontrôleurs 16 bits, ne seront pas abordés.
Les microcontrôleurs PIC 8 bits sont une architecture Harvard, comme dit plus haut. Il y a aussi des registres pour les entrées et sorties. Les registres d'entrée-sortie permettent de lire ou écrire sur un port d'entrée-sortie ou de lire un ''timer''. En clair, les PIC ont un espace d'adressage séparé pour les entrées-sorties.
La mémoire ROM des PIC va de 1024 instructions à 4096 instructions. En comparaison, la mémoire RAM des microcontrôleurs PIC ne peut pas dépasser 256 adresses, et elle est encore plus petite en pratique sur certains modèles. Pour donner un exemple, le PIC16F84 a une RAM composée de 68 "registres" de 8 bits. Le terme "registres" devrait vous faire tiquer, mais c'est bien le terme utilisé dans la documentation des PIC. Et il faut admettre que la différence entre banc de registre et SRAM intégrée est floue, mais nous expliquerons pourquoi dans quelques paragraphes.
: Les PIC 18 peuvent adresser plus de 256 octets de RAM en utilisant la commutation de banques, une technique qui sera abordée dans plusieurs chapitres.
[[File:DocPIC16F84 3.png|centre|vignette|upright=3|Espaces d'adressage du PIC16F84.]]
Un détail est que la SRAM n'a qu'un seul port qui sert à la fois pour les lectures et écritures. Pour compenser, les PIC sont des architectures à accumulateur, où une opérande est lue depuis la SRAM, l'autre depuis l'accumulateur. Leur implémentation de l'accumulateur ajoute une petite subtilité : le résultat d'une opération arithmétique peut être enregistré ailleurs que dans l'accumulateur. Le résultat peut aussi remplacer la seconde opérande, celle lue en mémoire RAM. Dit autrement, le résultat est enregistré dans l'adresse mémoire source. Les instructions de calcul ont le choix : un bit dans leur encodage précise où enregistrer le résultat.
{|
|-
|[[File:DocPIC16F84 4.png|centre|vignette|upright=2|Microarchitecture simplifiée d'un microcontroleur PIC (ici, un 16F84).]]
|[[File:DocPIC16F84 5.png|centre|vignette|upright=2|Microarchitecture simplifiée d'un microcontroleur PIC (ici, un 16F84), avec les branchements directs.]]
|}
Outre l'accumulateur, les PIC disposent de registres de contrôle, d'un ''program counter'', d'un registre d'état, et d'un pointeur de pile. Un détail très important est que les registres sont mappés en mémoire, à quelques exceptions près ! En clair, on peut y accéder en lisant/écrivant à une adresse mémoire bien précise. Les seules registres qui ne sont pas mappés en mémoire sont l'accumulateur, les registres d'entrée-sortie, et la pile d'adresses de retour intégrée au processeur (voir plus bas). Par exemple, sur les modèles 16F, l'espace d'adressage fait 128 octets, dont 32 sont réservés aux registres du processeur, ce qui fait que seules 96 octets sont adressables comme de la RAM. Mais les 128 octets sont un seul et unique SRAM dans le processeur. Ce qui explique qu'il est difficile de séparer banc de registre et RAM principale sur ce processeur : les deux sont fusionnées ! Cela gaspille quelques adresses mémoire, mais permet une implémentation plus simple, avec un banc de registre unique.
: Les modèles PIC 17 ont rendu l'accumulateur mappé en mémoire RAM !
[[File:DocPIC16F84.png|centre|vignette|upright=2|DocPIC16F84]]
La petite taille de la ROM d'un PIC n'est pas une surprise. Les architectures 8 bits sont conçues pour ne pas utiliser beaucoup de transistors et être très simples. Aussi, utiliser une petite ROM est nécessaire. Mais il faut aussi adapter le jeu d'instruction, pour qu'il ait une bonne densité de code. Par exemple, il faut faire en sorte d'avoir des instructions assez courtes. Si les instructions font 16 bits au lieu de 32, on divise par deux le nombre de transistors nécessaire pour la mémoire ROM. La conséquence est que le jeu d’instruction des PIC est adapté à cette contrainte.
Les microcontrôleurs PIC utilisent un jeu d'instruction propriétaire, dont les instructions sont très petites. Les premières versions du jeu d'instruction utilisaient des instructions codées sur 12 bits, dont 5 pour l'adresse mémoire de la seconde opérande. Pour les branchements, 3 bits étaient utilisés pour l'opcode, 9 pour l'adresse de destination. Par la suite, les instructions ont été étendues à 13 bits sur les PIC1670, puis à 14, 15 et 16 bits. Les adresses ont alors été élargies, ce qui permet d'adresser en peu plus de mémoire RAM.
Il est intéressant de regarder comment les PIC font pour obtenir des instructions aussi courtes. Premièrement, le fait d'utiliser une architecture à accumulateur, couplé à une RAM très petite aident grandement. Les architectures à accumulateur ont besoin de préciser un opcode et une adresse mémoire pour chaque instruction, pas besoin de préciser de noms de registres ni le mode d'adressage. La taille des adresses mémoire est censé être un problème pour la densité de code, mais les adresses d'un processeur 8 bits font 8 bits. On peut alors avoir un jeu d'instruction étoffé, en utilisant des instructions 16 bits, qui concatènent un opcode et une adresse mémoire, d'un octet chacun.
Mais d'autres optimisations permettent d'avoir une bonne densité de code. Les PIC ont des branchements pour les appels et retour de fonction. Les PIC incorporent une pile d'appel de retour, qui fait 2 à 8 adresses suivant les modèles. Elle permet d'économiser quelques registres, car la pile d'appel n'est pas mappé dans l'espace d'adressage, elle n'est pas adressable. On économise ainsi 2 à 8 registres, sur 32-256 registres. De plus, cela simplifie l'encodage des instructions d'appel/retour de fonction, qui n'ont pas à préciser où enregistre l'adresse de retour.
Les PIC n'ont pas d'instructions de branchement conditionnels, ils font avec une SKIP instruction et des branchements inconditionnels. Du moins, c'est le principe, car si vous regardez la liste des instructions ci-dessous, vous verrez qu'il n'y a pas d'instruction SKIP. A la place, les instructions SKIP sont fusionnées avec d'autres instructions. Elles sont notamment fusionnées avec les instructions d'incrémentation et de décrémentation. Les PIC supportent une incrémentation normale, une décrémentation normale, une décrémentation fusionnée avec une instruction SKIP, et une incrémentation fusionnée avec une instruction SKIP. Les deux dernières incrémentent/décrémentent l'accumulateur et SKIP l'instruction suivante si le résultat est zéro. Elles permettent de fortement simplifier l'implémentation des boucles qui s'exécutent tant que leur compteur atteint zéro.
Les PIC disposent aussi d'instructions de manipulation de bit, pour tester/masquer un bit dans une opérande, 4 en tout. Il y a en a 4 en tout : mettre à 0, mettre à 1, tester si bit = 1, tester si bit = 0. Les instructions qui testent un bit prennent leur opérande dans l'accumulateur. Elles font le test du bit et décident s'il faut skipper l'instruction suivante ou non. Il y a aussi deux instructions de rotation à gauche et droite, qui tiennent compte de la retenue mémorisée dans le registre d'état. Par contre, il n'y a pas d'instructions de décalages, qui peuvent être émulées avec une rotation suivie d'un ET bit à bit. Mentionnons aussi une instruction pour inverser deux ''nibbles'' dans un octet.
Les modèles haute performance ajoutent des instructions d'addition avec retenue entrante, idem pour la soustraction. De telles instructions ssont très utiles pour faire des additions/soustractions sur des opérandes de 16 bits. Le processeur a beau être un CPU 8 bits, il peut être utilisé pour faire des calculs 16 bits, la performance est alors amoindrie, mais ce n'est pas un problème pour les applications d'un tel microcontroleur.
Les modèles intiaux, comme les PIC 10 et 12, ne supportaient pas les interruptions, mais c'est chose réglé sur les modèles plus récents. Ils ont même des registres séparés pour les interruptions et les programmes normaux. De plus, ils intégrent nativement un ''watchdog timer''.
{|class="wikitable" style="text-align:center"
|+ Jeu d'instruction des dodèles PCI 16
|-
! colspan="5" | Instructions diverses
|-
| colspan="3" | 00 0000 0000 0000 || NOP || Ne fait rien
|-
| colspan="3" | 00 0000 0000 1000 || RETURN || Instruction de retour pour une fonction
|-
| colspan="3" | 00 0000 0000 1001 || NOP || Instruction de retour pour une interruption
|-
| colspan="3" | 00 0000 0110 0011 || SLEEP || Mise en veille
|-
| colspan="3" | 00 0000 0110 0100 || CLRWDT || RESET le ''watchdog timer'', intégré dans le PIC
|-
! colspan="5" | Instructions de manipulation de bit
|-
| 0100 || Position du bit dans l'opérande || Adresse mémoire || BCF || Met le bit à 1
|-
| 0101 || Position du bit dans l'opérande || Adresse mémoire || BSF || Met le bit à 0
|-
| 0110 || Position du bit dans l'opérande || Adresse mémoire || BTFSC || Teste si le bit adressé est à 1
|-
| 0111 || Position du bit dans l'opérande || Adresse mémoire || BTFSS || Teste si le bit adressé est à 0
|-
! colspan="5" | Branchements
|-
| colspan="2" | 100 || Adresse mémoire || CALL || Appel de fonction
|-
| colspan="2" | 100 || Adresse mémoire || GOTO || Branchement inconditionnel
|-
! colspan="5" | Instructions logiques/arithmétiques avec opérande lue en mémoire RAM
|-
| colspan="5" | ''Le bit '''d''' dans l'opcode indique la destination : accumulateur ou adresse mémoire''.
|-
| colspan="2" | 0000001 || Adresse mémoire || MOVWF || Store (accumulateur vers destination)
|-
| colspan="2" | 000001d || Adresse mémoire || MOVWF || Met à zéro la destination (adresse ou registre)
|-
| colspan="2" | 000001d || Adresse mémoire || SUBWF || Soustraction
|-
| colspan="2" | 000010d|| Adresse mémoire || DECF || Décrémentation
|-
| colspan="2" | 000100d|| Adresse mémoire || IORWF || OU bit à bit
|-
| colspan="2" | 000101d|| Adresse mémoire || ANDWF || ET bit à bit
|-
| colspan="2" | 000110d || Adresse mémoire || XORWF || XOR bit à bit
|-
| colspan="2" | 000111d || Adresse mémoire || ADDWF VWF || Addition
|-
| colspan="2" | 001000d || Adresse mémoire || MOVF || LOAD
|-
| colspan="2" | 001001d || Adresse mémoire || COMF || NOT bit à bit
|-
| colspan="2" | 001010d || Adresse mémoire || INCF || Incrémentation
|-
| colspan="2" | 001011d || Adresse mémoire || DECFSZ || Décrémentation, puis instruction SKIP si résultat = 0
|-
| colspan="2" | 001100d || Adresse mémoire || RRF || Rotation à droite avec retenue entrante
|-
| colspan="2" | 001101d || Adresse mémoire || RLF || Rotation à gauche avec retenue entrante
|-
| colspan="2" | 001110d || Adresse mémoire || SWAPF || Echange deux ''niblle'' dans un octet
|-
| colspan="2" | 001111d || Adresse mémoire || INCFSZ || Incrémentation, puis instruction SKIP si résultat = 0
|-
! colspan="5" | Instructions logiques/arithmétiques avec constante immédiate
|-
| colspan="2" | 1100xx || Constante immédiate (8bits) || MOVLW || Copie constante dans accumulateur
|-
| colspan="2" | 1101xx || Constante immédiate (8bits) || RETLW || MOV fusionné avec un retour de fonction
|-
| colspan="2" | 111000 || Constante immédiate (8bits) || IORLW || OU
|-
| colspan="2" | 111001 || Constante immédiate (8bits) || ANDLW || ET
|-
| colspan="2" | 111010 || Constante immédiate (8bits) || XORLW || XOR
|-
| colspan="2" | 11110x || Constante immédiate (8bits) || SUBLW || Soustraction
|-
| colspan="2" | 11111x || Constante immédiate (8bits) || ADDLW || Addition
|}
Les PIC gèrent l'adressage absolu et immédiat, mais pas plus. L'adressage absolu, celui où l'adresse est intégrée dans l'instruction, est très simple à implémenter. Les adresses prennent moins d'un octet, vu que la taille de la RAM est très petite, les adresses sont très courtes, les intégrer dans des instructions elles-mêmes courtes n'est pas un problème. L'adresse est encodée sur 5 à 7 bits, selon le modèle, ce qui permet d'adresser entre 32 et 128 octets.
Les PIC ne supportent pas l'adressage indirect, mais peuvent l'émuler grâce à un '''registre d'adresse''' dédié. Il s'agit du registre FSR, qui mémorise l'adresse à lire/écrire. Il est possible de copier un pointeur dedans, qui provient soit de l'accumulateur, soit de la mémoire SRAM. Dans les deux cas, la donnée adressée est lue ou écrite dans un registre INDR, est un registre d’interfaçage rendu adressable. Le registre FSR est directement connecté sur le bus d'adresse.
Les modèles de base se débrouillent avec un registre FSR et un registre INDR, mais les modèles plus performants ont deux ou trois copies de chaque registre. Les modèles PIC18 ajoutent aussi des instructions LOAD/STORE qui émulent les modes d'adressage à post- ou pré-incrément/décrément, et le mode d'adressage "Base + Indice + Décalage", encore une fois en utilisant les registres FSR et INDR.
Avec tout ce qu'on vient de dire, vous devriez pouvoir comprendre la microarchitecture d'un PIC, qui est résumée dans ce schéma.
[[File:DocPIC16F84 all.png|centre|vignette|upright=2.5|Microarchitecture du PIC16F84.]]
===Les microcontrôleurs Intel 8051/8031===
Les microcontrôleurs Intel 8051/8031 sont des microcontrôleurs 8 bits, commercialisés par Intel. Elle contient un processeur 8/16 bits, de la mémoire ROM, une RAM de 128 octets, des ''timers'', et de nombreuses entrées-sorties. Il est relié à 4 ports sur lesquels il peut lire ou écrire 8 bits par port. Il contient aussi deux ''timers'' de 16 bits chacun, qui déclenchent des interruptions quand ils tombent à zéro ou à une valeur configurable. Il supporte des interruptions. L'ensemble utilise une architecture Harvard, contrairement à ce que pourrait faire croire le schéma ci-dessous.
[[File:Arkitektura mikro kontrollerit Intel 8051.png|centre|vignette|upright=2.5|Microcontrôleur 8051]]
[[File:Pinagem8031.jpg|vignette|Broches du 8051.]]
Ils ont de nombreuses ressemblances avec les microcontrôleurs PIC. Le processeur du 8051 est une architecture à accumulateur de 8 bits, ses registres sont mappés en mémoire RAM, il a un registre d'adresse dédié à l'adressage indirect et j'en passe. Mais il y a aussi des différences notables. Par exemple, le 8051 n'a pas de pile d'adresse de retour, contrairement aux processeurs PIC. Il fait autrement, à savoir qu'il gère une pile d'appel placée en mémoire RAM,ce qui est très différent.
Une autre différence est que les registres sont placés dans un banc de registre à part des 128 octets de SRAM. Il y a une SRAM séparée du banc de registre, contrairement à ce qu'on a sur les microcontrôleurs PIC. Par contre, les registres du processeur sont mappés en mémoire RAM, y compris l'accumulateur, le registre d'état, le ''program counter'', et bien d'autres. Mais le fait qu'ils soient séparés de la SRAM permet de les mapper dans l'espace d'adressage sans marcher sur les pieds de la SRAM. Pour comprendre comment, faisons une remarque : le processeur gère nativement des adresses de 8 bits, mais a 128 octets de SRAM. L'idée est de placer les registres dans les 128 octets de poids fort, au sommet de l'espace d'adressage. D'ailleurs, les entrées-sorties sont mappées dans cette portion de l'espace d'adressage.
Avec ce qu'on vient de dire, on peut donner la ''memory map'' de ce microcontroleur, pour la SRAM. Les 32 premières adresses sont réservés à la mémoire SRAM, c'est 32 octets de RAM utilisable à volonté par le programmeur. Les 16 adresses suivantes sont adressables bit par bit, ou octet par octet. L'intervalle bit-adressable va de l'adresse 32 (inclue) à l'adresse 47 (inclue). Les 96 octets suivants sont de la mémoire RAM adressable, affectée par défaut à la pile d'appel mais adressable via adressage direct si besoin. Les 128 octets de poids fort sont réservés aux registres et aux entrée-sorties mappées en mémoire.
[[File:Memory map du 8051.png|centre|vignette|upright=2|Memory map du 8051]]
Les 128 octets au sommet de l'espace d'adressage sont décrit dans le schéma ci-dessous. On voit que l'accumulateur est mappé dedans, de même que le registre d'état PSW et le ''program counter'' IP. Les ports d'entrée-sortie sont aussi mappés dedans. Une partie des octets sont bit-adressables, et cette partie inclus les registres du processeur et les ports d'entrées-sorties.
[[File:MFrey SFR MCS-51.svg|centre|vignette|upright=2|Memory map des 128 octets de poids fort du 8051]]
Pour ce qui est des instructions, le 8051 supporte les opérations de multiplications et de divisions, contrairement aux microcontrôleurs PIC qui se limitaient à l'addition et la soustraction.
Une autre particularité est que le processeur incorpore une '''unité de calcul de 1 bit'''. Elle permet de faire des opérations sur des bits, avec 17 instructions possibles au total. L'ALU de 1 bit est reliée à un accumulateur de 1 bit et 32 registres de 1 bits. Elle peut lire des opérandes de 1 bit en mémoire RAM ou sur les ports d'entrée-sortie, qui sont tous bit-adressables. Pour le dire autrement, chaque bit d'un port d'entrée-sortie a sa propre adresse mémoire, qui permet de le sélectionner. Il en est de même avec 18 adresses de la mémoire SRAM, ce qui permet d'adresser 144 bits (18 adresses * 8 bits par octet adressé).
[[File:Intel 8051 arch.svg|centre|vignette|upright=2|Microarchitecture de l'Intel 8051.]]
===Le Fairchild F8 et la console de jeu Fairchild Channel F===
Un autre exemple est la Fairchild F8 de la défunte entreprise Fairchild Semiconductor. Il incorpore un processeur 8 bits, c'est à dire que le processeur fait des calculs sur des entiers de 8 bits maximum, une mémoire RAM de 64 octets, ainsi qu'une mémoire ROM de 1 kibioctet. Les 64 octets de RAM sont certes très peu, mais c'est suffisant pour certaines applications simples, comme les caisses automatiques de l'époque, ou des applications embarquées. Et de toute façon, il est possible d'ajouter de la mémoire RAM supplémentaire si les 64 octets de RAM intégrée ne suffisent pas. Le système était donc modulaire, adaptable selon les besoins, peu cher pour son implémentation minimale sans RAM en plus.
Vu qu'il s'agit d'un des tout premiers ordinateurs, il est sorti à une époque où la technologie était rudimentaire. À cette époque, le processeur était composé de pièces détachées qu'il fallait souder ensemble pour obtenir un processeur fonctionnel. Ce n'est que plus tard qu'est apparu le micro-processeur, qui regroupe un processeur complet dans un seul circuit intégré. Le résultat est que le processeur du Fairchild F8 est coupé en deux, l'unité de calcul et l'unité de contrôle sont placés dans des pièces détachées séparés.
Le microcontrôleur est composé de trois à quatre pièces détachées, certaines étant optionnelles. La première est le '''3850 CPU''', qui regroupe l'unité de calcul et la mémoire RAM intégrée. La seconde est le PSU (''3851 Program Storage Unit''), qui regroupe la mémoire ROM et l'unité de contrôle, ''program counter'' inclut. S'il y a besoin d'utiliser plus de RAM, il faut ajouter un circuit d’interface mémoire, qui est au choix le ''3852 Dynamic Memory Interface'' (DMI) ou le ''3853 Static Memory Interface'', le premier étant connecté à une mémoire de type DRAM, l'autre à une SRAM (nous verrons ce que sont les DRAM et les SRAM dans le prochain chapitre).
[[File:Fairchild F8.png|centre|vignette|upright=2|Fairchild F8]]
Le système minimal est composé d'un PSU et d'un 3850, sans les circuits d'interface mémoire. Le tout donne un système avec un processeur 8 bit, 64 octets de RAM et 1 kibioctet de ROM, les deux mémoires étant intégrées dans le "processeur". Le processeur gérait 4 entrées-sorties, chacune étant reliée avec un bus de 8 bit au processeur. Au passage, en 1977, Mostek a créé un microcontrôleur qui regroupe un PSU et un 3850 : le Mostek 3870. Le système minimal n'avait pas de bus d'adresse, vu que la RAM était intégrée au processeur. C'est les 3852 et 3853 qui ajoutaient un bus d'adresse. Ils ajoutent un bus d'adresse de 16 bits, ce qui permet d'adresser 64 kibioctets de RAM.
[[File:Fairchild-Channel-F.jpg|vignette|un Fairchild Channel F]]
Le Fairchild F8 a été utilisé dans la Fairchild Channel F, une des toute première console de seconde génération, à savoir des consoles qui utilisaient des cartouches de jeu. Avant les consoles de seconde génération, les consoles étaient non-programmables. Elles étaient conçues pour faire tourner un jeu précis, aucun autre, le jeu étant implémenté dans leurs circuits.
La Fairchild Channel F est composé du système minimal, auquel on a ajouté une carte son rudimentaire et 2 kibioctets de mémoire vidéo. La mémoire vidéo sert uniquement pour afficher des images à l'écran : on écrit l'image à afficher dedans, un circuit vidéo se charge de l'afficher à l'écran automatiquement. Le processeur ne fait qu'écrire dans cette RAM vidéo, il ne peut pas en lire le contenu. De la RAM supplémentaire peut cependant être ajoutée dans les cartouches de jeu.
===Le HP Nanoprocessor : un processeur sans ALU===
Un dernier exemple est celui du processeur HP Nanoprocessor, de l'entreprise HP. Il a été commercialisé en 1974, en même temps que les premiers micro-processeurs d'Intel. Tous les processeurs de l'époque étaient des processeurs 8 bits et le HP Nanoprocessor ne faisait pas exception. Ce n'était pas un processeur haute performance, il était destiné à des applications d'informatique industrielle ou embarquée. D'ailleurs, il utilisait des transistors de type metal-gate, peu performants, là où ses contemporains utilisait des transistors en silicium, plus performants.
Mais une caractéristique qui rend cela encore plus claire est qu'il n'y a pas d'ALU ! En effet, ce processeur est incapable de faire des additions, des soustractions ou autres opérations simples ! Il est cependant capable d'effectuer des incrémentations et décrémentations, des décalages, des opérations logiques comme des ET/OU/NON/XOR et bien d'autres. Il supporte en tout 48 instructions, avec un support limité des modes d'adressage indirects. Les instructions de branchement étaient des instructions SKIP, il n'y avait pas d'instructions de branchement généralistes.
Pour ce qui est des registres, il disposait de 16 registres de 8 bits et d'un accumulateur. Niveau mémoire, il était relié à une mémoire ROM, rien de plus. Il n'avait de RAM supplémentaire qu'on pouvait lui adjoindre, il devait se débrouiller avec seulement ses registres. Et cela ne posait pas de problèmes pour son usage. Seul le mode d'adressage indirect à registre est supporté, il n'y a pas de registres d'indices. Ce mode d'adressage permet de lire des données en mémoire ROM, la ROM pouvant contenir des tableaux de valeurs constantes.
: Il est possible de lui adjoindre de la RAM via les ports d'entrée-sortie, ainsi qu'une ALU, mais RAM et ALU sont traités comme des périphériques avec lesquels on communique, ils ne sont pas intégrés au processeur.
Niveau micro-architecture, il incorporait une unité de calcul logique et un circuit comparateur. Le comparateur était un circuit comparateur série des plus basiques, qui était utilisé pour les instructions de branchement et associées. L'unité de calcul logique gérait des incrémentations/décrémentation, des décalages, les opérations logiques et quelques autres. L'unité de calcul logique était bit-slicée, à savoir conçue en assemblant 8 ALU de 1 bit chacune, enchainées en série. Le tout était combiné à des circuits de ''carry skip''.
[[File:Unité de calcul du HP nanonprocessor.png|centre|vignette|upright=2|Unité de calcul du HP nanoprocessor]]
Son unité de décodage d'instruction était très simple, essentiellement basée sur des portes NOR, grâce à un encodage efficace des instructions machine. Le ''program counter'' fait 11 bits, ce qui permet d'adresser une ROM de 2 kibioctets. Le ''program counter'' était relié à un circuit incrémenteur qui gérait les isntructions SKIP (il pouvait incrémenter le ''program counter'' par pas de 1 ou de 2 en cas de SKIP). Le processeur contient aussi deux registres, qui servent en quelque sorte de pile d'adresse de retour. Un premier registre mémorise l'adresse de retour d'une fonction, l'autre mémorise le ''program counter'' lors d'une interruption, pour savoir où brancher à la fin de l'interruption.
[[File:HP nanoprocessor.png|centre|vignette|upright=2.5|HP nanoprocessor]]
Fait intéressant, le concepteur du processeur a gracieusement donné les masques utilisés pour graver le silicium du processeur au site [https://www.cpushack.com/ CPU Shack]. Les masques en question sont disponibles ici :
* [https://www.cpushack.com/2020/08/20/hp-nanoprocessor-mask-set/ HP NanoProcessor Mask Set]
* [https://www.cpushack.com/2020/08/09/the-forgotten-ones-hp-nanoprocessor/ The Forgotten Ones: HP Nanoprocessor]
Les masques ont été analysés par Ken Shirrif dans cet article de blog :
* [https://www.righto.com/2020/09/hp-nanoprocessor-part-ii-reverse.html HP Nanoprocessor part II: Reverse-engineering the circuits from the masks]
==Les processeurs 8/16 bits à architecture Von Neumann==
L'usage d'une architecture Harvard est une solution pour adresser plus de mémoire avec des CPU 8 bits. Mais plusieurs microprocesseurs commerciaux n'utilisaient pas cette solution. À la place, c'était des architectures Von Neumann, mais qui étaient capables de gérer des adresses de 16 bits. Les données faisaient 8 bits, les registres faisaient 8 bits, mais quelques techniques permettaient de gérer des adresses de 16 bits. Nous parlerons de '''processeurs 8/16 bits''' pour les désigner, et nous allons les étudier à part.
Un point important est que la gestion d'adresses de 16 bits permet d'adresser 64 kibioctets, qui peuvent être remplis avec de la RAM et de la ROM. On a donc le meilleur des mondes : 64 kibioctets de mémoire, mais avec des données de 8 bits et les économies de circuit qui vont avec. L'avantage est que le processeur peut maintenant gérer une vraie pile d'appel, pas seulement une pile d'adresse de retour. Il lui suffit pour cela d'intégrer un pointeur de pile codé sur 16 bits.
===Les modes d'adressage par page des CPU Motorola===
Les processeurs Motorola 8 bits étaient des processeurs 8 bits avec un bus d'adresse de 16 bits. C'était des processeurs à accumulateur incorporant deux registres d'indice, un registre d'état, un pointeur de pile, et un ''program counter''. Tous les registres sont reliés au bus d'adresse, sauf le registre d'état et l’accumulateur. Tous les registres font 8 bits, sauf le ''program counter''. La pile est câblée pour être dans un bloc de 256 octets compris entre l'adresse 1 0000 0000 et l'adresse 1 1111 1111, ce qui fait que son adressage se fait avec un seul octet.
[[File:6502-architecture.svg|centre|vignette|upright=1.5|Architecture simplifiée du 6502.</br> X et Y : registres d'indice ;</br> S : le pointeur de pile ;</br> A : accumulateur ;</br>P : registre d'état.</br>]]
Les processeurs Motorola 8 bits utilisaient une méthode simple pour adresser 64 kibioctets de RAM, avec des registres de 8 bits. Pour cela, ils utilisaient une variante de l'adressage base + décalage. Elle améliore l'adressage absolu, qui intègre l'adresse à lire/écrire dans l'instruction elle-même. L'adresse en question est de 8 bits et n'encode que les 8 bits de poids faible de l'adresse, les 8 bits de poids fort sont dans un '''registre de page''' adressé implicitement. L'adresse finale est obtenue en concaténant ce registre avec l'adresse mémoire intégrée dans l’instruction. Le résultat est que la mémoire était découpée en blocs de 256 consécutifs, chacun pouvant servir de fenêtre de 256 octets. Une page est réservée pour la pile, la seconde, comme dit plus haut.
Formellement, ce mode d'adressage a des ressemblances avec la commutation de banques, une technique qu'on verra dans les chapitres sur l'espace d'adressage et la mémoire virtuelle. Mais ce n'en est pas du tout : le registre de page est utilisé uniquement pour les accès mémoire avec le mode d'adressage base + décalage, mais pas pour les autres accès mémoire, qui gèrent des adresses complètes. Notons que l'usage d'un registre de page dédié fait que celui-ci est adressé implicitement.
Il faut noter que la technique a été utilisée sur des processeurs 16 bits, pour contourner la petite taille des instructions. Un exemple est celui du HP 2100, un processeur 16 bits. Il avait un registre de page de 5 bits et encodait 10 bits d'adresse dans ses instructions. Ses instructions d'accès mémoire disposaient d'un bit qui choisit quel mode d'adressage utiliser. S'il était à 0, l'adressage absolu était utilisé, le registre de page n'était pas utilisé. Mais s'il était à 1, le registre de page était utilisé pour calculer l'adresse.
Une évolution de l'adressage précédent est le '''mode page direct'''. Avec lui, le registre de page est étendu et contient une adresse mémoire complète. L'adresse finale n'est pas obtenue par concaténation, mais en additionnant le registre de page avec l'adresse fournie par adressage absolu + décalage. Un exemple est celui des premiers processeurs Motorola, qui géraient des adresses courtes de 8 bits. L'adresse courte de 8 bits correspondait non pas aux 256 premiers octets de la mémoire, mais à une fenêtre de 256 octets déplaçable en mémoire. La position de la fenêtre de 256 octets était spécifiée par le registre de page de 16 bits, qui précisait l'adresse du début de la fenêtre, celle de sa première donnée.
Il s'agit donc formellement d'adressage base + décalage, à un détail près : il n'y a qu'un seul registre de base. Le fait que ce registre de base soit unique fait qu'il est adressé implicitement, on n'a pas à encoder le numéro/noms de registre dans l'instruction. Le registre de base est utilisé uniquement pour l'adressage absolu, pas pour les autres accès mémoire. S'il y a des ressemblances avec la segmentation, une technique de mémoire virtuelle qu'on abordera dans quelques chapitres, ce n'en est pas vu que le registre de base est utilisé seulement pour un mode d'adressage bien précis.
===Le ''pseudo-aliasing'' des registres des processeurs Intel x86===
Voyons maintenant le cas des anciens processeurs 8 bits d'Intel à savoir l'Intel 4004, 4040, 8008 et 8080. Le Z80, un processeur inspiré des CPU Intel 8 bits, est aussi concerné. Avant de poursuivre, parlons des registres de ces processeurs. Les premiers CPU Intel incorporaient 7 registres de 8 bits nommés A, B, C, D, E, F, H, L, SP. Ils correspondent respectivement à : l'accumulateur A ; six registres nommés B, C, D, E, H et L ; le registre d'état F ; le pointeur de pile SP. Le Z80 ajoute deux registres d'indice X et Y. De plus, le Z80 dispose de registres d'interruption, qui sont en quelque sorte des copies des registres A, B, C, D, E, F, H, L. Le tout est illustré dans le tableau ci-dessous.
{|class="wikitable" style="text-align:center;"
|-
!
! Registres des CPU Intel
! Registres supplémentaires du Z80
|-
! Accumulateur
| A
| A'
|-
! Registre d'état
| F
| F'
|-
! Registres généraux
| B, C, D, E, H, L
| B', C', D', E', H', L'
|-
! Pointeur de pile
| colspan="2" | SP (sauf pour le 8008)
|-
! Registres d'indice
|
| X et Y
|}
Le 8008 incorpore une pile d'appel de 7 adresses, dans le processeur lui-même. Il en est de la même avec le 4004 et le 4040, comme on le verra dans la section sur les processeurs 4 bits. Mais le 8080 et le 8085 ont remplacé le tout par un simple pointeur de pile, afin d'avoir une véritable pile d'appel. Autant c'est impossible d'avoir une pile d'appel avec seulement 256 octets de mémoire, autant on peut se le permettre avec 65 536 adresses.
Pour gérer des adresses de 16 bits, ils auraient pu utiliser des registres d'adresse séparés, mais on préféré un système de '''pseudo-''aliasing'' de registres'''. Formellement, c'est un système qui concatène deux registres 8 bits pour obtenir une adresse de 16 bits. L’appariement a lieu lors de certaines opérations bien précises, qui n'ont de sens que pour les adresses : la lecture/écriture en mémoire, et l'incrémentation.
Il y avait cependant des contraintes quant aux paires de registres possibles, toutes les paires de registres n'étaient pas autorisées. Les CPU concernés sont donc des processeurs hybrides accumulateur-registre généraux. L'accumulateur ne peut pas être appairé, seuls les registres généraux le peuvent. Le Z80 autorise plus de paires que les CPU Intel. Voici les paires de registres qui pouvaient servir d'adresse 16 bits :
* Les CPU 8008 d'Intel autorisait une seule paire formée des registres H et L.
* Les autres processeurs, à savoir le 8080, le 8085 et le Z80, autorisaient : les paires BC, DE et HL.
Le 8008 ne gérait que des opérations sur 8 bits. Mais le 8080 et le 8085 ont ajouté des instructions 16 bits qui agissaient sur des paires de registre, que le Z80 a repris. Une paire de registres est considérée comme un registre unique de 16 bits pour certaines opérations arithmétiques, dont l'incrémentation. Voici la liste des instructions concernées :
* INC et DEC pour l'incrémentation et la décrémentation ;
* DAD : additionne le registre HL avec une autre paire (Hl inclus) ;
* LXI : copie une constante immédiate dans une paire de registres ;
* LHLD : lit 16 depuis la mémoire et l'enregistre dans une paire de registres ;
* SHLD : copie 16 bits depuis une paire de registres et l'enregistre en mémoire ;
* PUSH et POP : empile ou dépilent une paire de registre sur la pile ;
* XTHL : échange la paire HL avec les 16 bits au sommet de la pile d'appel ;
* XCHG : échange le contenu de la paire HL et DE.
Pour résumer, le processeur avait des instructions LOAD, STORE, PUSH et POP adaptées pour gérer des paires de registre. De plus, l'instruction XCHG permettait d’échanger le contenu des paires DE et HL. L'instruction a été étendue sur les processeurs 16 bits pour échanger tous les registres. Mais l'implémentation était alors différente. L'incrémentation sur une paire de 16 bit était très utile, car les adresses sont souvent incrémentées quand on parcours un tableau. Ces instructions nous donnent quelques indices sur ce qu'il y a dans le processeur.
Le système de pseudo-aliasing a un impact sur le banc de registre. Le banc de registre regroupe les registres généraux et le pointeur de pile, mais ne contient pas l'accumulateur. Les contraintes sur les paires de registres possibles ne s'expliquent que d'une seule manière : le banc de registre contient des registres de 16 bits, une paire de registres 8 bits est mémorisée dans un registre unique. Il faut donc faire une différence entre les registres architecturaux de 8 bits, et les registres réels de 16 bits.
Le banc de registre a un port de 8 bits pour les données, qui est fabriqué à partir d'un port 16 bits auquel on a rajouté un multiplexeur pour choisir soit l'octet de poids faible, soit l'octet de poids fort. Le bus de données fait 8 bits, ce qui fait que les instructions LOAD, STORE, PUSH et POP pour paires 16 bits sont réalisées en deux fois : on lit/écrit l'octet de poids faible, puis celui de poids fort. Par contre, le bus d'adresse fait bien 16 bits. Cela suggère que le banc de registre dispose d'un port de 16 bits dédié aux adresses, en plus du port de données 8 bits.
[[File:Architecture d'un CPU 8-16 bits avec un banc de registre double port.png|centre|vignette|upright=2|Architecture d'un CPU 8-16 bits avec un banc de registre double port]]
L'incrémentation d'une paire 16 bits ne coute rien à implémenter, ou presque. En effet, le processeur incorpore un incrémenteur 16 bits pour le ''program counter'', qui est relié au bus d'adresse. L'idée est de rentabiliser cet incrémenteur, en lui permettant d'incrémenter des données/adresses de 16 bits obtenues via pseudo-aliasing. De même, il peut être utilisé pour incrémenter le pointeur de pile, voire un compteur de rafraichissement mémoire (pour rappel, le rafraîchissement mémoire demande de balayer la mémoire d'adresse en adresse et été fait par le CPU à l'époque). Pour cela, il suffit de connecter le ''program counter'', le banc de registre, et l'incrémenteur, via un bus dédié.
[[File:Calcul d'adresse par ALU dédiée avec PC séparé.png|centre|vignette|upright=2|Calcul d'adresse par ALU dédiée avec PC séparé]]
Notez qu'on peut encore simplifier le tout en placant le ''program counter'' dans le banc de registre, ce qui ne gênera pas le travail de l'incrémenteur mais simplifiera le câblage au bus d'adresse. Ce n'était pas systématique, certains processeurs mettaient le ''program counter'' dans le banc de registre, d'autres non.
: Inclure le ''program counter'' dans le banc de registre permet parfois de remplir un vide. Par exemple, sur un processeur avec 12 registres, le banc de registre devrait faire idéalement 16 registres, inclure le ''program counter'' dedans fait monter le tout à 13.
[[File:Architecture d'un CPU 8-16 bits.png|centre|vignette|upright=2|Architecture d'un CPU 8-16 bits]]
Les processeurs Intel 8 bits, à savoir le 8008, le 8080 et le 8085 ; mettaient le ''program counter'' dans le banc de registre. Vous avez donc toutes les armes pour comprendre leur micro-architecture. Par exemple, voici la micro-architecture du processeur 8080. Remarquez le banc de registre, qui contient tous les registres sauf l'accumulateur et le registre. Il a deux ports : un pour les adresses et un pour les données. Notez le dé-multiplexeur sur le port de donnée. Pour le reste, il s'agit d'une architecture à accumulateur hybride des plus classiques.
[[File:Intel 8080 arch.svg|centre|vignette|upright=3|Microarchitecture de l'Intel 8080.]]
Le Z80 est un processeur inspiré du design des processeurs Intel 8 bits, mais avec pas mal d'améliorations. Un point particulier de ce processeur est son banc de registre. Il contient tous les registres du processeur, y compris l'accumulateur et le registre d'état ! Les seuls registres en-dehors du banc de registre sont le ''program counter'' et un compteur de rafraichissement mémoire IR.
Un autre point particulier est que les registres dans le banc de registres avaient une copie séparée accessible uniquement pour les interruptions, via fenêtrage de registres. Et l'accumulateur et le registre d'état étant dans le banc de registre, il y avait deux accumulateurs et deux registres d'état. Les registres A, B, C, D, E et F étaient dupliqués, par le pointeur de pile ni les registres d'indice. Les copies des registres étaient nommées A', B', C', D', E' et F'.
Le Z80 supportait des instructions d'échange de registre en plus des CPU Intel 8 bits. L'instruction EX peut échanger soit le contenu des paires D,E et H,F, soit la paire A,F avec la paire A',F'. L'instruction EXX échange les paires BC, DE, HL avec les paires BC', DE', HL'. En faisant cela, le programmeur pouvait utiliser deux fois plus de registres généraux s'il n'utilisait pas les interruptions. L'échange de paires se fait sans copies de registres, mais simplement en modifiant l'adresse envoyée sur le banc de registre. Pour cela, plusieurs bascules mémorisent des bits qui indiquent si les paires ont été échangées ou non. Il y a une bascule pour les paires DE , HL ; une autre pour les paires A,F et paire A',F', une dernière pour l'instruction EXX. En combinant ces bascules avec les noms de registres envoyés par le séquenceur, on peut échanger les paires de registres.
==Le cas particulier des processeurs 4 bits : le 4004 d'Intel==
L'Intel 4004 était le tout premier micro-processeur. Il s'agissait d'un microprocesseur de 4 bits, basé sur une architecture à accumulateur. Il disposait d'un accumulateur et de 16 registres d'indice, tous de 4 bits. Il faisait des calculs sur des données de 4 bits, appelées des nibbles. Cependant, sur ses 46 instructions machines supportées, 41 agissaient sur des opérandes de 8 bits, les 5 restantes sur des opérandes de 16 bits. Simplement, les calculs se faisaient en deux fois, en échangeant des données entre mémoire RAM et accumulateur.
Le 4004 est un circuit intégré avec peu de broches. Il dispose notamment d'un bus de données/adresse, qui est multiplexé, c’est-à-dire qu'il sert alternativement de bus de données et de bus d'adresse selon les besoins. Le bus de commande mémoire fait 5 bits, dont 4 pour les chips de RAM, un pour la ROM. Les adresses sont codées sur 12 bits, les données sur 4 et les instructions sur 8 bits. L'envoi d'une adresse sur le bus se fait en plusieurs fois, de même que la lecture d'une instruction. Il s'agit là d'une adaptation pour outrepasser les limitations d'un processeur 4 bit.
[[File:Intel 4004 processor pinout.png|centre|vignette|upright=2|Broches de l'Intel 4004. Nous verrons à quoi elles servent plus bas.]]
===L'espace d'adressage de l'Intel 4004===
Les adresses du processeur sont sur 12 bits, ce qui fait 4096 adresses différentes. Elles regroupent à la fois la ROM et la mémoire RAM, vu que l'architecture est une sorte de mélange bizarre entre une architecture Von Neumann et Harvard. Le processeur gère bien deux espaces d'adressage séparés, mais la RAM et la ROM sont reliés au même bus. La sortie CM-ROM du processeur indique si l'adresse envoyée correspond à la RAM ou la ROM. Un circuit de décodage d'adresse active ou désactive la RAM selon la valeur de ce bit, l'inverse pour la ROM, en agissant sur leurs bits Chip Select. Seule la RAM ou la ROM répondent alors à l'adresse.
Pour ce qui est de la RAM, le circuit de décodage d'adresse pouvait gérer au maximum 1024 adresses différentes, chacune contenant un nibble. Pour cela, le CPU 4004 était relié à une ou plusieurs RAM externes, des Intel 4002. Chaque Intel 4002 contenait 64 nibbles de données, plus 16 nibbles de statut qu'on ne détaillera pas ici. Les nibbles de statut étaient accessibles en utilisant des instructions d'entrée-sortie, donc pas avec des lectures/écritures mémoire. Les 64 nibbles de données sont découpés en 4 groupes de 16 nibbles. Le CPU pouvait être relié à maximum 16 Intel 4002, ce qui fait 1024 nibbles de données et 256 nibbles de statut. L'ensemble permet de remplir l'espace d'adressage de 1024 adresses.
===Le registre de page et le pseudo-aliasing des registres===
Sélectionner une adresse mémoire utilisait un mélange entre pseudo-aliasing et registre de page. Pour les données, les 1024 adresses étaient découpées en 4 pages de 256 adresses. Pour la ROM, les 4096 adresses étaient découpées en 16 pages de 256 adresses. Localiser une donnée dans une page ne requiert que 8 bits, 2/4 bits supplémentaires permettent de sélectionner la page voulue. Le registre de page était dans le processeur lui-même, et était relié aux sorties du processeur nommées CM-RAM 0, 1, 2 et 3. Les 4 sorties encodaient un nombre qui permet de sélectionner le numéro de page voulu.
Le registre de page fait 5 bits : un pour distinguer RAM et ROM, 4 bits pour sélectionner la page voulue. L'avantage est que la carte mère gère au maximum 16 chips de RAM, ce qui colle parfaitement avec les 4 utilisés pour sélectionner une page. Un chip de RAM correspond à une page, et chacun est activé ou désactivé suivant la page sélectionnée. Pour cela, il suffit d'ajouter un décodeur sur la carte mère, qui prend les 4 bits du registre de page et fournit les signaux Chip Select aux différents chips de RAM.
Reste alors à utiliser les 8 bits d'adresse à l'intérieur d'un chip de RAM. Le 4004 permettait de concaténer deux registres d'indice de 4 bits pour former une adresse de 8 bits. Les instructions d'accès mémoire pouvaient ainsi préciser une paire de registre d'indice pour préciser quelle adresse lire/écrire. Idem pour les branchements indirects : le processeur supportait une instruction de branchement indirect qui précisait l'adresse dans une paire de registres d'indice. Les registres d'indice sont donc assez mal nommés sur cette architecture, vu qu'ils peuvent servir soit de registre d'indice, soit de demi-registre d'adresse. Il s'agit là du système de pseudo-aliasing des registres, mais appliqué aux registres d'indice.
L'Intel 4004 gérait deux instructions pour gérer les adresses mémoires. La première, l'instruction DCL (''Designate Command Line'') configure le registre de page. Elle prend en entrée un numéro de page et le copie dans le registre de page. L'opérande peut provenir d'un registre d'indice ou de l'accumulateur. La seconde, l'instruction SRC (''Send Register Control'') concatène deux registres d'indice pour obtenir une adresse de 8 bits. Un accès mémoire se fait donc en maximum trois instructions : une qui configure le registre de page si ce n'est pas déjà fait, une instruction SRC pour envoyer l'adresse, et une troisième instruction qui dit s'il faut faire une lecture ou une écriture.
===La microarchitecture de l'Intel 4004===
Il incorporait une pile d'adresse de retour intégrée au processeur. La pile d'adresse acceptait exactement 3 adresses maximum. Elle était regroupée avec le ''program counter'' dans un banc de registre, de 4 registres. Le ''program counter'' et le pointeur de pile faisaient chacun 12 bits, soit trois nibble. Ils étaient incrémentés par un incrémenteur dédié.
SI on omet le registre de page et la pile d'adresse, le 4004 est une architecture à accumulateur des plus classiques, avec un bus interne unique, un banc de registre pour les registres d'indices, un accumulateur relié à une unité de calcul. Les registres d'indice étaient dans un banc de registre séparés, car ils faisaient 4 bits chacun, contrairement au pointeur de pile et le ''program counter''. Un détail important est que les bancs de registres du 4004 étaient implémentés avec de la DRAM, et non des registres usuels fabriqués avec des bascules 1 bit.
[[File:Microarchitecture de l'Intel 4004.png|centre|vignette|upright=2.5|Microarchitecture de l'Intel 4004]]
<noinclude>
{{NavChapitre | book=Fonctionnement d'un ordinateur
| prev=Les architectures à pile et mémoire-mémoire
| prevText=Les architectures à pile et mémoire-mémoire
| next=Les processeurs de traitement du signal
| nextText=Les processeurs de traitement du signal
}}
</noinclude>
jqo4prqxjoqw0t10cylq48cb17bdql2
765727
765726
2026-05-01T20:20:50Z
Mewtow
31375
/* Les microcontrôleurs Intel 8051/8031 */
765727
wikitext
text/x-wiki
Nous avons déjà abordé la notion de processeur 8, 16, 32, 64 bits. Elle désigne la taille des registres généraux, ou de l'accumulateur. De nos jours, les processeurs 32 et 64 bits sont la norme, mais les premiers micro-processeurs étaient des processeurs 4 et 8, avant de passer rapidement au 16 bits. La raison est que leur budget en transistor limité faisait qu'on ne pouvait pas utiliser une ALU trop grande : une ALU 8 bit prend deux fois moins de place et de transistors qu'une ALU 16 bits. Cependant, les processeurs 8 bits avaient de sérieuses limitations qui étaient compensées par diverses solutions. Dans ce chapitre, nous allons faire une revue rapide des processeurs 8 bits et de leurs fonctionnalités.
La principale limitation des CPU 8 bits était l'adressage : des registres de 8 bits limitaient l'espace d'adressage à seulement 256 adresses, soit à peine 256 octets ! Intuitivement, on se dit que 256 octets est purement impraticable, on ne peut rien faire d'intéressant avec seulement 256 de RAM + ROM. Et c'est partiellement vrai. L'adage veut que 16 bits est la taille minimale intéressante, la limite à partir de laquelle on a assez de mémoire RAM/ROM pour coder des applications intéressantes. Mais 256 octets de RAM est largement suffisant sur de nombreux systèmes embarqués simples s'en accommodent : des caisses enregistreuses, des systèmes de régulation de feu de circulation, etc.
Pour les applications demandant plus de mémoire RAM, les CPU de l'époque contournaient la limitation de 256 octets de RAM avec de nombreux stratagèmes. Dans ce qui va suivre, nous allons séparer les CPU 8 bits selon qu'ils utilisent une architecture Harvard ou une architecture Von Neumann. La raison est qu'une architecture Harvard permet en soi de contourner partiellement ce problème d'adressage. Les choses sont plus compliquées avec une architecture Von Neumann.
==Les processeurs 8/16 bits à architecture Harvard ==
La première solution est d'utiliser une architecture Harvard. Le processeur 8 bit a alors deux espaces d'adressage : un pour la RAM, un autre pour la ROM. Et les deux utilisent des adresses de taille différente. La ROM est reliée à un bus d'adresse de 16 bits, alors que la RAM est elle connectée à un bus d'adresse de 8 bits. La RAM est donc limitée à 256 octets, alors que la ROM peut monter jusqu'à 64 kibioctets. Mine de rien, faire ainsi est largement suffisant.
Pour encore améliorer la situation, il est possible d'utiliser une architecture Harvard modifiée, qui permet de lire des données depuis la mémoire ROM. Cela réduit encore plus les besoins en mémoire RAM. Les constantes manipulées par le programme sont mémorisées en ROM, lues depuis la ROM, au lieu d'être chargées en RAM. Avec ce genre de stratagèmes, 256 octets de RAM est largement suffisant sur de nombreux systèmes, à condition qu'on ait assez de ROM pour coder un programme digne de ce nom. Par exemple, de nombreux systèmes embarqués simples s'en accommodent : des caisses enregistreuses, des systèmes de régulation de feu de circulation, etc.
Les processeurs 8 bits intègrent parfois les 256 octets de RAM directement dans le processeur, dans le banc de registres ! Beaucoup en implémentaient moins, avec par exemple seulement 64 octets de RAM, ou 32 octets, ou 128 octets. L'avantage est que cela élimine le bus pour les données, ce qui économise beaucoup de broches sur le circuit intégré du CPU. Et pour les applications demandant plus de RAM, on pouvait ajouter un circuit séparé qui permettait d'adresser une RAM plus grande. Et c'est ce qui explique que cette solution est beaucoup utilisée sur les microcontrôleurs peu puissants. Les exemples qui vont suivre devraient vous convaincre.
: Les processeurs de ce type implémentent des optimisations pour adresser plus de 256 octets de RAM. La plus connue est la commutation de banques. Mais nous n'avons pas encore abordé celle-ci, et il faudra attendre le chapitre sur l'espace d'adressage pour cela.
===Les microcontrôleurs PIC===
Les '''microcontrôleurs PIC''' regroupent des microcontrôleurs allant de microcontrôleurs 8 bits aux performances très faible, à des microcontrôleurs 32 bits bien plus puissants. Les microcontrôleurs PIC sont très utilisés dans l'embarqué ou d'informatique industrielle. Ils sont vendu à des volumes assez impressionnants, plusieurs millions par an. Et si vous avez ou êtes en train de faire des études d'électronique, je parie que vous les avez déjà vu en classe, ou que ce ne saurait tarder. Dans ce qui suit, nous allons nous concentrer sur les microcontrôleurs PIC 8 bits, à savoir les PIC 16, 16 et 18. Les PIC 24, qui sont des microcontrôleurs 16 bits, ne seront pas abordés.
Les microcontrôleurs PIC 8 bits sont une architecture Harvard, comme dit plus haut. Il y a aussi des registres pour les entrées et sorties. Les registres d'entrée-sortie permettent de lire ou écrire sur un port d'entrée-sortie ou de lire un ''timer''. En clair, les PIC ont un espace d'adressage séparé pour les entrées-sorties.
La mémoire ROM des PIC va de 1024 instructions à 4096 instructions. En comparaison, la mémoire RAM des microcontrôleurs PIC ne peut pas dépasser 256 adresses, et elle est encore plus petite en pratique sur certains modèles. Pour donner un exemple, le PIC16F84 a une RAM composée de 68 "registres" de 8 bits. Le terme "registres" devrait vous faire tiquer, mais c'est bien le terme utilisé dans la documentation des PIC. Et il faut admettre que la différence entre banc de registre et SRAM intégrée est floue, mais nous expliquerons pourquoi dans quelques paragraphes.
: Les PIC 18 peuvent adresser plus de 256 octets de RAM en utilisant la commutation de banques, une technique qui sera abordée dans plusieurs chapitres.
[[File:DocPIC16F84 3.png|centre|vignette|upright=3|Espaces d'adressage du PIC16F84.]]
Un détail est que la SRAM n'a qu'un seul port qui sert à la fois pour les lectures et écritures. Pour compenser, les PIC sont des architectures à accumulateur, où une opérande est lue depuis la SRAM, l'autre depuis l'accumulateur. Leur implémentation de l'accumulateur ajoute une petite subtilité : le résultat d'une opération arithmétique peut être enregistré ailleurs que dans l'accumulateur. Le résultat peut aussi remplacer la seconde opérande, celle lue en mémoire RAM. Dit autrement, le résultat est enregistré dans l'adresse mémoire source. Les instructions de calcul ont le choix : un bit dans leur encodage précise où enregistrer le résultat.
{|
|-
|[[File:DocPIC16F84 4.png|centre|vignette|upright=2|Microarchitecture simplifiée d'un microcontroleur PIC (ici, un 16F84).]]
|[[File:DocPIC16F84 5.png|centre|vignette|upright=2|Microarchitecture simplifiée d'un microcontroleur PIC (ici, un 16F84), avec les branchements directs.]]
|}
Outre l'accumulateur, les PIC disposent de registres de contrôle, d'un ''program counter'', d'un registre d'état, et d'un pointeur de pile. Un détail très important est que les registres sont mappés en mémoire, à quelques exceptions près ! En clair, on peut y accéder en lisant/écrivant à une adresse mémoire bien précise. Les seules registres qui ne sont pas mappés en mémoire sont l'accumulateur, les registres d'entrée-sortie, et la pile d'adresses de retour intégrée au processeur (voir plus bas). Par exemple, sur les modèles 16F, l'espace d'adressage fait 128 octets, dont 32 sont réservés aux registres du processeur, ce qui fait que seules 96 octets sont adressables comme de la RAM. Mais les 128 octets sont un seul et unique SRAM dans le processeur. Ce qui explique qu'il est difficile de séparer banc de registre et RAM principale sur ce processeur : les deux sont fusionnées ! Cela gaspille quelques adresses mémoire, mais permet une implémentation plus simple, avec un banc de registre unique.
: Les modèles PIC 17 ont rendu l'accumulateur mappé en mémoire RAM !
[[File:DocPIC16F84.png|centre|vignette|upright=2|DocPIC16F84]]
La petite taille de la ROM d'un PIC n'est pas une surprise. Les architectures 8 bits sont conçues pour ne pas utiliser beaucoup de transistors et être très simples. Aussi, utiliser une petite ROM est nécessaire. Mais il faut aussi adapter le jeu d'instruction, pour qu'il ait une bonne densité de code. Par exemple, il faut faire en sorte d'avoir des instructions assez courtes. Si les instructions font 16 bits au lieu de 32, on divise par deux le nombre de transistors nécessaire pour la mémoire ROM. La conséquence est que le jeu d’instruction des PIC est adapté à cette contrainte.
Les microcontrôleurs PIC utilisent un jeu d'instruction propriétaire, dont les instructions sont très petites. Les premières versions du jeu d'instruction utilisaient des instructions codées sur 12 bits, dont 5 pour l'adresse mémoire de la seconde opérande. Pour les branchements, 3 bits étaient utilisés pour l'opcode, 9 pour l'adresse de destination. Par la suite, les instructions ont été étendues à 13 bits sur les PIC1670, puis à 14, 15 et 16 bits. Les adresses ont alors été élargies, ce qui permet d'adresser en peu plus de mémoire RAM.
Il est intéressant de regarder comment les PIC font pour obtenir des instructions aussi courtes. Premièrement, le fait d'utiliser une architecture à accumulateur, couplé à une RAM très petite aident grandement. Les architectures à accumulateur ont besoin de préciser un opcode et une adresse mémoire pour chaque instruction, pas besoin de préciser de noms de registres ni le mode d'adressage. La taille des adresses mémoire est censé être un problème pour la densité de code, mais les adresses d'un processeur 8 bits font 8 bits. On peut alors avoir un jeu d'instruction étoffé, en utilisant des instructions 16 bits, qui concatènent un opcode et une adresse mémoire, d'un octet chacun.
Mais d'autres optimisations permettent d'avoir une bonne densité de code. Les PIC ont des branchements pour les appels et retour de fonction. Les PIC incorporent une pile d'appel de retour, qui fait 2 à 8 adresses suivant les modèles. Elle permet d'économiser quelques registres, car la pile d'appel n'est pas mappé dans l'espace d'adressage, elle n'est pas adressable. On économise ainsi 2 à 8 registres, sur 32-256 registres. De plus, cela simplifie l'encodage des instructions d'appel/retour de fonction, qui n'ont pas à préciser où enregistre l'adresse de retour.
Les PIC n'ont pas d'instructions de branchement conditionnels, ils font avec une SKIP instruction et des branchements inconditionnels. Du moins, c'est le principe, car si vous regardez la liste des instructions ci-dessous, vous verrez qu'il n'y a pas d'instruction SKIP. A la place, les instructions SKIP sont fusionnées avec d'autres instructions. Elles sont notamment fusionnées avec les instructions d'incrémentation et de décrémentation. Les PIC supportent une incrémentation normale, une décrémentation normale, une décrémentation fusionnée avec une instruction SKIP, et une incrémentation fusionnée avec une instruction SKIP. Les deux dernières incrémentent/décrémentent l'accumulateur et SKIP l'instruction suivante si le résultat est zéro. Elles permettent de fortement simplifier l'implémentation des boucles qui s'exécutent tant que leur compteur atteint zéro.
Les PIC disposent aussi d'instructions de manipulation de bit, pour tester/masquer un bit dans une opérande, 4 en tout. Il y a en a 4 en tout : mettre à 0, mettre à 1, tester si bit = 1, tester si bit = 0. Les instructions qui testent un bit prennent leur opérande dans l'accumulateur. Elles font le test du bit et décident s'il faut skipper l'instruction suivante ou non. Il y a aussi deux instructions de rotation à gauche et droite, qui tiennent compte de la retenue mémorisée dans le registre d'état. Par contre, il n'y a pas d'instructions de décalages, qui peuvent être émulées avec une rotation suivie d'un ET bit à bit. Mentionnons aussi une instruction pour inverser deux ''nibbles'' dans un octet.
Les modèles haute performance ajoutent des instructions d'addition avec retenue entrante, idem pour la soustraction. De telles instructions ssont très utiles pour faire des additions/soustractions sur des opérandes de 16 bits. Le processeur a beau être un CPU 8 bits, il peut être utilisé pour faire des calculs 16 bits, la performance est alors amoindrie, mais ce n'est pas un problème pour les applications d'un tel microcontroleur.
Les modèles intiaux, comme les PIC 10 et 12, ne supportaient pas les interruptions, mais c'est chose réglé sur les modèles plus récents. Ils ont même des registres séparés pour les interruptions et les programmes normaux. De plus, ils intégrent nativement un ''watchdog timer''.
{|class="wikitable" style="text-align:center"
|+ Jeu d'instruction des dodèles PCI 16
|-
! colspan="5" | Instructions diverses
|-
| colspan="3" | 00 0000 0000 0000 || NOP || Ne fait rien
|-
| colspan="3" | 00 0000 0000 1000 || RETURN || Instruction de retour pour une fonction
|-
| colspan="3" | 00 0000 0000 1001 || NOP || Instruction de retour pour une interruption
|-
| colspan="3" | 00 0000 0110 0011 || SLEEP || Mise en veille
|-
| colspan="3" | 00 0000 0110 0100 || CLRWDT || RESET le ''watchdog timer'', intégré dans le PIC
|-
! colspan="5" | Instructions de manipulation de bit
|-
| 0100 || Position du bit dans l'opérande || Adresse mémoire || BCF || Met le bit à 1
|-
| 0101 || Position du bit dans l'opérande || Adresse mémoire || BSF || Met le bit à 0
|-
| 0110 || Position du bit dans l'opérande || Adresse mémoire || BTFSC || Teste si le bit adressé est à 1
|-
| 0111 || Position du bit dans l'opérande || Adresse mémoire || BTFSS || Teste si le bit adressé est à 0
|-
! colspan="5" | Branchements
|-
| colspan="2" | 100 || Adresse mémoire || CALL || Appel de fonction
|-
| colspan="2" | 100 || Adresse mémoire || GOTO || Branchement inconditionnel
|-
! colspan="5" | Instructions logiques/arithmétiques avec opérande lue en mémoire RAM
|-
| colspan="5" | ''Le bit '''d''' dans l'opcode indique la destination : accumulateur ou adresse mémoire''.
|-
| colspan="2" | 0000001 || Adresse mémoire || MOVWF || Store (accumulateur vers destination)
|-
| colspan="2" | 000001d || Adresse mémoire || MOVWF || Met à zéro la destination (adresse ou registre)
|-
| colspan="2" | 000001d || Adresse mémoire || SUBWF || Soustraction
|-
| colspan="2" | 000010d|| Adresse mémoire || DECF || Décrémentation
|-
| colspan="2" | 000100d|| Adresse mémoire || IORWF || OU bit à bit
|-
| colspan="2" | 000101d|| Adresse mémoire || ANDWF || ET bit à bit
|-
| colspan="2" | 000110d || Adresse mémoire || XORWF || XOR bit à bit
|-
| colspan="2" | 000111d || Adresse mémoire || ADDWF VWF || Addition
|-
| colspan="2" | 001000d || Adresse mémoire || MOVF || LOAD
|-
| colspan="2" | 001001d || Adresse mémoire || COMF || NOT bit à bit
|-
| colspan="2" | 001010d || Adresse mémoire || INCF || Incrémentation
|-
| colspan="2" | 001011d || Adresse mémoire || DECFSZ || Décrémentation, puis instruction SKIP si résultat = 0
|-
| colspan="2" | 001100d || Adresse mémoire || RRF || Rotation à droite avec retenue entrante
|-
| colspan="2" | 001101d || Adresse mémoire || RLF || Rotation à gauche avec retenue entrante
|-
| colspan="2" | 001110d || Adresse mémoire || SWAPF || Echange deux ''niblle'' dans un octet
|-
| colspan="2" | 001111d || Adresse mémoire || INCFSZ || Incrémentation, puis instruction SKIP si résultat = 0
|-
! colspan="5" | Instructions logiques/arithmétiques avec constante immédiate
|-
| colspan="2" | 1100xx || Constante immédiate (8bits) || MOVLW || Copie constante dans accumulateur
|-
| colspan="2" | 1101xx || Constante immédiate (8bits) || RETLW || MOV fusionné avec un retour de fonction
|-
| colspan="2" | 111000 || Constante immédiate (8bits) || IORLW || OU
|-
| colspan="2" | 111001 || Constante immédiate (8bits) || ANDLW || ET
|-
| colspan="2" | 111010 || Constante immédiate (8bits) || XORLW || XOR
|-
| colspan="2" | 11110x || Constante immédiate (8bits) || SUBLW || Soustraction
|-
| colspan="2" | 11111x || Constante immédiate (8bits) || ADDLW || Addition
|}
Les PIC gèrent l'adressage absolu et immédiat, mais pas plus. L'adressage absolu, celui où l'adresse est intégrée dans l'instruction, est très simple à implémenter. Les adresses prennent moins d'un octet, vu que la taille de la RAM est très petite, les adresses sont très courtes, les intégrer dans des instructions elles-mêmes courtes n'est pas un problème. L'adresse est encodée sur 5 à 7 bits, selon le modèle, ce qui permet d'adresser entre 32 et 128 octets.
Les PIC ne supportent pas l'adressage indirect, mais peuvent l'émuler grâce à un '''registre d'adresse''' dédié. Il s'agit du registre FSR, qui mémorise l'adresse à lire/écrire. Il est possible de copier un pointeur dedans, qui provient soit de l'accumulateur, soit de la mémoire SRAM. Dans les deux cas, la donnée adressée est lue ou écrite dans un registre INDR, est un registre d’interfaçage rendu adressable. Le registre FSR est directement connecté sur le bus d'adresse.
Les modèles de base se débrouillent avec un registre FSR et un registre INDR, mais les modèles plus performants ont deux ou trois copies de chaque registre. Les modèles PIC18 ajoutent aussi des instructions LOAD/STORE qui émulent les modes d'adressage à post- ou pré-incrément/décrément, et le mode d'adressage "Base + Indice + Décalage", encore une fois en utilisant les registres FSR et INDR.
Avec tout ce qu'on vient de dire, vous devriez pouvoir comprendre la microarchitecture d'un PIC, qui est résumée dans ce schéma.
[[File:DocPIC16F84 all.png|centre|vignette|upright=2.5|Microarchitecture du PIC16F84.]]
===Les microcontrôleurs Intel 8051/8031===
Les microcontrôleurs Intel 8051/8031 sont des microcontrôleurs 8 bits, commercialisés par Intel. Elle contient un processeur 8/16 bits, de la mémoire ROM, une RAM de 128 octets, des ''timers'', et de nombreuses entrées-sorties. Il est relié à 4 ports sur lesquels il peut lire ou écrire 8 bits par port. Il contient aussi deux ''timers'' de 16 bits chacun, qui déclenchent des interruptions quand ils tombent à zéro ou à une valeur configurable. Il supporte des interruptions. L'ensemble utilise une architecture Harvard, contrairement à ce que pourrait faire croire le schéma ci-dessous.
[[File:Pinagem8031.jpg|vignette|Broches du 8051.]]
Ils ont de nombreuses ressemblances avec les microcontrôleurs PIC. Le processeur du 8051 est une architecture à accumulateur de 8 bits, ses registres sont mappés en mémoire RAM, il a un registre d'adresse dédié à l'adressage indirect et j'en passe. Mais il y a aussi des différences notables. Par exemple, le 8051 n'a pas de pile d'adresse de retour, contrairement aux processeurs PIC. Il fait autrement, à savoir qu'il gère une pile d'appel placée en mémoire RAM,ce qui est très différent.
Une autre différence est que les registres sont placés dans un banc de registre à part des 128 octets de SRAM. Il y a une SRAM séparée du banc de registre, contrairement à ce qu'on a sur les microcontrôleurs PIC. Par contre, les registres du processeur sont mappés en mémoire RAM, y compris l'accumulateur, le registre d'état, le ''program counter'', et bien d'autres. Mais le fait qu'ils soient séparés de la SRAM permet de les mapper dans l'espace d'adressage sans marcher sur les pieds de la SRAM. Vu que le processeur peut adresser 256 octets, mais n'a que 128 octets de SRAM, les registres sont mappés dans les 128 octets restants. Les entrées-sorties aussi sont mappées dans ces 128 octets restants.
[[File:Arkitektura mikro kontrollerit Intel 8051.png|centre|vignette|upright=2.5|Microcontrôleur 8051]]
Avec ce qu'on vient de dire, on peut donner la ''memory map'' de ce microcontroleur, pour la SRAM. Les 32 premières adresses sont réservés à la mémoire SRAM, c'est 32 octets de RAM utilisable à volonté par le programmeur. Les 16 adresses suivantes sont adressables bit par bit, ou octet par octet. L'intervalle bit-adressable va de l'adresse 32 (inclue) à l'adresse 47 (inclue). Les 96 octets suivants sont de la mémoire RAM adressable, affectée par défaut à la pile d'appel mais adressable via adressage direct si besoin. Les 128 octets de poids fort sont réservés aux registres et aux entrée-sorties mappées en mémoire.
[[File:Memory map du 8051.png|centre|vignette|upright=2|Memory map du 8051]]
Les 128 octets au sommet de l'espace d'adressage sont décrit dans le schéma ci-dessous. On voit que l'accumulateur est mappé dedans, de même que le registre d'état PSW et le ''program counter'' IP. Les ports d'entrée-sortie sont aussi mappés dedans. Une partie des octets sont bit-adressables, et cette partie inclus les registres du processeur et les ports d'entrées-sorties.
[[File:MFrey SFR MCS-51.svg|centre|vignette|upright=2|Memory map des 128 octets de poids fort du 8051]]
Pour ce qui est des instructions, le 8051 supporte les opérations de multiplications et de divisions, contrairement aux microcontrôleurs PIC qui se limitaient à l'addition et la soustraction.
Une autre particularité est que le processeur incorpore une '''unité de calcul de 1 bit'''. Elle permet de faire des opérations sur des bits, avec 17 instructions possibles au total. L'ALU de 1 bit est reliée à un accumulateur de 1 bit et 32 registres de 1 bits. Elle peut lire des opérandes de 1 bit en mémoire RAM ou sur les ports d'entrée-sortie, qui sont tous bit-adressables. Pour le dire autrement, chaque bit d'un port d'entrée-sortie a sa propre adresse mémoire, qui permet de le sélectionner. Il en est de même avec 18 adresses de la mémoire SRAM, ce qui permet d'adresser 144 bits (18 adresses * 8 bits par octet adressé).
[[File:Intel 8051 arch.svg|centre|vignette|upright=2|Microarchitecture de l'Intel 8051.]]
===Le Fairchild F8 et la console de jeu Fairchild Channel F===
Un autre exemple est la Fairchild F8 de la défunte entreprise Fairchild Semiconductor. Il incorpore un processeur 8 bits, c'est à dire que le processeur fait des calculs sur des entiers de 8 bits maximum, une mémoire RAM de 64 octets, ainsi qu'une mémoire ROM de 1 kibioctet. Les 64 octets de RAM sont certes très peu, mais c'est suffisant pour certaines applications simples, comme les caisses automatiques de l'époque, ou des applications embarquées. Et de toute façon, il est possible d'ajouter de la mémoire RAM supplémentaire si les 64 octets de RAM intégrée ne suffisent pas. Le système était donc modulaire, adaptable selon les besoins, peu cher pour son implémentation minimale sans RAM en plus.
Vu qu'il s'agit d'un des tout premiers ordinateurs, il est sorti à une époque où la technologie était rudimentaire. À cette époque, le processeur était composé de pièces détachées qu'il fallait souder ensemble pour obtenir un processeur fonctionnel. Ce n'est que plus tard qu'est apparu le micro-processeur, qui regroupe un processeur complet dans un seul circuit intégré. Le résultat est que le processeur du Fairchild F8 est coupé en deux, l'unité de calcul et l'unité de contrôle sont placés dans des pièces détachées séparés.
Le microcontrôleur est composé de trois à quatre pièces détachées, certaines étant optionnelles. La première est le '''3850 CPU''', qui regroupe l'unité de calcul et la mémoire RAM intégrée. La seconde est le PSU (''3851 Program Storage Unit''), qui regroupe la mémoire ROM et l'unité de contrôle, ''program counter'' inclut. S'il y a besoin d'utiliser plus de RAM, il faut ajouter un circuit d’interface mémoire, qui est au choix le ''3852 Dynamic Memory Interface'' (DMI) ou le ''3853 Static Memory Interface'', le premier étant connecté à une mémoire de type DRAM, l'autre à une SRAM (nous verrons ce que sont les DRAM et les SRAM dans le prochain chapitre).
[[File:Fairchild F8.png|centre|vignette|upright=2|Fairchild F8]]
Le système minimal est composé d'un PSU et d'un 3850, sans les circuits d'interface mémoire. Le tout donne un système avec un processeur 8 bit, 64 octets de RAM et 1 kibioctet de ROM, les deux mémoires étant intégrées dans le "processeur". Le processeur gérait 4 entrées-sorties, chacune étant reliée avec un bus de 8 bit au processeur. Au passage, en 1977, Mostek a créé un microcontrôleur qui regroupe un PSU et un 3850 : le Mostek 3870. Le système minimal n'avait pas de bus d'adresse, vu que la RAM était intégrée au processeur. C'est les 3852 et 3853 qui ajoutaient un bus d'adresse. Ils ajoutent un bus d'adresse de 16 bits, ce qui permet d'adresser 64 kibioctets de RAM.
[[File:Fairchild-Channel-F.jpg|vignette|un Fairchild Channel F]]
Le Fairchild F8 a été utilisé dans la Fairchild Channel F, une des toute première console de seconde génération, à savoir des consoles qui utilisaient des cartouches de jeu. Avant les consoles de seconde génération, les consoles étaient non-programmables. Elles étaient conçues pour faire tourner un jeu précis, aucun autre, le jeu étant implémenté dans leurs circuits.
La Fairchild Channel F est composé du système minimal, auquel on a ajouté une carte son rudimentaire et 2 kibioctets de mémoire vidéo. La mémoire vidéo sert uniquement pour afficher des images à l'écran : on écrit l'image à afficher dedans, un circuit vidéo se charge de l'afficher à l'écran automatiquement. Le processeur ne fait qu'écrire dans cette RAM vidéo, il ne peut pas en lire le contenu. De la RAM supplémentaire peut cependant être ajoutée dans les cartouches de jeu.
===Le HP Nanoprocessor : un processeur sans ALU===
Un dernier exemple est celui du processeur HP Nanoprocessor, de l'entreprise HP. Il a été commercialisé en 1974, en même temps que les premiers micro-processeurs d'Intel. Tous les processeurs de l'époque étaient des processeurs 8 bits et le HP Nanoprocessor ne faisait pas exception. Ce n'était pas un processeur haute performance, il était destiné à des applications d'informatique industrielle ou embarquée. D'ailleurs, il utilisait des transistors de type metal-gate, peu performants, là où ses contemporains utilisait des transistors en silicium, plus performants.
Mais une caractéristique qui rend cela encore plus claire est qu'il n'y a pas d'ALU ! En effet, ce processeur est incapable de faire des additions, des soustractions ou autres opérations simples ! Il est cependant capable d'effectuer des incrémentations et décrémentations, des décalages, des opérations logiques comme des ET/OU/NON/XOR et bien d'autres. Il supporte en tout 48 instructions, avec un support limité des modes d'adressage indirects. Les instructions de branchement étaient des instructions SKIP, il n'y avait pas d'instructions de branchement généralistes.
Pour ce qui est des registres, il disposait de 16 registres de 8 bits et d'un accumulateur. Niveau mémoire, il était relié à une mémoire ROM, rien de plus. Il n'avait de RAM supplémentaire qu'on pouvait lui adjoindre, il devait se débrouiller avec seulement ses registres. Et cela ne posait pas de problèmes pour son usage. Seul le mode d'adressage indirect à registre est supporté, il n'y a pas de registres d'indices. Ce mode d'adressage permet de lire des données en mémoire ROM, la ROM pouvant contenir des tableaux de valeurs constantes.
: Il est possible de lui adjoindre de la RAM via les ports d'entrée-sortie, ainsi qu'une ALU, mais RAM et ALU sont traités comme des périphériques avec lesquels on communique, ils ne sont pas intégrés au processeur.
Niveau micro-architecture, il incorporait une unité de calcul logique et un circuit comparateur. Le comparateur était un circuit comparateur série des plus basiques, qui était utilisé pour les instructions de branchement et associées. L'unité de calcul logique gérait des incrémentations/décrémentation, des décalages, les opérations logiques et quelques autres. L'unité de calcul logique était bit-slicée, à savoir conçue en assemblant 8 ALU de 1 bit chacune, enchainées en série. Le tout était combiné à des circuits de ''carry skip''.
[[File:Unité de calcul du HP nanonprocessor.png|centre|vignette|upright=2|Unité de calcul du HP nanoprocessor]]
Son unité de décodage d'instruction était très simple, essentiellement basée sur des portes NOR, grâce à un encodage efficace des instructions machine. Le ''program counter'' fait 11 bits, ce qui permet d'adresser une ROM de 2 kibioctets. Le ''program counter'' était relié à un circuit incrémenteur qui gérait les isntructions SKIP (il pouvait incrémenter le ''program counter'' par pas de 1 ou de 2 en cas de SKIP). Le processeur contient aussi deux registres, qui servent en quelque sorte de pile d'adresse de retour. Un premier registre mémorise l'adresse de retour d'une fonction, l'autre mémorise le ''program counter'' lors d'une interruption, pour savoir où brancher à la fin de l'interruption.
[[File:HP nanoprocessor.png|centre|vignette|upright=2.5|HP nanoprocessor]]
Fait intéressant, le concepteur du processeur a gracieusement donné les masques utilisés pour graver le silicium du processeur au site [https://www.cpushack.com/ CPU Shack]. Les masques en question sont disponibles ici :
* [https://www.cpushack.com/2020/08/20/hp-nanoprocessor-mask-set/ HP NanoProcessor Mask Set]
* [https://www.cpushack.com/2020/08/09/the-forgotten-ones-hp-nanoprocessor/ The Forgotten Ones: HP Nanoprocessor]
Les masques ont été analysés par Ken Shirrif dans cet article de blog :
* [https://www.righto.com/2020/09/hp-nanoprocessor-part-ii-reverse.html HP Nanoprocessor part II: Reverse-engineering the circuits from the masks]
==Les processeurs 8/16 bits à architecture Von Neumann==
L'usage d'une architecture Harvard est une solution pour adresser plus de mémoire avec des CPU 8 bits. Mais plusieurs microprocesseurs commerciaux n'utilisaient pas cette solution. À la place, c'était des architectures Von Neumann, mais qui étaient capables de gérer des adresses de 16 bits. Les données faisaient 8 bits, les registres faisaient 8 bits, mais quelques techniques permettaient de gérer des adresses de 16 bits. Nous parlerons de '''processeurs 8/16 bits''' pour les désigner, et nous allons les étudier à part.
Un point important est que la gestion d'adresses de 16 bits permet d'adresser 64 kibioctets, qui peuvent être remplis avec de la RAM et de la ROM. On a donc le meilleur des mondes : 64 kibioctets de mémoire, mais avec des données de 8 bits et les économies de circuit qui vont avec. L'avantage est que le processeur peut maintenant gérer une vraie pile d'appel, pas seulement une pile d'adresse de retour. Il lui suffit pour cela d'intégrer un pointeur de pile codé sur 16 bits.
===Les modes d'adressage par page des CPU Motorola===
Les processeurs Motorola 8 bits étaient des processeurs 8 bits avec un bus d'adresse de 16 bits. C'était des processeurs à accumulateur incorporant deux registres d'indice, un registre d'état, un pointeur de pile, et un ''program counter''. Tous les registres sont reliés au bus d'adresse, sauf le registre d'état et l’accumulateur. Tous les registres font 8 bits, sauf le ''program counter''. La pile est câblée pour être dans un bloc de 256 octets compris entre l'adresse 1 0000 0000 et l'adresse 1 1111 1111, ce qui fait que son adressage se fait avec un seul octet.
[[File:6502-architecture.svg|centre|vignette|upright=1.5|Architecture simplifiée du 6502.</br> X et Y : registres d'indice ;</br> S : le pointeur de pile ;</br> A : accumulateur ;</br>P : registre d'état.</br>]]
Les processeurs Motorola 8 bits utilisaient une méthode simple pour adresser 64 kibioctets de RAM, avec des registres de 8 bits. Pour cela, ils utilisaient une variante de l'adressage base + décalage. Elle améliore l'adressage absolu, qui intègre l'adresse à lire/écrire dans l'instruction elle-même. L'adresse en question est de 8 bits et n'encode que les 8 bits de poids faible de l'adresse, les 8 bits de poids fort sont dans un '''registre de page''' adressé implicitement. L'adresse finale est obtenue en concaténant ce registre avec l'adresse mémoire intégrée dans l’instruction. Le résultat est que la mémoire était découpée en blocs de 256 consécutifs, chacun pouvant servir de fenêtre de 256 octets. Une page est réservée pour la pile, la seconde, comme dit plus haut.
Formellement, ce mode d'adressage a des ressemblances avec la commutation de banques, une technique qu'on verra dans les chapitres sur l'espace d'adressage et la mémoire virtuelle. Mais ce n'en est pas du tout : le registre de page est utilisé uniquement pour les accès mémoire avec le mode d'adressage base + décalage, mais pas pour les autres accès mémoire, qui gèrent des adresses complètes. Notons que l'usage d'un registre de page dédié fait que celui-ci est adressé implicitement.
Il faut noter que la technique a été utilisée sur des processeurs 16 bits, pour contourner la petite taille des instructions. Un exemple est celui du HP 2100, un processeur 16 bits. Il avait un registre de page de 5 bits et encodait 10 bits d'adresse dans ses instructions. Ses instructions d'accès mémoire disposaient d'un bit qui choisit quel mode d'adressage utiliser. S'il était à 0, l'adressage absolu était utilisé, le registre de page n'était pas utilisé. Mais s'il était à 1, le registre de page était utilisé pour calculer l'adresse.
Une évolution de l'adressage précédent est le '''mode page direct'''. Avec lui, le registre de page est étendu et contient une adresse mémoire complète. L'adresse finale n'est pas obtenue par concaténation, mais en additionnant le registre de page avec l'adresse fournie par adressage absolu + décalage. Un exemple est celui des premiers processeurs Motorola, qui géraient des adresses courtes de 8 bits. L'adresse courte de 8 bits correspondait non pas aux 256 premiers octets de la mémoire, mais à une fenêtre de 256 octets déplaçable en mémoire. La position de la fenêtre de 256 octets était spécifiée par le registre de page de 16 bits, qui précisait l'adresse du début de la fenêtre, celle de sa première donnée.
Il s'agit donc formellement d'adressage base + décalage, à un détail près : il n'y a qu'un seul registre de base. Le fait que ce registre de base soit unique fait qu'il est adressé implicitement, on n'a pas à encoder le numéro/noms de registre dans l'instruction. Le registre de base est utilisé uniquement pour l'adressage absolu, pas pour les autres accès mémoire. S'il y a des ressemblances avec la segmentation, une technique de mémoire virtuelle qu'on abordera dans quelques chapitres, ce n'en est pas vu que le registre de base est utilisé seulement pour un mode d'adressage bien précis.
===Le ''pseudo-aliasing'' des registres des processeurs Intel x86===
Voyons maintenant le cas des anciens processeurs 8 bits d'Intel à savoir l'Intel 4004, 4040, 8008 et 8080. Le Z80, un processeur inspiré des CPU Intel 8 bits, est aussi concerné. Avant de poursuivre, parlons des registres de ces processeurs. Les premiers CPU Intel incorporaient 7 registres de 8 bits nommés A, B, C, D, E, F, H, L, SP. Ils correspondent respectivement à : l'accumulateur A ; six registres nommés B, C, D, E, H et L ; le registre d'état F ; le pointeur de pile SP. Le Z80 ajoute deux registres d'indice X et Y. De plus, le Z80 dispose de registres d'interruption, qui sont en quelque sorte des copies des registres A, B, C, D, E, F, H, L. Le tout est illustré dans le tableau ci-dessous.
{|class="wikitable" style="text-align:center;"
|-
!
! Registres des CPU Intel
! Registres supplémentaires du Z80
|-
! Accumulateur
| A
| A'
|-
! Registre d'état
| F
| F'
|-
! Registres généraux
| B, C, D, E, H, L
| B', C', D', E', H', L'
|-
! Pointeur de pile
| colspan="2" | SP (sauf pour le 8008)
|-
! Registres d'indice
|
| X et Y
|}
Le 8008 incorpore une pile d'appel de 7 adresses, dans le processeur lui-même. Il en est de la même avec le 4004 et le 4040, comme on le verra dans la section sur les processeurs 4 bits. Mais le 8080 et le 8085 ont remplacé le tout par un simple pointeur de pile, afin d'avoir une véritable pile d'appel. Autant c'est impossible d'avoir une pile d'appel avec seulement 256 octets de mémoire, autant on peut se le permettre avec 65 536 adresses.
Pour gérer des adresses de 16 bits, ils auraient pu utiliser des registres d'adresse séparés, mais on préféré un système de '''pseudo-''aliasing'' de registres'''. Formellement, c'est un système qui concatène deux registres 8 bits pour obtenir une adresse de 16 bits. L’appariement a lieu lors de certaines opérations bien précises, qui n'ont de sens que pour les adresses : la lecture/écriture en mémoire, et l'incrémentation.
Il y avait cependant des contraintes quant aux paires de registres possibles, toutes les paires de registres n'étaient pas autorisées. Les CPU concernés sont donc des processeurs hybrides accumulateur-registre généraux. L'accumulateur ne peut pas être appairé, seuls les registres généraux le peuvent. Le Z80 autorise plus de paires que les CPU Intel. Voici les paires de registres qui pouvaient servir d'adresse 16 bits :
* Les CPU 8008 d'Intel autorisait une seule paire formée des registres H et L.
* Les autres processeurs, à savoir le 8080, le 8085 et le Z80, autorisaient : les paires BC, DE et HL.
Le 8008 ne gérait que des opérations sur 8 bits. Mais le 8080 et le 8085 ont ajouté des instructions 16 bits qui agissaient sur des paires de registre, que le Z80 a repris. Une paire de registres est considérée comme un registre unique de 16 bits pour certaines opérations arithmétiques, dont l'incrémentation. Voici la liste des instructions concernées :
* INC et DEC pour l'incrémentation et la décrémentation ;
* DAD : additionne le registre HL avec une autre paire (Hl inclus) ;
* LXI : copie une constante immédiate dans une paire de registres ;
* LHLD : lit 16 depuis la mémoire et l'enregistre dans une paire de registres ;
* SHLD : copie 16 bits depuis une paire de registres et l'enregistre en mémoire ;
* PUSH et POP : empile ou dépilent une paire de registre sur la pile ;
* XTHL : échange la paire HL avec les 16 bits au sommet de la pile d'appel ;
* XCHG : échange le contenu de la paire HL et DE.
Pour résumer, le processeur avait des instructions LOAD, STORE, PUSH et POP adaptées pour gérer des paires de registre. De plus, l'instruction XCHG permettait d’échanger le contenu des paires DE et HL. L'instruction a été étendue sur les processeurs 16 bits pour échanger tous les registres. Mais l'implémentation était alors différente. L'incrémentation sur une paire de 16 bit était très utile, car les adresses sont souvent incrémentées quand on parcours un tableau. Ces instructions nous donnent quelques indices sur ce qu'il y a dans le processeur.
Le système de pseudo-aliasing a un impact sur le banc de registre. Le banc de registre regroupe les registres généraux et le pointeur de pile, mais ne contient pas l'accumulateur. Les contraintes sur les paires de registres possibles ne s'expliquent que d'une seule manière : le banc de registre contient des registres de 16 bits, une paire de registres 8 bits est mémorisée dans un registre unique. Il faut donc faire une différence entre les registres architecturaux de 8 bits, et les registres réels de 16 bits.
Le banc de registre a un port de 8 bits pour les données, qui est fabriqué à partir d'un port 16 bits auquel on a rajouté un multiplexeur pour choisir soit l'octet de poids faible, soit l'octet de poids fort. Le bus de données fait 8 bits, ce qui fait que les instructions LOAD, STORE, PUSH et POP pour paires 16 bits sont réalisées en deux fois : on lit/écrit l'octet de poids faible, puis celui de poids fort. Par contre, le bus d'adresse fait bien 16 bits. Cela suggère que le banc de registre dispose d'un port de 16 bits dédié aux adresses, en plus du port de données 8 bits.
[[File:Architecture d'un CPU 8-16 bits avec un banc de registre double port.png|centre|vignette|upright=2|Architecture d'un CPU 8-16 bits avec un banc de registre double port]]
L'incrémentation d'une paire 16 bits ne coute rien à implémenter, ou presque. En effet, le processeur incorpore un incrémenteur 16 bits pour le ''program counter'', qui est relié au bus d'adresse. L'idée est de rentabiliser cet incrémenteur, en lui permettant d'incrémenter des données/adresses de 16 bits obtenues via pseudo-aliasing. De même, il peut être utilisé pour incrémenter le pointeur de pile, voire un compteur de rafraichissement mémoire (pour rappel, le rafraîchissement mémoire demande de balayer la mémoire d'adresse en adresse et été fait par le CPU à l'époque). Pour cela, il suffit de connecter le ''program counter'', le banc de registre, et l'incrémenteur, via un bus dédié.
[[File:Calcul d'adresse par ALU dédiée avec PC séparé.png|centre|vignette|upright=2|Calcul d'adresse par ALU dédiée avec PC séparé]]
Notez qu'on peut encore simplifier le tout en placant le ''program counter'' dans le banc de registre, ce qui ne gênera pas le travail de l'incrémenteur mais simplifiera le câblage au bus d'adresse. Ce n'était pas systématique, certains processeurs mettaient le ''program counter'' dans le banc de registre, d'autres non.
: Inclure le ''program counter'' dans le banc de registre permet parfois de remplir un vide. Par exemple, sur un processeur avec 12 registres, le banc de registre devrait faire idéalement 16 registres, inclure le ''program counter'' dedans fait monter le tout à 13.
[[File:Architecture d'un CPU 8-16 bits.png|centre|vignette|upright=2|Architecture d'un CPU 8-16 bits]]
Les processeurs Intel 8 bits, à savoir le 8008, le 8080 et le 8085 ; mettaient le ''program counter'' dans le banc de registre. Vous avez donc toutes les armes pour comprendre leur micro-architecture. Par exemple, voici la micro-architecture du processeur 8080. Remarquez le banc de registre, qui contient tous les registres sauf l'accumulateur et le registre. Il a deux ports : un pour les adresses et un pour les données. Notez le dé-multiplexeur sur le port de donnée. Pour le reste, il s'agit d'une architecture à accumulateur hybride des plus classiques.
[[File:Intel 8080 arch.svg|centre|vignette|upright=3|Microarchitecture de l'Intel 8080.]]
Le Z80 est un processeur inspiré du design des processeurs Intel 8 bits, mais avec pas mal d'améliorations. Un point particulier de ce processeur est son banc de registre. Il contient tous les registres du processeur, y compris l'accumulateur et le registre d'état ! Les seuls registres en-dehors du banc de registre sont le ''program counter'' et un compteur de rafraichissement mémoire IR.
Un autre point particulier est que les registres dans le banc de registres avaient une copie séparée accessible uniquement pour les interruptions, via fenêtrage de registres. Et l'accumulateur et le registre d'état étant dans le banc de registre, il y avait deux accumulateurs et deux registres d'état. Les registres A, B, C, D, E et F étaient dupliqués, par le pointeur de pile ni les registres d'indice. Les copies des registres étaient nommées A', B', C', D', E' et F'.
Le Z80 supportait des instructions d'échange de registre en plus des CPU Intel 8 bits. L'instruction EX peut échanger soit le contenu des paires D,E et H,F, soit la paire A,F avec la paire A',F'. L'instruction EXX échange les paires BC, DE, HL avec les paires BC', DE', HL'. En faisant cela, le programmeur pouvait utiliser deux fois plus de registres généraux s'il n'utilisait pas les interruptions. L'échange de paires se fait sans copies de registres, mais simplement en modifiant l'adresse envoyée sur le banc de registre. Pour cela, plusieurs bascules mémorisent des bits qui indiquent si les paires ont été échangées ou non. Il y a une bascule pour les paires DE , HL ; une autre pour les paires A,F et paire A',F', une dernière pour l'instruction EXX. En combinant ces bascules avec les noms de registres envoyés par le séquenceur, on peut échanger les paires de registres.
==Le cas particulier des processeurs 4 bits : le 4004 d'Intel==
L'Intel 4004 était le tout premier micro-processeur. Il s'agissait d'un microprocesseur de 4 bits, basé sur une architecture à accumulateur. Il disposait d'un accumulateur et de 16 registres d'indice, tous de 4 bits. Il faisait des calculs sur des données de 4 bits, appelées des nibbles. Cependant, sur ses 46 instructions machines supportées, 41 agissaient sur des opérandes de 8 bits, les 5 restantes sur des opérandes de 16 bits. Simplement, les calculs se faisaient en deux fois, en échangeant des données entre mémoire RAM et accumulateur.
Le 4004 est un circuit intégré avec peu de broches. Il dispose notamment d'un bus de données/adresse, qui est multiplexé, c’est-à-dire qu'il sert alternativement de bus de données et de bus d'adresse selon les besoins. Le bus de commande mémoire fait 5 bits, dont 4 pour les chips de RAM, un pour la ROM. Les adresses sont codées sur 12 bits, les données sur 4 et les instructions sur 8 bits. L'envoi d'une adresse sur le bus se fait en plusieurs fois, de même que la lecture d'une instruction. Il s'agit là d'une adaptation pour outrepasser les limitations d'un processeur 4 bit.
[[File:Intel 4004 processor pinout.png|centre|vignette|upright=2|Broches de l'Intel 4004. Nous verrons à quoi elles servent plus bas.]]
===L'espace d'adressage de l'Intel 4004===
Les adresses du processeur sont sur 12 bits, ce qui fait 4096 adresses différentes. Elles regroupent à la fois la ROM et la mémoire RAM, vu que l'architecture est une sorte de mélange bizarre entre une architecture Von Neumann et Harvard. Le processeur gère bien deux espaces d'adressage séparés, mais la RAM et la ROM sont reliés au même bus. La sortie CM-ROM du processeur indique si l'adresse envoyée correspond à la RAM ou la ROM. Un circuit de décodage d'adresse active ou désactive la RAM selon la valeur de ce bit, l'inverse pour la ROM, en agissant sur leurs bits Chip Select. Seule la RAM ou la ROM répondent alors à l'adresse.
Pour ce qui est de la RAM, le circuit de décodage d'adresse pouvait gérer au maximum 1024 adresses différentes, chacune contenant un nibble. Pour cela, le CPU 4004 était relié à une ou plusieurs RAM externes, des Intel 4002. Chaque Intel 4002 contenait 64 nibbles de données, plus 16 nibbles de statut qu'on ne détaillera pas ici. Les nibbles de statut étaient accessibles en utilisant des instructions d'entrée-sortie, donc pas avec des lectures/écritures mémoire. Les 64 nibbles de données sont découpés en 4 groupes de 16 nibbles. Le CPU pouvait être relié à maximum 16 Intel 4002, ce qui fait 1024 nibbles de données et 256 nibbles de statut. L'ensemble permet de remplir l'espace d'adressage de 1024 adresses.
===Le registre de page et le pseudo-aliasing des registres===
Sélectionner une adresse mémoire utilisait un mélange entre pseudo-aliasing et registre de page. Pour les données, les 1024 adresses étaient découpées en 4 pages de 256 adresses. Pour la ROM, les 4096 adresses étaient découpées en 16 pages de 256 adresses. Localiser une donnée dans une page ne requiert que 8 bits, 2/4 bits supplémentaires permettent de sélectionner la page voulue. Le registre de page était dans le processeur lui-même, et était relié aux sorties du processeur nommées CM-RAM 0, 1, 2 et 3. Les 4 sorties encodaient un nombre qui permet de sélectionner le numéro de page voulu.
Le registre de page fait 5 bits : un pour distinguer RAM et ROM, 4 bits pour sélectionner la page voulue. L'avantage est que la carte mère gère au maximum 16 chips de RAM, ce qui colle parfaitement avec les 4 utilisés pour sélectionner une page. Un chip de RAM correspond à une page, et chacun est activé ou désactivé suivant la page sélectionnée. Pour cela, il suffit d'ajouter un décodeur sur la carte mère, qui prend les 4 bits du registre de page et fournit les signaux Chip Select aux différents chips de RAM.
Reste alors à utiliser les 8 bits d'adresse à l'intérieur d'un chip de RAM. Le 4004 permettait de concaténer deux registres d'indice de 4 bits pour former une adresse de 8 bits. Les instructions d'accès mémoire pouvaient ainsi préciser une paire de registre d'indice pour préciser quelle adresse lire/écrire. Idem pour les branchements indirects : le processeur supportait une instruction de branchement indirect qui précisait l'adresse dans une paire de registres d'indice. Les registres d'indice sont donc assez mal nommés sur cette architecture, vu qu'ils peuvent servir soit de registre d'indice, soit de demi-registre d'adresse. Il s'agit là du système de pseudo-aliasing des registres, mais appliqué aux registres d'indice.
L'Intel 4004 gérait deux instructions pour gérer les adresses mémoires. La première, l'instruction DCL (''Designate Command Line'') configure le registre de page. Elle prend en entrée un numéro de page et le copie dans le registre de page. L'opérande peut provenir d'un registre d'indice ou de l'accumulateur. La seconde, l'instruction SRC (''Send Register Control'') concatène deux registres d'indice pour obtenir une adresse de 8 bits. Un accès mémoire se fait donc en maximum trois instructions : une qui configure le registre de page si ce n'est pas déjà fait, une instruction SRC pour envoyer l'adresse, et une troisième instruction qui dit s'il faut faire une lecture ou une écriture.
===La microarchitecture de l'Intel 4004===
Il incorporait une pile d'adresse de retour intégrée au processeur. La pile d'adresse acceptait exactement 3 adresses maximum. Elle était regroupée avec le ''program counter'' dans un banc de registre, de 4 registres. Le ''program counter'' et le pointeur de pile faisaient chacun 12 bits, soit trois nibble. Ils étaient incrémentés par un incrémenteur dédié.
SI on omet le registre de page et la pile d'adresse, le 4004 est une architecture à accumulateur des plus classiques, avec un bus interne unique, un banc de registre pour les registres d'indices, un accumulateur relié à une unité de calcul. Les registres d'indice étaient dans un banc de registre séparés, car ils faisaient 4 bits chacun, contrairement au pointeur de pile et le ''program counter''. Un détail important est que les bancs de registres du 4004 étaient implémentés avec de la DRAM, et non des registres usuels fabriqués avec des bascules 1 bit.
[[File:Microarchitecture de l'Intel 4004.png|centre|vignette|upright=2.5|Microarchitecture de l'Intel 4004]]
<noinclude>
{{NavChapitre | book=Fonctionnement d'un ordinateur
| prev=Les architectures à pile et mémoire-mémoire
| prevText=Les architectures à pile et mémoire-mémoire
| next=Les processeurs de traitement du signal
| nextText=Les processeurs de traitement du signal
}}
</noinclude>
dnicrkhch99d3lh3utdbuodcr4t5mmg
765728
765727
2026-05-01T20:21:35Z
Mewtow
31375
/* Les microcontrôleurs Intel 8051/8031 */
765728
wikitext
text/x-wiki
Nous avons déjà abordé la notion de processeur 8, 16, 32, 64 bits. Elle désigne la taille des registres généraux, ou de l'accumulateur. De nos jours, les processeurs 32 et 64 bits sont la norme, mais les premiers micro-processeurs étaient des processeurs 4 et 8, avant de passer rapidement au 16 bits. La raison est que leur budget en transistor limité faisait qu'on ne pouvait pas utiliser une ALU trop grande : une ALU 8 bit prend deux fois moins de place et de transistors qu'une ALU 16 bits. Cependant, les processeurs 8 bits avaient de sérieuses limitations qui étaient compensées par diverses solutions. Dans ce chapitre, nous allons faire une revue rapide des processeurs 8 bits et de leurs fonctionnalités.
La principale limitation des CPU 8 bits était l'adressage : des registres de 8 bits limitaient l'espace d'adressage à seulement 256 adresses, soit à peine 256 octets ! Intuitivement, on se dit que 256 octets est purement impraticable, on ne peut rien faire d'intéressant avec seulement 256 de RAM + ROM. Et c'est partiellement vrai. L'adage veut que 16 bits est la taille minimale intéressante, la limite à partir de laquelle on a assez de mémoire RAM/ROM pour coder des applications intéressantes. Mais 256 octets de RAM est largement suffisant sur de nombreux systèmes embarqués simples s'en accommodent : des caisses enregistreuses, des systèmes de régulation de feu de circulation, etc.
Pour les applications demandant plus de mémoire RAM, les CPU de l'époque contournaient la limitation de 256 octets de RAM avec de nombreux stratagèmes. Dans ce qui va suivre, nous allons séparer les CPU 8 bits selon qu'ils utilisent une architecture Harvard ou une architecture Von Neumann. La raison est qu'une architecture Harvard permet en soi de contourner partiellement ce problème d'adressage. Les choses sont plus compliquées avec une architecture Von Neumann.
==Les processeurs 8/16 bits à architecture Harvard ==
La première solution est d'utiliser une architecture Harvard. Le processeur 8 bit a alors deux espaces d'adressage : un pour la RAM, un autre pour la ROM. Et les deux utilisent des adresses de taille différente. La ROM est reliée à un bus d'adresse de 16 bits, alors que la RAM est elle connectée à un bus d'adresse de 8 bits. La RAM est donc limitée à 256 octets, alors que la ROM peut monter jusqu'à 64 kibioctets. Mine de rien, faire ainsi est largement suffisant.
Pour encore améliorer la situation, il est possible d'utiliser une architecture Harvard modifiée, qui permet de lire des données depuis la mémoire ROM. Cela réduit encore plus les besoins en mémoire RAM. Les constantes manipulées par le programme sont mémorisées en ROM, lues depuis la ROM, au lieu d'être chargées en RAM. Avec ce genre de stratagèmes, 256 octets de RAM est largement suffisant sur de nombreux systèmes, à condition qu'on ait assez de ROM pour coder un programme digne de ce nom. Par exemple, de nombreux systèmes embarqués simples s'en accommodent : des caisses enregistreuses, des systèmes de régulation de feu de circulation, etc.
Les processeurs 8 bits intègrent parfois les 256 octets de RAM directement dans le processeur, dans le banc de registres ! Beaucoup en implémentaient moins, avec par exemple seulement 64 octets de RAM, ou 32 octets, ou 128 octets. L'avantage est que cela élimine le bus pour les données, ce qui économise beaucoup de broches sur le circuit intégré du CPU. Et pour les applications demandant plus de RAM, on pouvait ajouter un circuit séparé qui permettait d'adresser une RAM plus grande. Et c'est ce qui explique que cette solution est beaucoup utilisée sur les microcontrôleurs peu puissants. Les exemples qui vont suivre devraient vous convaincre.
: Les processeurs de ce type implémentent des optimisations pour adresser plus de 256 octets de RAM. La plus connue est la commutation de banques. Mais nous n'avons pas encore abordé celle-ci, et il faudra attendre le chapitre sur l'espace d'adressage pour cela.
===Les microcontrôleurs PIC===
Les '''microcontrôleurs PIC''' regroupent des microcontrôleurs allant de microcontrôleurs 8 bits aux performances très faible, à des microcontrôleurs 32 bits bien plus puissants. Les microcontrôleurs PIC sont très utilisés dans l'embarqué ou d'informatique industrielle. Ils sont vendu à des volumes assez impressionnants, plusieurs millions par an. Et si vous avez ou êtes en train de faire des études d'électronique, je parie que vous les avez déjà vu en classe, ou que ce ne saurait tarder. Dans ce qui suit, nous allons nous concentrer sur les microcontrôleurs PIC 8 bits, à savoir les PIC 16, 16 et 18. Les PIC 24, qui sont des microcontrôleurs 16 bits, ne seront pas abordés.
Les microcontrôleurs PIC 8 bits sont une architecture Harvard, comme dit plus haut. Il y a aussi des registres pour les entrées et sorties. Les registres d'entrée-sortie permettent de lire ou écrire sur un port d'entrée-sortie ou de lire un ''timer''. En clair, les PIC ont un espace d'adressage séparé pour les entrées-sorties.
La mémoire ROM des PIC va de 1024 instructions à 4096 instructions. En comparaison, la mémoire RAM des microcontrôleurs PIC ne peut pas dépasser 256 adresses, et elle est encore plus petite en pratique sur certains modèles. Pour donner un exemple, le PIC16F84 a une RAM composée de 68 "registres" de 8 bits. Le terme "registres" devrait vous faire tiquer, mais c'est bien le terme utilisé dans la documentation des PIC. Et il faut admettre que la différence entre banc de registre et SRAM intégrée est floue, mais nous expliquerons pourquoi dans quelques paragraphes.
: Les PIC 18 peuvent adresser plus de 256 octets de RAM en utilisant la commutation de banques, une technique qui sera abordée dans plusieurs chapitres.
[[File:DocPIC16F84 3.png|centre|vignette|upright=3|Espaces d'adressage du PIC16F84.]]
Un détail est que la SRAM n'a qu'un seul port qui sert à la fois pour les lectures et écritures. Pour compenser, les PIC sont des architectures à accumulateur, où une opérande est lue depuis la SRAM, l'autre depuis l'accumulateur. Leur implémentation de l'accumulateur ajoute une petite subtilité : le résultat d'une opération arithmétique peut être enregistré ailleurs que dans l'accumulateur. Le résultat peut aussi remplacer la seconde opérande, celle lue en mémoire RAM. Dit autrement, le résultat est enregistré dans l'adresse mémoire source. Les instructions de calcul ont le choix : un bit dans leur encodage précise où enregistrer le résultat.
{|
|-
|[[File:DocPIC16F84 4.png|centre|vignette|upright=2|Microarchitecture simplifiée d'un microcontroleur PIC (ici, un 16F84).]]
|[[File:DocPIC16F84 5.png|centre|vignette|upright=2|Microarchitecture simplifiée d'un microcontroleur PIC (ici, un 16F84), avec les branchements directs.]]
|}
Outre l'accumulateur, les PIC disposent de registres de contrôle, d'un ''program counter'', d'un registre d'état, et d'un pointeur de pile. Un détail très important est que les registres sont mappés en mémoire, à quelques exceptions près ! En clair, on peut y accéder en lisant/écrivant à une adresse mémoire bien précise. Les seules registres qui ne sont pas mappés en mémoire sont l'accumulateur, les registres d'entrée-sortie, et la pile d'adresses de retour intégrée au processeur (voir plus bas). Par exemple, sur les modèles 16F, l'espace d'adressage fait 128 octets, dont 32 sont réservés aux registres du processeur, ce qui fait que seules 96 octets sont adressables comme de la RAM. Mais les 128 octets sont un seul et unique SRAM dans le processeur. Ce qui explique qu'il est difficile de séparer banc de registre et RAM principale sur ce processeur : les deux sont fusionnées ! Cela gaspille quelques adresses mémoire, mais permet une implémentation plus simple, avec un banc de registre unique.
: Les modèles PIC 17 ont rendu l'accumulateur mappé en mémoire RAM !
[[File:DocPIC16F84.png|centre|vignette|upright=2|DocPIC16F84]]
La petite taille de la ROM d'un PIC n'est pas une surprise. Les architectures 8 bits sont conçues pour ne pas utiliser beaucoup de transistors et être très simples. Aussi, utiliser une petite ROM est nécessaire. Mais il faut aussi adapter le jeu d'instruction, pour qu'il ait une bonne densité de code. Par exemple, il faut faire en sorte d'avoir des instructions assez courtes. Si les instructions font 16 bits au lieu de 32, on divise par deux le nombre de transistors nécessaire pour la mémoire ROM. La conséquence est que le jeu d’instruction des PIC est adapté à cette contrainte.
Les microcontrôleurs PIC utilisent un jeu d'instruction propriétaire, dont les instructions sont très petites. Les premières versions du jeu d'instruction utilisaient des instructions codées sur 12 bits, dont 5 pour l'adresse mémoire de la seconde opérande. Pour les branchements, 3 bits étaient utilisés pour l'opcode, 9 pour l'adresse de destination. Par la suite, les instructions ont été étendues à 13 bits sur les PIC1670, puis à 14, 15 et 16 bits. Les adresses ont alors été élargies, ce qui permet d'adresser en peu plus de mémoire RAM.
Il est intéressant de regarder comment les PIC font pour obtenir des instructions aussi courtes. Premièrement, le fait d'utiliser une architecture à accumulateur, couplé à une RAM très petite aident grandement. Les architectures à accumulateur ont besoin de préciser un opcode et une adresse mémoire pour chaque instruction, pas besoin de préciser de noms de registres ni le mode d'adressage. La taille des adresses mémoire est censé être un problème pour la densité de code, mais les adresses d'un processeur 8 bits font 8 bits. On peut alors avoir un jeu d'instruction étoffé, en utilisant des instructions 16 bits, qui concatènent un opcode et une adresse mémoire, d'un octet chacun.
Mais d'autres optimisations permettent d'avoir une bonne densité de code. Les PIC ont des branchements pour les appels et retour de fonction. Les PIC incorporent une pile d'appel de retour, qui fait 2 à 8 adresses suivant les modèles. Elle permet d'économiser quelques registres, car la pile d'appel n'est pas mappé dans l'espace d'adressage, elle n'est pas adressable. On économise ainsi 2 à 8 registres, sur 32-256 registres. De plus, cela simplifie l'encodage des instructions d'appel/retour de fonction, qui n'ont pas à préciser où enregistre l'adresse de retour.
Les PIC n'ont pas d'instructions de branchement conditionnels, ils font avec une SKIP instruction et des branchements inconditionnels. Du moins, c'est le principe, car si vous regardez la liste des instructions ci-dessous, vous verrez qu'il n'y a pas d'instruction SKIP. A la place, les instructions SKIP sont fusionnées avec d'autres instructions. Elles sont notamment fusionnées avec les instructions d'incrémentation et de décrémentation. Les PIC supportent une incrémentation normale, une décrémentation normale, une décrémentation fusionnée avec une instruction SKIP, et une incrémentation fusionnée avec une instruction SKIP. Les deux dernières incrémentent/décrémentent l'accumulateur et SKIP l'instruction suivante si le résultat est zéro. Elles permettent de fortement simplifier l'implémentation des boucles qui s'exécutent tant que leur compteur atteint zéro.
Les PIC disposent aussi d'instructions de manipulation de bit, pour tester/masquer un bit dans une opérande, 4 en tout. Il y a en a 4 en tout : mettre à 0, mettre à 1, tester si bit = 1, tester si bit = 0. Les instructions qui testent un bit prennent leur opérande dans l'accumulateur. Elles font le test du bit et décident s'il faut skipper l'instruction suivante ou non. Il y a aussi deux instructions de rotation à gauche et droite, qui tiennent compte de la retenue mémorisée dans le registre d'état. Par contre, il n'y a pas d'instructions de décalages, qui peuvent être émulées avec une rotation suivie d'un ET bit à bit. Mentionnons aussi une instruction pour inverser deux ''nibbles'' dans un octet.
Les modèles haute performance ajoutent des instructions d'addition avec retenue entrante, idem pour la soustraction. De telles instructions ssont très utiles pour faire des additions/soustractions sur des opérandes de 16 bits. Le processeur a beau être un CPU 8 bits, il peut être utilisé pour faire des calculs 16 bits, la performance est alors amoindrie, mais ce n'est pas un problème pour les applications d'un tel microcontroleur.
Les modèles intiaux, comme les PIC 10 et 12, ne supportaient pas les interruptions, mais c'est chose réglé sur les modèles plus récents. Ils ont même des registres séparés pour les interruptions et les programmes normaux. De plus, ils intégrent nativement un ''watchdog timer''.
{|class="wikitable" style="text-align:center"
|+ Jeu d'instruction des dodèles PCI 16
|-
! colspan="5" | Instructions diverses
|-
| colspan="3" | 00 0000 0000 0000 || NOP || Ne fait rien
|-
| colspan="3" | 00 0000 0000 1000 || RETURN || Instruction de retour pour une fonction
|-
| colspan="3" | 00 0000 0000 1001 || NOP || Instruction de retour pour une interruption
|-
| colspan="3" | 00 0000 0110 0011 || SLEEP || Mise en veille
|-
| colspan="3" | 00 0000 0110 0100 || CLRWDT || RESET le ''watchdog timer'', intégré dans le PIC
|-
! colspan="5" | Instructions de manipulation de bit
|-
| 0100 || Position du bit dans l'opérande || Adresse mémoire || BCF || Met le bit à 1
|-
| 0101 || Position du bit dans l'opérande || Adresse mémoire || BSF || Met le bit à 0
|-
| 0110 || Position du bit dans l'opérande || Adresse mémoire || BTFSC || Teste si le bit adressé est à 1
|-
| 0111 || Position du bit dans l'opérande || Adresse mémoire || BTFSS || Teste si le bit adressé est à 0
|-
! colspan="5" | Branchements
|-
| colspan="2" | 100 || Adresse mémoire || CALL || Appel de fonction
|-
| colspan="2" | 100 || Adresse mémoire || GOTO || Branchement inconditionnel
|-
! colspan="5" | Instructions logiques/arithmétiques avec opérande lue en mémoire RAM
|-
| colspan="5" | ''Le bit '''d''' dans l'opcode indique la destination : accumulateur ou adresse mémoire''.
|-
| colspan="2" | 0000001 || Adresse mémoire || MOVWF || Store (accumulateur vers destination)
|-
| colspan="2" | 000001d || Adresse mémoire || MOVWF || Met à zéro la destination (adresse ou registre)
|-
| colspan="2" | 000001d || Adresse mémoire || SUBWF || Soustraction
|-
| colspan="2" | 000010d|| Adresse mémoire || DECF || Décrémentation
|-
| colspan="2" | 000100d|| Adresse mémoire || IORWF || OU bit à bit
|-
| colspan="2" | 000101d|| Adresse mémoire || ANDWF || ET bit à bit
|-
| colspan="2" | 000110d || Adresse mémoire || XORWF || XOR bit à bit
|-
| colspan="2" | 000111d || Adresse mémoire || ADDWF VWF || Addition
|-
| colspan="2" | 001000d || Adresse mémoire || MOVF || LOAD
|-
| colspan="2" | 001001d || Adresse mémoire || COMF || NOT bit à bit
|-
| colspan="2" | 001010d || Adresse mémoire || INCF || Incrémentation
|-
| colspan="2" | 001011d || Adresse mémoire || DECFSZ || Décrémentation, puis instruction SKIP si résultat = 0
|-
| colspan="2" | 001100d || Adresse mémoire || RRF || Rotation à droite avec retenue entrante
|-
| colspan="2" | 001101d || Adresse mémoire || RLF || Rotation à gauche avec retenue entrante
|-
| colspan="2" | 001110d || Adresse mémoire || SWAPF || Echange deux ''niblle'' dans un octet
|-
| colspan="2" | 001111d || Adresse mémoire || INCFSZ || Incrémentation, puis instruction SKIP si résultat = 0
|-
! colspan="5" | Instructions logiques/arithmétiques avec constante immédiate
|-
| colspan="2" | 1100xx || Constante immédiate (8bits) || MOVLW || Copie constante dans accumulateur
|-
| colspan="2" | 1101xx || Constante immédiate (8bits) || RETLW || MOV fusionné avec un retour de fonction
|-
| colspan="2" | 111000 || Constante immédiate (8bits) || IORLW || OU
|-
| colspan="2" | 111001 || Constante immédiate (8bits) || ANDLW || ET
|-
| colspan="2" | 111010 || Constante immédiate (8bits) || XORLW || XOR
|-
| colspan="2" | 11110x || Constante immédiate (8bits) || SUBLW || Soustraction
|-
| colspan="2" | 11111x || Constante immédiate (8bits) || ADDLW || Addition
|}
Les PIC gèrent l'adressage absolu et immédiat, mais pas plus. L'adressage absolu, celui où l'adresse est intégrée dans l'instruction, est très simple à implémenter. Les adresses prennent moins d'un octet, vu que la taille de la RAM est très petite, les adresses sont très courtes, les intégrer dans des instructions elles-mêmes courtes n'est pas un problème. L'adresse est encodée sur 5 à 7 bits, selon le modèle, ce qui permet d'adresser entre 32 et 128 octets.
Les PIC ne supportent pas l'adressage indirect, mais peuvent l'émuler grâce à un '''registre d'adresse''' dédié. Il s'agit du registre FSR, qui mémorise l'adresse à lire/écrire. Il est possible de copier un pointeur dedans, qui provient soit de l'accumulateur, soit de la mémoire SRAM. Dans les deux cas, la donnée adressée est lue ou écrite dans un registre INDR, est un registre d’interfaçage rendu adressable. Le registre FSR est directement connecté sur le bus d'adresse.
Les modèles de base se débrouillent avec un registre FSR et un registre INDR, mais les modèles plus performants ont deux ou trois copies de chaque registre. Les modèles PIC18 ajoutent aussi des instructions LOAD/STORE qui émulent les modes d'adressage à post- ou pré-incrément/décrément, et le mode d'adressage "Base + Indice + Décalage", encore une fois en utilisant les registres FSR et INDR.
Avec tout ce qu'on vient de dire, vous devriez pouvoir comprendre la microarchitecture d'un PIC, qui est résumée dans ce schéma.
[[File:DocPIC16F84 all.png|centre|vignette|upright=2.5|Microarchitecture du PIC16F84.]]
===Les microcontrôleurs Intel 8051/8031===
[[File:Pinagem8031.jpg|vignette|Broches du 8051.]]
Les microcontrôleurs Intel 8051/8031 sont des microcontrôleurs 8 bits, commercialisés par Intel. Elle contient un processeur 8/16 bits, 4 kibioctets de mémoire ROM, une RAM de 128 octets, des ''timers'', et 4 ports d'un octet chacun sur lesquels il peut lire ou écrire. Il contient aussi deux ''timers'' de 16 bits chacun, qui déclenchent des interruptions quand ils tombent à zéro ou à une valeur configurable. Il supporte des interruptions. L'ensemble utilise une architecture Harvard, contrairement à ce que pourrait faire croire le schéma ci-dessous.
Ils ont de nombreuses ressemblances avec les microcontrôleurs PIC. Le processeur du 8051 est une architecture à accumulateur de 8 bits, ses registres sont mappés en mémoire RAM, il a un registre d'adresse dédié à l'adressage indirect et j'en passe. Mais il y a aussi des différences notables. Par exemple, le 8051 n'a pas de pile d'adresse de retour, contrairement aux processeurs PIC. Il fait autrement, à savoir qu'il gère une pile d'appel placée en mémoire RAM,ce qui est très différent.
Une autre différence est que les registres sont placés dans un banc de registre à part des 128 octets de SRAM. Il y a une SRAM séparée du banc de registre, contrairement à ce qu'on a sur les microcontrôleurs PIC. Par contre, les registres du processeur sont mappés en mémoire RAM, y compris l'accumulateur, le registre d'état, le ''program counter'', et bien d'autres. Mais le fait qu'ils soient séparés de la SRAM permet de les mapper dans l'espace d'adressage sans marcher sur les pieds de la SRAM. Vu que le processeur peut adresser 256 octets, mais n'a que 128 octets de SRAM, les registres sont mappés dans les 128 octets restants. Les entrées-sorties aussi sont mappées dans ces 128 octets restants.
[[File:Arkitektura mikro kontrollerit Intel 8051.png|centre|vignette|upright=2.5|Microcontrôleur 8051]]
Avec ce qu'on vient de dire, on peut donner la ''memory map'' de ce microcontroleur, pour la SRAM. Les 32 premières adresses sont réservés à la mémoire SRAM, c'est 32 octets de RAM utilisable à volonté par le programmeur. Les 16 adresses suivantes sont adressables bit par bit, ou octet par octet. L'intervalle bit-adressable va de l'adresse 32 (inclue) à l'adresse 47 (inclue). Les 96 octets suivants sont de la mémoire RAM adressable, affectée par défaut à la pile d'appel mais adressable via adressage direct si besoin. Les 128 octets de poids fort sont réservés aux registres et aux entrée-sorties mappées en mémoire.
[[File:Memory map du 8051.png|centre|vignette|upright=2|Memory map du 8051]]
Les 128 octets au sommet de l'espace d'adressage sont décrit dans le schéma ci-dessous. On voit que l'accumulateur est mappé dedans, de même que le registre d'état PSW et le ''program counter'' IP. Les ports d'entrée-sortie sont aussi mappés dedans. Une partie des octets sont bit-adressables, et cette partie inclus les registres du processeur et les ports d'entrées-sorties.
[[File:MFrey SFR MCS-51.svg|centre|vignette|upright=2|Memory map des 128 octets de poids fort du 8051]]
Pour ce qui est des instructions, le 8051 supporte les opérations de multiplications et de divisions, contrairement aux microcontrôleurs PIC qui se limitaient à l'addition et la soustraction.
Une autre particularité est que le processeur incorpore une '''unité de calcul de 1 bit'''. Elle permet de faire des opérations sur des bits, avec 17 instructions possibles au total. L'ALU de 1 bit est reliée à un accumulateur de 1 bit et 32 registres de 1 bits. Elle peut lire des opérandes de 1 bit en mémoire RAM ou sur les ports d'entrée-sortie, qui sont tous bit-adressables. Pour le dire autrement, chaque bit d'un port d'entrée-sortie a sa propre adresse mémoire, qui permet de le sélectionner. Il en est de même avec 18 adresses de la mémoire SRAM, ce qui permet d'adresser 144 bits (18 adresses * 8 bits par octet adressé).
[[File:Intel 8051 arch.svg|centre|vignette|upright=2|Microarchitecture de l'Intel 8051.]]
===Le Fairchild F8 et la console de jeu Fairchild Channel F===
Un autre exemple est la Fairchild F8 de la défunte entreprise Fairchild Semiconductor. Il incorpore un processeur 8 bits, c'est à dire que le processeur fait des calculs sur des entiers de 8 bits maximum, une mémoire RAM de 64 octets, ainsi qu'une mémoire ROM de 1 kibioctet. Les 64 octets de RAM sont certes très peu, mais c'est suffisant pour certaines applications simples, comme les caisses automatiques de l'époque, ou des applications embarquées. Et de toute façon, il est possible d'ajouter de la mémoire RAM supplémentaire si les 64 octets de RAM intégrée ne suffisent pas. Le système était donc modulaire, adaptable selon les besoins, peu cher pour son implémentation minimale sans RAM en plus.
Vu qu'il s'agit d'un des tout premiers ordinateurs, il est sorti à une époque où la technologie était rudimentaire. À cette époque, le processeur était composé de pièces détachées qu'il fallait souder ensemble pour obtenir un processeur fonctionnel. Ce n'est que plus tard qu'est apparu le micro-processeur, qui regroupe un processeur complet dans un seul circuit intégré. Le résultat est que le processeur du Fairchild F8 est coupé en deux, l'unité de calcul et l'unité de contrôle sont placés dans des pièces détachées séparés.
Le microcontrôleur est composé de trois à quatre pièces détachées, certaines étant optionnelles. La première est le '''3850 CPU''', qui regroupe l'unité de calcul et la mémoire RAM intégrée. La seconde est le PSU (''3851 Program Storage Unit''), qui regroupe la mémoire ROM et l'unité de contrôle, ''program counter'' inclut. S'il y a besoin d'utiliser plus de RAM, il faut ajouter un circuit d’interface mémoire, qui est au choix le ''3852 Dynamic Memory Interface'' (DMI) ou le ''3853 Static Memory Interface'', le premier étant connecté à une mémoire de type DRAM, l'autre à une SRAM (nous verrons ce que sont les DRAM et les SRAM dans le prochain chapitre).
[[File:Fairchild F8.png|centre|vignette|upright=2|Fairchild F8]]
Le système minimal est composé d'un PSU et d'un 3850, sans les circuits d'interface mémoire. Le tout donne un système avec un processeur 8 bit, 64 octets de RAM et 1 kibioctet de ROM, les deux mémoires étant intégrées dans le "processeur". Le processeur gérait 4 entrées-sorties, chacune étant reliée avec un bus de 8 bit au processeur. Au passage, en 1977, Mostek a créé un microcontrôleur qui regroupe un PSU et un 3850 : le Mostek 3870. Le système minimal n'avait pas de bus d'adresse, vu que la RAM était intégrée au processeur. C'est les 3852 et 3853 qui ajoutaient un bus d'adresse. Ils ajoutent un bus d'adresse de 16 bits, ce qui permet d'adresser 64 kibioctets de RAM.
[[File:Fairchild-Channel-F.jpg|vignette|un Fairchild Channel F]]
Le Fairchild F8 a été utilisé dans la Fairchild Channel F, une des toute première console de seconde génération, à savoir des consoles qui utilisaient des cartouches de jeu. Avant les consoles de seconde génération, les consoles étaient non-programmables. Elles étaient conçues pour faire tourner un jeu précis, aucun autre, le jeu étant implémenté dans leurs circuits.
La Fairchild Channel F est composé du système minimal, auquel on a ajouté une carte son rudimentaire et 2 kibioctets de mémoire vidéo. La mémoire vidéo sert uniquement pour afficher des images à l'écran : on écrit l'image à afficher dedans, un circuit vidéo se charge de l'afficher à l'écran automatiquement. Le processeur ne fait qu'écrire dans cette RAM vidéo, il ne peut pas en lire le contenu. De la RAM supplémentaire peut cependant être ajoutée dans les cartouches de jeu.
===Le HP Nanoprocessor : un processeur sans ALU===
Un dernier exemple est celui du processeur HP Nanoprocessor, de l'entreprise HP. Il a été commercialisé en 1974, en même temps que les premiers micro-processeurs d'Intel. Tous les processeurs de l'époque étaient des processeurs 8 bits et le HP Nanoprocessor ne faisait pas exception. Ce n'était pas un processeur haute performance, il était destiné à des applications d'informatique industrielle ou embarquée. D'ailleurs, il utilisait des transistors de type metal-gate, peu performants, là où ses contemporains utilisait des transistors en silicium, plus performants.
Mais une caractéristique qui rend cela encore plus claire est qu'il n'y a pas d'ALU ! En effet, ce processeur est incapable de faire des additions, des soustractions ou autres opérations simples ! Il est cependant capable d'effectuer des incrémentations et décrémentations, des décalages, des opérations logiques comme des ET/OU/NON/XOR et bien d'autres. Il supporte en tout 48 instructions, avec un support limité des modes d'adressage indirects. Les instructions de branchement étaient des instructions SKIP, il n'y avait pas d'instructions de branchement généralistes.
Pour ce qui est des registres, il disposait de 16 registres de 8 bits et d'un accumulateur. Niveau mémoire, il était relié à une mémoire ROM, rien de plus. Il n'avait de RAM supplémentaire qu'on pouvait lui adjoindre, il devait se débrouiller avec seulement ses registres. Et cela ne posait pas de problèmes pour son usage. Seul le mode d'adressage indirect à registre est supporté, il n'y a pas de registres d'indices. Ce mode d'adressage permet de lire des données en mémoire ROM, la ROM pouvant contenir des tableaux de valeurs constantes.
: Il est possible de lui adjoindre de la RAM via les ports d'entrée-sortie, ainsi qu'une ALU, mais RAM et ALU sont traités comme des périphériques avec lesquels on communique, ils ne sont pas intégrés au processeur.
Niveau micro-architecture, il incorporait une unité de calcul logique et un circuit comparateur. Le comparateur était un circuit comparateur série des plus basiques, qui était utilisé pour les instructions de branchement et associées. L'unité de calcul logique gérait des incrémentations/décrémentation, des décalages, les opérations logiques et quelques autres. L'unité de calcul logique était bit-slicée, à savoir conçue en assemblant 8 ALU de 1 bit chacune, enchainées en série. Le tout était combiné à des circuits de ''carry skip''.
[[File:Unité de calcul du HP nanonprocessor.png|centre|vignette|upright=2|Unité de calcul du HP nanoprocessor]]
Son unité de décodage d'instruction était très simple, essentiellement basée sur des portes NOR, grâce à un encodage efficace des instructions machine. Le ''program counter'' fait 11 bits, ce qui permet d'adresser une ROM de 2 kibioctets. Le ''program counter'' était relié à un circuit incrémenteur qui gérait les isntructions SKIP (il pouvait incrémenter le ''program counter'' par pas de 1 ou de 2 en cas de SKIP). Le processeur contient aussi deux registres, qui servent en quelque sorte de pile d'adresse de retour. Un premier registre mémorise l'adresse de retour d'une fonction, l'autre mémorise le ''program counter'' lors d'une interruption, pour savoir où brancher à la fin de l'interruption.
[[File:HP nanoprocessor.png|centre|vignette|upright=2.5|HP nanoprocessor]]
Fait intéressant, le concepteur du processeur a gracieusement donné les masques utilisés pour graver le silicium du processeur au site [https://www.cpushack.com/ CPU Shack]. Les masques en question sont disponibles ici :
* [https://www.cpushack.com/2020/08/20/hp-nanoprocessor-mask-set/ HP NanoProcessor Mask Set]
* [https://www.cpushack.com/2020/08/09/the-forgotten-ones-hp-nanoprocessor/ The Forgotten Ones: HP Nanoprocessor]
Les masques ont été analysés par Ken Shirrif dans cet article de blog :
* [https://www.righto.com/2020/09/hp-nanoprocessor-part-ii-reverse.html HP Nanoprocessor part II: Reverse-engineering the circuits from the masks]
==Les processeurs 8/16 bits à architecture Von Neumann==
L'usage d'une architecture Harvard est une solution pour adresser plus de mémoire avec des CPU 8 bits. Mais plusieurs microprocesseurs commerciaux n'utilisaient pas cette solution. À la place, c'était des architectures Von Neumann, mais qui étaient capables de gérer des adresses de 16 bits. Les données faisaient 8 bits, les registres faisaient 8 bits, mais quelques techniques permettaient de gérer des adresses de 16 bits. Nous parlerons de '''processeurs 8/16 bits''' pour les désigner, et nous allons les étudier à part.
Un point important est que la gestion d'adresses de 16 bits permet d'adresser 64 kibioctets, qui peuvent être remplis avec de la RAM et de la ROM. On a donc le meilleur des mondes : 64 kibioctets de mémoire, mais avec des données de 8 bits et les économies de circuit qui vont avec. L'avantage est que le processeur peut maintenant gérer une vraie pile d'appel, pas seulement une pile d'adresse de retour. Il lui suffit pour cela d'intégrer un pointeur de pile codé sur 16 bits.
===Les modes d'adressage par page des CPU Motorola===
Les processeurs Motorola 8 bits étaient des processeurs 8 bits avec un bus d'adresse de 16 bits. C'était des processeurs à accumulateur incorporant deux registres d'indice, un registre d'état, un pointeur de pile, et un ''program counter''. Tous les registres sont reliés au bus d'adresse, sauf le registre d'état et l’accumulateur. Tous les registres font 8 bits, sauf le ''program counter''. La pile est câblée pour être dans un bloc de 256 octets compris entre l'adresse 1 0000 0000 et l'adresse 1 1111 1111, ce qui fait que son adressage se fait avec un seul octet.
[[File:6502-architecture.svg|centre|vignette|upright=1.5|Architecture simplifiée du 6502.</br> X et Y : registres d'indice ;</br> S : le pointeur de pile ;</br> A : accumulateur ;</br>P : registre d'état.</br>]]
Les processeurs Motorola 8 bits utilisaient une méthode simple pour adresser 64 kibioctets de RAM, avec des registres de 8 bits. Pour cela, ils utilisaient une variante de l'adressage base + décalage. Elle améliore l'adressage absolu, qui intègre l'adresse à lire/écrire dans l'instruction elle-même. L'adresse en question est de 8 bits et n'encode que les 8 bits de poids faible de l'adresse, les 8 bits de poids fort sont dans un '''registre de page''' adressé implicitement. L'adresse finale est obtenue en concaténant ce registre avec l'adresse mémoire intégrée dans l’instruction. Le résultat est que la mémoire était découpée en blocs de 256 consécutifs, chacun pouvant servir de fenêtre de 256 octets. Une page est réservée pour la pile, la seconde, comme dit plus haut.
Formellement, ce mode d'adressage a des ressemblances avec la commutation de banques, une technique qu'on verra dans les chapitres sur l'espace d'adressage et la mémoire virtuelle. Mais ce n'en est pas du tout : le registre de page est utilisé uniquement pour les accès mémoire avec le mode d'adressage base + décalage, mais pas pour les autres accès mémoire, qui gèrent des adresses complètes. Notons que l'usage d'un registre de page dédié fait que celui-ci est adressé implicitement.
Il faut noter que la technique a été utilisée sur des processeurs 16 bits, pour contourner la petite taille des instructions. Un exemple est celui du HP 2100, un processeur 16 bits. Il avait un registre de page de 5 bits et encodait 10 bits d'adresse dans ses instructions. Ses instructions d'accès mémoire disposaient d'un bit qui choisit quel mode d'adressage utiliser. S'il était à 0, l'adressage absolu était utilisé, le registre de page n'était pas utilisé. Mais s'il était à 1, le registre de page était utilisé pour calculer l'adresse.
Une évolution de l'adressage précédent est le '''mode page direct'''. Avec lui, le registre de page est étendu et contient une adresse mémoire complète. L'adresse finale n'est pas obtenue par concaténation, mais en additionnant le registre de page avec l'adresse fournie par adressage absolu + décalage. Un exemple est celui des premiers processeurs Motorola, qui géraient des adresses courtes de 8 bits. L'adresse courte de 8 bits correspondait non pas aux 256 premiers octets de la mémoire, mais à une fenêtre de 256 octets déplaçable en mémoire. La position de la fenêtre de 256 octets était spécifiée par le registre de page de 16 bits, qui précisait l'adresse du début de la fenêtre, celle de sa première donnée.
Il s'agit donc formellement d'adressage base + décalage, à un détail près : il n'y a qu'un seul registre de base. Le fait que ce registre de base soit unique fait qu'il est adressé implicitement, on n'a pas à encoder le numéro/noms de registre dans l'instruction. Le registre de base est utilisé uniquement pour l'adressage absolu, pas pour les autres accès mémoire. S'il y a des ressemblances avec la segmentation, une technique de mémoire virtuelle qu'on abordera dans quelques chapitres, ce n'en est pas vu que le registre de base est utilisé seulement pour un mode d'adressage bien précis.
===Le ''pseudo-aliasing'' des registres des processeurs Intel x86===
Voyons maintenant le cas des anciens processeurs 8 bits d'Intel à savoir l'Intel 4004, 4040, 8008 et 8080. Le Z80, un processeur inspiré des CPU Intel 8 bits, est aussi concerné. Avant de poursuivre, parlons des registres de ces processeurs. Les premiers CPU Intel incorporaient 7 registres de 8 bits nommés A, B, C, D, E, F, H, L, SP. Ils correspondent respectivement à : l'accumulateur A ; six registres nommés B, C, D, E, H et L ; le registre d'état F ; le pointeur de pile SP. Le Z80 ajoute deux registres d'indice X et Y. De plus, le Z80 dispose de registres d'interruption, qui sont en quelque sorte des copies des registres A, B, C, D, E, F, H, L. Le tout est illustré dans le tableau ci-dessous.
{|class="wikitable" style="text-align:center;"
|-
!
! Registres des CPU Intel
! Registres supplémentaires du Z80
|-
! Accumulateur
| A
| A'
|-
! Registre d'état
| F
| F'
|-
! Registres généraux
| B, C, D, E, H, L
| B', C', D', E', H', L'
|-
! Pointeur de pile
| colspan="2" | SP (sauf pour le 8008)
|-
! Registres d'indice
|
| X et Y
|}
Le 8008 incorpore une pile d'appel de 7 adresses, dans le processeur lui-même. Il en est de la même avec le 4004 et le 4040, comme on le verra dans la section sur les processeurs 4 bits. Mais le 8080 et le 8085 ont remplacé le tout par un simple pointeur de pile, afin d'avoir une véritable pile d'appel. Autant c'est impossible d'avoir une pile d'appel avec seulement 256 octets de mémoire, autant on peut se le permettre avec 65 536 adresses.
Pour gérer des adresses de 16 bits, ils auraient pu utiliser des registres d'adresse séparés, mais on préféré un système de '''pseudo-''aliasing'' de registres'''. Formellement, c'est un système qui concatène deux registres 8 bits pour obtenir une adresse de 16 bits. L’appariement a lieu lors de certaines opérations bien précises, qui n'ont de sens que pour les adresses : la lecture/écriture en mémoire, et l'incrémentation.
Il y avait cependant des contraintes quant aux paires de registres possibles, toutes les paires de registres n'étaient pas autorisées. Les CPU concernés sont donc des processeurs hybrides accumulateur-registre généraux. L'accumulateur ne peut pas être appairé, seuls les registres généraux le peuvent. Le Z80 autorise plus de paires que les CPU Intel. Voici les paires de registres qui pouvaient servir d'adresse 16 bits :
* Les CPU 8008 d'Intel autorisait une seule paire formée des registres H et L.
* Les autres processeurs, à savoir le 8080, le 8085 et le Z80, autorisaient : les paires BC, DE et HL.
Le 8008 ne gérait que des opérations sur 8 bits. Mais le 8080 et le 8085 ont ajouté des instructions 16 bits qui agissaient sur des paires de registre, que le Z80 a repris. Une paire de registres est considérée comme un registre unique de 16 bits pour certaines opérations arithmétiques, dont l'incrémentation. Voici la liste des instructions concernées :
* INC et DEC pour l'incrémentation et la décrémentation ;
* DAD : additionne le registre HL avec une autre paire (Hl inclus) ;
* LXI : copie une constante immédiate dans une paire de registres ;
* LHLD : lit 16 depuis la mémoire et l'enregistre dans une paire de registres ;
* SHLD : copie 16 bits depuis une paire de registres et l'enregistre en mémoire ;
* PUSH et POP : empile ou dépilent une paire de registre sur la pile ;
* XTHL : échange la paire HL avec les 16 bits au sommet de la pile d'appel ;
* XCHG : échange le contenu de la paire HL et DE.
Pour résumer, le processeur avait des instructions LOAD, STORE, PUSH et POP adaptées pour gérer des paires de registre. De plus, l'instruction XCHG permettait d’échanger le contenu des paires DE et HL. L'instruction a été étendue sur les processeurs 16 bits pour échanger tous les registres. Mais l'implémentation était alors différente. L'incrémentation sur une paire de 16 bit était très utile, car les adresses sont souvent incrémentées quand on parcours un tableau. Ces instructions nous donnent quelques indices sur ce qu'il y a dans le processeur.
Le système de pseudo-aliasing a un impact sur le banc de registre. Le banc de registre regroupe les registres généraux et le pointeur de pile, mais ne contient pas l'accumulateur. Les contraintes sur les paires de registres possibles ne s'expliquent que d'une seule manière : le banc de registre contient des registres de 16 bits, une paire de registres 8 bits est mémorisée dans un registre unique. Il faut donc faire une différence entre les registres architecturaux de 8 bits, et les registres réels de 16 bits.
Le banc de registre a un port de 8 bits pour les données, qui est fabriqué à partir d'un port 16 bits auquel on a rajouté un multiplexeur pour choisir soit l'octet de poids faible, soit l'octet de poids fort. Le bus de données fait 8 bits, ce qui fait que les instructions LOAD, STORE, PUSH et POP pour paires 16 bits sont réalisées en deux fois : on lit/écrit l'octet de poids faible, puis celui de poids fort. Par contre, le bus d'adresse fait bien 16 bits. Cela suggère que le banc de registre dispose d'un port de 16 bits dédié aux adresses, en plus du port de données 8 bits.
[[File:Architecture d'un CPU 8-16 bits avec un banc de registre double port.png|centre|vignette|upright=2|Architecture d'un CPU 8-16 bits avec un banc de registre double port]]
L'incrémentation d'une paire 16 bits ne coute rien à implémenter, ou presque. En effet, le processeur incorpore un incrémenteur 16 bits pour le ''program counter'', qui est relié au bus d'adresse. L'idée est de rentabiliser cet incrémenteur, en lui permettant d'incrémenter des données/adresses de 16 bits obtenues via pseudo-aliasing. De même, il peut être utilisé pour incrémenter le pointeur de pile, voire un compteur de rafraichissement mémoire (pour rappel, le rafraîchissement mémoire demande de balayer la mémoire d'adresse en adresse et été fait par le CPU à l'époque). Pour cela, il suffit de connecter le ''program counter'', le banc de registre, et l'incrémenteur, via un bus dédié.
[[File:Calcul d'adresse par ALU dédiée avec PC séparé.png|centre|vignette|upright=2|Calcul d'adresse par ALU dédiée avec PC séparé]]
Notez qu'on peut encore simplifier le tout en placant le ''program counter'' dans le banc de registre, ce qui ne gênera pas le travail de l'incrémenteur mais simplifiera le câblage au bus d'adresse. Ce n'était pas systématique, certains processeurs mettaient le ''program counter'' dans le banc de registre, d'autres non.
: Inclure le ''program counter'' dans le banc de registre permet parfois de remplir un vide. Par exemple, sur un processeur avec 12 registres, le banc de registre devrait faire idéalement 16 registres, inclure le ''program counter'' dedans fait monter le tout à 13.
[[File:Architecture d'un CPU 8-16 bits.png|centre|vignette|upright=2|Architecture d'un CPU 8-16 bits]]
Les processeurs Intel 8 bits, à savoir le 8008, le 8080 et le 8085 ; mettaient le ''program counter'' dans le banc de registre. Vous avez donc toutes les armes pour comprendre leur micro-architecture. Par exemple, voici la micro-architecture du processeur 8080. Remarquez le banc de registre, qui contient tous les registres sauf l'accumulateur et le registre. Il a deux ports : un pour les adresses et un pour les données. Notez le dé-multiplexeur sur le port de donnée. Pour le reste, il s'agit d'une architecture à accumulateur hybride des plus classiques.
[[File:Intel 8080 arch.svg|centre|vignette|upright=3|Microarchitecture de l'Intel 8080.]]
Le Z80 est un processeur inspiré du design des processeurs Intel 8 bits, mais avec pas mal d'améliorations. Un point particulier de ce processeur est son banc de registre. Il contient tous les registres du processeur, y compris l'accumulateur et le registre d'état ! Les seuls registres en-dehors du banc de registre sont le ''program counter'' et un compteur de rafraichissement mémoire IR.
Un autre point particulier est que les registres dans le banc de registres avaient une copie séparée accessible uniquement pour les interruptions, via fenêtrage de registres. Et l'accumulateur et le registre d'état étant dans le banc de registre, il y avait deux accumulateurs et deux registres d'état. Les registres A, B, C, D, E et F étaient dupliqués, par le pointeur de pile ni les registres d'indice. Les copies des registres étaient nommées A', B', C', D', E' et F'.
Le Z80 supportait des instructions d'échange de registre en plus des CPU Intel 8 bits. L'instruction EX peut échanger soit le contenu des paires D,E et H,F, soit la paire A,F avec la paire A',F'. L'instruction EXX échange les paires BC, DE, HL avec les paires BC', DE', HL'. En faisant cela, le programmeur pouvait utiliser deux fois plus de registres généraux s'il n'utilisait pas les interruptions. L'échange de paires se fait sans copies de registres, mais simplement en modifiant l'adresse envoyée sur le banc de registre. Pour cela, plusieurs bascules mémorisent des bits qui indiquent si les paires ont été échangées ou non. Il y a une bascule pour les paires DE , HL ; une autre pour les paires A,F et paire A',F', une dernière pour l'instruction EXX. En combinant ces bascules avec les noms de registres envoyés par le séquenceur, on peut échanger les paires de registres.
==Le cas particulier des processeurs 4 bits : le 4004 d'Intel==
L'Intel 4004 était le tout premier micro-processeur. Il s'agissait d'un microprocesseur de 4 bits, basé sur une architecture à accumulateur. Il disposait d'un accumulateur et de 16 registres d'indice, tous de 4 bits. Il faisait des calculs sur des données de 4 bits, appelées des nibbles. Cependant, sur ses 46 instructions machines supportées, 41 agissaient sur des opérandes de 8 bits, les 5 restantes sur des opérandes de 16 bits. Simplement, les calculs se faisaient en deux fois, en échangeant des données entre mémoire RAM et accumulateur.
Le 4004 est un circuit intégré avec peu de broches. Il dispose notamment d'un bus de données/adresse, qui est multiplexé, c’est-à-dire qu'il sert alternativement de bus de données et de bus d'adresse selon les besoins. Le bus de commande mémoire fait 5 bits, dont 4 pour les chips de RAM, un pour la ROM. Les adresses sont codées sur 12 bits, les données sur 4 et les instructions sur 8 bits. L'envoi d'une adresse sur le bus se fait en plusieurs fois, de même que la lecture d'une instruction. Il s'agit là d'une adaptation pour outrepasser les limitations d'un processeur 4 bit.
[[File:Intel 4004 processor pinout.png|centre|vignette|upright=2|Broches de l'Intel 4004. Nous verrons à quoi elles servent plus bas.]]
===L'espace d'adressage de l'Intel 4004===
Les adresses du processeur sont sur 12 bits, ce qui fait 4096 adresses différentes. Elles regroupent à la fois la ROM et la mémoire RAM, vu que l'architecture est une sorte de mélange bizarre entre une architecture Von Neumann et Harvard. Le processeur gère bien deux espaces d'adressage séparés, mais la RAM et la ROM sont reliés au même bus. La sortie CM-ROM du processeur indique si l'adresse envoyée correspond à la RAM ou la ROM. Un circuit de décodage d'adresse active ou désactive la RAM selon la valeur de ce bit, l'inverse pour la ROM, en agissant sur leurs bits Chip Select. Seule la RAM ou la ROM répondent alors à l'adresse.
Pour ce qui est de la RAM, le circuit de décodage d'adresse pouvait gérer au maximum 1024 adresses différentes, chacune contenant un nibble. Pour cela, le CPU 4004 était relié à une ou plusieurs RAM externes, des Intel 4002. Chaque Intel 4002 contenait 64 nibbles de données, plus 16 nibbles de statut qu'on ne détaillera pas ici. Les nibbles de statut étaient accessibles en utilisant des instructions d'entrée-sortie, donc pas avec des lectures/écritures mémoire. Les 64 nibbles de données sont découpés en 4 groupes de 16 nibbles. Le CPU pouvait être relié à maximum 16 Intel 4002, ce qui fait 1024 nibbles de données et 256 nibbles de statut. L'ensemble permet de remplir l'espace d'adressage de 1024 adresses.
===Le registre de page et le pseudo-aliasing des registres===
Sélectionner une adresse mémoire utilisait un mélange entre pseudo-aliasing et registre de page. Pour les données, les 1024 adresses étaient découpées en 4 pages de 256 adresses. Pour la ROM, les 4096 adresses étaient découpées en 16 pages de 256 adresses. Localiser une donnée dans une page ne requiert que 8 bits, 2/4 bits supplémentaires permettent de sélectionner la page voulue. Le registre de page était dans le processeur lui-même, et était relié aux sorties du processeur nommées CM-RAM 0, 1, 2 et 3. Les 4 sorties encodaient un nombre qui permet de sélectionner le numéro de page voulu.
Le registre de page fait 5 bits : un pour distinguer RAM et ROM, 4 bits pour sélectionner la page voulue. L'avantage est que la carte mère gère au maximum 16 chips de RAM, ce qui colle parfaitement avec les 4 utilisés pour sélectionner une page. Un chip de RAM correspond à une page, et chacun est activé ou désactivé suivant la page sélectionnée. Pour cela, il suffit d'ajouter un décodeur sur la carte mère, qui prend les 4 bits du registre de page et fournit les signaux Chip Select aux différents chips de RAM.
Reste alors à utiliser les 8 bits d'adresse à l'intérieur d'un chip de RAM. Le 4004 permettait de concaténer deux registres d'indice de 4 bits pour former une adresse de 8 bits. Les instructions d'accès mémoire pouvaient ainsi préciser une paire de registre d'indice pour préciser quelle adresse lire/écrire. Idem pour les branchements indirects : le processeur supportait une instruction de branchement indirect qui précisait l'adresse dans une paire de registres d'indice. Les registres d'indice sont donc assez mal nommés sur cette architecture, vu qu'ils peuvent servir soit de registre d'indice, soit de demi-registre d'adresse. Il s'agit là du système de pseudo-aliasing des registres, mais appliqué aux registres d'indice.
L'Intel 4004 gérait deux instructions pour gérer les adresses mémoires. La première, l'instruction DCL (''Designate Command Line'') configure le registre de page. Elle prend en entrée un numéro de page et le copie dans le registre de page. L'opérande peut provenir d'un registre d'indice ou de l'accumulateur. La seconde, l'instruction SRC (''Send Register Control'') concatène deux registres d'indice pour obtenir une adresse de 8 bits. Un accès mémoire se fait donc en maximum trois instructions : une qui configure le registre de page si ce n'est pas déjà fait, une instruction SRC pour envoyer l'adresse, et une troisième instruction qui dit s'il faut faire une lecture ou une écriture.
===La microarchitecture de l'Intel 4004===
Il incorporait une pile d'adresse de retour intégrée au processeur. La pile d'adresse acceptait exactement 3 adresses maximum. Elle était regroupée avec le ''program counter'' dans un banc de registre, de 4 registres. Le ''program counter'' et le pointeur de pile faisaient chacun 12 bits, soit trois nibble. Ils étaient incrémentés par un incrémenteur dédié.
SI on omet le registre de page et la pile d'adresse, le 4004 est une architecture à accumulateur des plus classiques, avec un bus interne unique, un banc de registre pour les registres d'indices, un accumulateur relié à une unité de calcul. Les registres d'indice étaient dans un banc de registre séparés, car ils faisaient 4 bits chacun, contrairement au pointeur de pile et le ''program counter''. Un détail important est que les bancs de registres du 4004 étaient implémentés avec de la DRAM, et non des registres usuels fabriqués avec des bascules 1 bit.
[[File:Microarchitecture de l'Intel 4004.png|centre|vignette|upright=2.5|Microarchitecture de l'Intel 4004]]
<noinclude>
{{NavChapitre | book=Fonctionnement d'un ordinateur
| prev=Les architectures à pile et mémoire-mémoire
| prevText=Les architectures à pile et mémoire-mémoire
| next=Les processeurs de traitement du signal
| nextText=Les processeurs de traitement du signal
}}
</noinclude>
cpio6c1f4q8106xm8qf0nsym2t5qt5y
765729
765728
2026-05-01T20:22:32Z
Mewtow
31375
/* Les microcontrôleurs Intel 8051/8031 */
765729
wikitext
text/x-wiki
Nous avons déjà abordé la notion de processeur 8, 16, 32, 64 bits. Elle désigne la taille des registres généraux, ou de l'accumulateur. De nos jours, les processeurs 32 et 64 bits sont la norme, mais les premiers micro-processeurs étaient des processeurs 4 et 8, avant de passer rapidement au 16 bits. La raison est que leur budget en transistor limité faisait qu'on ne pouvait pas utiliser une ALU trop grande : une ALU 8 bit prend deux fois moins de place et de transistors qu'une ALU 16 bits. Cependant, les processeurs 8 bits avaient de sérieuses limitations qui étaient compensées par diverses solutions. Dans ce chapitre, nous allons faire une revue rapide des processeurs 8 bits et de leurs fonctionnalités.
La principale limitation des CPU 8 bits était l'adressage : des registres de 8 bits limitaient l'espace d'adressage à seulement 256 adresses, soit à peine 256 octets ! Intuitivement, on se dit que 256 octets est purement impraticable, on ne peut rien faire d'intéressant avec seulement 256 de RAM + ROM. Et c'est partiellement vrai. L'adage veut que 16 bits est la taille minimale intéressante, la limite à partir de laquelle on a assez de mémoire RAM/ROM pour coder des applications intéressantes. Mais 256 octets de RAM est largement suffisant sur de nombreux systèmes embarqués simples s'en accommodent : des caisses enregistreuses, des systèmes de régulation de feu de circulation, etc.
Pour les applications demandant plus de mémoire RAM, les CPU de l'époque contournaient la limitation de 256 octets de RAM avec de nombreux stratagèmes. Dans ce qui va suivre, nous allons séparer les CPU 8 bits selon qu'ils utilisent une architecture Harvard ou une architecture Von Neumann. La raison est qu'une architecture Harvard permet en soi de contourner partiellement ce problème d'adressage. Les choses sont plus compliquées avec une architecture Von Neumann.
==Les processeurs 8/16 bits à architecture Harvard ==
La première solution est d'utiliser une architecture Harvard. Le processeur 8 bit a alors deux espaces d'adressage : un pour la RAM, un autre pour la ROM. Et les deux utilisent des adresses de taille différente. La ROM est reliée à un bus d'adresse de 16 bits, alors que la RAM est elle connectée à un bus d'adresse de 8 bits. La RAM est donc limitée à 256 octets, alors que la ROM peut monter jusqu'à 64 kibioctets. Mine de rien, faire ainsi est largement suffisant.
Pour encore améliorer la situation, il est possible d'utiliser une architecture Harvard modifiée, qui permet de lire des données depuis la mémoire ROM. Cela réduit encore plus les besoins en mémoire RAM. Les constantes manipulées par le programme sont mémorisées en ROM, lues depuis la ROM, au lieu d'être chargées en RAM. Avec ce genre de stratagèmes, 256 octets de RAM est largement suffisant sur de nombreux systèmes, à condition qu'on ait assez de ROM pour coder un programme digne de ce nom. Par exemple, de nombreux systèmes embarqués simples s'en accommodent : des caisses enregistreuses, des systèmes de régulation de feu de circulation, etc.
Les processeurs 8 bits intègrent parfois les 256 octets de RAM directement dans le processeur, dans le banc de registres ! Beaucoup en implémentaient moins, avec par exemple seulement 64 octets de RAM, ou 32 octets, ou 128 octets. L'avantage est que cela élimine le bus pour les données, ce qui économise beaucoup de broches sur le circuit intégré du CPU. Et pour les applications demandant plus de RAM, on pouvait ajouter un circuit séparé qui permettait d'adresser une RAM plus grande. Et c'est ce qui explique que cette solution est beaucoup utilisée sur les microcontrôleurs peu puissants. Les exemples qui vont suivre devraient vous convaincre.
: Les processeurs de ce type implémentent des optimisations pour adresser plus de 256 octets de RAM. La plus connue est la commutation de banques. Mais nous n'avons pas encore abordé celle-ci, et il faudra attendre le chapitre sur l'espace d'adressage pour cela.
===Les microcontrôleurs PIC===
Les '''microcontrôleurs PIC''' regroupent des microcontrôleurs allant de microcontrôleurs 8 bits aux performances très faible, à des microcontrôleurs 32 bits bien plus puissants. Les microcontrôleurs PIC sont très utilisés dans l'embarqué ou d'informatique industrielle. Ils sont vendu à des volumes assez impressionnants, plusieurs millions par an. Et si vous avez ou êtes en train de faire des études d'électronique, je parie que vous les avez déjà vu en classe, ou que ce ne saurait tarder. Dans ce qui suit, nous allons nous concentrer sur les microcontrôleurs PIC 8 bits, à savoir les PIC 16, 16 et 18. Les PIC 24, qui sont des microcontrôleurs 16 bits, ne seront pas abordés.
Les microcontrôleurs PIC 8 bits sont une architecture Harvard, comme dit plus haut. Il y a aussi des registres pour les entrées et sorties. Les registres d'entrée-sortie permettent de lire ou écrire sur un port d'entrée-sortie ou de lire un ''timer''. En clair, les PIC ont un espace d'adressage séparé pour les entrées-sorties.
La mémoire ROM des PIC va de 1024 instructions à 4096 instructions. En comparaison, la mémoire RAM des microcontrôleurs PIC ne peut pas dépasser 256 adresses, et elle est encore plus petite en pratique sur certains modèles. Pour donner un exemple, le PIC16F84 a une RAM composée de 68 "registres" de 8 bits. Le terme "registres" devrait vous faire tiquer, mais c'est bien le terme utilisé dans la documentation des PIC. Et il faut admettre que la différence entre banc de registre et SRAM intégrée est floue, mais nous expliquerons pourquoi dans quelques paragraphes.
: Les PIC 18 peuvent adresser plus de 256 octets de RAM en utilisant la commutation de banques, une technique qui sera abordée dans plusieurs chapitres.
[[File:DocPIC16F84 3.png|centre|vignette|upright=3|Espaces d'adressage du PIC16F84.]]
Un détail est que la SRAM n'a qu'un seul port qui sert à la fois pour les lectures et écritures. Pour compenser, les PIC sont des architectures à accumulateur, où une opérande est lue depuis la SRAM, l'autre depuis l'accumulateur. Leur implémentation de l'accumulateur ajoute une petite subtilité : le résultat d'une opération arithmétique peut être enregistré ailleurs que dans l'accumulateur. Le résultat peut aussi remplacer la seconde opérande, celle lue en mémoire RAM. Dit autrement, le résultat est enregistré dans l'adresse mémoire source. Les instructions de calcul ont le choix : un bit dans leur encodage précise où enregistrer le résultat.
{|
|-
|[[File:DocPIC16F84 4.png|centre|vignette|upright=2|Microarchitecture simplifiée d'un microcontroleur PIC (ici, un 16F84).]]
|[[File:DocPIC16F84 5.png|centre|vignette|upright=2|Microarchitecture simplifiée d'un microcontroleur PIC (ici, un 16F84), avec les branchements directs.]]
|}
Outre l'accumulateur, les PIC disposent de registres de contrôle, d'un ''program counter'', d'un registre d'état, et d'un pointeur de pile. Un détail très important est que les registres sont mappés en mémoire, à quelques exceptions près ! En clair, on peut y accéder en lisant/écrivant à une adresse mémoire bien précise. Les seules registres qui ne sont pas mappés en mémoire sont l'accumulateur, les registres d'entrée-sortie, et la pile d'adresses de retour intégrée au processeur (voir plus bas). Par exemple, sur les modèles 16F, l'espace d'adressage fait 128 octets, dont 32 sont réservés aux registres du processeur, ce qui fait que seules 96 octets sont adressables comme de la RAM. Mais les 128 octets sont un seul et unique SRAM dans le processeur. Ce qui explique qu'il est difficile de séparer banc de registre et RAM principale sur ce processeur : les deux sont fusionnées ! Cela gaspille quelques adresses mémoire, mais permet une implémentation plus simple, avec un banc de registre unique.
: Les modèles PIC 17 ont rendu l'accumulateur mappé en mémoire RAM !
[[File:DocPIC16F84.png|centre|vignette|upright=2|DocPIC16F84]]
La petite taille de la ROM d'un PIC n'est pas une surprise. Les architectures 8 bits sont conçues pour ne pas utiliser beaucoup de transistors et être très simples. Aussi, utiliser une petite ROM est nécessaire. Mais il faut aussi adapter le jeu d'instruction, pour qu'il ait une bonne densité de code. Par exemple, il faut faire en sorte d'avoir des instructions assez courtes. Si les instructions font 16 bits au lieu de 32, on divise par deux le nombre de transistors nécessaire pour la mémoire ROM. La conséquence est que le jeu d’instruction des PIC est adapté à cette contrainte.
Les microcontrôleurs PIC utilisent un jeu d'instruction propriétaire, dont les instructions sont très petites. Les premières versions du jeu d'instruction utilisaient des instructions codées sur 12 bits, dont 5 pour l'adresse mémoire de la seconde opérande. Pour les branchements, 3 bits étaient utilisés pour l'opcode, 9 pour l'adresse de destination. Par la suite, les instructions ont été étendues à 13 bits sur les PIC1670, puis à 14, 15 et 16 bits. Les adresses ont alors été élargies, ce qui permet d'adresser en peu plus de mémoire RAM.
Il est intéressant de regarder comment les PIC font pour obtenir des instructions aussi courtes. Premièrement, le fait d'utiliser une architecture à accumulateur, couplé à une RAM très petite aident grandement. Les architectures à accumulateur ont besoin de préciser un opcode et une adresse mémoire pour chaque instruction, pas besoin de préciser de noms de registres ni le mode d'adressage. La taille des adresses mémoire est censé être un problème pour la densité de code, mais les adresses d'un processeur 8 bits font 8 bits. On peut alors avoir un jeu d'instruction étoffé, en utilisant des instructions 16 bits, qui concatènent un opcode et une adresse mémoire, d'un octet chacun.
Mais d'autres optimisations permettent d'avoir une bonne densité de code. Les PIC ont des branchements pour les appels et retour de fonction. Les PIC incorporent une pile d'appel de retour, qui fait 2 à 8 adresses suivant les modèles. Elle permet d'économiser quelques registres, car la pile d'appel n'est pas mappé dans l'espace d'adressage, elle n'est pas adressable. On économise ainsi 2 à 8 registres, sur 32-256 registres. De plus, cela simplifie l'encodage des instructions d'appel/retour de fonction, qui n'ont pas à préciser où enregistre l'adresse de retour.
Les PIC n'ont pas d'instructions de branchement conditionnels, ils font avec une SKIP instruction et des branchements inconditionnels. Du moins, c'est le principe, car si vous regardez la liste des instructions ci-dessous, vous verrez qu'il n'y a pas d'instruction SKIP. A la place, les instructions SKIP sont fusionnées avec d'autres instructions. Elles sont notamment fusionnées avec les instructions d'incrémentation et de décrémentation. Les PIC supportent une incrémentation normale, une décrémentation normale, une décrémentation fusionnée avec une instruction SKIP, et une incrémentation fusionnée avec une instruction SKIP. Les deux dernières incrémentent/décrémentent l'accumulateur et SKIP l'instruction suivante si le résultat est zéro. Elles permettent de fortement simplifier l'implémentation des boucles qui s'exécutent tant que leur compteur atteint zéro.
Les PIC disposent aussi d'instructions de manipulation de bit, pour tester/masquer un bit dans une opérande, 4 en tout. Il y a en a 4 en tout : mettre à 0, mettre à 1, tester si bit = 1, tester si bit = 0. Les instructions qui testent un bit prennent leur opérande dans l'accumulateur. Elles font le test du bit et décident s'il faut skipper l'instruction suivante ou non. Il y a aussi deux instructions de rotation à gauche et droite, qui tiennent compte de la retenue mémorisée dans le registre d'état. Par contre, il n'y a pas d'instructions de décalages, qui peuvent être émulées avec une rotation suivie d'un ET bit à bit. Mentionnons aussi une instruction pour inverser deux ''nibbles'' dans un octet.
Les modèles haute performance ajoutent des instructions d'addition avec retenue entrante, idem pour la soustraction. De telles instructions ssont très utiles pour faire des additions/soustractions sur des opérandes de 16 bits. Le processeur a beau être un CPU 8 bits, il peut être utilisé pour faire des calculs 16 bits, la performance est alors amoindrie, mais ce n'est pas un problème pour les applications d'un tel microcontroleur.
Les modèles intiaux, comme les PIC 10 et 12, ne supportaient pas les interruptions, mais c'est chose réglé sur les modèles plus récents. Ils ont même des registres séparés pour les interruptions et les programmes normaux. De plus, ils intégrent nativement un ''watchdog timer''.
{|class="wikitable" style="text-align:center"
|+ Jeu d'instruction des dodèles PCI 16
|-
! colspan="5" | Instructions diverses
|-
| colspan="3" | 00 0000 0000 0000 || NOP || Ne fait rien
|-
| colspan="3" | 00 0000 0000 1000 || RETURN || Instruction de retour pour une fonction
|-
| colspan="3" | 00 0000 0000 1001 || NOP || Instruction de retour pour une interruption
|-
| colspan="3" | 00 0000 0110 0011 || SLEEP || Mise en veille
|-
| colspan="3" | 00 0000 0110 0100 || CLRWDT || RESET le ''watchdog timer'', intégré dans le PIC
|-
! colspan="5" | Instructions de manipulation de bit
|-
| 0100 || Position du bit dans l'opérande || Adresse mémoire || BCF || Met le bit à 1
|-
| 0101 || Position du bit dans l'opérande || Adresse mémoire || BSF || Met le bit à 0
|-
| 0110 || Position du bit dans l'opérande || Adresse mémoire || BTFSC || Teste si le bit adressé est à 1
|-
| 0111 || Position du bit dans l'opérande || Adresse mémoire || BTFSS || Teste si le bit adressé est à 0
|-
! colspan="5" | Branchements
|-
| colspan="2" | 100 || Adresse mémoire || CALL || Appel de fonction
|-
| colspan="2" | 100 || Adresse mémoire || GOTO || Branchement inconditionnel
|-
! colspan="5" | Instructions logiques/arithmétiques avec opérande lue en mémoire RAM
|-
| colspan="5" | ''Le bit '''d''' dans l'opcode indique la destination : accumulateur ou adresse mémoire''.
|-
| colspan="2" | 0000001 || Adresse mémoire || MOVWF || Store (accumulateur vers destination)
|-
| colspan="2" | 000001d || Adresse mémoire || MOVWF || Met à zéro la destination (adresse ou registre)
|-
| colspan="2" | 000001d || Adresse mémoire || SUBWF || Soustraction
|-
| colspan="2" | 000010d|| Adresse mémoire || DECF || Décrémentation
|-
| colspan="2" | 000100d|| Adresse mémoire || IORWF || OU bit à bit
|-
| colspan="2" | 000101d|| Adresse mémoire || ANDWF || ET bit à bit
|-
| colspan="2" | 000110d || Adresse mémoire || XORWF || XOR bit à bit
|-
| colspan="2" | 000111d || Adresse mémoire || ADDWF VWF || Addition
|-
| colspan="2" | 001000d || Adresse mémoire || MOVF || LOAD
|-
| colspan="2" | 001001d || Adresse mémoire || COMF || NOT bit à bit
|-
| colspan="2" | 001010d || Adresse mémoire || INCF || Incrémentation
|-
| colspan="2" | 001011d || Adresse mémoire || DECFSZ || Décrémentation, puis instruction SKIP si résultat = 0
|-
| colspan="2" | 001100d || Adresse mémoire || RRF || Rotation à droite avec retenue entrante
|-
| colspan="2" | 001101d || Adresse mémoire || RLF || Rotation à gauche avec retenue entrante
|-
| colspan="2" | 001110d || Adresse mémoire || SWAPF || Echange deux ''niblle'' dans un octet
|-
| colspan="2" | 001111d || Adresse mémoire || INCFSZ || Incrémentation, puis instruction SKIP si résultat = 0
|-
! colspan="5" | Instructions logiques/arithmétiques avec constante immédiate
|-
| colspan="2" | 1100xx || Constante immédiate (8bits) || MOVLW || Copie constante dans accumulateur
|-
| colspan="2" | 1101xx || Constante immédiate (8bits) || RETLW || MOV fusionné avec un retour de fonction
|-
| colspan="2" | 111000 || Constante immédiate (8bits) || IORLW || OU
|-
| colspan="2" | 111001 || Constante immédiate (8bits) || ANDLW || ET
|-
| colspan="2" | 111010 || Constante immédiate (8bits) || XORLW || XOR
|-
| colspan="2" | 11110x || Constante immédiate (8bits) || SUBLW || Soustraction
|-
| colspan="2" | 11111x || Constante immédiate (8bits) || ADDLW || Addition
|}
Les PIC gèrent l'adressage absolu et immédiat, mais pas plus. L'adressage absolu, celui où l'adresse est intégrée dans l'instruction, est très simple à implémenter. Les adresses prennent moins d'un octet, vu que la taille de la RAM est très petite, les adresses sont très courtes, les intégrer dans des instructions elles-mêmes courtes n'est pas un problème. L'adresse est encodée sur 5 à 7 bits, selon le modèle, ce qui permet d'adresser entre 32 et 128 octets.
Les PIC ne supportent pas l'adressage indirect, mais peuvent l'émuler grâce à un '''registre d'adresse''' dédié. Il s'agit du registre FSR, qui mémorise l'adresse à lire/écrire. Il est possible de copier un pointeur dedans, qui provient soit de l'accumulateur, soit de la mémoire SRAM. Dans les deux cas, la donnée adressée est lue ou écrite dans un registre INDR, est un registre d’interfaçage rendu adressable. Le registre FSR est directement connecté sur le bus d'adresse.
Les modèles de base se débrouillent avec un registre FSR et un registre INDR, mais les modèles plus performants ont deux ou trois copies de chaque registre. Les modèles PIC18 ajoutent aussi des instructions LOAD/STORE qui émulent les modes d'adressage à post- ou pré-incrément/décrément, et le mode d'adressage "Base + Indice + Décalage", encore une fois en utilisant les registres FSR et INDR.
Avec tout ce qu'on vient de dire, vous devriez pouvoir comprendre la microarchitecture d'un PIC, qui est résumée dans ce schéma.
[[File:DocPIC16F84 all.png|centre|vignette|upright=2.5|Microarchitecture du PIC16F84.]]
===Les microcontrôleurs Intel 8051/8031===
[[File:Pinagem8031.jpg|vignette|Broches du 8051.]]
Les microcontrôleurs Intel 8051/8031 sont des microcontrôleurs 8 bits, commercialisés par Intel. Elle contient un processeur 8/16 bits, 4 kibioctets de mémoire ROM, une RAM de 128 octets. Niveau entrées-sorties, il contient un port série, ainsi que 4 ports d'un octet chacun sur lesquels il peut lire ou écrire. Il supporte des interruptions, avec un contrôleur d'interruption intégré. Il contient aussi deux ''timers'' de 16 bits chacun, qui déclenchent des interruptions quand ils tombent à zéro ou à une valeur configurable.
Ils ont de nombreuses ressemblances avec les microcontrôleurs PIC. Le processeur du 8051 est une architecture à accumulateur de 8 bits, ses registres sont mappés en mémoire RAM, il a un registre d'adresse dédié à l'adressage indirect et j'en passe. Mais il y a aussi des différences notables. Par exemple, le 8051 n'a pas de pile d'adresse de retour, contrairement aux processeurs PIC. Il fait autrement, à savoir qu'il gère une pile d'appel placée en mémoire RAM,ce qui est très différent.
Une autre différence est que les registres sont placés dans un banc de registre à part des 128 octets de SRAM. Il y a une SRAM séparée du banc de registre, contrairement à ce qu'on a sur les microcontrôleurs PIC. Par contre, les registres du processeur sont mappés en mémoire RAM, y compris l'accumulateur, le registre d'état, le ''program counter'', et bien d'autres. Mais le fait qu'ils soient séparés de la SRAM permet de les mapper dans l'espace d'adressage sans marcher sur les pieds de la SRAM. Vu que le processeur peut adresser 256 octets, mais n'a que 128 octets de SRAM, les registres sont mappés dans les 128 octets restants. Les entrées-sorties aussi sont mappées dans ces 128 octets restants.
L'ensemble utilise une architecture Harvard, contrairement à ce que pourrait faire croire le schéma ci-dessous.
[[File:Arkitektura mikro kontrollerit Intel 8051.png|centre|vignette|upright=2.5|Microcontrôleur 8051]]
Avec ce qu'on vient de dire, on peut donner la ''memory map'' de ce microcontroleur, pour la SRAM. Les 32 premières adresses sont réservés à la mémoire SRAM, c'est 32 octets de RAM utilisable à volonté par le programmeur. Les 16 adresses suivantes sont adressables bit par bit, ou octet par octet. L'intervalle bit-adressable va de l'adresse 32 (inclue) à l'adresse 47 (inclue). Les 96 octets suivants sont de la mémoire RAM adressable, affectée par défaut à la pile d'appel mais adressable via adressage direct si besoin. Les 128 octets de poids fort sont réservés aux registres et aux entrée-sorties mappées en mémoire.
[[File:Memory map du 8051.png|centre|vignette|upright=2|Memory map du 8051]]
Les 128 octets au sommet de l'espace d'adressage sont décrit dans le schéma ci-dessous. On voit que l'accumulateur est mappé dedans, de même que le registre d'état PSW et le ''program counter'' IP. Les ports d'entrée-sortie sont aussi mappés dedans. Une partie des octets sont bit-adressables, et cette partie inclus les registres du processeur et les ports d'entrées-sorties.
[[File:MFrey SFR MCS-51.svg|centre|vignette|upright=2|Memory map des 128 octets de poids fort du 8051]]
Pour ce qui est des instructions, le 8051 supporte les opérations de multiplications et de divisions, contrairement aux microcontrôleurs PIC qui se limitaient à l'addition et la soustraction.
Une autre particularité est que le processeur incorpore une '''unité de calcul de 1 bit'''. Elle permet de faire des opérations sur des bits, avec 17 instructions possibles au total. L'ALU de 1 bit est reliée à un accumulateur de 1 bit et 32 registres de 1 bits. Elle peut lire des opérandes de 1 bit en mémoire RAM ou sur les ports d'entrée-sortie, qui sont tous bit-adressables. Pour le dire autrement, chaque bit d'un port d'entrée-sortie a sa propre adresse mémoire, qui permet de le sélectionner. Il en est de même avec 18 adresses de la mémoire SRAM, ce qui permet d'adresser 144 bits (18 adresses * 8 bits par octet adressé).
[[File:Intel 8051 arch.svg|centre|vignette|upright=2|Microarchitecture de l'Intel 8051.]]
===Le Fairchild F8 et la console de jeu Fairchild Channel F===
Un autre exemple est la Fairchild F8 de la défunte entreprise Fairchild Semiconductor. Il incorpore un processeur 8 bits, c'est à dire que le processeur fait des calculs sur des entiers de 8 bits maximum, une mémoire RAM de 64 octets, ainsi qu'une mémoire ROM de 1 kibioctet. Les 64 octets de RAM sont certes très peu, mais c'est suffisant pour certaines applications simples, comme les caisses automatiques de l'époque, ou des applications embarquées. Et de toute façon, il est possible d'ajouter de la mémoire RAM supplémentaire si les 64 octets de RAM intégrée ne suffisent pas. Le système était donc modulaire, adaptable selon les besoins, peu cher pour son implémentation minimale sans RAM en plus.
Vu qu'il s'agit d'un des tout premiers ordinateurs, il est sorti à une époque où la technologie était rudimentaire. À cette époque, le processeur était composé de pièces détachées qu'il fallait souder ensemble pour obtenir un processeur fonctionnel. Ce n'est que plus tard qu'est apparu le micro-processeur, qui regroupe un processeur complet dans un seul circuit intégré. Le résultat est que le processeur du Fairchild F8 est coupé en deux, l'unité de calcul et l'unité de contrôle sont placés dans des pièces détachées séparés.
Le microcontrôleur est composé de trois à quatre pièces détachées, certaines étant optionnelles. La première est le '''3850 CPU''', qui regroupe l'unité de calcul et la mémoire RAM intégrée. La seconde est le PSU (''3851 Program Storage Unit''), qui regroupe la mémoire ROM et l'unité de contrôle, ''program counter'' inclut. S'il y a besoin d'utiliser plus de RAM, il faut ajouter un circuit d’interface mémoire, qui est au choix le ''3852 Dynamic Memory Interface'' (DMI) ou le ''3853 Static Memory Interface'', le premier étant connecté à une mémoire de type DRAM, l'autre à une SRAM (nous verrons ce que sont les DRAM et les SRAM dans le prochain chapitre).
[[File:Fairchild F8.png|centre|vignette|upright=2|Fairchild F8]]
Le système minimal est composé d'un PSU et d'un 3850, sans les circuits d'interface mémoire. Le tout donne un système avec un processeur 8 bit, 64 octets de RAM et 1 kibioctet de ROM, les deux mémoires étant intégrées dans le "processeur". Le processeur gérait 4 entrées-sorties, chacune étant reliée avec un bus de 8 bit au processeur. Au passage, en 1977, Mostek a créé un microcontrôleur qui regroupe un PSU et un 3850 : le Mostek 3870. Le système minimal n'avait pas de bus d'adresse, vu que la RAM était intégrée au processeur. C'est les 3852 et 3853 qui ajoutaient un bus d'adresse. Ils ajoutent un bus d'adresse de 16 bits, ce qui permet d'adresser 64 kibioctets de RAM.
[[File:Fairchild-Channel-F.jpg|vignette|un Fairchild Channel F]]
Le Fairchild F8 a été utilisé dans la Fairchild Channel F, une des toute première console de seconde génération, à savoir des consoles qui utilisaient des cartouches de jeu. Avant les consoles de seconde génération, les consoles étaient non-programmables. Elles étaient conçues pour faire tourner un jeu précis, aucun autre, le jeu étant implémenté dans leurs circuits.
La Fairchild Channel F est composé du système minimal, auquel on a ajouté une carte son rudimentaire et 2 kibioctets de mémoire vidéo. La mémoire vidéo sert uniquement pour afficher des images à l'écran : on écrit l'image à afficher dedans, un circuit vidéo se charge de l'afficher à l'écran automatiquement. Le processeur ne fait qu'écrire dans cette RAM vidéo, il ne peut pas en lire le contenu. De la RAM supplémentaire peut cependant être ajoutée dans les cartouches de jeu.
===Le HP Nanoprocessor : un processeur sans ALU===
Un dernier exemple est celui du processeur HP Nanoprocessor, de l'entreprise HP. Il a été commercialisé en 1974, en même temps que les premiers micro-processeurs d'Intel. Tous les processeurs de l'époque étaient des processeurs 8 bits et le HP Nanoprocessor ne faisait pas exception. Ce n'était pas un processeur haute performance, il était destiné à des applications d'informatique industrielle ou embarquée. D'ailleurs, il utilisait des transistors de type metal-gate, peu performants, là où ses contemporains utilisait des transistors en silicium, plus performants.
Mais une caractéristique qui rend cela encore plus claire est qu'il n'y a pas d'ALU ! En effet, ce processeur est incapable de faire des additions, des soustractions ou autres opérations simples ! Il est cependant capable d'effectuer des incrémentations et décrémentations, des décalages, des opérations logiques comme des ET/OU/NON/XOR et bien d'autres. Il supporte en tout 48 instructions, avec un support limité des modes d'adressage indirects. Les instructions de branchement étaient des instructions SKIP, il n'y avait pas d'instructions de branchement généralistes.
Pour ce qui est des registres, il disposait de 16 registres de 8 bits et d'un accumulateur. Niveau mémoire, il était relié à une mémoire ROM, rien de plus. Il n'avait de RAM supplémentaire qu'on pouvait lui adjoindre, il devait se débrouiller avec seulement ses registres. Et cela ne posait pas de problèmes pour son usage. Seul le mode d'adressage indirect à registre est supporté, il n'y a pas de registres d'indices. Ce mode d'adressage permet de lire des données en mémoire ROM, la ROM pouvant contenir des tableaux de valeurs constantes.
: Il est possible de lui adjoindre de la RAM via les ports d'entrée-sortie, ainsi qu'une ALU, mais RAM et ALU sont traités comme des périphériques avec lesquels on communique, ils ne sont pas intégrés au processeur.
Niveau micro-architecture, il incorporait une unité de calcul logique et un circuit comparateur. Le comparateur était un circuit comparateur série des plus basiques, qui était utilisé pour les instructions de branchement et associées. L'unité de calcul logique gérait des incrémentations/décrémentation, des décalages, les opérations logiques et quelques autres. L'unité de calcul logique était bit-slicée, à savoir conçue en assemblant 8 ALU de 1 bit chacune, enchainées en série. Le tout était combiné à des circuits de ''carry skip''.
[[File:Unité de calcul du HP nanonprocessor.png|centre|vignette|upright=2|Unité de calcul du HP nanoprocessor]]
Son unité de décodage d'instruction était très simple, essentiellement basée sur des portes NOR, grâce à un encodage efficace des instructions machine. Le ''program counter'' fait 11 bits, ce qui permet d'adresser une ROM de 2 kibioctets. Le ''program counter'' était relié à un circuit incrémenteur qui gérait les isntructions SKIP (il pouvait incrémenter le ''program counter'' par pas de 1 ou de 2 en cas de SKIP). Le processeur contient aussi deux registres, qui servent en quelque sorte de pile d'adresse de retour. Un premier registre mémorise l'adresse de retour d'une fonction, l'autre mémorise le ''program counter'' lors d'une interruption, pour savoir où brancher à la fin de l'interruption.
[[File:HP nanoprocessor.png|centre|vignette|upright=2.5|HP nanoprocessor]]
Fait intéressant, le concepteur du processeur a gracieusement donné les masques utilisés pour graver le silicium du processeur au site [https://www.cpushack.com/ CPU Shack]. Les masques en question sont disponibles ici :
* [https://www.cpushack.com/2020/08/20/hp-nanoprocessor-mask-set/ HP NanoProcessor Mask Set]
* [https://www.cpushack.com/2020/08/09/the-forgotten-ones-hp-nanoprocessor/ The Forgotten Ones: HP Nanoprocessor]
Les masques ont été analysés par Ken Shirrif dans cet article de blog :
* [https://www.righto.com/2020/09/hp-nanoprocessor-part-ii-reverse.html HP Nanoprocessor part II: Reverse-engineering the circuits from the masks]
==Les processeurs 8/16 bits à architecture Von Neumann==
L'usage d'une architecture Harvard est une solution pour adresser plus de mémoire avec des CPU 8 bits. Mais plusieurs microprocesseurs commerciaux n'utilisaient pas cette solution. À la place, c'était des architectures Von Neumann, mais qui étaient capables de gérer des adresses de 16 bits. Les données faisaient 8 bits, les registres faisaient 8 bits, mais quelques techniques permettaient de gérer des adresses de 16 bits. Nous parlerons de '''processeurs 8/16 bits''' pour les désigner, et nous allons les étudier à part.
Un point important est que la gestion d'adresses de 16 bits permet d'adresser 64 kibioctets, qui peuvent être remplis avec de la RAM et de la ROM. On a donc le meilleur des mondes : 64 kibioctets de mémoire, mais avec des données de 8 bits et les économies de circuit qui vont avec. L'avantage est que le processeur peut maintenant gérer une vraie pile d'appel, pas seulement une pile d'adresse de retour. Il lui suffit pour cela d'intégrer un pointeur de pile codé sur 16 bits.
===Les modes d'adressage par page des CPU Motorola===
Les processeurs Motorola 8 bits étaient des processeurs 8 bits avec un bus d'adresse de 16 bits. C'était des processeurs à accumulateur incorporant deux registres d'indice, un registre d'état, un pointeur de pile, et un ''program counter''. Tous les registres sont reliés au bus d'adresse, sauf le registre d'état et l’accumulateur. Tous les registres font 8 bits, sauf le ''program counter''. La pile est câblée pour être dans un bloc de 256 octets compris entre l'adresse 1 0000 0000 et l'adresse 1 1111 1111, ce qui fait que son adressage se fait avec un seul octet.
[[File:6502-architecture.svg|centre|vignette|upright=1.5|Architecture simplifiée du 6502.</br> X et Y : registres d'indice ;</br> S : le pointeur de pile ;</br> A : accumulateur ;</br>P : registre d'état.</br>]]
Les processeurs Motorola 8 bits utilisaient une méthode simple pour adresser 64 kibioctets de RAM, avec des registres de 8 bits. Pour cela, ils utilisaient une variante de l'adressage base + décalage. Elle améliore l'adressage absolu, qui intègre l'adresse à lire/écrire dans l'instruction elle-même. L'adresse en question est de 8 bits et n'encode que les 8 bits de poids faible de l'adresse, les 8 bits de poids fort sont dans un '''registre de page''' adressé implicitement. L'adresse finale est obtenue en concaténant ce registre avec l'adresse mémoire intégrée dans l’instruction. Le résultat est que la mémoire était découpée en blocs de 256 consécutifs, chacun pouvant servir de fenêtre de 256 octets. Une page est réservée pour la pile, la seconde, comme dit plus haut.
Formellement, ce mode d'adressage a des ressemblances avec la commutation de banques, une technique qu'on verra dans les chapitres sur l'espace d'adressage et la mémoire virtuelle. Mais ce n'en est pas du tout : le registre de page est utilisé uniquement pour les accès mémoire avec le mode d'adressage base + décalage, mais pas pour les autres accès mémoire, qui gèrent des adresses complètes. Notons que l'usage d'un registre de page dédié fait que celui-ci est adressé implicitement.
Il faut noter que la technique a été utilisée sur des processeurs 16 bits, pour contourner la petite taille des instructions. Un exemple est celui du HP 2100, un processeur 16 bits. Il avait un registre de page de 5 bits et encodait 10 bits d'adresse dans ses instructions. Ses instructions d'accès mémoire disposaient d'un bit qui choisit quel mode d'adressage utiliser. S'il était à 0, l'adressage absolu était utilisé, le registre de page n'était pas utilisé. Mais s'il était à 1, le registre de page était utilisé pour calculer l'adresse.
Une évolution de l'adressage précédent est le '''mode page direct'''. Avec lui, le registre de page est étendu et contient une adresse mémoire complète. L'adresse finale n'est pas obtenue par concaténation, mais en additionnant le registre de page avec l'adresse fournie par adressage absolu + décalage. Un exemple est celui des premiers processeurs Motorola, qui géraient des adresses courtes de 8 bits. L'adresse courte de 8 bits correspondait non pas aux 256 premiers octets de la mémoire, mais à une fenêtre de 256 octets déplaçable en mémoire. La position de la fenêtre de 256 octets était spécifiée par le registre de page de 16 bits, qui précisait l'adresse du début de la fenêtre, celle de sa première donnée.
Il s'agit donc formellement d'adressage base + décalage, à un détail près : il n'y a qu'un seul registre de base. Le fait que ce registre de base soit unique fait qu'il est adressé implicitement, on n'a pas à encoder le numéro/noms de registre dans l'instruction. Le registre de base est utilisé uniquement pour l'adressage absolu, pas pour les autres accès mémoire. S'il y a des ressemblances avec la segmentation, une technique de mémoire virtuelle qu'on abordera dans quelques chapitres, ce n'en est pas vu que le registre de base est utilisé seulement pour un mode d'adressage bien précis.
===Le ''pseudo-aliasing'' des registres des processeurs Intel x86===
Voyons maintenant le cas des anciens processeurs 8 bits d'Intel à savoir l'Intel 4004, 4040, 8008 et 8080. Le Z80, un processeur inspiré des CPU Intel 8 bits, est aussi concerné. Avant de poursuivre, parlons des registres de ces processeurs. Les premiers CPU Intel incorporaient 7 registres de 8 bits nommés A, B, C, D, E, F, H, L, SP. Ils correspondent respectivement à : l'accumulateur A ; six registres nommés B, C, D, E, H et L ; le registre d'état F ; le pointeur de pile SP. Le Z80 ajoute deux registres d'indice X et Y. De plus, le Z80 dispose de registres d'interruption, qui sont en quelque sorte des copies des registres A, B, C, D, E, F, H, L. Le tout est illustré dans le tableau ci-dessous.
{|class="wikitable" style="text-align:center;"
|-
!
! Registres des CPU Intel
! Registres supplémentaires du Z80
|-
! Accumulateur
| A
| A'
|-
! Registre d'état
| F
| F'
|-
! Registres généraux
| B, C, D, E, H, L
| B', C', D', E', H', L'
|-
! Pointeur de pile
| colspan="2" | SP (sauf pour le 8008)
|-
! Registres d'indice
|
| X et Y
|}
Le 8008 incorpore une pile d'appel de 7 adresses, dans le processeur lui-même. Il en est de la même avec le 4004 et le 4040, comme on le verra dans la section sur les processeurs 4 bits. Mais le 8080 et le 8085 ont remplacé le tout par un simple pointeur de pile, afin d'avoir une véritable pile d'appel. Autant c'est impossible d'avoir une pile d'appel avec seulement 256 octets de mémoire, autant on peut se le permettre avec 65 536 adresses.
Pour gérer des adresses de 16 bits, ils auraient pu utiliser des registres d'adresse séparés, mais on préféré un système de '''pseudo-''aliasing'' de registres'''. Formellement, c'est un système qui concatène deux registres 8 bits pour obtenir une adresse de 16 bits. L’appariement a lieu lors de certaines opérations bien précises, qui n'ont de sens que pour les adresses : la lecture/écriture en mémoire, et l'incrémentation.
Il y avait cependant des contraintes quant aux paires de registres possibles, toutes les paires de registres n'étaient pas autorisées. Les CPU concernés sont donc des processeurs hybrides accumulateur-registre généraux. L'accumulateur ne peut pas être appairé, seuls les registres généraux le peuvent. Le Z80 autorise plus de paires que les CPU Intel. Voici les paires de registres qui pouvaient servir d'adresse 16 bits :
* Les CPU 8008 d'Intel autorisait une seule paire formée des registres H et L.
* Les autres processeurs, à savoir le 8080, le 8085 et le Z80, autorisaient : les paires BC, DE et HL.
Le 8008 ne gérait que des opérations sur 8 bits. Mais le 8080 et le 8085 ont ajouté des instructions 16 bits qui agissaient sur des paires de registre, que le Z80 a repris. Une paire de registres est considérée comme un registre unique de 16 bits pour certaines opérations arithmétiques, dont l'incrémentation. Voici la liste des instructions concernées :
* INC et DEC pour l'incrémentation et la décrémentation ;
* DAD : additionne le registre HL avec une autre paire (Hl inclus) ;
* LXI : copie une constante immédiate dans une paire de registres ;
* LHLD : lit 16 depuis la mémoire et l'enregistre dans une paire de registres ;
* SHLD : copie 16 bits depuis une paire de registres et l'enregistre en mémoire ;
* PUSH et POP : empile ou dépilent une paire de registre sur la pile ;
* XTHL : échange la paire HL avec les 16 bits au sommet de la pile d'appel ;
* XCHG : échange le contenu de la paire HL et DE.
Pour résumer, le processeur avait des instructions LOAD, STORE, PUSH et POP adaptées pour gérer des paires de registre. De plus, l'instruction XCHG permettait d’échanger le contenu des paires DE et HL. L'instruction a été étendue sur les processeurs 16 bits pour échanger tous les registres. Mais l'implémentation était alors différente. L'incrémentation sur une paire de 16 bit était très utile, car les adresses sont souvent incrémentées quand on parcours un tableau. Ces instructions nous donnent quelques indices sur ce qu'il y a dans le processeur.
Le système de pseudo-aliasing a un impact sur le banc de registre. Le banc de registre regroupe les registres généraux et le pointeur de pile, mais ne contient pas l'accumulateur. Les contraintes sur les paires de registres possibles ne s'expliquent que d'une seule manière : le banc de registre contient des registres de 16 bits, une paire de registres 8 bits est mémorisée dans un registre unique. Il faut donc faire une différence entre les registres architecturaux de 8 bits, et les registres réels de 16 bits.
Le banc de registre a un port de 8 bits pour les données, qui est fabriqué à partir d'un port 16 bits auquel on a rajouté un multiplexeur pour choisir soit l'octet de poids faible, soit l'octet de poids fort. Le bus de données fait 8 bits, ce qui fait que les instructions LOAD, STORE, PUSH et POP pour paires 16 bits sont réalisées en deux fois : on lit/écrit l'octet de poids faible, puis celui de poids fort. Par contre, le bus d'adresse fait bien 16 bits. Cela suggère que le banc de registre dispose d'un port de 16 bits dédié aux adresses, en plus du port de données 8 bits.
[[File:Architecture d'un CPU 8-16 bits avec un banc de registre double port.png|centre|vignette|upright=2|Architecture d'un CPU 8-16 bits avec un banc de registre double port]]
L'incrémentation d'une paire 16 bits ne coute rien à implémenter, ou presque. En effet, le processeur incorpore un incrémenteur 16 bits pour le ''program counter'', qui est relié au bus d'adresse. L'idée est de rentabiliser cet incrémenteur, en lui permettant d'incrémenter des données/adresses de 16 bits obtenues via pseudo-aliasing. De même, il peut être utilisé pour incrémenter le pointeur de pile, voire un compteur de rafraichissement mémoire (pour rappel, le rafraîchissement mémoire demande de balayer la mémoire d'adresse en adresse et été fait par le CPU à l'époque). Pour cela, il suffit de connecter le ''program counter'', le banc de registre, et l'incrémenteur, via un bus dédié.
[[File:Calcul d'adresse par ALU dédiée avec PC séparé.png|centre|vignette|upright=2|Calcul d'adresse par ALU dédiée avec PC séparé]]
Notez qu'on peut encore simplifier le tout en placant le ''program counter'' dans le banc de registre, ce qui ne gênera pas le travail de l'incrémenteur mais simplifiera le câblage au bus d'adresse. Ce n'était pas systématique, certains processeurs mettaient le ''program counter'' dans le banc de registre, d'autres non.
: Inclure le ''program counter'' dans le banc de registre permet parfois de remplir un vide. Par exemple, sur un processeur avec 12 registres, le banc de registre devrait faire idéalement 16 registres, inclure le ''program counter'' dedans fait monter le tout à 13.
[[File:Architecture d'un CPU 8-16 bits.png|centre|vignette|upright=2|Architecture d'un CPU 8-16 bits]]
Les processeurs Intel 8 bits, à savoir le 8008, le 8080 et le 8085 ; mettaient le ''program counter'' dans le banc de registre. Vous avez donc toutes les armes pour comprendre leur micro-architecture. Par exemple, voici la micro-architecture du processeur 8080. Remarquez le banc de registre, qui contient tous les registres sauf l'accumulateur et le registre. Il a deux ports : un pour les adresses et un pour les données. Notez le dé-multiplexeur sur le port de donnée. Pour le reste, il s'agit d'une architecture à accumulateur hybride des plus classiques.
[[File:Intel 8080 arch.svg|centre|vignette|upright=3|Microarchitecture de l'Intel 8080.]]
Le Z80 est un processeur inspiré du design des processeurs Intel 8 bits, mais avec pas mal d'améliorations. Un point particulier de ce processeur est son banc de registre. Il contient tous les registres du processeur, y compris l'accumulateur et le registre d'état ! Les seuls registres en-dehors du banc de registre sont le ''program counter'' et un compteur de rafraichissement mémoire IR.
Un autre point particulier est que les registres dans le banc de registres avaient une copie séparée accessible uniquement pour les interruptions, via fenêtrage de registres. Et l'accumulateur et le registre d'état étant dans le banc de registre, il y avait deux accumulateurs et deux registres d'état. Les registres A, B, C, D, E et F étaient dupliqués, par le pointeur de pile ni les registres d'indice. Les copies des registres étaient nommées A', B', C', D', E' et F'.
Le Z80 supportait des instructions d'échange de registre en plus des CPU Intel 8 bits. L'instruction EX peut échanger soit le contenu des paires D,E et H,F, soit la paire A,F avec la paire A',F'. L'instruction EXX échange les paires BC, DE, HL avec les paires BC', DE', HL'. En faisant cela, le programmeur pouvait utiliser deux fois plus de registres généraux s'il n'utilisait pas les interruptions. L'échange de paires se fait sans copies de registres, mais simplement en modifiant l'adresse envoyée sur le banc de registre. Pour cela, plusieurs bascules mémorisent des bits qui indiquent si les paires ont été échangées ou non. Il y a une bascule pour les paires DE , HL ; une autre pour les paires A,F et paire A',F', une dernière pour l'instruction EXX. En combinant ces bascules avec les noms de registres envoyés par le séquenceur, on peut échanger les paires de registres.
==Le cas particulier des processeurs 4 bits : le 4004 d'Intel==
L'Intel 4004 était le tout premier micro-processeur. Il s'agissait d'un microprocesseur de 4 bits, basé sur une architecture à accumulateur. Il disposait d'un accumulateur et de 16 registres d'indice, tous de 4 bits. Il faisait des calculs sur des données de 4 bits, appelées des nibbles. Cependant, sur ses 46 instructions machines supportées, 41 agissaient sur des opérandes de 8 bits, les 5 restantes sur des opérandes de 16 bits. Simplement, les calculs se faisaient en deux fois, en échangeant des données entre mémoire RAM et accumulateur.
Le 4004 est un circuit intégré avec peu de broches. Il dispose notamment d'un bus de données/adresse, qui est multiplexé, c’est-à-dire qu'il sert alternativement de bus de données et de bus d'adresse selon les besoins. Le bus de commande mémoire fait 5 bits, dont 4 pour les chips de RAM, un pour la ROM. Les adresses sont codées sur 12 bits, les données sur 4 et les instructions sur 8 bits. L'envoi d'une adresse sur le bus se fait en plusieurs fois, de même que la lecture d'une instruction. Il s'agit là d'une adaptation pour outrepasser les limitations d'un processeur 4 bit.
[[File:Intel 4004 processor pinout.png|centre|vignette|upright=2|Broches de l'Intel 4004. Nous verrons à quoi elles servent plus bas.]]
===L'espace d'adressage de l'Intel 4004===
Les adresses du processeur sont sur 12 bits, ce qui fait 4096 adresses différentes. Elles regroupent à la fois la ROM et la mémoire RAM, vu que l'architecture est une sorte de mélange bizarre entre une architecture Von Neumann et Harvard. Le processeur gère bien deux espaces d'adressage séparés, mais la RAM et la ROM sont reliés au même bus. La sortie CM-ROM du processeur indique si l'adresse envoyée correspond à la RAM ou la ROM. Un circuit de décodage d'adresse active ou désactive la RAM selon la valeur de ce bit, l'inverse pour la ROM, en agissant sur leurs bits Chip Select. Seule la RAM ou la ROM répondent alors à l'adresse.
Pour ce qui est de la RAM, le circuit de décodage d'adresse pouvait gérer au maximum 1024 adresses différentes, chacune contenant un nibble. Pour cela, le CPU 4004 était relié à une ou plusieurs RAM externes, des Intel 4002. Chaque Intel 4002 contenait 64 nibbles de données, plus 16 nibbles de statut qu'on ne détaillera pas ici. Les nibbles de statut étaient accessibles en utilisant des instructions d'entrée-sortie, donc pas avec des lectures/écritures mémoire. Les 64 nibbles de données sont découpés en 4 groupes de 16 nibbles. Le CPU pouvait être relié à maximum 16 Intel 4002, ce qui fait 1024 nibbles de données et 256 nibbles de statut. L'ensemble permet de remplir l'espace d'adressage de 1024 adresses.
===Le registre de page et le pseudo-aliasing des registres===
Sélectionner une adresse mémoire utilisait un mélange entre pseudo-aliasing et registre de page. Pour les données, les 1024 adresses étaient découpées en 4 pages de 256 adresses. Pour la ROM, les 4096 adresses étaient découpées en 16 pages de 256 adresses. Localiser une donnée dans une page ne requiert que 8 bits, 2/4 bits supplémentaires permettent de sélectionner la page voulue. Le registre de page était dans le processeur lui-même, et était relié aux sorties du processeur nommées CM-RAM 0, 1, 2 et 3. Les 4 sorties encodaient un nombre qui permet de sélectionner le numéro de page voulu.
Le registre de page fait 5 bits : un pour distinguer RAM et ROM, 4 bits pour sélectionner la page voulue. L'avantage est que la carte mère gère au maximum 16 chips de RAM, ce qui colle parfaitement avec les 4 utilisés pour sélectionner une page. Un chip de RAM correspond à une page, et chacun est activé ou désactivé suivant la page sélectionnée. Pour cela, il suffit d'ajouter un décodeur sur la carte mère, qui prend les 4 bits du registre de page et fournit les signaux Chip Select aux différents chips de RAM.
Reste alors à utiliser les 8 bits d'adresse à l'intérieur d'un chip de RAM. Le 4004 permettait de concaténer deux registres d'indice de 4 bits pour former une adresse de 8 bits. Les instructions d'accès mémoire pouvaient ainsi préciser une paire de registre d'indice pour préciser quelle adresse lire/écrire. Idem pour les branchements indirects : le processeur supportait une instruction de branchement indirect qui précisait l'adresse dans une paire de registres d'indice. Les registres d'indice sont donc assez mal nommés sur cette architecture, vu qu'ils peuvent servir soit de registre d'indice, soit de demi-registre d'adresse. Il s'agit là du système de pseudo-aliasing des registres, mais appliqué aux registres d'indice.
L'Intel 4004 gérait deux instructions pour gérer les adresses mémoires. La première, l'instruction DCL (''Designate Command Line'') configure le registre de page. Elle prend en entrée un numéro de page et le copie dans le registre de page. L'opérande peut provenir d'un registre d'indice ou de l'accumulateur. La seconde, l'instruction SRC (''Send Register Control'') concatène deux registres d'indice pour obtenir une adresse de 8 bits. Un accès mémoire se fait donc en maximum trois instructions : une qui configure le registre de page si ce n'est pas déjà fait, une instruction SRC pour envoyer l'adresse, et une troisième instruction qui dit s'il faut faire une lecture ou une écriture.
===La microarchitecture de l'Intel 4004===
Il incorporait une pile d'adresse de retour intégrée au processeur. La pile d'adresse acceptait exactement 3 adresses maximum. Elle était regroupée avec le ''program counter'' dans un banc de registre, de 4 registres. Le ''program counter'' et le pointeur de pile faisaient chacun 12 bits, soit trois nibble. Ils étaient incrémentés par un incrémenteur dédié.
SI on omet le registre de page et la pile d'adresse, le 4004 est une architecture à accumulateur des plus classiques, avec un bus interne unique, un banc de registre pour les registres d'indices, un accumulateur relié à une unité de calcul. Les registres d'indice étaient dans un banc de registre séparés, car ils faisaient 4 bits chacun, contrairement au pointeur de pile et le ''program counter''. Un détail important est que les bancs de registres du 4004 étaient implémentés avec de la DRAM, et non des registres usuels fabriqués avec des bascules 1 bit.
[[File:Microarchitecture de l'Intel 4004.png|centre|vignette|upright=2.5|Microarchitecture de l'Intel 4004]]
<noinclude>
{{NavChapitre | book=Fonctionnement d'un ordinateur
| prev=Les architectures à pile et mémoire-mémoire
| prevText=Les architectures à pile et mémoire-mémoire
| next=Les processeurs de traitement du signal
| nextText=Les processeurs de traitement du signal
}}
</noinclude>
5eci33z3189vk4zd9sjg7vhoxpt8q4t
765730
765729
2026-05-01T20:24:52Z
Mewtow
31375
/* Les microcontrôleurs Intel 8051/8031 */
765730
wikitext
text/x-wiki
Nous avons déjà abordé la notion de processeur 8, 16, 32, 64 bits. Elle désigne la taille des registres généraux, ou de l'accumulateur. De nos jours, les processeurs 32 et 64 bits sont la norme, mais les premiers micro-processeurs étaient des processeurs 4 et 8, avant de passer rapidement au 16 bits. La raison est que leur budget en transistor limité faisait qu'on ne pouvait pas utiliser une ALU trop grande : une ALU 8 bit prend deux fois moins de place et de transistors qu'une ALU 16 bits. Cependant, les processeurs 8 bits avaient de sérieuses limitations qui étaient compensées par diverses solutions. Dans ce chapitre, nous allons faire une revue rapide des processeurs 8 bits et de leurs fonctionnalités.
La principale limitation des CPU 8 bits était l'adressage : des registres de 8 bits limitaient l'espace d'adressage à seulement 256 adresses, soit à peine 256 octets ! Intuitivement, on se dit que 256 octets est purement impraticable, on ne peut rien faire d'intéressant avec seulement 256 de RAM + ROM. Et c'est partiellement vrai. L'adage veut que 16 bits est la taille minimale intéressante, la limite à partir de laquelle on a assez de mémoire RAM/ROM pour coder des applications intéressantes. Mais 256 octets de RAM est largement suffisant sur de nombreux systèmes embarqués simples s'en accommodent : des caisses enregistreuses, des systèmes de régulation de feu de circulation, etc.
Pour les applications demandant plus de mémoire RAM, les CPU de l'époque contournaient la limitation de 256 octets de RAM avec de nombreux stratagèmes. Dans ce qui va suivre, nous allons séparer les CPU 8 bits selon qu'ils utilisent une architecture Harvard ou une architecture Von Neumann. La raison est qu'une architecture Harvard permet en soi de contourner partiellement ce problème d'adressage. Les choses sont plus compliquées avec une architecture Von Neumann.
==Les processeurs 8/16 bits à architecture Harvard ==
La première solution est d'utiliser une architecture Harvard. Le processeur 8 bit a alors deux espaces d'adressage : un pour la RAM, un autre pour la ROM. Et les deux utilisent des adresses de taille différente. La ROM est reliée à un bus d'adresse de 16 bits, alors que la RAM est elle connectée à un bus d'adresse de 8 bits. La RAM est donc limitée à 256 octets, alors que la ROM peut monter jusqu'à 64 kibioctets. Mine de rien, faire ainsi est largement suffisant.
Pour encore améliorer la situation, il est possible d'utiliser une architecture Harvard modifiée, qui permet de lire des données depuis la mémoire ROM. Cela réduit encore plus les besoins en mémoire RAM. Les constantes manipulées par le programme sont mémorisées en ROM, lues depuis la ROM, au lieu d'être chargées en RAM. Avec ce genre de stratagèmes, 256 octets de RAM est largement suffisant sur de nombreux systèmes, à condition qu'on ait assez de ROM pour coder un programme digne de ce nom. Par exemple, de nombreux systèmes embarqués simples s'en accommodent : des caisses enregistreuses, des systèmes de régulation de feu de circulation, etc.
Les processeurs 8 bits intègrent parfois les 256 octets de RAM directement dans le processeur, dans le banc de registres ! Beaucoup en implémentaient moins, avec par exemple seulement 64 octets de RAM, ou 32 octets, ou 128 octets. L'avantage est que cela élimine le bus pour les données, ce qui économise beaucoup de broches sur le circuit intégré du CPU. Et pour les applications demandant plus de RAM, on pouvait ajouter un circuit séparé qui permettait d'adresser une RAM plus grande. Et c'est ce qui explique que cette solution est beaucoup utilisée sur les microcontrôleurs peu puissants. Les exemples qui vont suivre devraient vous convaincre.
: Les processeurs de ce type implémentent des optimisations pour adresser plus de 256 octets de RAM. La plus connue est la commutation de banques. Mais nous n'avons pas encore abordé celle-ci, et il faudra attendre le chapitre sur l'espace d'adressage pour cela.
===Les microcontrôleurs PIC===
Les '''microcontrôleurs PIC''' regroupent des microcontrôleurs allant de microcontrôleurs 8 bits aux performances très faible, à des microcontrôleurs 32 bits bien plus puissants. Les microcontrôleurs PIC sont très utilisés dans l'embarqué ou d'informatique industrielle. Ils sont vendu à des volumes assez impressionnants, plusieurs millions par an. Et si vous avez ou êtes en train de faire des études d'électronique, je parie que vous les avez déjà vu en classe, ou que ce ne saurait tarder. Dans ce qui suit, nous allons nous concentrer sur les microcontrôleurs PIC 8 bits, à savoir les PIC 16, 16 et 18. Les PIC 24, qui sont des microcontrôleurs 16 bits, ne seront pas abordés.
Les microcontrôleurs PIC 8 bits sont une architecture Harvard, comme dit plus haut. Il y a aussi des registres pour les entrées et sorties. Les registres d'entrée-sortie permettent de lire ou écrire sur un port d'entrée-sortie ou de lire un ''timer''. En clair, les PIC ont un espace d'adressage séparé pour les entrées-sorties.
La mémoire ROM des PIC va de 1024 instructions à 4096 instructions. En comparaison, la mémoire RAM des microcontrôleurs PIC ne peut pas dépasser 256 adresses, et elle est encore plus petite en pratique sur certains modèles. Pour donner un exemple, le PIC16F84 a une RAM composée de 68 "registres" de 8 bits. Le terme "registres" devrait vous faire tiquer, mais c'est bien le terme utilisé dans la documentation des PIC. Et il faut admettre que la différence entre banc de registre et SRAM intégrée est floue, mais nous expliquerons pourquoi dans quelques paragraphes.
: Les PIC 18 peuvent adresser plus de 256 octets de RAM en utilisant la commutation de banques, une technique qui sera abordée dans plusieurs chapitres.
[[File:DocPIC16F84 3.png|centre|vignette|upright=3|Espaces d'adressage du PIC16F84.]]
Un détail est que la SRAM n'a qu'un seul port qui sert à la fois pour les lectures et écritures. Pour compenser, les PIC sont des architectures à accumulateur, où une opérande est lue depuis la SRAM, l'autre depuis l'accumulateur. Leur implémentation de l'accumulateur ajoute une petite subtilité : le résultat d'une opération arithmétique peut être enregistré ailleurs que dans l'accumulateur. Le résultat peut aussi remplacer la seconde opérande, celle lue en mémoire RAM. Dit autrement, le résultat est enregistré dans l'adresse mémoire source. Les instructions de calcul ont le choix : un bit dans leur encodage précise où enregistrer le résultat.
{|
|-
|[[File:DocPIC16F84 4.png|centre|vignette|upright=2|Microarchitecture simplifiée d'un microcontroleur PIC (ici, un 16F84).]]
|[[File:DocPIC16F84 5.png|centre|vignette|upright=2|Microarchitecture simplifiée d'un microcontroleur PIC (ici, un 16F84), avec les branchements directs.]]
|}
Outre l'accumulateur, les PIC disposent de registres de contrôle, d'un ''program counter'', d'un registre d'état, et d'un pointeur de pile. Un détail très important est que les registres sont mappés en mémoire, à quelques exceptions près ! En clair, on peut y accéder en lisant/écrivant à une adresse mémoire bien précise. Les seules registres qui ne sont pas mappés en mémoire sont l'accumulateur, les registres d'entrée-sortie, et la pile d'adresses de retour intégrée au processeur (voir plus bas). Par exemple, sur les modèles 16F, l'espace d'adressage fait 128 octets, dont 32 sont réservés aux registres du processeur, ce qui fait que seules 96 octets sont adressables comme de la RAM. Mais les 128 octets sont un seul et unique SRAM dans le processeur. Ce qui explique qu'il est difficile de séparer banc de registre et RAM principale sur ce processeur : les deux sont fusionnées ! Cela gaspille quelques adresses mémoire, mais permet une implémentation plus simple, avec un banc de registre unique.
: Les modèles PIC 17 ont rendu l'accumulateur mappé en mémoire RAM !
[[File:DocPIC16F84.png|centre|vignette|upright=2|DocPIC16F84]]
La petite taille de la ROM d'un PIC n'est pas une surprise. Les architectures 8 bits sont conçues pour ne pas utiliser beaucoup de transistors et être très simples. Aussi, utiliser une petite ROM est nécessaire. Mais il faut aussi adapter le jeu d'instruction, pour qu'il ait une bonne densité de code. Par exemple, il faut faire en sorte d'avoir des instructions assez courtes. Si les instructions font 16 bits au lieu de 32, on divise par deux le nombre de transistors nécessaire pour la mémoire ROM. La conséquence est que le jeu d’instruction des PIC est adapté à cette contrainte.
Les microcontrôleurs PIC utilisent un jeu d'instruction propriétaire, dont les instructions sont très petites. Les premières versions du jeu d'instruction utilisaient des instructions codées sur 12 bits, dont 5 pour l'adresse mémoire de la seconde opérande. Pour les branchements, 3 bits étaient utilisés pour l'opcode, 9 pour l'adresse de destination. Par la suite, les instructions ont été étendues à 13 bits sur les PIC1670, puis à 14, 15 et 16 bits. Les adresses ont alors été élargies, ce qui permet d'adresser en peu plus de mémoire RAM.
Il est intéressant de regarder comment les PIC font pour obtenir des instructions aussi courtes. Premièrement, le fait d'utiliser une architecture à accumulateur, couplé à une RAM très petite aident grandement. Les architectures à accumulateur ont besoin de préciser un opcode et une adresse mémoire pour chaque instruction, pas besoin de préciser de noms de registres ni le mode d'adressage. La taille des adresses mémoire est censé être un problème pour la densité de code, mais les adresses d'un processeur 8 bits font 8 bits. On peut alors avoir un jeu d'instruction étoffé, en utilisant des instructions 16 bits, qui concatènent un opcode et une adresse mémoire, d'un octet chacun.
Mais d'autres optimisations permettent d'avoir une bonne densité de code. Les PIC ont des branchements pour les appels et retour de fonction. Les PIC incorporent une pile d'appel de retour, qui fait 2 à 8 adresses suivant les modèles. Elle permet d'économiser quelques registres, car la pile d'appel n'est pas mappé dans l'espace d'adressage, elle n'est pas adressable. On économise ainsi 2 à 8 registres, sur 32-256 registres. De plus, cela simplifie l'encodage des instructions d'appel/retour de fonction, qui n'ont pas à préciser où enregistre l'adresse de retour.
Les PIC n'ont pas d'instructions de branchement conditionnels, ils font avec une SKIP instruction et des branchements inconditionnels. Du moins, c'est le principe, car si vous regardez la liste des instructions ci-dessous, vous verrez qu'il n'y a pas d'instruction SKIP. A la place, les instructions SKIP sont fusionnées avec d'autres instructions. Elles sont notamment fusionnées avec les instructions d'incrémentation et de décrémentation. Les PIC supportent une incrémentation normale, une décrémentation normale, une décrémentation fusionnée avec une instruction SKIP, et une incrémentation fusionnée avec une instruction SKIP. Les deux dernières incrémentent/décrémentent l'accumulateur et SKIP l'instruction suivante si le résultat est zéro. Elles permettent de fortement simplifier l'implémentation des boucles qui s'exécutent tant que leur compteur atteint zéro.
Les PIC disposent aussi d'instructions de manipulation de bit, pour tester/masquer un bit dans une opérande, 4 en tout. Il y a en a 4 en tout : mettre à 0, mettre à 1, tester si bit = 1, tester si bit = 0. Les instructions qui testent un bit prennent leur opérande dans l'accumulateur. Elles font le test du bit et décident s'il faut skipper l'instruction suivante ou non. Il y a aussi deux instructions de rotation à gauche et droite, qui tiennent compte de la retenue mémorisée dans le registre d'état. Par contre, il n'y a pas d'instructions de décalages, qui peuvent être émulées avec une rotation suivie d'un ET bit à bit. Mentionnons aussi une instruction pour inverser deux ''nibbles'' dans un octet.
Les modèles haute performance ajoutent des instructions d'addition avec retenue entrante, idem pour la soustraction. De telles instructions ssont très utiles pour faire des additions/soustractions sur des opérandes de 16 bits. Le processeur a beau être un CPU 8 bits, il peut être utilisé pour faire des calculs 16 bits, la performance est alors amoindrie, mais ce n'est pas un problème pour les applications d'un tel microcontroleur.
Les modèles intiaux, comme les PIC 10 et 12, ne supportaient pas les interruptions, mais c'est chose réglé sur les modèles plus récents. Ils ont même des registres séparés pour les interruptions et les programmes normaux. De plus, ils intégrent nativement un ''watchdog timer''.
{|class="wikitable" style="text-align:center"
|+ Jeu d'instruction des dodèles PCI 16
|-
! colspan="5" | Instructions diverses
|-
| colspan="3" | 00 0000 0000 0000 || NOP || Ne fait rien
|-
| colspan="3" | 00 0000 0000 1000 || RETURN || Instruction de retour pour une fonction
|-
| colspan="3" | 00 0000 0000 1001 || NOP || Instruction de retour pour une interruption
|-
| colspan="3" | 00 0000 0110 0011 || SLEEP || Mise en veille
|-
| colspan="3" | 00 0000 0110 0100 || CLRWDT || RESET le ''watchdog timer'', intégré dans le PIC
|-
! colspan="5" | Instructions de manipulation de bit
|-
| 0100 || Position du bit dans l'opérande || Adresse mémoire || BCF || Met le bit à 1
|-
| 0101 || Position du bit dans l'opérande || Adresse mémoire || BSF || Met le bit à 0
|-
| 0110 || Position du bit dans l'opérande || Adresse mémoire || BTFSC || Teste si le bit adressé est à 1
|-
| 0111 || Position du bit dans l'opérande || Adresse mémoire || BTFSS || Teste si le bit adressé est à 0
|-
! colspan="5" | Branchements
|-
| colspan="2" | 100 || Adresse mémoire || CALL || Appel de fonction
|-
| colspan="2" | 100 || Adresse mémoire || GOTO || Branchement inconditionnel
|-
! colspan="5" | Instructions logiques/arithmétiques avec opérande lue en mémoire RAM
|-
| colspan="5" | ''Le bit '''d''' dans l'opcode indique la destination : accumulateur ou adresse mémoire''.
|-
| colspan="2" | 0000001 || Adresse mémoire || MOVWF || Store (accumulateur vers destination)
|-
| colspan="2" | 000001d || Adresse mémoire || MOVWF || Met à zéro la destination (adresse ou registre)
|-
| colspan="2" | 000001d || Adresse mémoire || SUBWF || Soustraction
|-
| colspan="2" | 000010d|| Adresse mémoire || DECF || Décrémentation
|-
| colspan="2" | 000100d|| Adresse mémoire || IORWF || OU bit à bit
|-
| colspan="2" | 000101d|| Adresse mémoire || ANDWF || ET bit à bit
|-
| colspan="2" | 000110d || Adresse mémoire || XORWF || XOR bit à bit
|-
| colspan="2" | 000111d || Adresse mémoire || ADDWF VWF || Addition
|-
| colspan="2" | 001000d || Adresse mémoire || MOVF || LOAD
|-
| colspan="2" | 001001d || Adresse mémoire || COMF || NOT bit à bit
|-
| colspan="2" | 001010d || Adresse mémoire || INCF || Incrémentation
|-
| colspan="2" | 001011d || Adresse mémoire || DECFSZ || Décrémentation, puis instruction SKIP si résultat = 0
|-
| colspan="2" | 001100d || Adresse mémoire || RRF || Rotation à droite avec retenue entrante
|-
| colspan="2" | 001101d || Adresse mémoire || RLF || Rotation à gauche avec retenue entrante
|-
| colspan="2" | 001110d || Adresse mémoire || SWAPF || Echange deux ''niblle'' dans un octet
|-
| colspan="2" | 001111d || Adresse mémoire || INCFSZ || Incrémentation, puis instruction SKIP si résultat = 0
|-
! colspan="5" | Instructions logiques/arithmétiques avec constante immédiate
|-
| colspan="2" | 1100xx || Constante immédiate (8bits) || MOVLW || Copie constante dans accumulateur
|-
| colspan="2" | 1101xx || Constante immédiate (8bits) || RETLW || MOV fusionné avec un retour de fonction
|-
| colspan="2" | 111000 || Constante immédiate (8bits) || IORLW || OU
|-
| colspan="2" | 111001 || Constante immédiate (8bits) || ANDLW || ET
|-
| colspan="2" | 111010 || Constante immédiate (8bits) || XORLW || XOR
|-
| colspan="2" | 11110x || Constante immédiate (8bits) || SUBLW || Soustraction
|-
| colspan="2" | 11111x || Constante immédiate (8bits) || ADDLW || Addition
|}
Les PIC gèrent l'adressage absolu et immédiat, mais pas plus. L'adressage absolu, celui où l'adresse est intégrée dans l'instruction, est très simple à implémenter. Les adresses prennent moins d'un octet, vu que la taille de la RAM est très petite, les adresses sont très courtes, les intégrer dans des instructions elles-mêmes courtes n'est pas un problème. L'adresse est encodée sur 5 à 7 bits, selon le modèle, ce qui permet d'adresser entre 32 et 128 octets.
Les PIC ne supportent pas l'adressage indirect, mais peuvent l'émuler grâce à un '''registre d'adresse''' dédié. Il s'agit du registre FSR, qui mémorise l'adresse à lire/écrire. Il est possible de copier un pointeur dedans, qui provient soit de l'accumulateur, soit de la mémoire SRAM. Dans les deux cas, la donnée adressée est lue ou écrite dans un registre INDR, est un registre d’interfaçage rendu adressable. Le registre FSR est directement connecté sur le bus d'adresse.
Les modèles de base se débrouillent avec un registre FSR et un registre INDR, mais les modèles plus performants ont deux ou trois copies de chaque registre. Les modèles PIC18 ajoutent aussi des instructions LOAD/STORE qui émulent les modes d'adressage à post- ou pré-incrément/décrément, et le mode d'adressage "Base + Indice + Décalage", encore une fois en utilisant les registres FSR et INDR.
Avec tout ce qu'on vient de dire, vous devriez pouvoir comprendre la microarchitecture d'un PIC, qui est résumée dans ce schéma.
[[File:DocPIC16F84 all.png|centre|vignette|upright=2.5|Microarchitecture du PIC16F84.]]
===Les microcontrôleurs Intel 8051/8031===
[[File:Pinagem8031.jpg|vignette|Broches du 8051.]]
Les microcontrôleurs Intel 8051/8031 sont des microcontrôleurs 8 bits, commercialisés par Intel. Elle contient un processeur 8/16 bits, 4 kibioctets de mémoire ROM, une RAM de 128 octets. Niveau entrées-sorties, il contient un port série, ainsi que 4 ports d'un octet chacun sur lesquels il peut lire ou écrire. Il supporte des interruptions, avec un contrôleur d'interruption intégré. Il contient aussi deux ''timers'' de 16 bits chacun, qui déclenchent des interruptions quand ils tombent à zéro ou à une valeur configurable.
Ils ont de nombreuses ressemblances avec les microcontrôleurs PIC. Le processeur du 8051 est une architecture à accumulateur de 8 bits, ses registres sont mappés en mémoire RAM, il a un registre d'adresse dédié à l'adressage indirect et j'en passe. Mais il y a aussi des différences notables. Par exemple, le 8051 n'a pas de pile d'adresse de retour, contrairement aux processeurs PIC. Il fait autrement, à savoir qu'il gère une pile d'appel placée en mémoire RAM,ce qui est très différent.
Une autre différence est que les registres sont placés dans un banc de registre à part des 128 octets de SRAM. Il y a une SRAM séparée du banc de registre, contrairement à ce qu'on a sur les microcontrôleurs PIC. Par contre, les registres du processeur sont mappés en mémoire RAM, y compris l'accumulateur, le registre d'état, le ''program counter'', et bien d'autres. Mais le fait qu'ils soient séparés de la SRAM permet de les mapper dans l'espace d'adressage sans marcher sur les pieds de la SRAM. Vu que le processeur peut adresser 256 octets, mais n'a que 128 octets de SRAM, les registres sont mappés dans les 128 octets restants. Les entrées-sorties aussi sont mappées dans ces 128 octets restants.
L'ensemble utilise une architecture Harvard, contrairement à ce que pourrait faire croire le schéma ci-dessous.
[[File:Arkitektura mikro kontrollerit Intel 8051.png|centre|vignette|upright=2.5|Microcontrôleur 8051]]
Avec ce qu'on vient de dire, on peut donner la ''memory map'' de ce microcontroleur, pour la SRAM. Les 32 premières adresses sont réservés à la mémoire SRAM, c'est 32 octets de RAM utilisable à volonté par le programmeur. Les 16 adresses suivantes sont adressables bit par bit, à savoir que chaque bit a sa propre adresse, ce qui permet d'adresser 144 bits (18 adresses * 8 bits par octet adressé). L'intervalle bit-adressable va de l'adresse 32 (inclue) à l'adresse 47 (inclue). Les 96 octets suivants sont de la mémoire RAM adressable, affectée par défaut à la pile d'appel mais adressable via adressage direct si besoin. Les 128 octets de poids fort sont réservés aux registres et aux entrée-sorties mappées en mémoire.
[[File:Memory map du 8051.png|centre|vignette|upright=2|Memory map du 8051]]
Les 128 octets au sommet de l'espace d'adressage sont décrit dans le schéma ci-dessous. On voit que l'accumulateur est mappé dedans, de même que le registre d'état PSW et le ''program counter'' IP. Les ports d'entrée-sortie sont aussi mappés dedans. Une partie des octets sont bit-adressables, et cette partie inclus les registres du processeur et les ports d'entrées-sorties. Pour le dire autrement, chaque bit d'un port d'entrée-sortie a sa propre adresse mémoire, qui permet de le sélectionner.
[[File:MFrey SFR MCS-51.svg|centre|vignette|upright=2|Memory map des 128 octets de poids fort du 8051]]
Pour ce qui est des instructions, le 8051 supporte les opérations de multiplications et de divisions, contrairement aux microcontrôleurs PIC qui se limitaient à l'addition et la soustraction.
Une autre particularité est que le processeur incorpore une '''unité de calcul de 1 bit'''. Elle permet de faire des opérations sur des bits, avec 17 instructions possibles au total. L'ALU de 1 bit est reliée à un accumulateur de 1 bit et 32 registres de 1 bits. Elle peut lire des opérandes de 1 bit en mémoire RAM ou sur les ports d'entrée-sortie, pour les portions qui sont bit-adressables.
[[File:Intel 8051 arch.svg|centre|vignette|upright=2|Microarchitecture de l'Intel 8051.]]
===Le Fairchild F8 et la console de jeu Fairchild Channel F===
Un autre exemple est la Fairchild F8 de la défunte entreprise Fairchild Semiconductor. Il incorpore un processeur 8 bits, c'est à dire que le processeur fait des calculs sur des entiers de 8 bits maximum, une mémoire RAM de 64 octets, ainsi qu'une mémoire ROM de 1 kibioctet. Les 64 octets de RAM sont certes très peu, mais c'est suffisant pour certaines applications simples, comme les caisses automatiques de l'époque, ou des applications embarquées. Et de toute façon, il est possible d'ajouter de la mémoire RAM supplémentaire si les 64 octets de RAM intégrée ne suffisent pas. Le système était donc modulaire, adaptable selon les besoins, peu cher pour son implémentation minimale sans RAM en plus.
Vu qu'il s'agit d'un des tout premiers ordinateurs, il est sorti à une époque où la technologie était rudimentaire. À cette époque, le processeur était composé de pièces détachées qu'il fallait souder ensemble pour obtenir un processeur fonctionnel. Ce n'est que plus tard qu'est apparu le micro-processeur, qui regroupe un processeur complet dans un seul circuit intégré. Le résultat est que le processeur du Fairchild F8 est coupé en deux, l'unité de calcul et l'unité de contrôle sont placés dans des pièces détachées séparés.
Le microcontrôleur est composé de trois à quatre pièces détachées, certaines étant optionnelles. La première est le '''3850 CPU''', qui regroupe l'unité de calcul et la mémoire RAM intégrée. La seconde est le PSU (''3851 Program Storage Unit''), qui regroupe la mémoire ROM et l'unité de contrôle, ''program counter'' inclut. S'il y a besoin d'utiliser plus de RAM, il faut ajouter un circuit d’interface mémoire, qui est au choix le ''3852 Dynamic Memory Interface'' (DMI) ou le ''3853 Static Memory Interface'', le premier étant connecté à une mémoire de type DRAM, l'autre à une SRAM (nous verrons ce que sont les DRAM et les SRAM dans le prochain chapitre).
[[File:Fairchild F8.png|centre|vignette|upright=2|Fairchild F8]]
Le système minimal est composé d'un PSU et d'un 3850, sans les circuits d'interface mémoire. Le tout donne un système avec un processeur 8 bit, 64 octets de RAM et 1 kibioctet de ROM, les deux mémoires étant intégrées dans le "processeur". Le processeur gérait 4 entrées-sorties, chacune étant reliée avec un bus de 8 bit au processeur. Au passage, en 1977, Mostek a créé un microcontrôleur qui regroupe un PSU et un 3850 : le Mostek 3870. Le système minimal n'avait pas de bus d'adresse, vu que la RAM était intégrée au processeur. C'est les 3852 et 3853 qui ajoutaient un bus d'adresse. Ils ajoutent un bus d'adresse de 16 bits, ce qui permet d'adresser 64 kibioctets de RAM.
[[File:Fairchild-Channel-F.jpg|vignette|un Fairchild Channel F]]
Le Fairchild F8 a été utilisé dans la Fairchild Channel F, une des toute première console de seconde génération, à savoir des consoles qui utilisaient des cartouches de jeu. Avant les consoles de seconde génération, les consoles étaient non-programmables. Elles étaient conçues pour faire tourner un jeu précis, aucun autre, le jeu étant implémenté dans leurs circuits.
La Fairchild Channel F est composé du système minimal, auquel on a ajouté une carte son rudimentaire et 2 kibioctets de mémoire vidéo. La mémoire vidéo sert uniquement pour afficher des images à l'écran : on écrit l'image à afficher dedans, un circuit vidéo se charge de l'afficher à l'écran automatiquement. Le processeur ne fait qu'écrire dans cette RAM vidéo, il ne peut pas en lire le contenu. De la RAM supplémentaire peut cependant être ajoutée dans les cartouches de jeu.
===Le HP Nanoprocessor : un processeur sans ALU===
Un dernier exemple est celui du processeur HP Nanoprocessor, de l'entreprise HP. Il a été commercialisé en 1974, en même temps que les premiers micro-processeurs d'Intel. Tous les processeurs de l'époque étaient des processeurs 8 bits et le HP Nanoprocessor ne faisait pas exception. Ce n'était pas un processeur haute performance, il était destiné à des applications d'informatique industrielle ou embarquée. D'ailleurs, il utilisait des transistors de type metal-gate, peu performants, là où ses contemporains utilisait des transistors en silicium, plus performants.
Mais une caractéristique qui rend cela encore plus claire est qu'il n'y a pas d'ALU ! En effet, ce processeur est incapable de faire des additions, des soustractions ou autres opérations simples ! Il est cependant capable d'effectuer des incrémentations et décrémentations, des décalages, des opérations logiques comme des ET/OU/NON/XOR et bien d'autres. Il supporte en tout 48 instructions, avec un support limité des modes d'adressage indirects. Les instructions de branchement étaient des instructions SKIP, il n'y avait pas d'instructions de branchement généralistes.
Pour ce qui est des registres, il disposait de 16 registres de 8 bits et d'un accumulateur. Niveau mémoire, il était relié à une mémoire ROM, rien de plus. Il n'avait de RAM supplémentaire qu'on pouvait lui adjoindre, il devait se débrouiller avec seulement ses registres. Et cela ne posait pas de problèmes pour son usage. Seul le mode d'adressage indirect à registre est supporté, il n'y a pas de registres d'indices. Ce mode d'adressage permet de lire des données en mémoire ROM, la ROM pouvant contenir des tableaux de valeurs constantes.
: Il est possible de lui adjoindre de la RAM via les ports d'entrée-sortie, ainsi qu'une ALU, mais RAM et ALU sont traités comme des périphériques avec lesquels on communique, ils ne sont pas intégrés au processeur.
Niveau micro-architecture, il incorporait une unité de calcul logique et un circuit comparateur. Le comparateur était un circuit comparateur série des plus basiques, qui était utilisé pour les instructions de branchement et associées. L'unité de calcul logique gérait des incrémentations/décrémentation, des décalages, les opérations logiques et quelques autres. L'unité de calcul logique était bit-slicée, à savoir conçue en assemblant 8 ALU de 1 bit chacune, enchainées en série. Le tout était combiné à des circuits de ''carry skip''.
[[File:Unité de calcul du HP nanonprocessor.png|centre|vignette|upright=2|Unité de calcul du HP nanoprocessor]]
Son unité de décodage d'instruction était très simple, essentiellement basée sur des portes NOR, grâce à un encodage efficace des instructions machine. Le ''program counter'' fait 11 bits, ce qui permet d'adresser une ROM de 2 kibioctets. Le ''program counter'' était relié à un circuit incrémenteur qui gérait les isntructions SKIP (il pouvait incrémenter le ''program counter'' par pas de 1 ou de 2 en cas de SKIP). Le processeur contient aussi deux registres, qui servent en quelque sorte de pile d'adresse de retour. Un premier registre mémorise l'adresse de retour d'une fonction, l'autre mémorise le ''program counter'' lors d'une interruption, pour savoir où brancher à la fin de l'interruption.
[[File:HP nanoprocessor.png|centre|vignette|upright=2.5|HP nanoprocessor]]
Fait intéressant, le concepteur du processeur a gracieusement donné les masques utilisés pour graver le silicium du processeur au site [https://www.cpushack.com/ CPU Shack]. Les masques en question sont disponibles ici :
* [https://www.cpushack.com/2020/08/20/hp-nanoprocessor-mask-set/ HP NanoProcessor Mask Set]
* [https://www.cpushack.com/2020/08/09/the-forgotten-ones-hp-nanoprocessor/ The Forgotten Ones: HP Nanoprocessor]
Les masques ont été analysés par Ken Shirrif dans cet article de blog :
* [https://www.righto.com/2020/09/hp-nanoprocessor-part-ii-reverse.html HP Nanoprocessor part II: Reverse-engineering the circuits from the masks]
==Les processeurs 8/16 bits à architecture Von Neumann==
L'usage d'une architecture Harvard est une solution pour adresser plus de mémoire avec des CPU 8 bits. Mais plusieurs microprocesseurs commerciaux n'utilisaient pas cette solution. À la place, c'était des architectures Von Neumann, mais qui étaient capables de gérer des adresses de 16 bits. Les données faisaient 8 bits, les registres faisaient 8 bits, mais quelques techniques permettaient de gérer des adresses de 16 bits. Nous parlerons de '''processeurs 8/16 bits''' pour les désigner, et nous allons les étudier à part.
Un point important est que la gestion d'adresses de 16 bits permet d'adresser 64 kibioctets, qui peuvent être remplis avec de la RAM et de la ROM. On a donc le meilleur des mondes : 64 kibioctets de mémoire, mais avec des données de 8 bits et les économies de circuit qui vont avec. L'avantage est que le processeur peut maintenant gérer une vraie pile d'appel, pas seulement une pile d'adresse de retour. Il lui suffit pour cela d'intégrer un pointeur de pile codé sur 16 bits.
===Les modes d'adressage par page des CPU Motorola===
Les processeurs Motorola 8 bits étaient des processeurs 8 bits avec un bus d'adresse de 16 bits. C'était des processeurs à accumulateur incorporant deux registres d'indice, un registre d'état, un pointeur de pile, et un ''program counter''. Tous les registres sont reliés au bus d'adresse, sauf le registre d'état et l’accumulateur. Tous les registres font 8 bits, sauf le ''program counter''. La pile est câblée pour être dans un bloc de 256 octets compris entre l'adresse 1 0000 0000 et l'adresse 1 1111 1111, ce qui fait que son adressage se fait avec un seul octet.
[[File:6502-architecture.svg|centre|vignette|upright=1.5|Architecture simplifiée du 6502.</br> X et Y : registres d'indice ;</br> S : le pointeur de pile ;</br> A : accumulateur ;</br>P : registre d'état.</br>]]
Les processeurs Motorola 8 bits utilisaient une méthode simple pour adresser 64 kibioctets de RAM, avec des registres de 8 bits. Pour cela, ils utilisaient une variante de l'adressage base + décalage. Elle améliore l'adressage absolu, qui intègre l'adresse à lire/écrire dans l'instruction elle-même. L'adresse en question est de 8 bits et n'encode que les 8 bits de poids faible de l'adresse, les 8 bits de poids fort sont dans un '''registre de page''' adressé implicitement. L'adresse finale est obtenue en concaténant ce registre avec l'adresse mémoire intégrée dans l’instruction. Le résultat est que la mémoire était découpée en blocs de 256 consécutifs, chacun pouvant servir de fenêtre de 256 octets. Une page est réservée pour la pile, la seconde, comme dit plus haut.
Formellement, ce mode d'adressage a des ressemblances avec la commutation de banques, une technique qu'on verra dans les chapitres sur l'espace d'adressage et la mémoire virtuelle. Mais ce n'en est pas du tout : le registre de page est utilisé uniquement pour les accès mémoire avec le mode d'adressage base + décalage, mais pas pour les autres accès mémoire, qui gèrent des adresses complètes. Notons que l'usage d'un registre de page dédié fait que celui-ci est adressé implicitement.
Il faut noter que la technique a été utilisée sur des processeurs 16 bits, pour contourner la petite taille des instructions. Un exemple est celui du HP 2100, un processeur 16 bits. Il avait un registre de page de 5 bits et encodait 10 bits d'adresse dans ses instructions. Ses instructions d'accès mémoire disposaient d'un bit qui choisit quel mode d'adressage utiliser. S'il était à 0, l'adressage absolu était utilisé, le registre de page n'était pas utilisé. Mais s'il était à 1, le registre de page était utilisé pour calculer l'adresse.
Une évolution de l'adressage précédent est le '''mode page direct'''. Avec lui, le registre de page est étendu et contient une adresse mémoire complète. L'adresse finale n'est pas obtenue par concaténation, mais en additionnant le registre de page avec l'adresse fournie par adressage absolu + décalage. Un exemple est celui des premiers processeurs Motorola, qui géraient des adresses courtes de 8 bits. L'adresse courte de 8 bits correspondait non pas aux 256 premiers octets de la mémoire, mais à une fenêtre de 256 octets déplaçable en mémoire. La position de la fenêtre de 256 octets était spécifiée par le registre de page de 16 bits, qui précisait l'adresse du début de la fenêtre, celle de sa première donnée.
Il s'agit donc formellement d'adressage base + décalage, à un détail près : il n'y a qu'un seul registre de base. Le fait que ce registre de base soit unique fait qu'il est adressé implicitement, on n'a pas à encoder le numéro/noms de registre dans l'instruction. Le registre de base est utilisé uniquement pour l'adressage absolu, pas pour les autres accès mémoire. S'il y a des ressemblances avec la segmentation, une technique de mémoire virtuelle qu'on abordera dans quelques chapitres, ce n'en est pas vu que le registre de base est utilisé seulement pour un mode d'adressage bien précis.
===Le ''pseudo-aliasing'' des registres des processeurs Intel x86===
Voyons maintenant le cas des anciens processeurs 8 bits d'Intel à savoir l'Intel 4004, 4040, 8008 et 8080. Le Z80, un processeur inspiré des CPU Intel 8 bits, est aussi concerné. Avant de poursuivre, parlons des registres de ces processeurs. Les premiers CPU Intel incorporaient 7 registres de 8 bits nommés A, B, C, D, E, F, H, L, SP. Ils correspondent respectivement à : l'accumulateur A ; six registres nommés B, C, D, E, H et L ; le registre d'état F ; le pointeur de pile SP. Le Z80 ajoute deux registres d'indice X et Y. De plus, le Z80 dispose de registres d'interruption, qui sont en quelque sorte des copies des registres A, B, C, D, E, F, H, L. Le tout est illustré dans le tableau ci-dessous.
{|class="wikitable" style="text-align:center;"
|-
!
! Registres des CPU Intel
! Registres supplémentaires du Z80
|-
! Accumulateur
| A
| A'
|-
! Registre d'état
| F
| F'
|-
! Registres généraux
| B, C, D, E, H, L
| B', C', D', E', H', L'
|-
! Pointeur de pile
| colspan="2" | SP (sauf pour le 8008)
|-
! Registres d'indice
|
| X et Y
|}
Le 8008 incorpore une pile d'appel de 7 adresses, dans le processeur lui-même. Il en est de la même avec le 4004 et le 4040, comme on le verra dans la section sur les processeurs 4 bits. Mais le 8080 et le 8085 ont remplacé le tout par un simple pointeur de pile, afin d'avoir une véritable pile d'appel. Autant c'est impossible d'avoir une pile d'appel avec seulement 256 octets de mémoire, autant on peut se le permettre avec 65 536 adresses.
Pour gérer des adresses de 16 bits, ils auraient pu utiliser des registres d'adresse séparés, mais on préféré un système de '''pseudo-''aliasing'' de registres'''. Formellement, c'est un système qui concatène deux registres 8 bits pour obtenir une adresse de 16 bits. L’appariement a lieu lors de certaines opérations bien précises, qui n'ont de sens que pour les adresses : la lecture/écriture en mémoire, et l'incrémentation.
Il y avait cependant des contraintes quant aux paires de registres possibles, toutes les paires de registres n'étaient pas autorisées. Les CPU concernés sont donc des processeurs hybrides accumulateur-registre généraux. L'accumulateur ne peut pas être appairé, seuls les registres généraux le peuvent. Le Z80 autorise plus de paires que les CPU Intel. Voici les paires de registres qui pouvaient servir d'adresse 16 bits :
* Les CPU 8008 d'Intel autorisait une seule paire formée des registres H et L.
* Les autres processeurs, à savoir le 8080, le 8085 et le Z80, autorisaient : les paires BC, DE et HL.
Le 8008 ne gérait que des opérations sur 8 bits. Mais le 8080 et le 8085 ont ajouté des instructions 16 bits qui agissaient sur des paires de registre, que le Z80 a repris. Une paire de registres est considérée comme un registre unique de 16 bits pour certaines opérations arithmétiques, dont l'incrémentation. Voici la liste des instructions concernées :
* INC et DEC pour l'incrémentation et la décrémentation ;
* DAD : additionne le registre HL avec une autre paire (Hl inclus) ;
* LXI : copie une constante immédiate dans une paire de registres ;
* LHLD : lit 16 depuis la mémoire et l'enregistre dans une paire de registres ;
* SHLD : copie 16 bits depuis une paire de registres et l'enregistre en mémoire ;
* PUSH et POP : empile ou dépilent une paire de registre sur la pile ;
* XTHL : échange la paire HL avec les 16 bits au sommet de la pile d'appel ;
* XCHG : échange le contenu de la paire HL et DE.
Pour résumer, le processeur avait des instructions LOAD, STORE, PUSH et POP adaptées pour gérer des paires de registre. De plus, l'instruction XCHG permettait d’échanger le contenu des paires DE et HL. L'instruction a été étendue sur les processeurs 16 bits pour échanger tous les registres. Mais l'implémentation était alors différente. L'incrémentation sur une paire de 16 bit était très utile, car les adresses sont souvent incrémentées quand on parcours un tableau. Ces instructions nous donnent quelques indices sur ce qu'il y a dans le processeur.
Le système de pseudo-aliasing a un impact sur le banc de registre. Le banc de registre regroupe les registres généraux et le pointeur de pile, mais ne contient pas l'accumulateur. Les contraintes sur les paires de registres possibles ne s'expliquent que d'une seule manière : le banc de registre contient des registres de 16 bits, une paire de registres 8 bits est mémorisée dans un registre unique. Il faut donc faire une différence entre les registres architecturaux de 8 bits, et les registres réels de 16 bits.
Le banc de registre a un port de 8 bits pour les données, qui est fabriqué à partir d'un port 16 bits auquel on a rajouté un multiplexeur pour choisir soit l'octet de poids faible, soit l'octet de poids fort. Le bus de données fait 8 bits, ce qui fait que les instructions LOAD, STORE, PUSH et POP pour paires 16 bits sont réalisées en deux fois : on lit/écrit l'octet de poids faible, puis celui de poids fort. Par contre, le bus d'adresse fait bien 16 bits. Cela suggère que le banc de registre dispose d'un port de 16 bits dédié aux adresses, en plus du port de données 8 bits.
[[File:Architecture d'un CPU 8-16 bits avec un banc de registre double port.png|centre|vignette|upright=2|Architecture d'un CPU 8-16 bits avec un banc de registre double port]]
L'incrémentation d'une paire 16 bits ne coute rien à implémenter, ou presque. En effet, le processeur incorpore un incrémenteur 16 bits pour le ''program counter'', qui est relié au bus d'adresse. L'idée est de rentabiliser cet incrémenteur, en lui permettant d'incrémenter des données/adresses de 16 bits obtenues via pseudo-aliasing. De même, il peut être utilisé pour incrémenter le pointeur de pile, voire un compteur de rafraichissement mémoire (pour rappel, le rafraîchissement mémoire demande de balayer la mémoire d'adresse en adresse et été fait par le CPU à l'époque). Pour cela, il suffit de connecter le ''program counter'', le banc de registre, et l'incrémenteur, via un bus dédié.
[[File:Calcul d'adresse par ALU dédiée avec PC séparé.png|centre|vignette|upright=2|Calcul d'adresse par ALU dédiée avec PC séparé]]
Notez qu'on peut encore simplifier le tout en placant le ''program counter'' dans le banc de registre, ce qui ne gênera pas le travail de l'incrémenteur mais simplifiera le câblage au bus d'adresse. Ce n'était pas systématique, certains processeurs mettaient le ''program counter'' dans le banc de registre, d'autres non.
: Inclure le ''program counter'' dans le banc de registre permet parfois de remplir un vide. Par exemple, sur un processeur avec 12 registres, le banc de registre devrait faire idéalement 16 registres, inclure le ''program counter'' dedans fait monter le tout à 13.
[[File:Architecture d'un CPU 8-16 bits.png|centre|vignette|upright=2|Architecture d'un CPU 8-16 bits]]
Les processeurs Intel 8 bits, à savoir le 8008, le 8080 et le 8085 ; mettaient le ''program counter'' dans le banc de registre. Vous avez donc toutes les armes pour comprendre leur micro-architecture. Par exemple, voici la micro-architecture du processeur 8080. Remarquez le banc de registre, qui contient tous les registres sauf l'accumulateur et le registre. Il a deux ports : un pour les adresses et un pour les données. Notez le dé-multiplexeur sur le port de donnée. Pour le reste, il s'agit d'une architecture à accumulateur hybride des plus classiques.
[[File:Intel 8080 arch.svg|centre|vignette|upright=3|Microarchitecture de l'Intel 8080.]]
Le Z80 est un processeur inspiré du design des processeurs Intel 8 bits, mais avec pas mal d'améliorations. Un point particulier de ce processeur est son banc de registre. Il contient tous les registres du processeur, y compris l'accumulateur et le registre d'état ! Les seuls registres en-dehors du banc de registre sont le ''program counter'' et un compteur de rafraichissement mémoire IR.
Un autre point particulier est que les registres dans le banc de registres avaient une copie séparée accessible uniquement pour les interruptions, via fenêtrage de registres. Et l'accumulateur et le registre d'état étant dans le banc de registre, il y avait deux accumulateurs et deux registres d'état. Les registres A, B, C, D, E et F étaient dupliqués, par le pointeur de pile ni les registres d'indice. Les copies des registres étaient nommées A', B', C', D', E' et F'.
Le Z80 supportait des instructions d'échange de registre en plus des CPU Intel 8 bits. L'instruction EX peut échanger soit le contenu des paires D,E et H,F, soit la paire A,F avec la paire A',F'. L'instruction EXX échange les paires BC, DE, HL avec les paires BC', DE', HL'. En faisant cela, le programmeur pouvait utiliser deux fois plus de registres généraux s'il n'utilisait pas les interruptions. L'échange de paires se fait sans copies de registres, mais simplement en modifiant l'adresse envoyée sur le banc de registre. Pour cela, plusieurs bascules mémorisent des bits qui indiquent si les paires ont été échangées ou non. Il y a une bascule pour les paires DE , HL ; une autre pour les paires A,F et paire A',F', une dernière pour l'instruction EXX. En combinant ces bascules avec les noms de registres envoyés par le séquenceur, on peut échanger les paires de registres.
==Le cas particulier des processeurs 4 bits : le 4004 d'Intel==
L'Intel 4004 était le tout premier micro-processeur. Il s'agissait d'un microprocesseur de 4 bits, basé sur une architecture à accumulateur. Il disposait d'un accumulateur et de 16 registres d'indice, tous de 4 bits. Il faisait des calculs sur des données de 4 bits, appelées des nibbles. Cependant, sur ses 46 instructions machines supportées, 41 agissaient sur des opérandes de 8 bits, les 5 restantes sur des opérandes de 16 bits. Simplement, les calculs se faisaient en deux fois, en échangeant des données entre mémoire RAM et accumulateur.
Le 4004 est un circuit intégré avec peu de broches. Il dispose notamment d'un bus de données/adresse, qui est multiplexé, c’est-à-dire qu'il sert alternativement de bus de données et de bus d'adresse selon les besoins. Le bus de commande mémoire fait 5 bits, dont 4 pour les chips de RAM, un pour la ROM. Les adresses sont codées sur 12 bits, les données sur 4 et les instructions sur 8 bits. L'envoi d'une adresse sur le bus se fait en plusieurs fois, de même que la lecture d'une instruction. Il s'agit là d'une adaptation pour outrepasser les limitations d'un processeur 4 bit.
[[File:Intel 4004 processor pinout.png|centre|vignette|upright=2|Broches de l'Intel 4004. Nous verrons à quoi elles servent plus bas.]]
===L'espace d'adressage de l'Intel 4004===
Les adresses du processeur sont sur 12 bits, ce qui fait 4096 adresses différentes. Elles regroupent à la fois la ROM et la mémoire RAM, vu que l'architecture est une sorte de mélange bizarre entre une architecture Von Neumann et Harvard. Le processeur gère bien deux espaces d'adressage séparés, mais la RAM et la ROM sont reliés au même bus. La sortie CM-ROM du processeur indique si l'adresse envoyée correspond à la RAM ou la ROM. Un circuit de décodage d'adresse active ou désactive la RAM selon la valeur de ce bit, l'inverse pour la ROM, en agissant sur leurs bits Chip Select. Seule la RAM ou la ROM répondent alors à l'adresse.
Pour ce qui est de la RAM, le circuit de décodage d'adresse pouvait gérer au maximum 1024 adresses différentes, chacune contenant un nibble. Pour cela, le CPU 4004 était relié à une ou plusieurs RAM externes, des Intel 4002. Chaque Intel 4002 contenait 64 nibbles de données, plus 16 nibbles de statut qu'on ne détaillera pas ici. Les nibbles de statut étaient accessibles en utilisant des instructions d'entrée-sortie, donc pas avec des lectures/écritures mémoire. Les 64 nibbles de données sont découpés en 4 groupes de 16 nibbles. Le CPU pouvait être relié à maximum 16 Intel 4002, ce qui fait 1024 nibbles de données et 256 nibbles de statut. L'ensemble permet de remplir l'espace d'adressage de 1024 adresses.
===Le registre de page et le pseudo-aliasing des registres===
Sélectionner une adresse mémoire utilisait un mélange entre pseudo-aliasing et registre de page. Pour les données, les 1024 adresses étaient découpées en 4 pages de 256 adresses. Pour la ROM, les 4096 adresses étaient découpées en 16 pages de 256 adresses. Localiser une donnée dans une page ne requiert que 8 bits, 2/4 bits supplémentaires permettent de sélectionner la page voulue. Le registre de page était dans le processeur lui-même, et était relié aux sorties du processeur nommées CM-RAM 0, 1, 2 et 3. Les 4 sorties encodaient un nombre qui permet de sélectionner le numéro de page voulu.
Le registre de page fait 5 bits : un pour distinguer RAM et ROM, 4 bits pour sélectionner la page voulue. L'avantage est que la carte mère gère au maximum 16 chips de RAM, ce qui colle parfaitement avec les 4 utilisés pour sélectionner une page. Un chip de RAM correspond à une page, et chacun est activé ou désactivé suivant la page sélectionnée. Pour cela, il suffit d'ajouter un décodeur sur la carte mère, qui prend les 4 bits du registre de page et fournit les signaux Chip Select aux différents chips de RAM.
Reste alors à utiliser les 8 bits d'adresse à l'intérieur d'un chip de RAM. Le 4004 permettait de concaténer deux registres d'indice de 4 bits pour former une adresse de 8 bits. Les instructions d'accès mémoire pouvaient ainsi préciser une paire de registre d'indice pour préciser quelle adresse lire/écrire. Idem pour les branchements indirects : le processeur supportait une instruction de branchement indirect qui précisait l'adresse dans une paire de registres d'indice. Les registres d'indice sont donc assez mal nommés sur cette architecture, vu qu'ils peuvent servir soit de registre d'indice, soit de demi-registre d'adresse. Il s'agit là du système de pseudo-aliasing des registres, mais appliqué aux registres d'indice.
L'Intel 4004 gérait deux instructions pour gérer les adresses mémoires. La première, l'instruction DCL (''Designate Command Line'') configure le registre de page. Elle prend en entrée un numéro de page et le copie dans le registre de page. L'opérande peut provenir d'un registre d'indice ou de l'accumulateur. La seconde, l'instruction SRC (''Send Register Control'') concatène deux registres d'indice pour obtenir une adresse de 8 bits. Un accès mémoire se fait donc en maximum trois instructions : une qui configure le registre de page si ce n'est pas déjà fait, une instruction SRC pour envoyer l'adresse, et une troisième instruction qui dit s'il faut faire une lecture ou une écriture.
===La microarchitecture de l'Intel 4004===
Il incorporait une pile d'adresse de retour intégrée au processeur. La pile d'adresse acceptait exactement 3 adresses maximum. Elle était regroupée avec le ''program counter'' dans un banc de registre, de 4 registres. Le ''program counter'' et le pointeur de pile faisaient chacun 12 bits, soit trois nibble. Ils étaient incrémentés par un incrémenteur dédié.
SI on omet le registre de page et la pile d'adresse, le 4004 est une architecture à accumulateur des plus classiques, avec un bus interne unique, un banc de registre pour les registres d'indices, un accumulateur relié à une unité de calcul. Les registres d'indice étaient dans un banc de registre séparés, car ils faisaient 4 bits chacun, contrairement au pointeur de pile et le ''program counter''. Un détail important est que les bancs de registres du 4004 étaient implémentés avec de la DRAM, et non des registres usuels fabriqués avec des bascules 1 bit.
[[File:Microarchitecture de l'Intel 4004.png|centre|vignette|upright=2.5|Microarchitecture de l'Intel 4004]]
<noinclude>
{{NavChapitre | book=Fonctionnement d'un ordinateur
| prev=Les architectures à pile et mémoire-mémoire
| prevText=Les architectures à pile et mémoire-mémoire
| next=Les processeurs de traitement du signal
| nextText=Les processeurs de traitement du signal
}}
</noinclude>
p6mjoq1234okmc7oy7s0pcbe5e8xb3m
765731
765730
2026-05-01T20:26:40Z
Mewtow
31375
/* Les microcontrôleurs Intel 8051/8031 */
765731
wikitext
text/x-wiki
Nous avons déjà abordé la notion de processeur 8, 16, 32, 64 bits. Elle désigne la taille des registres généraux, ou de l'accumulateur. De nos jours, les processeurs 32 et 64 bits sont la norme, mais les premiers micro-processeurs étaient des processeurs 4 et 8, avant de passer rapidement au 16 bits. La raison est que leur budget en transistor limité faisait qu'on ne pouvait pas utiliser une ALU trop grande : une ALU 8 bit prend deux fois moins de place et de transistors qu'une ALU 16 bits. Cependant, les processeurs 8 bits avaient de sérieuses limitations qui étaient compensées par diverses solutions. Dans ce chapitre, nous allons faire une revue rapide des processeurs 8 bits et de leurs fonctionnalités.
La principale limitation des CPU 8 bits était l'adressage : des registres de 8 bits limitaient l'espace d'adressage à seulement 256 adresses, soit à peine 256 octets ! Intuitivement, on se dit que 256 octets est purement impraticable, on ne peut rien faire d'intéressant avec seulement 256 de RAM + ROM. Et c'est partiellement vrai. L'adage veut que 16 bits est la taille minimale intéressante, la limite à partir de laquelle on a assez de mémoire RAM/ROM pour coder des applications intéressantes. Mais 256 octets de RAM est largement suffisant sur de nombreux systèmes embarqués simples s'en accommodent : des caisses enregistreuses, des systèmes de régulation de feu de circulation, etc.
Pour les applications demandant plus de mémoire RAM, les CPU de l'époque contournaient la limitation de 256 octets de RAM avec de nombreux stratagèmes. Dans ce qui va suivre, nous allons séparer les CPU 8 bits selon qu'ils utilisent une architecture Harvard ou une architecture Von Neumann. La raison est qu'une architecture Harvard permet en soi de contourner partiellement ce problème d'adressage. Les choses sont plus compliquées avec une architecture Von Neumann.
==Les processeurs 8/16 bits à architecture Harvard ==
La première solution est d'utiliser une architecture Harvard. Le processeur 8 bit a alors deux espaces d'adressage : un pour la RAM, un autre pour la ROM. Et les deux utilisent des adresses de taille différente. La ROM est reliée à un bus d'adresse de 16 bits, alors que la RAM est elle connectée à un bus d'adresse de 8 bits. La RAM est donc limitée à 256 octets, alors que la ROM peut monter jusqu'à 64 kibioctets. Mine de rien, faire ainsi est largement suffisant.
Pour encore améliorer la situation, il est possible d'utiliser une architecture Harvard modifiée, qui permet de lire des données depuis la mémoire ROM. Cela réduit encore plus les besoins en mémoire RAM. Les constantes manipulées par le programme sont mémorisées en ROM, lues depuis la ROM, au lieu d'être chargées en RAM. Avec ce genre de stratagèmes, 256 octets de RAM est largement suffisant sur de nombreux systèmes, à condition qu'on ait assez de ROM pour coder un programme digne de ce nom. Par exemple, de nombreux systèmes embarqués simples s'en accommodent : des caisses enregistreuses, des systèmes de régulation de feu de circulation, etc.
Les processeurs 8 bits intègrent parfois les 256 octets de RAM directement dans le processeur, dans le banc de registres ! Beaucoup en implémentaient moins, avec par exemple seulement 64 octets de RAM, ou 32 octets, ou 128 octets. L'avantage est que cela élimine le bus pour les données, ce qui économise beaucoup de broches sur le circuit intégré du CPU. Et pour les applications demandant plus de RAM, on pouvait ajouter un circuit séparé qui permettait d'adresser une RAM plus grande. Et c'est ce qui explique que cette solution est beaucoup utilisée sur les microcontrôleurs peu puissants. Les exemples qui vont suivre devraient vous convaincre.
: Les processeurs de ce type implémentent des optimisations pour adresser plus de 256 octets de RAM. La plus connue est la commutation de banques. Mais nous n'avons pas encore abordé celle-ci, et il faudra attendre le chapitre sur l'espace d'adressage pour cela.
===Les microcontrôleurs PIC===
Les '''microcontrôleurs PIC''' regroupent des microcontrôleurs allant de microcontrôleurs 8 bits aux performances très faible, à des microcontrôleurs 32 bits bien plus puissants. Les microcontrôleurs PIC sont très utilisés dans l'embarqué ou d'informatique industrielle. Ils sont vendu à des volumes assez impressionnants, plusieurs millions par an. Et si vous avez ou êtes en train de faire des études d'électronique, je parie que vous les avez déjà vu en classe, ou que ce ne saurait tarder. Dans ce qui suit, nous allons nous concentrer sur les microcontrôleurs PIC 8 bits, à savoir les PIC 16, 16 et 18. Les PIC 24, qui sont des microcontrôleurs 16 bits, ne seront pas abordés.
Les microcontrôleurs PIC 8 bits sont une architecture Harvard, comme dit plus haut. Il y a aussi des registres pour les entrées et sorties. Les registres d'entrée-sortie permettent de lire ou écrire sur un port d'entrée-sortie ou de lire un ''timer''. En clair, les PIC ont un espace d'adressage séparé pour les entrées-sorties.
La mémoire ROM des PIC va de 1024 instructions à 4096 instructions. En comparaison, la mémoire RAM des microcontrôleurs PIC ne peut pas dépasser 256 adresses, et elle est encore plus petite en pratique sur certains modèles. Pour donner un exemple, le PIC16F84 a une RAM composée de 68 "registres" de 8 bits. Le terme "registres" devrait vous faire tiquer, mais c'est bien le terme utilisé dans la documentation des PIC. Et il faut admettre que la différence entre banc de registre et SRAM intégrée est floue, mais nous expliquerons pourquoi dans quelques paragraphes.
: Les PIC 18 peuvent adresser plus de 256 octets de RAM en utilisant la commutation de banques, une technique qui sera abordée dans plusieurs chapitres.
[[File:DocPIC16F84 3.png|centre|vignette|upright=3|Espaces d'adressage du PIC16F84.]]
Un détail est que la SRAM n'a qu'un seul port qui sert à la fois pour les lectures et écritures. Pour compenser, les PIC sont des architectures à accumulateur, où une opérande est lue depuis la SRAM, l'autre depuis l'accumulateur. Leur implémentation de l'accumulateur ajoute une petite subtilité : le résultat d'une opération arithmétique peut être enregistré ailleurs que dans l'accumulateur. Le résultat peut aussi remplacer la seconde opérande, celle lue en mémoire RAM. Dit autrement, le résultat est enregistré dans l'adresse mémoire source. Les instructions de calcul ont le choix : un bit dans leur encodage précise où enregistrer le résultat.
{|
|-
|[[File:DocPIC16F84 4.png|centre|vignette|upright=2|Microarchitecture simplifiée d'un microcontroleur PIC (ici, un 16F84).]]
|[[File:DocPIC16F84 5.png|centre|vignette|upright=2|Microarchitecture simplifiée d'un microcontroleur PIC (ici, un 16F84), avec les branchements directs.]]
|}
Outre l'accumulateur, les PIC disposent de registres de contrôle, d'un ''program counter'', d'un registre d'état, et d'un pointeur de pile. Un détail très important est que les registres sont mappés en mémoire, à quelques exceptions près ! En clair, on peut y accéder en lisant/écrivant à une adresse mémoire bien précise. Les seules registres qui ne sont pas mappés en mémoire sont l'accumulateur, les registres d'entrée-sortie, et la pile d'adresses de retour intégrée au processeur (voir plus bas). Par exemple, sur les modèles 16F, l'espace d'adressage fait 128 octets, dont 32 sont réservés aux registres du processeur, ce qui fait que seules 96 octets sont adressables comme de la RAM. Mais les 128 octets sont un seul et unique SRAM dans le processeur. Ce qui explique qu'il est difficile de séparer banc de registre et RAM principale sur ce processeur : les deux sont fusionnées ! Cela gaspille quelques adresses mémoire, mais permet une implémentation plus simple, avec un banc de registre unique.
: Les modèles PIC 17 ont rendu l'accumulateur mappé en mémoire RAM !
[[File:DocPIC16F84.png|centre|vignette|upright=2|DocPIC16F84]]
La petite taille de la ROM d'un PIC n'est pas une surprise. Les architectures 8 bits sont conçues pour ne pas utiliser beaucoup de transistors et être très simples. Aussi, utiliser une petite ROM est nécessaire. Mais il faut aussi adapter le jeu d'instruction, pour qu'il ait une bonne densité de code. Par exemple, il faut faire en sorte d'avoir des instructions assez courtes. Si les instructions font 16 bits au lieu de 32, on divise par deux le nombre de transistors nécessaire pour la mémoire ROM. La conséquence est que le jeu d’instruction des PIC est adapté à cette contrainte.
Les microcontrôleurs PIC utilisent un jeu d'instruction propriétaire, dont les instructions sont très petites. Les premières versions du jeu d'instruction utilisaient des instructions codées sur 12 bits, dont 5 pour l'adresse mémoire de la seconde opérande. Pour les branchements, 3 bits étaient utilisés pour l'opcode, 9 pour l'adresse de destination. Par la suite, les instructions ont été étendues à 13 bits sur les PIC1670, puis à 14, 15 et 16 bits. Les adresses ont alors été élargies, ce qui permet d'adresser en peu plus de mémoire RAM.
Il est intéressant de regarder comment les PIC font pour obtenir des instructions aussi courtes. Premièrement, le fait d'utiliser une architecture à accumulateur, couplé à une RAM très petite aident grandement. Les architectures à accumulateur ont besoin de préciser un opcode et une adresse mémoire pour chaque instruction, pas besoin de préciser de noms de registres ni le mode d'adressage. La taille des adresses mémoire est censé être un problème pour la densité de code, mais les adresses d'un processeur 8 bits font 8 bits. On peut alors avoir un jeu d'instruction étoffé, en utilisant des instructions 16 bits, qui concatènent un opcode et une adresse mémoire, d'un octet chacun.
Mais d'autres optimisations permettent d'avoir une bonne densité de code. Les PIC ont des branchements pour les appels et retour de fonction. Les PIC incorporent une pile d'appel de retour, qui fait 2 à 8 adresses suivant les modèles. Elle permet d'économiser quelques registres, car la pile d'appel n'est pas mappé dans l'espace d'adressage, elle n'est pas adressable. On économise ainsi 2 à 8 registres, sur 32-256 registres. De plus, cela simplifie l'encodage des instructions d'appel/retour de fonction, qui n'ont pas à préciser où enregistre l'adresse de retour.
Les PIC n'ont pas d'instructions de branchement conditionnels, ils font avec une SKIP instruction et des branchements inconditionnels. Du moins, c'est le principe, car si vous regardez la liste des instructions ci-dessous, vous verrez qu'il n'y a pas d'instruction SKIP. A la place, les instructions SKIP sont fusionnées avec d'autres instructions. Elles sont notamment fusionnées avec les instructions d'incrémentation et de décrémentation. Les PIC supportent une incrémentation normale, une décrémentation normale, une décrémentation fusionnée avec une instruction SKIP, et une incrémentation fusionnée avec une instruction SKIP. Les deux dernières incrémentent/décrémentent l'accumulateur et SKIP l'instruction suivante si le résultat est zéro. Elles permettent de fortement simplifier l'implémentation des boucles qui s'exécutent tant que leur compteur atteint zéro.
Les PIC disposent aussi d'instructions de manipulation de bit, pour tester/masquer un bit dans une opérande, 4 en tout. Il y a en a 4 en tout : mettre à 0, mettre à 1, tester si bit = 1, tester si bit = 0. Les instructions qui testent un bit prennent leur opérande dans l'accumulateur. Elles font le test du bit et décident s'il faut skipper l'instruction suivante ou non. Il y a aussi deux instructions de rotation à gauche et droite, qui tiennent compte de la retenue mémorisée dans le registre d'état. Par contre, il n'y a pas d'instructions de décalages, qui peuvent être émulées avec une rotation suivie d'un ET bit à bit. Mentionnons aussi une instruction pour inverser deux ''nibbles'' dans un octet.
Les modèles haute performance ajoutent des instructions d'addition avec retenue entrante, idem pour la soustraction. De telles instructions ssont très utiles pour faire des additions/soustractions sur des opérandes de 16 bits. Le processeur a beau être un CPU 8 bits, il peut être utilisé pour faire des calculs 16 bits, la performance est alors amoindrie, mais ce n'est pas un problème pour les applications d'un tel microcontroleur.
Les modèles intiaux, comme les PIC 10 et 12, ne supportaient pas les interruptions, mais c'est chose réglé sur les modèles plus récents. Ils ont même des registres séparés pour les interruptions et les programmes normaux. De plus, ils intégrent nativement un ''watchdog timer''.
{|class="wikitable" style="text-align:center"
|+ Jeu d'instruction des dodèles PCI 16
|-
! colspan="5" | Instructions diverses
|-
| colspan="3" | 00 0000 0000 0000 || NOP || Ne fait rien
|-
| colspan="3" | 00 0000 0000 1000 || RETURN || Instruction de retour pour une fonction
|-
| colspan="3" | 00 0000 0000 1001 || NOP || Instruction de retour pour une interruption
|-
| colspan="3" | 00 0000 0110 0011 || SLEEP || Mise en veille
|-
| colspan="3" | 00 0000 0110 0100 || CLRWDT || RESET le ''watchdog timer'', intégré dans le PIC
|-
! colspan="5" | Instructions de manipulation de bit
|-
| 0100 || Position du bit dans l'opérande || Adresse mémoire || BCF || Met le bit à 1
|-
| 0101 || Position du bit dans l'opérande || Adresse mémoire || BSF || Met le bit à 0
|-
| 0110 || Position du bit dans l'opérande || Adresse mémoire || BTFSC || Teste si le bit adressé est à 1
|-
| 0111 || Position du bit dans l'opérande || Adresse mémoire || BTFSS || Teste si le bit adressé est à 0
|-
! colspan="5" | Branchements
|-
| colspan="2" | 100 || Adresse mémoire || CALL || Appel de fonction
|-
| colspan="2" | 100 || Adresse mémoire || GOTO || Branchement inconditionnel
|-
! colspan="5" | Instructions logiques/arithmétiques avec opérande lue en mémoire RAM
|-
| colspan="5" | ''Le bit '''d''' dans l'opcode indique la destination : accumulateur ou adresse mémoire''.
|-
| colspan="2" | 0000001 || Adresse mémoire || MOVWF || Store (accumulateur vers destination)
|-
| colspan="2" | 000001d || Adresse mémoire || MOVWF || Met à zéro la destination (adresse ou registre)
|-
| colspan="2" | 000001d || Adresse mémoire || SUBWF || Soustraction
|-
| colspan="2" | 000010d|| Adresse mémoire || DECF || Décrémentation
|-
| colspan="2" | 000100d|| Adresse mémoire || IORWF || OU bit à bit
|-
| colspan="2" | 000101d|| Adresse mémoire || ANDWF || ET bit à bit
|-
| colspan="2" | 000110d || Adresse mémoire || XORWF || XOR bit à bit
|-
| colspan="2" | 000111d || Adresse mémoire || ADDWF VWF || Addition
|-
| colspan="2" | 001000d || Adresse mémoire || MOVF || LOAD
|-
| colspan="2" | 001001d || Adresse mémoire || COMF || NOT bit à bit
|-
| colspan="2" | 001010d || Adresse mémoire || INCF || Incrémentation
|-
| colspan="2" | 001011d || Adresse mémoire || DECFSZ || Décrémentation, puis instruction SKIP si résultat = 0
|-
| colspan="2" | 001100d || Adresse mémoire || RRF || Rotation à droite avec retenue entrante
|-
| colspan="2" | 001101d || Adresse mémoire || RLF || Rotation à gauche avec retenue entrante
|-
| colspan="2" | 001110d || Adresse mémoire || SWAPF || Echange deux ''niblle'' dans un octet
|-
| colspan="2" | 001111d || Adresse mémoire || INCFSZ || Incrémentation, puis instruction SKIP si résultat = 0
|-
! colspan="5" | Instructions logiques/arithmétiques avec constante immédiate
|-
| colspan="2" | 1100xx || Constante immédiate (8bits) || MOVLW || Copie constante dans accumulateur
|-
| colspan="2" | 1101xx || Constante immédiate (8bits) || RETLW || MOV fusionné avec un retour de fonction
|-
| colspan="2" | 111000 || Constante immédiate (8bits) || IORLW || OU
|-
| colspan="2" | 111001 || Constante immédiate (8bits) || ANDLW || ET
|-
| colspan="2" | 111010 || Constante immédiate (8bits) || XORLW || XOR
|-
| colspan="2" | 11110x || Constante immédiate (8bits) || SUBLW || Soustraction
|-
| colspan="2" | 11111x || Constante immédiate (8bits) || ADDLW || Addition
|}
Les PIC gèrent l'adressage absolu et immédiat, mais pas plus. L'adressage absolu, celui où l'adresse est intégrée dans l'instruction, est très simple à implémenter. Les adresses prennent moins d'un octet, vu que la taille de la RAM est très petite, les adresses sont très courtes, les intégrer dans des instructions elles-mêmes courtes n'est pas un problème. L'adresse est encodée sur 5 à 7 bits, selon le modèle, ce qui permet d'adresser entre 32 et 128 octets.
Les PIC ne supportent pas l'adressage indirect, mais peuvent l'émuler grâce à un '''registre d'adresse''' dédié. Il s'agit du registre FSR, qui mémorise l'adresse à lire/écrire. Il est possible de copier un pointeur dedans, qui provient soit de l'accumulateur, soit de la mémoire SRAM. Dans les deux cas, la donnée adressée est lue ou écrite dans un registre INDR, est un registre d’interfaçage rendu adressable. Le registre FSR est directement connecté sur le bus d'adresse.
Les modèles de base se débrouillent avec un registre FSR et un registre INDR, mais les modèles plus performants ont deux ou trois copies de chaque registre. Les modèles PIC18 ajoutent aussi des instructions LOAD/STORE qui émulent les modes d'adressage à post- ou pré-incrément/décrément, et le mode d'adressage "Base + Indice + Décalage", encore une fois en utilisant les registres FSR et INDR.
Avec tout ce qu'on vient de dire, vous devriez pouvoir comprendre la microarchitecture d'un PIC, qui est résumée dans ce schéma.
[[File:DocPIC16F84 all.png|centre|vignette|upright=2.5|Microarchitecture du PIC16F84.]]
===Les microcontrôleurs Intel 8051/8031===
[[File:Pinagem8031.jpg|vignette|Broches du 8051.]]
Les microcontrôleurs Intel 8051/8031 sont des microcontrôleurs 8 bits, commercialisés par Intel. Elle contient un processeur 8/16 bits, 4 kibioctets de mémoire ROM, une RAM de 128 octets. Niveau entrées-sorties, il contient un port série, ainsi que 4 ports d'un octet chacun sur lesquels il peut lire ou écrire. Il supporte des interruptions, avec un contrôleur d'interruption intégré. Il contient aussi deux ''timers'' de 16 bits chacun, qui déclenchent des interruptions quand ils tombent à zéro ou à une valeur configurable.
Ils ont de nombreuses ressemblances avec les microcontrôleurs PIC. Le processeur du 8051 est une architecture à accumulateur de 8 bits, ses registres sont mappés en mémoire RAM, il a un registre d'adresse dédié à l'adressage indirect et j'en passe. Mais il y a aussi des différences notables. Par exemple, le 8051 n'a pas de pile d'adresse de retour, contrairement aux processeurs PIC. Il fait autrement, à savoir qu'il gère une pile d'appel placée en mémoire RAM,ce qui est très différent.
Une autre différence est que les registres sont placés dans un banc de registre à part des 128 octets de SRAM. Il y a une SRAM séparée du banc de registre, contrairement à ce qu'on a sur les microcontrôleurs PIC. Par contre, les registres du processeur sont mappés en mémoire RAM, y compris l'accumulateur, le registre d'état, le ''program counter'', et bien d'autres. Mais le fait qu'ils soient séparés de la SRAM permet de les mapper dans l'espace d'adressage sans marcher sur les pieds de la SRAM. Vu que le processeur peut adresser 256 octets, mais n'a que 128 octets de SRAM, les registres sont mappés dans les 128 octets restants. Les entrées-sorties aussi sont mappées dans ces 128 octets restants.
L'ensemble utilise une architecture Harvard, contrairement à ce que pourrait faire croire le schéma ci-dessous.
[[File:Arkitektura mikro kontrollerit Intel 8051.png|centre|vignette|upright=2.5|Microcontrôleur 8051]]
Voyons maintenant la ''memory map'' de ce microcontroleur, pour la SRAM. Un point assez original est que 16 octets de la SRAM sont adressables bit par bit, à savoir que chaque bit a sa propre adresse. En tout, cela permet d'adresser 128 bits (16 adresses * 8 bits par octet adressé). L'intervalle bit-adressable va de l'adresse 32 (inclue) à l'adresse 47 (inclue).
Les 32 premières adresses sont réservés à la mémoire SRAM, c'est 32 octets de RAM utilisable à volonté par le programmeur. Les 16 adresses suivantes sont les 16 adresses bit-adressables mentionnées dans le paragraphe précédent. Les 96 octets suivants sont de la mémoire RAM adressable, affectée par défaut à la pile d'appel mais adressable via adressage direct si besoin. Les 128 octets de poids fort sont réservés aux registres et aux entrée-sorties mappées en mémoire.
[[File:Memory map du 8051.png|centre|vignette|upright=2|Memory map du 8051]]
Les 128 octets au sommet de l'espace d'adressage sont décrit dans le schéma ci-dessous. On voit que l'accumulateur est mappé dedans, de même que le registre d'état PSW et le ''program counter'' IP. Les ports d'entrée-sortie sont aussi mappés dedans. Une partie des octets sont bit-adressables, et cette partie inclus les registres du processeur et les ports d'entrées-sorties. Pour le dire autrement, chaque bit d'un port d'entrée-sortie a sa propre adresse mémoire, qui permet de le sélectionner.
[[File:MFrey SFR MCS-51.svg|centre|vignette|upright=2|Memory map des 128 octets de poids fort du 8051]]
Pour ce qui est des instructions, le 8051 supporte les opérations de multiplications et de divisions, contrairement aux microcontrôleurs PIC qui se limitaient à l'addition et la soustraction.
Une autre particularité est que le processeur incorpore une '''unité de calcul de 1 bit'''. Elle permet de faire des opérations sur des bits, avec 17 instructions possibles au total. L'ALU de 1 bit est reliée à un accumulateur de 1 bit et 32 registres de 1 bits. Elle peut lire des opérandes de 1 bit en mémoire RAM ou sur les ports d'entrée-sortie, pour les portions qui sont bit-adressables.
[[File:Intel 8051 arch.svg|centre|vignette|upright=2|Microarchitecture de l'Intel 8051.]]
===Le Fairchild F8 et la console de jeu Fairchild Channel F===
Un autre exemple est la Fairchild F8 de la défunte entreprise Fairchild Semiconductor. Il incorpore un processeur 8 bits, c'est à dire que le processeur fait des calculs sur des entiers de 8 bits maximum, une mémoire RAM de 64 octets, ainsi qu'une mémoire ROM de 1 kibioctet. Les 64 octets de RAM sont certes très peu, mais c'est suffisant pour certaines applications simples, comme les caisses automatiques de l'époque, ou des applications embarquées. Et de toute façon, il est possible d'ajouter de la mémoire RAM supplémentaire si les 64 octets de RAM intégrée ne suffisent pas. Le système était donc modulaire, adaptable selon les besoins, peu cher pour son implémentation minimale sans RAM en plus.
Vu qu'il s'agit d'un des tout premiers ordinateurs, il est sorti à une époque où la technologie était rudimentaire. À cette époque, le processeur était composé de pièces détachées qu'il fallait souder ensemble pour obtenir un processeur fonctionnel. Ce n'est que plus tard qu'est apparu le micro-processeur, qui regroupe un processeur complet dans un seul circuit intégré. Le résultat est que le processeur du Fairchild F8 est coupé en deux, l'unité de calcul et l'unité de contrôle sont placés dans des pièces détachées séparés.
Le microcontrôleur est composé de trois à quatre pièces détachées, certaines étant optionnelles. La première est le '''3850 CPU''', qui regroupe l'unité de calcul et la mémoire RAM intégrée. La seconde est le PSU (''3851 Program Storage Unit''), qui regroupe la mémoire ROM et l'unité de contrôle, ''program counter'' inclut. S'il y a besoin d'utiliser plus de RAM, il faut ajouter un circuit d’interface mémoire, qui est au choix le ''3852 Dynamic Memory Interface'' (DMI) ou le ''3853 Static Memory Interface'', le premier étant connecté à une mémoire de type DRAM, l'autre à une SRAM (nous verrons ce que sont les DRAM et les SRAM dans le prochain chapitre).
[[File:Fairchild F8.png|centre|vignette|upright=2|Fairchild F8]]
Le système minimal est composé d'un PSU et d'un 3850, sans les circuits d'interface mémoire. Le tout donne un système avec un processeur 8 bit, 64 octets de RAM et 1 kibioctet de ROM, les deux mémoires étant intégrées dans le "processeur". Le processeur gérait 4 entrées-sorties, chacune étant reliée avec un bus de 8 bit au processeur. Au passage, en 1977, Mostek a créé un microcontrôleur qui regroupe un PSU et un 3850 : le Mostek 3870. Le système minimal n'avait pas de bus d'adresse, vu que la RAM était intégrée au processeur. C'est les 3852 et 3853 qui ajoutaient un bus d'adresse. Ils ajoutent un bus d'adresse de 16 bits, ce qui permet d'adresser 64 kibioctets de RAM.
[[File:Fairchild-Channel-F.jpg|vignette|un Fairchild Channel F]]
Le Fairchild F8 a été utilisé dans la Fairchild Channel F, une des toute première console de seconde génération, à savoir des consoles qui utilisaient des cartouches de jeu. Avant les consoles de seconde génération, les consoles étaient non-programmables. Elles étaient conçues pour faire tourner un jeu précis, aucun autre, le jeu étant implémenté dans leurs circuits.
La Fairchild Channel F est composé du système minimal, auquel on a ajouté une carte son rudimentaire et 2 kibioctets de mémoire vidéo. La mémoire vidéo sert uniquement pour afficher des images à l'écran : on écrit l'image à afficher dedans, un circuit vidéo se charge de l'afficher à l'écran automatiquement. Le processeur ne fait qu'écrire dans cette RAM vidéo, il ne peut pas en lire le contenu. De la RAM supplémentaire peut cependant être ajoutée dans les cartouches de jeu.
===Le HP Nanoprocessor : un processeur sans ALU===
Un dernier exemple est celui du processeur HP Nanoprocessor, de l'entreprise HP. Il a été commercialisé en 1974, en même temps que les premiers micro-processeurs d'Intel. Tous les processeurs de l'époque étaient des processeurs 8 bits et le HP Nanoprocessor ne faisait pas exception. Ce n'était pas un processeur haute performance, il était destiné à des applications d'informatique industrielle ou embarquée. D'ailleurs, il utilisait des transistors de type metal-gate, peu performants, là où ses contemporains utilisait des transistors en silicium, plus performants.
Mais une caractéristique qui rend cela encore plus claire est qu'il n'y a pas d'ALU ! En effet, ce processeur est incapable de faire des additions, des soustractions ou autres opérations simples ! Il est cependant capable d'effectuer des incrémentations et décrémentations, des décalages, des opérations logiques comme des ET/OU/NON/XOR et bien d'autres. Il supporte en tout 48 instructions, avec un support limité des modes d'adressage indirects. Les instructions de branchement étaient des instructions SKIP, il n'y avait pas d'instructions de branchement généralistes.
Pour ce qui est des registres, il disposait de 16 registres de 8 bits et d'un accumulateur. Niveau mémoire, il était relié à une mémoire ROM, rien de plus. Il n'avait de RAM supplémentaire qu'on pouvait lui adjoindre, il devait se débrouiller avec seulement ses registres. Et cela ne posait pas de problèmes pour son usage. Seul le mode d'adressage indirect à registre est supporté, il n'y a pas de registres d'indices. Ce mode d'adressage permet de lire des données en mémoire ROM, la ROM pouvant contenir des tableaux de valeurs constantes.
: Il est possible de lui adjoindre de la RAM via les ports d'entrée-sortie, ainsi qu'une ALU, mais RAM et ALU sont traités comme des périphériques avec lesquels on communique, ils ne sont pas intégrés au processeur.
Niveau micro-architecture, il incorporait une unité de calcul logique et un circuit comparateur. Le comparateur était un circuit comparateur série des plus basiques, qui était utilisé pour les instructions de branchement et associées. L'unité de calcul logique gérait des incrémentations/décrémentation, des décalages, les opérations logiques et quelques autres. L'unité de calcul logique était bit-slicée, à savoir conçue en assemblant 8 ALU de 1 bit chacune, enchainées en série. Le tout était combiné à des circuits de ''carry skip''.
[[File:Unité de calcul du HP nanonprocessor.png|centre|vignette|upright=2|Unité de calcul du HP nanoprocessor]]
Son unité de décodage d'instruction était très simple, essentiellement basée sur des portes NOR, grâce à un encodage efficace des instructions machine. Le ''program counter'' fait 11 bits, ce qui permet d'adresser une ROM de 2 kibioctets. Le ''program counter'' était relié à un circuit incrémenteur qui gérait les isntructions SKIP (il pouvait incrémenter le ''program counter'' par pas de 1 ou de 2 en cas de SKIP). Le processeur contient aussi deux registres, qui servent en quelque sorte de pile d'adresse de retour. Un premier registre mémorise l'adresse de retour d'une fonction, l'autre mémorise le ''program counter'' lors d'une interruption, pour savoir où brancher à la fin de l'interruption.
[[File:HP nanoprocessor.png|centre|vignette|upright=2.5|HP nanoprocessor]]
Fait intéressant, le concepteur du processeur a gracieusement donné les masques utilisés pour graver le silicium du processeur au site [https://www.cpushack.com/ CPU Shack]. Les masques en question sont disponibles ici :
* [https://www.cpushack.com/2020/08/20/hp-nanoprocessor-mask-set/ HP NanoProcessor Mask Set]
* [https://www.cpushack.com/2020/08/09/the-forgotten-ones-hp-nanoprocessor/ The Forgotten Ones: HP Nanoprocessor]
Les masques ont été analysés par Ken Shirrif dans cet article de blog :
* [https://www.righto.com/2020/09/hp-nanoprocessor-part-ii-reverse.html HP Nanoprocessor part II: Reverse-engineering the circuits from the masks]
==Les processeurs 8/16 bits à architecture Von Neumann==
L'usage d'une architecture Harvard est une solution pour adresser plus de mémoire avec des CPU 8 bits. Mais plusieurs microprocesseurs commerciaux n'utilisaient pas cette solution. À la place, c'était des architectures Von Neumann, mais qui étaient capables de gérer des adresses de 16 bits. Les données faisaient 8 bits, les registres faisaient 8 bits, mais quelques techniques permettaient de gérer des adresses de 16 bits. Nous parlerons de '''processeurs 8/16 bits''' pour les désigner, et nous allons les étudier à part.
Un point important est que la gestion d'adresses de 16 bits permet d'adresser 64 kibioctets, qui peuvent être remplis avec de la RAM et de la ROM. On a donc le meilleur des mondes : 64 kibioctets de mémoire, mais avec des données de 8 bits et les économies de circuit qui vont avec. L'avantage est que le processeur peut maintenant gérer une vraie pile d'appel, pas seulement une pile d'adresse de retour. Il lui suffit pour cela d'intégrer un pointeur de pile codé sur 16 bits.
===Les modes d'adressage par page des CPU Motorola===
Les processeurs Motorola 8 bits étaient des processeurs 8 bits avec un bus d'adresse de 16 bits. C'était des processeurs à accumulateur incorporant deux registres d'indice, un registre d'état, un pointeur de pile, et un ''program counter''. Tous les registres sont reliés au bus d'adresse, sauf le registre d'état et l’accumulateur. Tous les registres font 8 bits, sauf le ''program counter''. La pile est câblée pour être dans un bloc de 256 octets compris entre l'adresse 1 0000 0000 et l'adresse 1 1111 1111, ce qui fait que son adressage se fait avec un seul octet.
[[File:6502-architecture.svg|centre|vignette|upright=1.5|Architecture simplifiée du 6502.</br> X et Y : registres d'indice ;</br> S : le pointeur de pile ;</br> A : accumulateur ;</br>P : registre d'état.</br>]]
Les processeurs Motorola 8 bits utilisaient une méthode simple pour adresser 64 kibioctets de RAM, avec des registres de 8 bits. Pour cela, ils utilisaient une variante de l'adressage base + décalage. Elle améliore l'adressage absolu, qui intègre l'adresse à lire/écrire dans l'instruction elle-même. L'adresse en question est de 8 bits et n'encode que les 8 bits de poids faible de l'adresse, les 8 bits de poids fort sont dans un '''registre de page''' adressé implicitement. L'adresse finale est obtenue en concaténant ce registre avec l'adresse mémoire intégrée dans l’instruction. Le résultat est que la mémoire était découpée en blocs de 256 consécutifs, chacun pouvant servir de fenêtre de 256 octets. Une page est réservée pour la pile, la seconde, comme dit plus haut.
Formellement, ce mode d'adressage a des ressemblances avec la commutation de banques, une technique qu'on verra dans les chapitres sur l'espace d'adressage et la mémoire virtuelle. Mais ce n'en est pas du tout : le registre de page est utilisé uniquement pour les accès mémoire avec le mode d'adressage base + décalage, mais pas pour les autres accès mémoire, qui gèrent des adresses complètes. Notons que l'usage d'un registre de page dédié fait que celui-ci est adressé implicitement.
Il faut noter que la technique a été utilisée sur des processeurs 16 bits, pour contourner la petite taille des instructions. Un exemple est celui du HP 2100, un processeur 16 bits. Il avait un registre de page de 5 bits et encodait 10 bits d'adresse dans ses instructions. Ses instructions d'accès mémoire disposaient d'un bit qui choisit quel mode d'adressage utiliser. S'il était à 0, l'adressage absolu était utilisé, le registre de page n'était pas utilisé. Mais s'il était à 1, le registre de page était utilisé pour calculer l'adresse.
Une évolution de l'adressage précédent est le '''mode page direct'''. Avec lui, le registre de page est étendu et contient une adresse mémoire complète. L'adresse finale n'est pas obtenue par concaténation, mais en additionnant le registre de page avec l'adresse fournie par adressage absolu + décalage. Un exemple est celui des premiers processeurs Motorola, qui géraient des adresses courtes de 8 bits. L'adresse courte de 8 bits correspondait non pas aux 256 premiers octets de la mémoire, mais à une fenêtre de 256 octets déplaçable en mémoire. La position de la fenêtre de 256 octets était spécifiée par le registre de page de 16 bits, qui précisait l'adresse du début de la fenêtre, celle de sa première donnée.
Il s'agit donc formellement d'adressage base + décalage, à un détail près : il n'y a qu'un seul registre de base. Le fait que ce registre de base soit unique fait qu'il est adressé implicitement, on n'a pas à encoder le numéro/noms de registre dans l'instruction. Le registre de base est utilisé uniquement pour l'adressage absolu, pas pour les autres accès mémoire. S'il y a des ressemblances avec la segmentation, une technique de mémoire virtuelle qu'on abordera dans quelques chapitres, ce n'en est pas vu que le registre de base est utilisé seulement pour un mode d'adressage bien précis.
===Le ''pseudo-aliasing'' des registres des processeurs Intel x86===
Voyons maintenant le cas des anciens processeurs 8 bits d'Intel à savoir l'Intel 4004, 4040, 8008 et 8080. Le Z80, un processeur inspiré des CPU Intel 8 bits, est aussi concerné. Avant de poursuivre, parlons des registres de ces processeurs. Les premiers CPU Intel incorporaient 7 registres de 8 bits nommés A, B, C, D, E, F, H, L, SP. Ils correspondent respectivement à : l'accumulateur A ; six registres nommés B, C, D, E, H et L ; le registre d'état F ; le pointeur de pile SP. Le Z80 ajoute deux registres d'indice X et Y. De plus, le Z80 dispose de registres d'interruption, qui sont en quelque sorte des copies des registres A, B, C, D, E, F, H, L. Le tout est illustré dans le tableau ci-dessous.
{|class="wikitable" style="text-align:center;"
|-
!
! Registres des CPU Intel
! Registres supplémentaires du Z80
|-
! Accumulateur
| A
| A'
|-
! Registre d'état
| F
| F'
|-
! Registres généraux
| B, C, D, E, H, L
| B', C', D', E', H', L'
|-
! Pointeur de pile
| colspan="2" | SP (sauf pour le 8008)
|-
! Registres d'indice
|
| X et Y
|}
Le 8008 incorpore une pile d'appel de 7 adresses, dans le processeur lui-même. Il en est de la même avec le 4004 et le 4040, comme on le verra dans la section sur les processeurs 4 bits. Mais le 8080 et le 8085 ont remplacé le tout par un simple pointeur de pile, afin d'avoir une véritable pile d'appel. Autant c'est impossible d'avoir une pile d'appel avec seulement 256 octets de mémoire, autant on peut se le permettre avec 65 536 adresses.
Pour gérer des adresses de 16 bits, ils auraient pu utiliser des registres d'adresse séparés, mais on préféré un système de '''pseudo-''aliasing'' de registres'''. Formellement, c'est un système qui concatène deux registres 8 bits pour obtenir une adresse de 16 bits. L’appariement a lieu lors de certaines opérations bien précises, qui n'ont de sens que pour les adresses : la lecture/écriture en mémoire, et l'incrémentation.
Il y avait cependant des contraintes quant aux paires de registres possibles, toutes les paires de registres n'étaient pas autorisées. Les CPU concernés sont donc des processeurs hybrides accumulateur-registre généraux. L'accumulateur ne peut pas être appairé, seuls les registres généraux le peuvent. Le Z80 autorise plus de paires que les CPU Intel. Voici les paires de registres qui pouvaient servir d'adresse 16 bits :
* Les CPU 8008 d'Intel autorisait une seule paire formée des registres H et L.
* Les autres processeurs, à savoir le 8080, le 8085 et le Z80, autorisaient : les paires BC, DE et HL.
Le 8008 ne gérait que des opérations sur 8 bits. Mais le 8080 et le 8085 ont ajouté des instructions 16 bits qui agissaient sur des paires de registre, que le Z80 a repris. Une paire de registres est considérée comme un registre unique de 16 bits pour certaines opérations arithmétiques, dont l'incrémentation. Voici la liste des instructions concernées :
* INC et DEC pour l'incrémentation et la décrémentation ;
* DAD : additionne le registre HL avec une autre paire (Hl inclus) ;
* LXI : copie une constante immédiate dans une paire de registres ;
* LHLD : lit 16 depuis la mémoire et l'enregistre dans une paire de registres ;
* SHLD : copie 16 bits depuis une paire de registres et l'enregistre en mémoire ;
* PUSH et POP : empile ou dépilent une paire de registre sur la pile ;
* XTHL : échange la paire HL avec les 16 bits au sommet de la pile d'appel ;
* XCHG : échange le contenu de la paire HL et DE.
Pour résumer, le processeur avait des instructions LOAD, STORE, PUSH et POP adaptées pour gérer des paires de registre. De plus, l'instruction XCHG permettait d’échanger le contenu des paires DE et HL. L'instruction a été étendue sur les processeurs 16 bits pour échanger tous les registres. Mais l'implémentation était alors différente. L'incrémentation sur une paire de 16 bit était très utile, car les adresses sont souvent incrémentées quand on parcours un tableau. Ces instructions nous donnent quelques indices sur ce qu'il y a dans le processeur.
Le système de pseudo-aliasing a un impact sur le banc de registre. Le banc de registre regroupe les registres généraux et le pointeur de pile, mais ne contient pas l'accumulateur. Les contraintes sur les paires de registres possibles ne s'expliquent que d'une seule manière : le banc de registre contient des registres de 16 bits, une paire de registres 8 bits est mémorisée dans un registre unique. Il faut donc faire une différence entre les registres architecturaux de 8 bits, et les registres réels de 16 bits.
Le banc de registre a un port de 8 bits pour les données, qui est fabriqué à partir d'un port 16 bits auquel on a rajouté un multiplexeur pour choisir soit l'octet de poids faible, soit l'octet de poids fort. Le bus de données fait 8 bits, ce qui fait que les instructions LOAD, STORE, PUSH et POP pour paires 16 bits sont réalisées en deux fois : on lit/écrit l'octet de poids faible, puis celui de poids fort. Par contre, le bus d'adresse fait bien 16 bits. Cela suggère que le banc de registre dispose d'un port de 16 bits dédié aux adresses, en plus du port de données 8 bits.
[[File:Architecture d'un CPU 8-16 bits avec un banc de registre double port.png|centre|vignette|upright=2|Architecture d'un CPU 8-16 bits avec un banc de registre double port]]
L'incrémentation d'une paire 16 bits ne coute rien à implémenter, ou presque. En effet, le processeur incorpore un incrémenteur 16 bits pour le ''program counter'', qui est relié au bus d'adresse. L'idée est de rentabiliser cet incrémenteur, en lui permettant d'incrémenter des données/adresses de 16 bits obtenues via pseudo-aliasing. De même, il peut être utilisé pour incrémenter le pointeur de pile, voire un compteur de rafraichissement mémoire (pour rappel, le rafraîchissement mémoire demande de balayer la mémoire d'adresse en adresse et été fait par le CPU à l'époque). Pour cela, il suffit de connecter le ''program counter'', le banc de registre, et l'incrémenteur, via un bus dédié.
[[File:Calcul d'adresse par ALU dédiée avec PC séparé.png|centre|vignette|upright=2|Calcul d'adresse par ALU dédiée avec PC séparé]]
Notez qu'on peut encore simplifier le tout en placant le ''program counter'' dans le banc de registre, ce qui ne gênera pas le travail de l'incrémenteur mais simplifiera le câblage au bus d'adresse. Ce n'était pas systématique, certains processeurs mettaient le ''program counter'' dans le banc de registre, d'autres non.
: Inclure le ''program counter'' dans le banc de registre permet parfois de remplir un vide. Par exemple, sur un processeur avec 12 registres, le banc de registre devrait faire idéalement 16 registres, inclure le ''program counter'' dedans fait monter le tout à 13.
[[File:Architecture d'un CPU 8-16 bits.png|centre|vignette|upright=2|Architecture d'un CPU 8-16 bits]]
Les processeurs Intel 8 bits, à savoir le 8008, le 8080 et le 8085 ; mettaient le ''program counter'' dans le banc de registre. Vous avez donc toutes les armes pour comprendre leur micro-architecture. Par exemple, voici la micro-architecture du processeur 8080. Remarquez le banc de registre, qui contient tous les registres sauf l'accumulateur et le registre. Il a deux ports : un pour les adresses et un pour les données. Notez le dé-multiplexeur sur le port de donnée. Pour le reste, il s'agit d'une architecture à accumulateur hybride des plus classiques.
[[File:Intel 8080 arch.svg|centre|vignette|upright=3|Microarchitecture de l'Intel 8080.]]
Le Z80 est un processeur inspiré du design des processeurs Intel 8 bits, mais avec pas mal d'améliorations. Un point particulier de ce processeur est son banc de registre. Il contient tous les registres du processeur, y compris l'accumulateur et le registre d'état ! Les seuls registres en-dehors du banc de registre sont le ''program counter'' et un compteur de rafraichissement mémoire IR.
Un autre point particulier est que les registres dans le banc de registres avaient une copie séparée accessible uniquement pour les interruptions, via fenêtrage de registres. Et l'accumulateur et le registre d'état étant dans le banc de registre, il y avait deux accumulateurs et deux registres d'état. Les registres A, B, C, D, E et F étaient dupliqués, par le pointeur de pile ni les registres d'indice. Les copies des registres étaient nommées A', B', C', D', E' et F'.
Le Z80 supportait des instructions d'échange de registre en plus des CPU Intel 8 bits. L'instruction EX peut échanger soit le contenu des paires D,E et H,F, soit la paire A,F avec la paire A',F'. L'instruction EXX échange les paires BC, DE, HL avec les paires BC', DE', HL'. En faisant cela, le programmeur pouvait utiliser deux fois plus de registres généraux s'il n'utilisait pas les interruptions. L'échange de paires se fait sans copies de registres, mais simplement en modifiant l'adresse envoyée sur le banc de registre. Pour cela, plusieurs bascules mémorisent des bits qui indiquent si les paires ont été échangées ou non. Il y a une bascule pour les paires DE , HL ; une autre pour les paires A,F et paire A',F', une dernière pour l'instruction EXX. En combinant ces bascules avec les noms de registres envoyés par le séquenceur, on peut échanger les paires de registres.
==Le cas particulier des processeurs 4 bits : le 4004 d'Intel==
L'Intel 4004 était le tout premier micro-processeur. Il s'agissait d'un microprocesseur de 4 bits, basé sur une architecture à accumulateur. Il disposait d'un accumulateur et de 16 registres d'indice, tous de 4 bits. Il faisait des calculs sur des données de 4 bits, appelées des nibbles. Cependant, sur ses 46 instructions machines supportées, 41 agissaient sur des opérandes de 8 bits, les 5 restantes sur des opérandes de 16 bits. Simplement, les calculs se faisaient en deux fois, en échangeant des données entre mémoire RAM et accumulateur.
Le 4004 est un circuit intégré avec peu de broches. Il dispose notamment d'un bus de données/adresse, qui est multiplexé, c’est-à-dire qu'il sert alternativement de bus de données et de bus d'adresse selon les besoins. Le bus de commande mémoire fait 5 bits, dont 4 pour les chips de RAM, un pour la ROM. Les adresses sont codées sur 12 bits, les données sur 4 et les instructions sur 8 bits. L'envoi d'une adresse sur le bus se fait en plusieurs fois, de même que la lecture d'une instruction. Il s'agit là d'une adaptation pour outrepasser les limitations d'un processeur 4 bit.
[[File:Intel 4004 processor pinout.png|centre|vignette|upright=2|Broches de l'Intel 4004. Nous verrons à quoi elles servent plus bas.]]
===L'espace d'adressage de l'Intel 4004===
Les adresses du processeur sont sur 12 bits, ce qui fait 4096 adresses différentes. Elles regroupent à la fois la ROM et la mémoire RAM, vu que l'architecture est une sorte de mélange bizarre entre une architecture Von Neumann et Harvard. Le processeur gère bien deux espaces d'adressage séparés, mais la RAM et la ROM sont reliés au même bus. La sortie CM-ROM du processeur indique si l'adresse envoyée correspond à la RAM ou la ROM. Un circuit de décodage d'adresse active ou désactive la RAM selon la valeur de ce bit, l'inverse pour la ROM, en agissant sur leurs bits Chip Select. Seule la RAM ou la ROM répondent alors à l'adresse.
Pour ce qui est de la RAM, le circuit de décodage d'adresse pouvait gérer au maximum 1024 adresses différentes, chacune contenant un nibble. Pour cela, le CPU 4004 était relié à une ou plusieurs RAM externes, des Intel 4002. Chaque Intel 4002 contenait 64 nibbles de données, plus 16 nibbles de statut qu'on ne détaillera pas ici. Les nibbles de statut étaient accessibles en utilisant des instructions d'entrée-sortie, donc pas avec des lectures/écritures mémoire. Les 64 nibbles de données sont découpés en 4 groupes de 16 nibbles. Le CPU pouvait être relié à maximum 16 Intel 4002, ce qui fait 1024 nibbles de données et 256 nibbles de statut. L'ensemble permet de remplir l'espace d'adressage de 1024 adresses.
===Le registre de page et le pseudo-aliasing des registres===
Sélectionner une adresse mémoire utilisait un mélange entre pseudo-aliasing et registre de page. Pour les données, les 1024 adresses étaient découpées en 4 pages de 256 adresses. Pour la ROM, les 4096 adresses étaient découpées en 16 pages de 256 adresses. Localiser une donnée dans une page ne requiert que 8 bits, 2/4 bits supplémentaires permettent de sélectionner la page voulue. Le registre de page était dans le processeur lui-même, et était relié aux sorties du processeur nommées CM-RAM 0, 1, 2 et 3. Les 4 sorties encodaient un nombre qui permet de sélectionner le numéro de page voulu.
Le registre de page fait 5 bits : un pour distinguer RAM et ROM, 4 bits pour sélectionner la page voulue. L'avantage est que la carte mère gère au maximum 16 chips de RAM, ce qui colle parfaitement avec les 4 utilisés pour sélectionner une page. Un chip de RAM correspond à une page, et chacun est activé ou désactivé suivant la page sélectionnée. Pour cela, il suffit d'ajouter un décodeur sur la carte mère, qui prend les 4 bits du registre de page et fournit les signaux Chip Select aux différents chips de RAM.
Reste alors à utiliser les 8 bits d'adresse à l'intérieur d'un chip de RAM. Le 4004 permettait de concaténer deux registres d'indice de 4 bits pour former une adresse de 8 bits. Les instructions d'accès mémoire pouvaient ainsi préciser une paire de registre d'indice pour préciser quelle adresse lire/écrire. Idem pour les branchements indirects : le processeur supportait une instruction de branchement indirect qui précisait l'adresse dans une paire de registres d'indice. Les registres d'indice sont donc assez mal nommés sur cette architecture, vu qu'ils peuvent servir soit de registre d'indice, soit de demi-registre d'adresse. Il s'agit là du système de pseudo-aliasing des registres, mais appliqué aux registres d'indice.
L'Intel 4004 gérait deux instructions pour gérer les adresses mémoires. La première, l'instruction DCL (''Designate Command Line'') configure le registre de page. Elle prend en entrée un numéro de page et le copie dans le registre de page. L'opérande peut provenir d'un registre d'indice ou de l'accumulateur. La seconde, l'instruction SRC (''Send Register Control'') concatène deux registres d'indice pour obtenir une adresse de 8 bits. Un accès mémoire se fait donc en maximum trois instructions : une qui configure le registre de page si ce n'est pas déjà fait, une instruction SRC pour envoyer l'adresse, et une troisième instruction qui dit s'il faut faire une lecture ou une écriture.
===La microarchitecture de l'Intel 4004===
Il incorporait une pile d'adresse de retour intégrée au processeur. La pile d'adresse acceptait exactement 3 adresses maximum. Elle était regroupée avec le ''program counter'' dans un banc de registre, de 4 registres. Le ''program counter'' et le pointeur de pile faisaient chacun 12 bits, soit trois nibble. Ils étaient incrémentés par un incrémenteur dédié.
SI on omet le registre de page et la pile d'adresse, le 4004 est une architecture à accumulateur des plus classiques, avec un bus interne unique, un banc de registre pour les registres d'indices, un accumulateur relié à une unité de calcul. Les registres d'indice étaient dans un banc de registre séparés, car ils faisaient 4 bits chacun, contrairement au pointeur de pile et le ''program counter''. Un détail important est que les bancs de registres du 4004 étaient implémentés avec de la DRAM, et non des registres usuels fabriqués avec des bascules 1 bit.
[[File:Microarchitecture de l'Intel 4004.png|centre|vignette|upright=2.5|Microarchitecture de l'Intel 4004]]
<noinclude>
{{NavChapitre | book=Fonctionnement d'un ordinateur
| prev=Les architectures à pile et mémoire-mémoire
| prevText=Les architectures à pile et mémoire-mémoire
| next=Les processeurs de traitement du signal
| nextText=Les processeurs de traitement du signal
}}
</noinclude>
t1holp37lh0skx0rsdg9r38m75ni0ah
765732
765731
2026-05-01T20:31:18Z
Mewtow
31375
/* Les microcontrôleurs Intel 8051/8031 */
765732
wikitext
text/x-wiki
Nous avons déjà abordé la notion de processeur 8, 16, 32, 64 bits. Elle désigne la taille des registres généraux, ou de l'accumulateur. De nos jours, les processeurs 32 et 64 bits sont la norme, mais les premiers micro-processeurs étaient des processeurs 4 et 8, avant de passer rapidement au 16 bits. La raison est que leur budget en transistor limité faisait qu'on ne pouvait pas utiliser une ALU trop grande : une ALU 8 bit prend deux fois moins de place et de transistors qu'une ALU 16 bits. Cependant, les processeurs 8 bits avaient de sérieuses limitations qui étaient compensées par diverses solutions. Dans ce chapitre, nous allons faire une revue rapide des processeurs 8 bits et de leurs fonctionnalités.
La principale limitation des CPU 8 bits était l'adressage : des registres de 8 bits limitaient l'espace d'adressage à seulement 256 adresses, soit à peine 256 octets ! Intuitivement, on se dit que 256 octets est purement impraticable, on ne peut rien faire d'intéressant avec seulement 256 de RAM + ROM. Et c'est partiellement vrai. L'adage veut que 16 bits est la taille minimale intéressante, la limite à partir de laquelle on a assez de mémoire RAM/ROM pour coder des applications intéressantes. Mais 256 octets de RAM est largement suffisant sur de nombreux systèmes embarqués simples s'en accommodent : des caisses enregistreuses, des systèmes de régulation de feu de circulation, etc.
Pour les applications demandant plus de mémoire RAM, les CPU de l'époque contournaient la limitation de 256 octets de RAM avec de nombreux stratagèmes. Dans ce qui va suivre, nous allons séparer les CPU 8 bits selon qu'ils utilisent une architecture Harvard ou une architecture Von Neumann. La raison est qu'une architecture Harvard permet en soi de contourner partiellement ce problème d'adressage. Les choses sont plus compliquées avec une architecture Von Neumann.
==Les processeurs 8/16 bits à architecture Harvard ==
La première solution est d'utiliser une architecture Harvard. Le processeur 8 bit a alors deux espaces d'adressage : un pour la RAM, un autre pour la ROM. Et les deux utilisent des adresses de taille différente. La ROM est reliée à un bus d'adresse de 16 bits, alors que la RAM est elle connectée à un bus d'adresse de 8 bits. La RAM est donc limitée à 256 octets, alors que la ROM peut monter jusqu'à 64 kibioctets. Mine de rien, faire ainsi est largement suffisant.
Pour encore améliorer la situation, il est possible d'utiliser une architecture Harvard modifiée, qui permet de lire des données depuis la mémoire ROM. Cela réduit encore plus les besoins en mémoire RAM. Les constantes manipulées par le programme sont mémorisées en ROM, lues depuis la ROM, au lieu d'être chargées en RAM. Avec ce genre de stratagèmes, 256 octets de RAM est largement suffisant sur de nombreux systèmes, à condition qu'on ait assez de ROM pour coder un programme digne de ce nom. Par exemple, de nombreux systèmes embarqués simples s'en accommodent : des caisses enregistreuses, des systèmes de régulation de feu de circulation, etc.
Les processeurs 8 bits intègrent parfois les 256 octets de RAM directement dans le processeur, dans le banc de registres ! Beaucoup en implémentaient moins, avec par exemple seulement 64 octets de RAM, ou 32 octets, ou 128 octets. L'avantage est que cela élimine le bus pour les données, ce qui économise beaucoup de broches sur le circuit intégré du CPU. Et pour les applications demandant plus de RAM, on pouvait ajouter un circuit séparé qui permettait d'adresser une RAM plus grande. Et c'est ce qui explique que cette solution est beaucoup utilisée sur les microcontrôleurs peu puissants. Les exemples qui vont suivre devraient vous convaincre.
: Les processeurs de ce type implémentent des optimisations pour adresser plus de 256 octets de RAM. La plus connue est la commutation de banques. Mais nous n'avons pas encore abordé celle-ci, et il faudra attendre le chapitre sur l'espace d'adressage pour cela.
===Les microcontrôleurs PIC===
Les '''microcontrôleurs PIC''' regroupent des microcontrôleurs allant de microcontrôleurs 8 bits aux performances très faible, à des microcontrôleurs 32 bits bien plus puissants. Les microcontrôleurs PIC sont très utilisés dans l'embarqué ou d'informatique industrielle. Ils sont vendu à des volumes assez impressionnants, plusieurs millions par an. Et si vous avez ou êtes en train de faire des études d'électronique, je parie que vous les avez déjà vu en classe, ou que ce ne saurait tarder. Dans ce qui suit, nous allons nous concentrer sur les microcontrôleurs PIC 8 bits, à savoir les PIC 16, 16 et 18. Les PIC 24, qui sont des microcontrôleurs 16 bits, ne seront pas abordés.
Les microcontrôleurs PIC 8 bits sont une architecture Harvard, comme dit plus haut. Il y a aussi des registres pour les entrées et sorties. Les registres d'entrée-sortie permettent de lire ou écrire sur un port d'entrée-sortie ou de lire un ''timer''. En clair, les PIC ont un espace d'adressage séparé pour les entrées-sorties.
La mémoire ROM des PIC va de 1024 instructions à 4096 instructions. En comparaison, la mémoire RAM des microcontrôleurs PIC ne peut pas dépasser 256 adresses, et elle est encore plus petite en pratique sur certains modèles. Pour donner un exemple, le PIC16F84 a une RAM composée de 68 "registres" de 8 bits. Le terme "registres" devrait vous faire tiquer, mais c'est bien le terme utilisé dans la documentation des PIC. Et il faut admettre que la différence entre banc de registre et SRAM intégrée est floue, mais nous expliquerons pourquoi dans quelques paragraphes.
: Les PIC 18 peuvent adresser plus de 256 octets de RAM en utilisant la commutation de banques, une technique qui sera abordée dans plusieurs chapitres.
[[File:DocPIC16F84 3.png|centre|vignette|upright=3|Espaces d'adressage du PIC16F84.]]
Un détail est que la SRAM n'a qu'un seul port qui sert à la fois pour les lectures et écritures. Pour compenser, les PIC sont des architectures à accumulateur, où une opérande est lue depuis la SRAM, l'autre depuis l'accumulateur. Leur implémentation de l'accumulateur ajoute une petite subtilité : le résultat d'une opération arithmétique peut être enregistré ailleurs que dans l'accumulateur. Le résultat peut aussi remplacer la seconde opérande, celle lue en mémoire RAM. Dit autrement, le résultat est enregistré dans l'adresse mémoire source. Les instructions de calcul ont le choix : un bit dans leur encodage précise où enregistrer le résultat.
{|
|-
|[[File:DocPIC16F84 4.png|centre|vignette|upright=2|Microarchitecture simplifiée d'un microcontroleur PIC (ici, un 16F84).]]
|[[File:DocPIC16F84 5.png|centre|vignette|upright=2|Microarchitecture simplifiée d'un microcontroleur PIC (ici, un 16F84), avec les branchements directs.]]
|}
Outre l'accumulateur, les PIC disposent de registres de contrôle, d'un ''program counter'', d'un registre d'état, et d'un pointeur de pile. Un détail très important est que les registres sont mappés en mémoire, à quelques exceptions près ! En clair, on peut y accéder en lisant/écrivant à une adresse mémoire bien précise. Les seules registres qui ne sont pas mappés en mémoire sont l'accumulateur, les registres d'entrée-sortie, et la pile d'adresses de retour intégrée au processeur (voir plus bas). Par exemple, sur les modèles 16F, l'espace d'adressage fait 128 octets, dont 32 sont réservés aux registres du processeur, ce qui fait que seules 96 octets sont adressables comme de la RAM. Mais les 128 octets sont un seul et unique SRAM dans le processeur. Ce qui explique qu'il est difficile de séparer banc de registre et RAM principale sur ce processeur : les deux sont fusionnées ! Cela gaspille quelques adresses mémoire, mais permet une implémentation plus simple, avec un banc de registre unique.
: Les modèles PIC 17 ont rendu l'accumulateur mappé en mémoire RAM !
[[File:DocPIC16F84.png|centre|vignette|upright=2|DocPIC16F84]]
La petite taille de la ROM d'un PIC n'est pas une surprise. Les architectures 8 bits sont conçues pour ne pas utiliser beaucoup de transistors et être très simples. Aussi, utiliser une petite ROM est nécessaire. Mais il faut aussi adapter le jeu d'instruction, pour qu'il ait une bonne densité de code. Par exemple, il faut faire en sorte d'avoir des instructions assez courtes. Si les instructions font 16 bits au lieu de 32, on divise par deux le nombre de transistors nécessaire pour la mémoire ROM. La conséquence est que le jeu d’instruction des PIC est adapté à cette contrainte.
Les microcontrôleurs PIC utilisent un jeu d'instruction propriétaire, dont les instructions sont très petites. Les premières versions du jeu d'instruction utilisaient des instructions codées sur 12 bits, dont 5 pour l'adresse mémoire de la seconde opérande. Pour les branchements, 3 bits étaient utilisés pour l'opcode, 9 pour l'adresse de destination. Par la suite, les instructions ont été étendues à 13 bits sur les PIC1670, puis à 14, 15 et 16 bits. Les adresses ont alors été élargies, ce qui permet d'adresser en peu plus de mémoire RAM.
Il est intéressant de regarder comment les PIC font pour obtenir des instructions aussi courtes. Premièrement, le fait d'utiliser une architecture à accumulateur, couplé à une RAM très petite aident grandement. Les architectures à accumulateur ont besoin de préciser un opcode et une adresse mémoire pour chaque instruction, pas besoin de préciser de noms de registres ni le mode d'adressage. La taille des adresses mémoire est censé être un problème pour la densité de code, mais les adresses d'un processeur 8 bits font 8 bits. On peut alors avoir un jeu d'instruction étoffé, en utilisant des instructions 16 bits, qui concatènent un opcode et une adresse mémoire, d'un octet chacun.
Mais d'autres optimisations permettent d'avoir une bonne densité de code. Les PIC ont des branchements pour les appels et retour de fonction. Les PIC incorporent une pile d'appel de retour, qui fait 2 à 8 adresses suivant les modèles. Elle permet d'économiser quelques registres, car la pile d'appel n'est pas mappé dans l'espace d'adressage, elle n'est pas adressable. On économise ainsi 2 à 8 registres, sur 32-256 registres. De plus, cela simplifie l'encodage des instructions d'appel/retour de fonction, qui n'ont pas à préciser où enregistre l'adresse de retour.
Les PIC n'ont pas d'instructions de branchement conditionnels, ils font avec une SKIP instruction et des branchements inconditionnels. Du moins, c'est le principe, car si vous regardez la liste des instructions ci-dessous, vous verrez qu'il n'y a pas d'instruction SKIP. A la place, les instructions SKIP sont fusionnées avec d'autres instructions. Elles sont notamment fusionnées avec les instructions d'incrémentation et de décrémentation. Les PIC supportent une incrémentation normale, une décrémentation normale, une décrémentation fusionnée avec une instruction SKIP, et une incrémentation fusionnée avec une instruction SKIP. Les deux dernières incrémentent/décrémentent l'accumulateur et SKIP l'instruction suivante si le résultat est zéro. Elles permettent de fortement simplifier l'implémentation des boucles qui s'exécutent tant que leur compteur atteint zéro.
Les PIC disposent aussi d'instructions de manipulation de bit, pour tester/masquer un bit dans une opérande, 4 en tout. Il y a en a 4 en tout : mettre à 0, mettre à 1, tester si bit = 1, tester si bit = 0. Les instructions qui testent un bit prennent leur opérande dans l'accumulateur. Elles font le test du bit et décident s'il faut skipper l'instruction suivante ou non. Il y a aussi deux instructions de rotation à gauche et droite, qui tiennent compte de la retenue mémorisée dans le registre d'état. Par contre, il n'y a pas d'instructions de décalages, qui peuvent être émulées avec une rotation suivie d'un ET bit à bit. Mentionnons aussi une instruction pour inverser deux ''nibbles'' dans un octet.
Les modèles haute performance ajoutent des instructions d'addition avec retenue entrante, idem pour la soustraction. De telles instructions ssont très utiles pour faire des additions/soustractions sur des opérandes de 16 bits. Le processeur a beau être un CPU 8 bits, il peut être utilisé pour faire des calculs 16 bits, la performance est alors amoindrie, mais ce n'est pas un problème pour les applications d'un tel microcontroleur.
Les modèles intiaux, comme les PIC 10 et 12, ne supportaient pas les interruptions, mais c'est chose réglé sur les modèles plus récents. Ils ont même des registres séparés pour les interruptions et les programmes normaux. De plus, ils intégrent nativement un ''watchdog timer''.
{|class="wikitable" style="text-align:center"
|+ Jeu d'instruction des dodèles PCI 16
|-
! colspan="5" | Instructions diverses
|-
| colspan="3" | 00 0000 0000 0000 || NOP || Ne fait rien
|-
| colspan="3" | 00 0000 0000 1000 || RETURN || Instruction de retour pour une fonction
|-
| colspan="3" | 00 0000 0000 1001 || NOP || Instruction de retour pour une interruption
|-
| colspan="3" | 00 0000 0110 0011 || SLEEP || Mise en veille
|-
| colspan="3" | 00 0000 0110 0100 || CLRWDT || RESET le ''watchdog timer'', intégré dans le PIC
|-
! colspan="5" | Instructions de manipulation de bit
|-
| 0100 || Position du bit dans l'opérande || Adresse mémoire || BCF || Met le bit à 1
|-
| 0101 || Position du bit dans l'opérande || Adresse mémoire || BSF || Met le bit à 0
|-
| 0110 || Position du bit dans l'opérande || Adresse mémoire || BTFSC || Teste si le bit adressé est à 1
|-
| 0111 || Position du bit dans l'opérande || Adresse mémoire || BTFSS || Teste si le bit adressé est à 0
|-
! colspan="5" | Branchements
|-
| colspan="2" | 100 || Adresse mémoire || CALL || Appel de fonction
|-
| colspan="2" | 100 || Adresse mémoire || GOTO || Branchement inconditionnel
|-
! colspan="5" | Instructions logiques/arithmétiques avec opérande lue en mémoire RAM
|-
| colspan="5" | ''Le bit '''d''' dans l'opcode indique la destination : accumulateur ou adresse mémoire''.
|-
| colspan="2" | 0000001 || Adresse mémoire || MOVWF || Store (accumulateur vers destination)
|-
| colspan="2" | 000001d || Adresse mémoire || MOVWF || Met à zéro la destination (adresse ou registre)
|-
| colspan="2" | 000001d || Adresse mémoire || SUBWF || Soustraction
|-
| colspan="2" | 000010d|| Adresse mémoire || DECF || Décrémentation
|-
| colspan="2" | 000100d|| Adresse mémoire || IORWF || OU bit à bit
|-
| colspan="2" | 000101d|| Adresse mémoire || ANDWF || ET bit à bit
|-
| colspan="2" | 000110d || Adresse mémoire || XORWF || XOR bit à bit
|-
| colspan="2" | 000111d || Adresse mémoire || ADDWF VWF || Addition
|-
| colspan="2" | 001000d || Adresse mémoire || MOVF || LOAD
|-
| colspan="2" | 001001d || Adresse mémoire || COMF || NOT bit à bit
|-
| colspan="2" | 001010d || Adresse mémoire || INCF || Incrémentation
|-
| colspan="2" | 001011d || Adresse mémoire || DECFSZ || Décrémentation, puis instruction SKIP si résultat = 0
|-
| colspan="2" | 001100d || Adresse mémoire || RRF || Rotation à droite avec retenue entrante
|-
| colspan="2" | 001101d || Adresse mémoire || RLF || Rotation à gauche avec retenue entrante
|-
| colspan="2" | 001110d || Adresse mémoire || SWAPF || Echange deux ''niblle'' dans un octet
|-
| colspan="2" | 001111d || Adresse mémoire || INCFSZ || Incrémentation, puis instruction SKIP si résultat = 0
|-
! colspan="5" | Instructions logiques/arithmétiques avec constante immédiate
|-
| colspan="2" | 1100xx || Constante immédiate (8bits) || MOVLW || Copie constante dans accumulateur
|-
| colspan="2" | 1101xx || Constante immédiate (8bits) || RETLW || MOV fusionné avec un retour de fonction
|-
| colspan="2" | 111000 || Constante immédiate (8bits) || IORLW || OU
|-
| colspan="2" | 111001 || Constante immédiate (8bits) || ANDLW || ET
|-
| colspan="2" | 111010 || Constante immédiate (8bits) || XORLW || XOR
|-
| colspan="2" | 11110x || Constante immédiate (8bits) || SUBLW || Soustraction
|-
| colspan="2" | 11111x || Constante immédiate (8bits) || ADDLW || Addition
|}
Les PIC gèrent l'adressage absolu et immédiat, mais pas plus. L'adressage absolu, celui où l'adresse est intégrée dans l'instruction, est très simple à implémenter. Les adresses prennent moins d'un octet, vu que la taille de la RAM est très petite, les adresses sont très courtes, les intégrer dans des instructions elles-mêmes courtes n'est pas un problème. L'adresse est encodée sur 5 à 7 bits, selon le modèle, ce qui permet d'adresser entre 32 et 128 octets.
Les PIC ne supportent pas l'adressage indirect, mais peuvent l'émuler grâce à un '''registre d'adresse''' dédié. Il s'agit du registre FSR, qui mémorise l'adresse à lire/écrire. Il est possible de copier un pointeur dedans, qui provient soit de l'accumulateur, soit de la mémoire SRAM. Dans les deux cas, la donnée adressée est lue ou écrite dans un registre INDR, est un registre d’interfaçage rendu adressable. Le registre FSR est directement connecté sur le bus d'adresse.
Les modèles de base se débrouillent avec un registre FSR et un registre INDR, mais les modèles plus performants ont deux ou trois copies de chaque registre. Les modèles PIC18 ajoutent aussi des instructions LOAD/STORE qui émulent les modes d'adressage à post- ou pré-incrément/décrément, et le mode d'adressage "Base + Indice + Décalage", encore une fois en utilisant les registres FSR et INDR.
Avec tout ce qu'on vient de dire, vous devriez pouvoir comprendre la microarchitecture d'un PIC, qui est résumée dans ce schéma.
[[File:DocPIC16F84 all.png|centre|vignette|upright=2.5|Microarchitecture du PIC16F84.]]
===Les microcontrôleurs Intel 8051/8031===
[[File:Pinagem8031.jpg|vignette|Broches du 8051.]]
Les microcontrôleurs Intel 8051/8031 sont des microcontrôleurs 8 bits, commercialisés par Intel. Elle contient un processeur 8/16 bits, 4 kibioctets de mémoire ROM, une RAM de 128 octets. Niveau entrées-sorties, il contient un port série, ainsi que 4 ports d'un octet chacun sur lesquels il peut lire ou écrire. Il supporte des interruptions, avec un contrôleur d'interruption intégré. Il contient aussi deux ''timers'' de 16 bits chacun, qui déclenchent des interruptions quand ils tombent à zéro ou à une valeur configurable.
Ils ont de nombreuses ressemblances avec les microcontrôleurs PIC. Le processeur du 8051 est une architecture à accumulateur de 8 bits, ses registres sont mappés en mémoire RAM, il a un registre d'adresse dédié à l'adressage indirect et j'en passe. Mais il y a aussi des différences notables. Par exemple, le 8051 n'a pas de pile d'adresse de retour, contrairement aux processeurs PIC. Il fait autrement, à savoir qu'il gère une pile d'appel placée en mémoire RAM,ce qui est très différent. De même, il utilise deux accumulateurs nommés A et B.
Une autre différence est que les registres sont placés dans un banc de registre à part des 128 octets de SRAM. Il y a une SRAM séparée du banc de registre, contrairement à ce qu'on a sur les microcontrôleurs PIC. Par contre, les registres du processeur sont mappés en mémoire RAM, y compris les deux accumulateurs, le registre d'état, le ''program counter'', et bien d'autres. Mais le fait qu'ils soient séparés de la SRAM permet de les mapper dans l'espace d'adressage sans marcher sur les pieds de la SRAM. Vu que le processeur peut adresser 256 octets, mais n'a que 128 octets de SRAM, les registres sont mappés dans les 128 octets restants. Les entrées-sorties aussi sont mappées dans ces 128 octets restants.
L'ensemble utilise une architecture Harvard, contrairement à ce que pourrait faire croire le schéma ci-dessous.
[[File:Arkitektura mikro kontrollerit Intel 8051.png|centre|vignette|upright=2.5|Microcontrôleur 8051]]
Voyons maintenant la ''memory map'' de ce microcontroleur, pour la SRAM. Un point assez original est que 16 octets de la SRAM sont adressables bit par bit, à savoir que chaque bit a sa propre adresse. En tout, cela permet d'adresser 128 bits (16 adresses * 8 bits par octet adressé). L'intervalle bit-adressable va de l'adresse 32 (inclue) à l'adresse 47 (inclue).
Les 32 premières adresses sont réservés à la mémoire SRAM, c'est 32 octets de RAM utilisable à volonté par le programmeur. Les 16 adresses suivantes sont les 16 adresses bit-adressables mentionnées dans le paragraphe précédent. Les 96 octets suivants sont de la mémoire RAM adressable, affectée par défaut à la pile d'appel mais adressable via adressage direct si besoin. Les 128 octets de poids fort sont réservés aux registres du processeur et aux entrée-sorties mappées en mémoire.
[[File:Memory map du 8051.png|centre|vignette|upright=2|Memory map du 8051]]
Les 128 octets au sommet de l'espace d'adressage sont décrit dans le schéma ci-dessous. On voit que les deux accumulateurs sont mappés dedans, de même que le registre d'état PSW, le ''program counter'' IP, le registre de configuration des interruptions IE (''Interrupt Enable''), et quelques autres. Les ports d'entrée-sortie sont aussi mappés dedans, que ce soit les 4 ports parallèles ou le port série. Les deux ''timers'' sont aussi mappés dedans, ainsi que leurs registres de configuration.
Une partie des octets sont bit-adressables, et cette partie inclus les registres du processeur et les ports d'entrées-sorties. Pour le dire autrement, chaque bit d'un port d'entrée-sortie a sa propre adresse mémoire, qui permet de le sélectionner. Par contre, les registres pour les ''timers'' ne sont pas dedans, sauf pour le troisième ajoutés dans des extensions du 8051.
[[File:MFrey SFR MCS-51.svg|centre|vignette|upright=2|Memory map des 128 octets de poids fort du 8051]]
Pour ce qui est des instructions, le 8051 supporte les opérations de multiplications et de divisions, contrairement aux microcontrôleurs PIC qui se limitaient à l'addition et la soustraction.
Une autre particularité est que le processeur incorpore une '''unité de calcul de 1 bit'''. Elle permet de faire des opérations sur des bits, avec 17 instructions possibles au total. L'ALU de 1 bit est reliée à un accumulateur de 1 bit et 32 registres de 1 bits. Elle peut lire des opérandes de 1 bit en mémoire RAM ou sur les ports d'entrée-sortie, pour les portions qui sont bit-adressables.
[[File:Intel 8051 arch.svg|centre|vignette|upright=2|Microarchitecture de l'Intel 8051.]]
===Le Fairchild F8 et la console de jeu Fairchild Channel F===
Un autre exemple est la Fairchild F8 de la défunte entreprise Fairchild Semiconductor. Il incorpore un processeur 8 bits, c'est à dire que le processeur fait des calculs sur des entiers de 8 bits maximum, une mémoire RAM de 64 octets, ainsi qu'une mémoire ROM de 1 kibioctet. Les 64 octets de RAM sont certes très peu, mais c'est suffisant pour certaines applications simples, comme les caisses automatiques de l'époque, ou des applications embarquées. Et de toute façon, il est possible d'ajouter de la mémoire RAM supplémentaire si les 64 octets de RAM intégrée ne suffisent pas. Le système était donc modulaire, adaptable selon les besoins, peu cher pour son implémentation minimale sans RAM en plus.
Vu qu'il s'agit d'un des tout premiers ordinateurs, il est sorti à une époque où la technologie était rudimentaire. À cette époque, le processeur était composé de pièces détachées qu'il fallait souder ensemble pour obtenir un processeur fonctionnel. Ce n'est que plus tard qu'est apparu le micro-processeur, qui regroupe un processeur complet dans un seul circuit intégré. Le résultat est que le processeur du Fairchild F8 est coupé en deux, l'unité de calcul et l'unité de contrôle sont placés dans des pièces détachées séparés.
Le microcontrôleur est composé de trois à quatre pièces détachées, certaines étant optionnelles. La première est le '''3850 CPU''', qui regroupe l'unité de calcul et la mémoire RAM intégrée. La seconde est le PSU (''3851 Program Storage Unit''), qui regroupe la mémoire ROM et l'unité de contrôle, ''program counter'' inclut. S'il y a besoin d'utiliser plus de RAM, il faut ajouter un circuit d’interface mémoire, qui est au choix le ''3852 Dynamic Memory Interface'' (DMI) ou le ''3853 Static Memory Interface'', le premier étant connecté à une mémoire de type DRAM, l'autre à une SRAM (nous verrons ce que sont les DRAM et les SRAM dans le prochain chapitre).
[[File:Fairchild F8.png|centre|vignette|upright=2|Fairchild F8]]
Le système minimal est composé d'un PSU et d'un 3850, sans les circuits d'interface mémoire. Le tout donne un système avec un processeur 8 bit, 64 octets de RAM et 1 kibioctet de ROM, les deux mémoires étant intégrées dans le "processeur". Le processeur gérait 4 entrées-sorties, chacune étant reliée avec un bus de 8 bit au processeur. Au passage, en 1977, Mostek a créé un microcontrôleur qui regroupe un PSU et un 3850 : le Mostek 3870. Le système minimal n'avait pas de bus d'adresse, vu que la RAM était intégrée au processeur. C'est les 3852 et 3853 qui ajoutaient un bus d'adresse. Ils ajoutent un bus d'adresse de 16 bits, ce qui permet d'adresser 64 kibioctets de RAM.
[[File:Fairchild-Channel-F.jpg|vignette|un Fairchild Channel F]]
Le Fairchild F8 a été utilisé dans la Fairchild Channel F, une des toute première console de seconde génération, à savoir des consoles qui utilisaient des cartouches de jeu. Avant les consoles de seconde génération, les consoles étaient non-programmables. Elles étaient conçues pour faire tourner un jeu précis, aucun autre, le jeu étant implémenté dans leurs circuits.
La Fairchild Channel F est composé du système minimal, auquel on a ajouté une carte son rudimentaire et 2 kibioctets de mémoire vidéo. La mémoire vidéo sert uniquement pour afficher des images à l'écran : on écrit l'image à afficher dedans, un circuit vidéo se charge de l'afficher à l'écran automatiquement. Le processeur ne fait qu'écrire dans cette RAM vidéo, il ne peut pas en lire le contenu. De la RAM supplémentaire peut cependant être ajoutée dans les cartouches de jeu.
===Le HP Nanoprocessor : un processeur sans ALU===
Un dernier exemple est celui du processeur HP Nanoprocessor, de l'entreprise HP. Il a été commercialisé en 1974, en même temps que les premiers micro-processeurs d'Intel. Tous les processeurs de l'époque étaient des processeurs 8 bits et le HP Nanoprocessor ne faisait pas exception. Ce n'était pas un processeur haute performance, il était destiné à des applications d'informatique industrielle ou embarquée. D'ailleurs, il utilisait des transistors de type metal-gate, peu performants, là où ses contemporains utilisait des transistors en silicium, plus performants.
Mais une caractéristique qui rend cela encore plus claire est qu'il n'y a pas d'ALU ! En effet, ce processeur est incapable de faire des additions, des soustractions ou autres opérations simples ! Il est cependant capable d'effectuer des incrémentations et décrémentations, des décalages, des opérations logiques comme des ET/OU/NON/XOR et bien d'autres. Il supporte en tout 48 instructions, avec un support limité des modes d'adressage indirects. Les instructions de branchement étaient des instructions SKIP, il n'y avait pas d'instructions de branchement généralistes.
Pour ce qui est des registres, il disposait de 16 registres de 8 bits et d'un accumulateur. Niveau mémoire, il était relié à une mémoire ROM, rien de plus. Il n'avait de RAM supplémentaire qu'on pouvait lui adjoindre, il devait se débrouiller avec seulement ses registres. Et cela ne posait pas de problèmes pour son usage. Seul le mode d'adressage indirect à registre est supporté, il n'y a pas de registres d'indices. Ce mode d'adressage permet de lire des données en mémoire ROM, la ROM pouvant contenir des tableaux de valeurs constantes.
: Il est possible de lui adjoindre de la RAM via les ports d'entrée-sortie, ainsi qu'une ALU, mais RAM et ALU sont traités comme des périphériques avec lesquels on communique, ils ne sont pas intégrés au processeur.
Niveau micro-architecture, il incorporait une unité de calcul logique et un circuit comparateur. Le comparateur était un circuit comparateur série des plus basiques, qui était utilisé pour les instructions de branchement et associées. L'unité de calcul logique gérait des incrémentations/décrémentation, des décalages, les opérations logiques et quelques autres. L'unité de calcul logique était bit-slicée, à savoir conçue en assemblant 8 ALU de 1 bit chacune, enchainées en série. Le tout était combiné à des circuits de ''carry skip''.
[[File:Unité de calcul du HP nanonprocessor.png|centre|vignette|upright=2|Unité de calcul du HP nanoprocessor]]
Son unité de décodage d'instruction était très simple, essentiellement basée sur des portes NOR, grâce à un encodage efficace des instructions machine. Le ''program counter'' fait 11 bits, ce qui permet d'adresser une ROM de 2 kibioctets. Le ''program counter'' était relié à un circuit incrémenteur qui gérait les isntructions SKIP (il pouvait incrémenter le ''program counter'' par pas de 1 ou de 2 en cas de SKIP). Le processeur contient aussi deux registres, qui servent en quelque sorte de pile d'adresse de retour. Un premier registre mémorise l'adresse de retour d'une fonction, l'autre mémorise le ''program counter'' lors d'une interruption, pour savoir où brancher à la fin de l'interruption.
[[File:HP nanoprocessor.png|centre|vignette|upright=2.5|HP nanoprocessor]]
Fait intéressant, le concepteur du processeur a gracieusement donné les masques utilisés pour graver le silicium du processeur au site [https://www.cpushack.com/ CPU Shack]. Les masques en question sont disponibles ici :
* [https://www.cpushack.com/2020/08/20/hp-nanoprocessor-mask-set/ HP NanoProcessor Mask Set]
* [https://www.cpushack.com/2020/08/09/the-forgotten-ones-hp-nanoprocessor/ The Forgotten Ones: HP Nanoprocessor]
Les masques ont été analysés par Ken Shirrif dans cet article de blog :
* [https://www.righto.com/2020/09/hp-nanoprocessor-part-ii-reverse.html HP Nanoprocessor part II: Reverse-engineering the circuits from the masks]
==Les processeurs 8/16 bits à architecture Von Neumann==
L'usage d'une architecture Harvard est une solution pour adresser plus de mémoire avec des CPU 8 bits. Mais plusieurs microprocesseurs commerciaux n'utilisaient pas cette solution. À la place, c'était des architectures Von Neumann, mais qui étaient capables de gérer des adresses de 16 bits. Les données faisaient 8 bits, les registres faisaient 8 bits, mais quelques techniques permettaient de gérer des adresses de 16 bits. Nous parlerons de '''processeurs 8/16 bits''' pour les désigner, et nous allons les étudier à part.
Un point important est que la gestion d'adresses de 16 bits permet d'adresser 64 kibioctets, qui peuvent être remplis avec de la RAM et de la ROM. On a donc le meilleur des mondes : 64 kibioctets de mémoire, mais avec des données de 8 bits et les économies de circuit qui vont avec. L'avantage est que le processeur peut maintenant gérer une vraie pile d'appel, pas seulement une pile d'adresse de retour. Il lui suffit pour cela d'intégrer un pointeur de pile codé sur 16 bits.
===Les modes d'adressage par page des CPU Motorola===
Les processeurs Motorola 8 bits étaient des processeurs 8 bits avec un bus d'adresse de 16 bits. C'était des processeurs à accumulateur incorporant deux registres d'indice, un registre d'état, un pointeur de pile, et un ''program counter''. Tous les registres sont reliés au bus d'adresse, sauf le registre d'état et l’accumulateur. Tous les registres font 8 bits, sauf le ''program counter''. La pile est câblée pour être dans un bloc de 256 octets compris entre l'adresse 1 0000 0000 et l'adresse 1 1111 1111, ce qui fait que son adressage se fait avec un seul octet.
[[File:6502-architecture.svg|centre|vignette|upright=1.5|Architecture simplifiée du 6502.</br> X et Y : registres d'indice ;</br> S : le pointeur de pile ;</br> A : accumulateur ;</br>P : registre d'état.</br>]]
Les processeurs Motorola 8 bits utilisaient une méthode simple pour adresser 64 kibioctets de RAM, avec des registres de 8 bits. Pour cela, ils utilisaient une variante de l'adressage base + décalage. Elle améliore l'adressage absolu, qui intègre l'adresse à lire/écrire dans l'instruction elle-même. L'adresse en question est de 8 bits et n'encode que les 8 bits de poids faible de l'adresse, les 8 bits de poids fort sont dans un '''registre de page''' adressé implicitement. L'adresse finale est obtenue en concaténant ce registre avec l'adresse mémoire intégrée dans l’instruction. Le résultat est que la mémoire était découpée en blocs de 256 consécutifs, chacun pouvant servir de fenêtre de 256 octets. Une page est réservée pour la pile, la seconde, comme dit plus haut.
Formellement, ce mode d'adressage a des ressemblances avec la commutation de banques, une technique qu'on verra dans les chapitres sur l'espace d'adressage et la mémoire virtuelle. Mais ce n'en est pas du tout : le registre de page est utilisé uniquement pour les accès mémoire avec le mode d'adressage base + décalage, mais pas pour les autres accès mémoire, qui gèrent des adresses complètes. Notons que l'usage d'un registre de page dédié fait que celui-ci est adressé implicitement.
Il faut noter que la technique a été utilisée sur des processeurs 16 bits, pour contourner la petite taille des instructions. Un exemple est celui du HP 2100, un processeur 16 bits. Il avait un registre de page de 5 bits et encodait 10 bits d'adresse dans ses instructions. Ses instructions d'accès mémoire disposaient d'un bit qui choisit quel mode d'adressage utiliser. S'il était à 0, l'adressage absolu était utilisé, le registre de page n'était pas utilisé. Mais s'il était à 1, le registre de page était utilisé pour calculer l'adresse.
Une évolution de l'adressage précédent est le '''mode page direct'''. Avec lui, le registre de page est étendu et contient une adresse mémoire complète. L'adresse finale n'est pas obtenue par concaténation, mais en additionnant le registre de page avec l'adresse fournie par adressage absolu + décalage. Un exemple est celui des premiers processeurs Motorola, qui géraient des adresses courtes de 8 bits. L'adresse courte de 8 bits correspondait non pas aux 256 premiers octets de la mémoire, mais à une fenêtre de 256 octets déplaçable en mémoire. La position de la fenêtre de 256 octets était spécifiée par le registre de page de 16 bits, qui précisait l'adresse du début de la fenêtre, celle de sa première donnée.
Il s'agit donc formellement d'adressage base + décalage, à un détail près : il n'y a qu'un seul registre de base. Le fait que ce registre de base soit unique fait qu'il est adressé implicitement, on n'a pas à encoder le numéro/noms de registre dans l'instruction. Le registre de base est utilisé uniquement pour l'adressage absolu, pas pour les autres accès mémoire. S'il y a des ressemblances avec la segmentation, une technique de mémoire virtuelle qu'on abordera dans quelques chapitres, ce n'en est pas vu que le registre de base est utilisé seulement pour un mode d'adressage bien précis.
===Le ''pseudo-aliasing'' des registres des processeurs Intel x86===
Voyons maintenant le cas des anciens processeurs 8 bits d'Intel à savoir l'Intel 4004, 4040, 8008 et 8080. Le Z80, un processeur inspiré des CPU Intel 8 bits, est aussi concerné. Avant de poursuivre, parlons des registres de ces processeurs. Les premiers CPU Intel incorporaient 7 registres de 8 bits nommés A, B, C, D, E, F, H, L, SP. Ils correspondent respectivement à : l'accumulateur A ; six registres nommés B, C, D, E, H et L ; le registre d'état F ; le pointeur de pile SP. Le Z80 ajoute deux registres d'indice X et Y. De plus, le Z80 dispose de registres d'interruption, qui sont en quelque sorte des copies des registres A, B, C, D, E, F, H, L. Le tout est illustré dans le tableau ci-dessous.
{|class="wikitable" style="text-align:center;"
|-
!
! Registres des CPU Intel
! Registres supplémentaires du Z80
|-
! Accumulateur
| A
| A'
|-
! Registre d'état
| F
| F'
|-
! Registres généraux
| B, C, D, E, H, L
| B', C', D', E', H', L'
|-
! Pointeur de pile
| colspan="2" | SP (sauf pour le 8008)
|-
! Registres d'indice
|
| X et Y
|}
Le 8008 incorpore une pile d'appel de 7 adresses, dans le processeur lui-même. Il en est de la même avec le 4004 et le 4040, comme on le verra dans la section sur les processeurs 4 bits. Mais le 8080 et le 8085 ont remplacé le tout par un simple pointeur de pile, afin d'avoir une véritable pile d'appel. Autant c'est impossible d'avoir une pile d'appel avec seulement 256 octets de mémoire, autant on peut se le permettre avec 65 536 adresses.
Pour gérer des adresses de 16 bits, ils auraient pu utiliser des registres d'adresse séparés, mais on préféré un système de '''pseudo-''aliasing'' de registres'''. Formellement, c'est un système qui concatène deux registres 8 bits pour obtenir une adresse de 16 bits. L’appariement a lieu lors de certaines opérations bien précises, qui n'ont de sens que pour les adresses : la lecture/écriture en mémoire, et l'incrémentation.
Il y avait cependant des contraintes quant aux paires de registres possibles, toutes les paires de registres n'étaient pas autorisées. Les CPU concernés sont donc des processeurs hybrides accumulateur-registre généraux. L'accumulateur ne peut pas être appairé, seuls les registres généraux le peuvent. Le Z80 autorise plus de paires que les CPU Intel. Voici les paires de registres qui pouvaient servir d'adresse 16 bits :
* Les CPU 8008 d'Intel autorisait une seule paire formée des registres H et L.
* Les autres processeurs, à savoir le 8080, le 8085 et le Z80, autorisaient : les paires BC, DE et HL.
Le 8008 ne gérait que des opérations sur 8 bits. Mais le 8080 et le 8085 ont ajouté des instructions 16 bits qui agissaient sur des paires de registre, que le Z80 a repris. Une paire de registres est considérée comme un registre unique de 16 bits pour certaines opérations arithmétiques, dont l'incrémentation. Voici la liste des instructions concernées :
* INC et DEC pour l'incrémentation et la décrémentation ;
* DAD : additionne le registre HL avec une autre paire (Hl inclus) ;
* LXI : copie une constante immédiate dans une paire de registres ;
* LHLD : lit 16 depuis la mémoire et l'enregistre dans une paire de registres ;
* SHLD : copie 16 bits depuis une paire de registres et l'enregistre en mémoire ;
* PUSH et POP : empile ou dépilent une paire de registre sur la pile ;
* XTHL : échange la paire HL avec les 16 bits au sommet de la pile d'appel ;
* XCHG : échange le contenu de la paire HL et DE.
Pour résumer, le processeur avait des instructions LOAD, STORE, PUSH et POP adaptées pour gérer des paires de registre. De plus, l'instruction XCHG permettait d’échanger le contenu des paires DE et HL. L'instruction a été étendue sur les processeurs 16 bits pour échanger tous les registres. Mais l'implémentation était alors différente. L'incrémentation sur une paire de 16 bit était très utile, car les adresses sont souvent incrémentées quand on parcours un tableau. Ces instructions nous donnent quelques indices sur ce qu'il y a dans le processeur.
Le système de pseudo-aliasing a un impact sur le banc de registre. Le banc de registre regroupe les registres généraux et le pointeur de pile, mais ne contient pas l'accumulateur. Les contraintes sur les paires de registres possibles ne s'expliquent que d'une seule manière : le banc de registre contient des registres de 16 bits, une paire de registres 8 bits est mémorisée dans un registre unique. Il faut donc faire une différence entre les registres architecturaux de 8 bits, et les registres réels de 16 bits.
Le banc de registre a un port de 8 bits pour les données, qui est fabriqué à partir d'un port 16 bits auquel on a rajouté un multiplexeur pour choisir soit l'octet de poids faible, soit l'octet de poids fort. Le bus de données fait 8 bits, ce qui fait que les instructions LOAD, STORE, PUSH et POP pour paires 16 bits sont réalisées en deux fois : on lit/écrit l'octet de poids faible, puis celui de poids fort. Par contre, le bus d'adresse fait bien 16 bits. Cela suggère que le banc de registre dispose d'un port de 16 bits dédié aux adresses, en plus du port de données 8 bits.
[[File:Architecture d'un CPU 8-16 bits avec un banc de registre double port.png|centre|vignette|upright=2|Architecture d'un CPU 8-16 bits avec un banc de registre double port]]
L'incrémentation d'une paire 16 bits ne coute rien à implémenter, ou presque. En effet, le processeur incorpore un incrémenteur 16 bits pour le ''program counter'', qui est relié au bus d'adresse. L'idée est de rentabiliser cet incrémenteur, en lui permettant d'incrémenter des données/adresses de 16 bits obtenues via pseudo-aliasing. De même, il peut être utilisé pour incrémenter le pointeur de pile, voire un compteur de rafraichissement mémoire (pour rappel, le rafraîchissement mémoire demande de balayer la mémoire d'adresse en adresse et été fait par le CPU à l'époque). Pour cela, il suffit de connecter le ''program counter'', le banc de registre, et l'incrémenteur, via un bus dédié.
[[File:Calcul d'adresse par ALU dédiée avec PC séparé.png|centre|vignette|upright=2|Calcul d'adresse par ALU dédiée avec PC séparé]]
Notez qu'on peut encore simplifier le tout en placant le ''program counter'' dans le banc de registre, ce qui ne gênera pas le travail de l'incrémenteur mais simplifiera le câblage au bus d'adresse. Ce n'était pas systématique, certains processeurs mettaient le ''program counter'' dans le banc de registre, d'autres non.
: Inclure le ''program counter'' dans le banc de registre permet parfois de remplir un vide. Par exemple, sur un processeur avec 12 registres, le banc de registre devrait faire idéalement 16 registres, inclure le ''program counter'' dedans fait monter le tout à 13.
[[File:Architecture d'un CPU 8-16 bits.png|centre|vignette|upright=2|Architecture d'un CPU 8-16 bits]]
Les processeurs Intel 8 bits, à savoir le 8008, le 8080 et le 8085 ; mettaient le ''program counter'' dans le banc de registre. Vous avez donc toutes les armes pour comprendre leur micro-architecture. Par exemple, voici la micro-architecture du processeur 8080. Remarquez le banc de registre, qui contient tous les registres sauf l'accumulateur et le registre. Il a deux ports : un pour les adresses et un pour les données. Notez le dé-multiplexeur sur le port de donnée. Pour le reste, il s'agit d'une architecture à accumulateur hybride des plus classiques.
[[File:Intel 8080 arch.svg|centre|vignette|upright=3|Microarchitecture de l'Intel 8080.]]
Le Z80 est un processeur inspiré du design des processeurs Intel 8 bits, mais avec pas mal d'améliorations. Un point particulier de ce processeur est son banc de registre. Il contient tous les registres du processeur, y compris l'accumulateur et le registre d'état ! Les seuls registres en-dehors du banc de registre sont le ''program counter'' et un compteur de rafraichissement mémoire IR.
Un autre point particulier est que les registres dans le banc de registres avaient une copie séparée accessible uniquement pour les interruptions, via fenêtrage de registres. Et l'accumulateur et le registre d'état étant dans le banc de registre, il y avait deux accumulateurs et deux registres d'état. Les registres A, B, C, D, E et F étaient dupliqués, par le pointeur de pile ni les registres d'indice. Les copies des registres étaient nommées A', B', C', D', E' et F'.
Le Z80 supportait des instructions d'échange de registre en plus des CPU Intel 8 bits. L'instruction EX peut échanger soit le contenu des paires D,E et H,F, soit la paire A,F avec la paire A',F'. L'instruction EXX échange les paires BC, DE, HL avec les paires BC', DE', HL'. En faisant cela, le programmeur pouvait utiliser deux fois plus de registres généraux s'il n'utilisait pas les interruptions. L'échange de paires se fait sans copies de registres, mais simplement en modifiant l'adresse envoyée sur le banc de registre. Pour cela, plusieurs bascules mémorisent des bits qui indiquent si les paires ont été échangées ou non. Il y a une bascule pour les paires DE , HL ; une autre pour les paires A,F et paire A',F', une dernière pour l'instruction EXX. En combinant ces bascules avec les noms de registres envoyés par le séquenceur, on peut échanger les paires de registres.
==Le cas particulier des processeurs 4 bits : le 4004 d'Intel==
L'Intel 4004 était le tout premier micro-processeur. Il s'agissait d'un microprocesseur de 4 bits, basé sur une architecture à accumulateur. Il disposait d'un accumulateur et de 16 registres d'indice, tous de 4 bits. Il faisait des calculs sur des données de 4 bits, appelées des nibbles. Cependant, sur ses 46 instructions machines supportées, 41 agissaient sur des opérandes de 8 bits, les 5 restantes sur des opérandes de 16 bits. Simplement, les calculs se faisaient en deux fois, en échangeant des données entre mémoire RAM et accumulateur.
Le 4004 est un circuit intégré avec peu de broches. Il dispose notamment d'un bus de données/adresse, qui est multiplexé, c’est-à-dire qu'il sert alternativement de bus de données et de bus d'adresse selon les besoins. Le bus de commande mémoire fait 5 bits, dont 4 pour les chips de RAM, un pour la ROM. Les adresses sont codées sur 12 bits, les données sur 4 et les instructions sur 8 bits. L'envoi d'une adresse sur le bus se fait en plusieurs fois, de même que la lecture d'une instruction. Il s'agit là d'une adaptation pour outrepasser les limitations d'un processeur 4 bit.
[[File:Intel 4004 processor pinout.png|centre|vignette|upright=2|Broches de l'Intel 4004. Nous verrons à quoi elles servent plus bas.]]
===L'espace d'adressage de l'Intel 4004===
Les adresses du processeur sont sur 12 bits, ce qui fait 4096 adresses différentes. Elles regroupent à la fois la ROM et la mémoire RAM, vu que l'architecture est une sorte de mélange bizarre entre une architecture Von Neumann et Harvard. Le processeur gère bien deux espaces d'adressage séparés, mais la RAM et la ROM sont reliés au même bus. La sortie CM-ROM du processeur indique si l'adresse envoyée correspond à la RAM ou la ROM. Un circuit de décodage d'adresse active ou désactive la RAM selon la valeur de ce bit, l'inverse pour la ROM, en agissant sur leurs bits Chip Select. Seule la RAM ou la ROM répondent alors à l'adresse.
Pour ce qui est de la RAM, le circuit de décodage d'adresse pouvait gérer au maximum 1024 adresses différentes, chacune contenant un nibble. Pour cela, le CPU 4004 était relié à une ou plusieurs RAM externes, des Intel 4002. Chaque Intel 4002 contenait 64 nibbles de données, plus 16 nibbles de statut qu'on ne détaillera pas ici. Les nibbles de statut étaient accessibles en utilisant des instructions d'entrée-sortie, donc pas avec des lectures/écritures mémoire. Les 64 nibbles de données sont découpés en 4 groupes de 16 nibbles. Le CPU pouvait être relié à maximum 16 Intel 4002, ce qui fait 1024 nibbles de données et 256 nibbles de statut. L'ensemble permet de remplir l'espace d'adressage de 1024 adresses.
===Le registre de page et le pseudo-aliasing des registres===
Sélectionner une adresse mémoire utilisait un mélange entre pseudo-aliasing et registre de page. Pour les données, les 1024 adresses étaient découpées en 4 pages de 256 adresses. Pour la ROM, les 4096 adresses étaient découpées en 16 pages de 256 adresses. Localiser une donnée dans une page ne requiert que 8 bits, 2/4 bits supplémentaires permettent de sélectionner la page voulue. Le registre de page était dans le processeur lui-même, et était relié aux sorties du processeur nommées CM-RAM 0, 1, 2 et 3. Les 4 sorties encodaient un nombre qui permet de sélectionner le numéro de page voulu.
Le registre de page fait 5 bits : un pour distinguer RAM et ROM, 4 bits pour sélectionner la page voulue. L'avantage est que la carte mère gère au maximum 16 chips de RAM, ce qui colle parfaitement avec les 4 utilisés pour sélectionner une page. Un chip de RAM correspond à une page, et chacun est activé ou désactivé suivant la page sélectionnée. Pour cela, il suffit d'ajouter un décodeur sur la carte mère, qui prend les 4 bits du registre de page et fournit les signaux Chip Select aux différents chips de RAM.
Reste alors à utiliser les 8 bits d'adresse à l'intérieur d'un chip de RAM. Le 4004 permettait de concaténer deux registres d'indice de 4 bits pour former une adresse de 8 bits. Les instructions d'accès mémoire pouvaient ainsi préciser une paire de registre d'indice pour préciser quelle adresse lire/écrire. Idem pour les branchements indirects : le processeur supportait une instruction de branchement indirect qui précisait l'adresse dans une paire de registres d'indice. Les registres d'indice sont donc assez mal nommés sur cette architecture, vu qu'ils peuvent servir soit de registre d'indice, soit de demi-registre d'adresse. Il s'agit là du système de pseudo-aliasing des registres, mais appliqué aux registres d'indice.
L'Intel 4004 gérait deux instructions pour gérer les adresses mémoires. La première, l'instruction DCL (''Designate Command Line'') configure le registre de page. Elle prend en entrée un numéro de page et le copie dans le registre de page. L'opérande peut provenir d'un registre d'indice ou de l'accumulateur. La seconde, l'instruction SRC (''Send Register Control'') concatène deux registres d'indice pour obtenir une adresse de 8 bits. Un accès mémoire se fait donc en maximum trois instructions : une qui configure le registre de page si ce n'est pas déjà fait, une instruction SRC pour envoyer l'adresse, et une troisième instruction qui dit s'il faut faire une lecture ou une écriture.
===La microarchitecture de l'Intel 4004===
Il incorporait une pile d'adresse de retour intégrée au processeur. La pile d'adresse acceptait exactement 3 adresses maximum. Elle était regroupée avec le ''program counter'' dans un banc de registre, de 4 registres. Le ''program counter'' et le pointeur de pile faisaient chacun 12 bits, soit trois nibble. Ils étaient incrémentés par un incrémenteur dédié.
SI on omet le registre de page et la pile d'adresse, le 4004 est une architecture à accumulateur des plus classiques, avec un bus interne unique, un banc de registre pour les registres d'indices, un accumulateur relié à une unité de calcul. Les registres d'indice étaient dans un banc de registre séparés, car ils faisaient 4 bits chacun, contrairement au pointeur de pile et le ''program counter''. Un détail important est que les bancs de registres du 4004 étaient implémentés avec de la DRAM, et non des registres usuels fabriqués avec des bascules 1 bit.
[[File:Microarchitecture de l'Intel 4004.png|centre|vignette|upright=2.5|Microarchitecture de l'Intel 4004]]
<noinclude>
{{NavChapitre | book=Fonctionnement d'un ordinateur
| prev=Les architectures à pile et mémoire-mémoire
| prevText=Les architectures à pile et mémoire-mémoire
| next=Les processeurs de traitement du signal
| nextText=Les processeurs de traitement du signal
}}
</noinclude>
slnoff3q0vqbhfnjoe0bwt2u0i3uag9
765733
765732
2026-05-01T20:41:13Z
Mewtow
31375
/* Les microcontrôleurs Intel 8051/8031 */
765733
wikitext
text/x-wiki
Nous avons déjà abordé la notion de processeur 8, 16, 32, 64 bits. Elle désigne la taille des registres généraux, ou de l'accumulateur. De nos jours, les processeurs 32 et 64 bits sont la norme, mais les premiers micro-processeurs étaient des processeurs 4 et 8, avant de passer rapidement au 16 bits. La raison est que leur budget en transistor limité faisait qu'on ne pouvait pas utiliser une ALU trop grande : une ALU 8 bit prend deux fois moins de place et de transistors qu'une ALU 16 bits. Cependant, les processeurs 8 bits avaient de sérieuses limitations qui étaient compensées par diverses solutions. Dans ce chapitre, nous allons faire une revue rapide des processeurs 8 bits et de leurs fonctionnalités.
La principale limitation des CPU 8 bits était l'adressage : des registres de 8 bits limitaient l'espace d'adressage à seulement 256 adresses, soit à peine 256 octets ! Intuitivement, on se dit que 256 octets est purement impraticable, on ne peut rien faire d'intéressant avec seulement 256 de RAM + ROM. Et c'est partiellement vrai. L'adage veut que 16 bits est la taille minimale intéressante, la limite à partir de laquelle on a assez de mémoire RAM/ROM pour coder des applications intéressantes. Mais 256 octets de RAM est largement suffisant sur de nombreux systèmes embarqués simples s'en accommodent : des caisses enregistreuses, des systèmes de régulation de feu de circulation, etc.
Pour les applications demandant plus de mémoire RAM, les CPU de l'époque contournaient la limitation de 256 octets de RAM avec de nombreux stratagèmes. Dans ce qui va suivre, nous allons séparer les CPU 8 bits selon qu'ils utilisent une architecture Harvard ou une architecture Von Neumann. La raison est qu'une architecture Harvard permet en soi de contourner partiellement ce problème d'adressage. Les choses sont plus compliquées avec une architecture Von Neumann.
==Les processeurs 8/16 bits à architecture Harvard ==
La première solution est d'utiliser une architecture Harvard. Le processeur 8 bit a alors deux espaces d'adressage : un pour la RAM, un autre pour la ROM. Et les deux utilisent des adresses de taille différente. La ROM est reliée à un bus d'adresse de 16 bits, alors que la RAM est elle connectée à un bus d'adresse de 8 bits. La RAM est donc limitée à 256 octets, alors que la ROM peut monter jusqu'à 64 kibioctets. Mine de rien, faire ainsi est largement suffisant.
Pour encore améliorer la situation, il est possible d'utiliser une architecture Harvard modifiée, qui permet de lire des données depuis la mémoire ROM. Cela réduit encore plus les besoins en mémoire RAM. Les constantes manipulées par le programme sont mémorisées en ROM, lues depuis la ROM, au lieu d'être chargées en RAM. Avec ce genre de stratagèmes, 256 octets de RAM est largement suffisant sur de nombreux systèmes, à condition qu'on ait assez de ROM pour coder un programme digne de ce nom. Par exemple, de nombreux systèmes embarqués simples s'en accommodent : des caisses enregistreuses, des systèmes de régulation de feu de circulation, etc.
Les processeurs 8 bits intègrent parfois les 256 octets de RAM directement dans le processeur, dans le banc de registres ! Beaucoup en implémentaient moins, avec par exemple seulement 64 octets de RAM, ou 32 octets, ou 128 octets. L'avantage est que cela élimine le bus pour les données, ce qui économise beaucoup de broches sur le circuit intégré du CPU. Et pour les applications demandant plus de RAM, on pouvait ajouter un circuit séparé qui permettait d'adresser une RAM plus grande. Et c'est ce qui explique que cette solution est beaucoup utilisée sur les microcontrôleurs peu puissants. Les exemples qui vont suivre devraient vous convaincre.
: Les processeurs de ce type implémentent des optimisations pour adresser plus de 256 octets de RAM. La plus connue est la commutation de banques. Mais nous n'avons pas encore abordé celle-ci, et il faudra attendre le chapitre sur l'espace d'adressage pour cela.
===Les microcontrôleurs PIC===
Les '''microcontrôleurs PIC''' regroupent des microcontrôleurs allant de microcontrôleurs 8 bits aux performances très faible, à des microcontrôleurs 32 bits bien plus puissants. Les microcontrôleurs PIC sont très utilisés dans l'embarqué ou d'informatique industrielle. Ils sont vendu à des volumes assez impressionnants, plusieurs millions par an. Et si vous avez ou êtes en train de faire des études d'électronique, je parie que vous les avez déjà vu en classe, ou que ce ne saurait tarder. Dans ce qui suit, nous allons nous concentrer sur les microcontrôleurs PIC 8 bits, à savoir les PIC 16, 16 et 18. Les PIC 24, qui sont des microcontrôleurs 16 bits, ne seront pas abordés.
Les microcontrôleurs PIC 8 bits sont une architecture Harvard, comme dit plus haut. Il y a aussi des registres pour les entrées et sorties. Les registres d'entrée-sortie permettent de lire ou écrire sur un port d'entrée-sortie ou de lire un ''timer''. En clair, les PIC ont un espace d'adressage séparé pour les entrées-sorties.
La mémoire ROM des PIC va de 1024 instructions à 4096 instructions. En comparaison, la mémoire RAM des microcontrôleurs PIC ne peut pas dépasser 256 adresses, et elle est encore plus petite en pratique sur certains modèles. Pour donner un exemple, le PIC16F84 a une RAM composée de 68 "registres" de 8 bits. Le terme "registres" devrait vous faire tiquer, mais c'est bien le terme utilisé dans la documentation des PIC. Et il faut admettre que la différence entre banc de registre et SRAM intégrée est floue, mais nous expliquerons pourquoi dans quelques paragraphes.
: Les PIC 18 peuvent adresser plus de 256 octets de RAM en utilisant la commutation de banques, une technique qui sera abordée dans plusieurs chapitres.
[[File:DocPIC16F84 3.png|centre|vignette|upright=3|Espaces d'adressage du PIC16F84.]]
Un détail est que la SRAM n'a qu'un seul port qui sert à la fois pour les lectures et écritures. Pour compenser, les PIC sont des architectures à accumulateur, où une opérande est lue depuis la SRAM, l'autre depuis l'accumulateur. Leur implémentation de l'accumulateur ajoute une petite subtilité : le résultat d'une opération arithmétique peut être enregistré ailleurs que dans l'accumulateur. Le résultat peut aussi remplacer la seconde opérande, celle lue en mémoire RAM. Dit autrement, le résultat est enregistré dans l'adresse mémoire source. Les instructions de calcul ont le choix : un bit dans leur encodage précise où enregistrer le résultat.
{|
|-
|[[File:DocPIC16F84 4.png|centre|vignette|upright=2|Microarchitecture simplifiée d'un microcontroleur PIC (ici, un 16F84).]]
|[[File:DocPIC16F84 5.png|centre|vignette|upright=2|Microarchitecture simplifiée d'un microcontroleur PIC (ici, un 16F84), avec les branchements directs.]]
|}
Outre l'accumulateur, les PIC disposent de registres de contrôle, d'un ''program counter'', d'un registre d'état, et d'un pointeur de pile. Un détail très important est que les registres sont mappés en mémoire, à quelques exceptions près ! En clair, on peut y accéder en lisant/écrivant à une adresse mémoire bien précise. Les seules registres qui ne sont pas mappés en mémoire sont l'accumulateur, les registres d'entrée-sortie, et la pile d'adresses de retour intégrée au processeur (voir plus bas). Par exemple, sur les modèles 16F, l'espace d'adressage fait 128 octets, dont 32 sont réservés aux registres du processeur, ce qui fait que seules 96 octets sont adressables comme de la RAM. Mais les 128 octets sont un seul et unique SRAM dans le processeur. Ce qui explique qu'il est difficile de séparer banc de registre et RAM principale sur ce processeur : les deux sont fusionnées ! Cela gaspille quelques adresses mémoire, mais permet une implémentation plus simple, avec un banc de registre unique.
: Les modèles PIC 17 ont rendu l'accumulateur mappé en mémoire RAM !
[[File:DocPIC16F84.png|centre|vignette|upright=2|DocPIC16F84]]
La petite taille de la ROM d'un PIC n'est pas une surprise. Les architectures 8 bits sont conçues pour ne pas utiliser beaucoup de transistors et être très simples. Aussi, utiliser une petite ROM est nécessaire. Mais il faut aussi adapter le jeu d'instruction, pour qu'il ait une bonne densité de code. Par exemple, il faut faire en sorte d'avoir des instructions assez courtes. Si les instructions font 16 bits au lieu de 32, on divise par deux le nombre de transistors nécessaire pour la mémoire ROM. La conséquence est que le jeu d’instruction des PIC est adapté à cette contrainte.
Les microcontrôleurs PIC utilisent un jeu d'instruction propriétaire, dont les instructions sont très petites. Les premières versions du jeu d'instruction utilisaient des instructions codées sur 12 bits, dont 5 pour l'adresse mémoire de la seconde opérande. Pour les branchements, 3 bits étaient utilisés pour l'opcode, 9 pour l'adresse de destination. Par la suite, les instructions ont été étendues à 13 bits sur les PIC1670, puis à 14, 15 et 16 bits. Les adresses ont alors été élargies, ce qui permet d'adresser en peu plus de mémoire RAM.
Il est intéressant de regarder comment les PIC font pour obtenir des instructions aussi courtes. Premièrement, le fait d'utiliser une architecture à accumulateur, couplé à une RAM très petite aident grandement. Les architectures à accumulateur ont besoin de préciser un opcode et une adresse mémoire pour chaque instruction, pas besoin de préciser de noms de registres ni le mode d'adressage. La taille des adresses mémoire est censé être un problème pour la densité de code, mais les adresses d'un processeur 8 bits font 8 bits. On peut alors avoir un jeu d'instruction étoffé, en utilisant des instructions 16 bits, qui concatènent un opcode et une adresse mémoire, d'un octet chacun.
Mais d'autres optimisations permettent d'avoir une bonne densité de code. Les PIC ont des branchements pour les appels et retour de fonction. Les PIC incorporent une pile d'appel de retour, qui fait 2 à 8 adresses suivant les modèles. Elle permet d'économiser quelques registres, car la pile d'appel n'est pas mappé dans l'espace d'adressage, elle n'est pas adressable. On économise ainsi 2 à 8 registres, sur 32-256 registres. De plus, cela simplifie l'encodage des instructions d'appel/retour de fonction, qui n'ont pas à préciser où enregistre l'adresse de retour.
Les PIC n'ont pas d'instructions de branchement conditionnels, ils font avec une SKIP instruction et des branchements inconditionnels. Du moins, c'est le principe, car si vous regardez la liste des instructions ci-dessous, vous verrez qu'il n'y a pas d'instruction SKIP. A la place, les instructions SKIP sont fusionnées avec d'autres instructions. Elles sont notamment fusionnées avec les instructions d'incrémentation et de décrémentation. Les PIC supportent une incrémentation normale, une décrémentation normale, une décrémentation fusionnée avec une instruction SKIP, et une incrémentation fusionnée avec une instruction SKIP. Les deux dernières incrémentent/décrémentent l'accumulateur et SKIP l'instruction suivante si le résultat est zéro. Elles permettent de fortement simplifier l'implémentation des boucles qui s'exécutent tant que leur compteur atteint zéro.
Les PIC disposent aussi d'instructions de manipulation de bit, pour tester/masquer un bit dans une opérande, 4 en tout. Il y a en a 4 en tout : mettre à 0, mettre à 1, tester si bit = 1, tester si bit = 0. Les instructions qui testent un bit prennent leur opérande dans l'accumulateur. Elles font le test du bit et décident s'il faut skipper l'instruction suivante ou non. Il y a aussi deux instructions de rotation à gauche et droite, qui tiennent compte de la retenue mémorisée dans le registre d'état. Par contre, il n'y a pas d'instructions de décalages, qui peuvent être émulées avec une rotation suivie d'un ET bit à bit. Mentionnons aussi une instruction pour inverser deux ''nibbles'' dans un octet.
Les modèles haute performance ajoutent des instructions d'addition avec retenue entrante, idem pour la soustraction. De telles instructions ssont très utiles pour faire des additions/soustractions sur des opérandes de 16 bits. Le processeur a beau être un CPU 8 bits, il peut être utilisé pour faire des calculs 16 bits, la performance est alors amoindrie, mais ce n'est pas un problème pour les applications d'un tel microcontroleur.
Les modèles intiaux, comme les PIC 10 et 12, ne supportaient pas les interruptions, mais c'est chose réglé sur les modèles plus récents. Ils ont même des registres séparés pour les interruptions et les programmes normaux. De plus, ils intégrent nativement un ''watchdog timer''.
{|class="wikitable" style="text-align:center"
|+ Jeu d'instruction des dodèles PCI 16
|-
! colspan="5" | Instructions diverses
|-
| colspan="3" | 00 0000 0000 0000 || NOP || Ne fait rien
|-
| colspan="3" | 00 0000 0000 1000 || RETURN || Instruction de retour pour une fonction
|-
| colspan="3" | 00 0000 0000 1001 || NOP || Instruction de retour pour une interruption
|-
| colspan="3" | 00 0000 0110 0011 || SLEEP || Mise en veille
|-
| colspan="3" | 00 0000 0110 0100 || CLRWDT || RESET le ''watchdog timer'', intégré dans le PIC
|-
! colspan="5" | Instructions de manipulation de bit
|-
| 0100 || Position du bit dans l'opérande || Adresse mémoire || BCF || Met le bit à 1
|-
| 0101 || Position du bit dans l'opérande || Adresse mémoire || BSF || Met le bit à 0
|-
| 0110 || Position du bit dans l'opérande || Adresse mémoire || BTFSC || Teste si le bit adressé est à 1
|-
| 0111 || Position du bit dans l'opérande || Adresse mémoire || BTFSS || Teste si le bit adressé est à 0
|-
! colspan="5" | Branchements
|-
| colspan="2" | 100 || Adresse mémoire || CALL || Appel de fonction
|-
| colspan="2" | 100 || Adresse mémoire || GOTO || Branchement inconditionnel
|-
! colspan="5" | Instructions logiques/arithmétiques avec opérande lue en mémoire RAM
|-
| colspan="5" | ''Le bit '''d''' dans l'opcode indique la destination : accumulateur ou adresse mémoire''.
|-
| colspan="2" | 0000001 || Adresse mémoire || MOVWF || Store (accumulateur vers destination)
|-
| colspan="2" | 000001d || Adresse mémoire || MOVWF || Met à zéro la destination (adresse ou registre)
|-
| colspan="2" | 000001d || Adresse mémoire || SUBWF || Soustraction
|-
| colspan="2" | 000010d|| Adresse mémoire || DECF || Décrémentation
|-
| colspan="2" | 000100d|| Adresse mémoire || IORWF || OU bit à bit
|-
| colspan="2" | 000101d|| Adresse mémoire || ANDWF || ET bit à bit
|-
| colspan="2" | 000110d || Adresse mémoire || XORWF || XOR bit à bit
|-
| colspan="2" | 000111d || Adresse mémoire || ADDWF VWF || Addition
|-
| colspan="2" | 001000d || Adresse mémoire || MOVF || LOAD
|-
| colspan="2" | 001001d || Adresse mémoire || COMF || NOT bit à bit
|-
| colspan="2" | 001010d || Adresse mémoire || INCF || Incrémentation
|-
| colspan="2" | 001011d || Adresse mémoire || DECFSZ || Décrémentation, puis instruction SKIP si résultat = 0
|-
| colspan="2" | 001100d || Adresse mémoire || RRF || Rotation à droite avec retenue entrante
|-
| colspan="2" | 001101d || Adresse mémoire || RLF || Rotation à gauche avec retenue entrante
|-
| colspan="2" | 001110d || Adresse mémoire || SWAPF || Echange deux ''niblle'' dans un octet
|-
| colspan="2" | 001111d || Adresse mémoire || INCFSZ || Incrémentation, puis instruction SKIP si résultat = 0
|-
! colspan="5" | Instructions logiques/arithmétiques avec constante immédiate
|-
| colspan="2" | 1100xx || Constante immédiate (8bits) || MOVLW || Copie constante dans accumulateur
|-
| colspan="2" | 1101xx || Constante immédiate (8bits) || RETLW || MOV fusionné avec un retour de fonction
|-
| colspan="2" | 111000 || Constante immédiate (8bits) || IORLW || OU
|-
| colspan="2" | 111001 || Constante immédiate (8bits) || ANDLW || ET
|-
| colspan="2" | 111010 || Constante immédiate (8bits) || XORLW || XOR
|-
| colspan="2" | 11110x || Constante immédiate (8bits) || SUBLW || Soustraction
|-
| colspan="2" | 11111x || Constante immédiate (8bits) || ADDLW || Addition
|}
Les PIC gèrent l'adressage absolu et immédiat, mais pas plus. L'adressage absolu, celui où l'adresse est intégrée dans l'instruction, est très simple à implémenter. Les adresses prennent moins d'un octet, vu que la taille de la RAM est très petite, les adresses sont très courtes, les intégrer dans des instructions elles-mêmes courtes n'est pas un problème. L'adresse est encodée sur 5 à 7 bits, selon le modèle, ce qui permet d'adresser entre 32 et 128 octets.
Les PIC ne supportent pas l'adressage indirect, mais peuvent l'émuler grâce à un '''registre d'adresse''' dédié. Il s'agit du registre FSR, qui mémorise l'adresse à lire/écrire. Il est possible de copier un pointeur dedans, qui provient soit de l'accumulateur, soit de la mémoire SRAM. Dans les deux cas, la donnée adressée est lue ou écrite dans un registre INDR, est un registre d’interfaçage rendu adressable. Le registre FSR est directement connecté sur le bus d'adresse.
Les modèles de base se débrouillent avec un registre FSR et un registre INDR, mais les modèles plus performants ont deux ou trois copies de chaque registre. Les modèles PIC18 ajoutent aussi des instructions LOAD/STORE qui émulent les modes d'adressage à post- ou pré-incrément/décrément, et le mode d'adressage "Base + Indice + Décalage", encore une fois en utilisant les registres FSR et INDR.
Avec tout ce qu'on vient de dire, vous devriez pouvoir comprendre la microarchitecture d'un PIC, qui est résumée dans ce schéma.
[[File:DocPIC16F84 all.png|centre|vignette|upright=2.5|Microarchitecture du PIC16F84.]]
===Les microcontrôleurs Intel 8051/8031===
[[File:Pinagem8031.jpg|vignette|Broches du 8051.]]
Les microcontrôleurs Intel 8051/8031 sont des microcontrôleurs 8 bits, commercialisés par Intel. Elle contient un processeur 8/16 bits, 4 kibioctets de mémoire ROM, une RAM de 128 octets. Niveau entrées-sorties, il contient un port série, ainsi que 4 ports d'un octet chacun sur lesquels il peut lire ou écrire. Il supporte des interruptions, avec un contrôleur d'interruption intégré. Il contient aussi deux ''timers'' de 16 bits chacun, qui déclenchent des interruptions quand ils tombent à zéro ou à une valeur configurable.
Ils ont de nombreuses ressemblances avec les microcontrôleurs PIC. Le processeur du 8051 est une architecture à accumulateur de 8 bits, ses registres sont mappés en mémoire RAM, il a un registre d'adresse dédié à l'adressage indirect et j'en passe. Mais il y a aussi des différences notables. Par exemple, le 8051 n'a pas de pile d'adresse de retour, contrairement aux processeurs PIC. Il fait autrement, à savoir qu'il gère une pile d'appel placée en mémoire RAM,ce qui est très différent. De même, il utilise deux accumulateurs nommés A et B.
Une autre différence est que les registres sont placés dans un banc de registre à part des 128 octets de SRAM. Il y a une SRAM séparée du banc de registre, contrairement à ce qu'on a sur les microcontrôleurs PIC. Par contre, les registres du processeur sont mappés en mémoire RAM, y compris les deux accumulateurs, le registre d'état, le ''program counter'', et bien d'autres. Mais le fait qu'ils soient séparés de la SRAM permet de les mapper dans l'espace d'adressage sans marcher sur les pieds de la SRAM. Vu que le processeur peut adresser 256 octets, mais n'a que 128 octets de SRAM, les registres sont mappés dans les 128 octets restants. Les entrées-sorties aussi sont mappées dans ces 128 octets restants.
L'ensemble utilise une architecture Harvard, contrairement à ce que pourrait faire croire le schéma ci-dessous.
[[File:Arkitektura mikro kontrollerit Intel 8051.png|centre|vignette|upright=2.5|Microcontrôleur 8051]]
Voyons maintenant la ''memory map'' de ce microcontroleur, pour la SRAM. Un point assez original est que 16 octets de la SRAM sont adressables bit par bit, à savoir que chaque bit a sa propre adresse. En tout, cela permet d'adresser 128 bits (16 adresses * 8 bits par octet adressé). L'intervalle bit-adressable va de l'adresse 32 (inclue) à l'adresse 47 (inclue).
Les 32 premières adresses sont réservés à la mémoire SRAM, c'est 32 octets de RAM utilisable à volonté par le programmeur. Les 16 adresses suivantes sont les 16 adresses bit-adressables mentionnées dans le paragraphe précédent. Les 96 octets suivants sont de la mémoire RAM adressable, affectée par défaut à la pile d'appel mais adressable via adressage direct si besoin. Les 128 octets de poids fort sont réservés aux registres du processeur et aux entrée-sorties mappées en mémoire.
[[File:Memory map du 8051.png|centre|vignette|upright=2|Memory map du 8051]]
Les 128 octets au sommet de l'espace d'adressage sont décrit dans le schéma ci-dessous. On voit que les deux accumulateurs sont mappés dedans, de même que le registre d'état PSW, le registre de configuration des interruptions IE (''Interrupt Enable''), et quelques autres. Les ports d'entrée-sortie sont aussi mappés dedans, que ce soit les 4 ports parallèles ou le port série. Les deux ''timers'' sont aussi mappés dedans, ainsi que leurs registres de configuration.
Une partie des octets sont bit-adressables, et cette partie inclus les registres du processeur et les ports d'entrées-sorties. Pour le dire autrement, chaque bit d'un port d'entrée-sortie a sa propre adresse mémoire, qui permet de le sélectionner. Par contre, les registres pour les ''timers'' ne sont pas dedans, sauf pour le troisième ajoutés dans des extensions du 8051.
[[File:MFrey SFR MCS-51.svg|centre|vignette|upright=2|Memory map des 128 octets de poids fort du 8051]]
Pour ce qui est des instructions, le 8051 supporte les opérations de multiplications et de divisions, contrairement aux microcontrôleurs PIC qui se limitaient à l'addition et la soustraction. Une autre particularité est que le processeur incorpore une '''unité de calcul de 1 bit'''. Elle permet de faire des opérations sur des bits, avec 17 instructions possibles au total. L'ALU de 1 bit est reliée à un accumulateur de 1 bit et 32 registres de 1 bits. Elle peut lire des opérandes de 1 bit en mémoire RAM ou sur les ports d'entrée-sortie, pour les portions qui sont bit-adressables.
Le 8051 peut communiquer avec une mémoire RAM externe, en plus de la SRAM interne. Pour cela, le processeur du 8051 avait un espace d'adressage séparé pour la RAM externe, capable d'adresser 64 kibioctets. Communiquer avec cet espace d'adressage se faisait avec des instructions d'accès mémoire séparées des autres, pas les LOAD/STORE normaux. Par exemple, l'instruction MOVX lisaient une donnée dans cet espace d'adressage, et la copiait dans l'accumulateur ou la SRAM. Pour envoyer l'adresse à lire/écrire à cette RAM externe, le processeur incorporait un registre d'adresse dédié. Il s'agit du '''registre DPTR''', qui contient une adresse de 16 bits. Le processeur devait copier l'adresse à lire/écrire dedans, puis lancer l'instruction MOVX.
===Le Fairchild F8 et la console de jeu Fairchild Channel F===
Un autre exemple est la Fairchild F8 de la défunte entreprise Fairchild Semiconductor. Il incorpore un processeur 8 bits, c'est à dire que le processeur fait des calculs sur des entiers de 8 bits maximum, une mémoire RAM de 64 octets, ainsi qu'une mémoire ROM de 1 kibioctet. Les 64 octets de RAM sont certes très peu, mais c'est suffisant pour certaines applications simples, comme les caisses automatiques de l'époque, ou des applications embarquées. Et de toute façon, il est possible d'ajouter de la mémoire RAM supplémentaire si les 64 octets de RAM intégrée ne suffisent pas. Le système était donc modulaire, adaptable selon les besoins, peu cher pour son implémentation minimale sans RAM en plus.
Vu qu'il s'agit d'un des tout premiers ordinateurs, il est sorti à une époque où la technologie était rudimentaire. À cette époque, le processeur était composé de pièces détachées qu'il fallait souder ensemble pour obtenir un processeur fonctionnel. Ce n'est que plus tard qu'est apparu le micro-processeur, qui regroupe un processeur complet dans un seul circuit intégré. Le résultat est que le processeur du Fairchild F8 est coupé en deux, l'unité de calcul et l'unité de contrôle sont placés dans des pièces détachées séparés.
Le microcontrôleur est composé de trois à quatre pièces détachées, certaines étant optionnelles. La première est le '''3850 CPU''', qui regroupe l'unité de calcul et la mémoire RAM intégrée. La seconde est le PSU (''3851 Program Storage Unit''), qui regroupe la mémoire ROM et l'unité de contrôle, ''program counter'' inclut. S'il y a besoin d'utiliser plus de RAM, il faut ajouter un circuit d’interface mémoire, qui est au choix le ''3852 Dynamic Memory Interface'' (DMI) ou le ''3853 Static Memory Interface'', le premier étant connecté à une mémoire de type DRAM, l'autre à une SRAM (nous verrons ce que sont les DRAM et les SRAM dans le prochain chapitre).
[[File:Fairchild F8.png|centre|vignette|upright=2|Fairchild F8]]
Le système minimal est composé d'un PSU et d'un 3850, sans les circuits d'interface mémoire. Le tout donne un système avec un processeur 8 bit, 64 octets de RAM et 1 kibioctet de ROM, les deux mémoires étant intégrées dans le "processeur". Le processeur gérait 4 entrées-sorties, chacune étant reliée avec un bus de 8 bit au processeur. Au passage, en 1977, Mostek a créé un microcontrôleur qui regroupe un PSU et un 3850 : le Mostek 3870. Le système minimal n'avait pas de bus d'adresse, vu que la RAM était intégrée au processeur. C'est les 3852 et 3853 qui ajoutaient un bus d'adresse. Ils ajoutent un bus d'adresse de 16 bits, ce qui permet d'adresser 64 kibioctets de RAM.
[[File:Fairchild-Channel-F.jpg|vignette|un Fairchild Channel F]]
Le Fairchild F8 a été utilisé dans la Fairchild Channel F, une des toute première console de seconde génération, à savoir des consoles qui utilisaient des cartouches de jeu. Avant les consoles de seconde génération, les consoles étaient non-programmables. Elles étaient conçues pour faire tourner un jeu précis, aucun autre, le jeu étant implémenté dans leurs circuits.
La Fairchild Channel F est composé du système minimal, auquel on a ajouté une carte son rudimentaire et 2 kibioctets de mémoire vidéo. La mémoire vidéo sert uniquement pour afficher des images à l'écran : on écrit l'image à afficher dedans, un circuit vidéo se charge de l'afficher à l'écran automatiquement. Le processeur ne fait qu'écrire dans cette RAM vidéo, il ne peut pas en lire le contenu. De la RAM supplémentaire peut cependant être ajoutée dans les cartouches de jeu.
===Le HP Nanoprocessor : un processeur sans ALU===
Un dernier exemple est celui du processeur HP Nanoprocessor, de l'entreprise HP. Il a été commercialisé en 1974, en même temps que les premiers micro-processeurs d'Intel. Tous les processeurs de l'époque étaient des processeurs 8 bits et le HP Nanoprocessor ne faisait pas exception. Ce n'était pas un processeur haute performance, il était destiné à des applications d'informatique industrielle ou embarquée. D'ailleurs, il utilisait des transistors de type metal-gate, peu performants, là où ses contemporains utilisait des transistors en silicium, plus performants.
Mais une caractéristique qui rend cela encore plus claire est qu'il n'y a pas d'ALU ! En effet, ce processeur est incapable de faire des additions, des soustractions ou autres opérations simples ! Il est cependant capable d'effectuer des incrémentations et décrémentations, des décalages, des opérations logiques comme des ET/OU/NON/XOR et bien d'autres. Il supporte en tout 48 instructions, avec un support limité des modes d'adressage indirects. Les instructions de branchement étaient des instructions SKIP, il n'y avait pas d'instructions de branchement généralistes.
Pour ce qui est des registres, il disposait de 16 registres de 8 bits et d'un accumulateur. Niveau mémoire, il était relié à une mémoire ROM, rien de plus. Il n'avait de RAM supplémentaire qu'on pouvait lui adjoindre, il devait se débrouiller avec seulement ses registres. Et cela ne posait pas de problèmes pour son usage. Seul le mode d'adressage indirect à registre est supporté, il n'y a pas de registres d'indices. Ce mode d'adressage permet de lire des données en mémoire ROM, la ROM pouvant contenir des tableaux de valeurs constantes.
: Il est possible de lui adjoindre de la RAM via les ports d'entrée-sortie, ainsi qu'une ALU, mais RAM et ALU sont traités comme des périphériques avec lesquels on communique, ils ne sont pas intégrés au processeur.
Niveau micro-architecture, il incorporait une unité de calcul logique et un circuit comparateur. Le comparateur était un circuit comparateur série des plus basiques, qui était utilisé pour les instructions de branchement et associées. L'unité de calcul logique gérait des incrémentations/décrémentation, des décalages, les opérations logiques et quelques autres. L'unité de calcul logique était bit-slicée, à savoir conçue en assemblant 8 ALU de 1 bit chacune, enchainées en série. Le tout était combiné à des circuits de ''carry skip''.
[[File:Unité de calcul du HP nanonprocessor.png|centre|vignette|upright=2|Unité de calcul du HP nanoprocessor]]
Son unité de décodage d'instruction était très simple, essentiellement basée sur des portes NOR, grâce à un encodage efficace des instructions machine. Le ''program counter'' fait 11 bits, ce qui permet d'adresser une ROM de 2 kibioctets. Le ''program counter'' était relié à un circuit incrémenteur qui gérait les isntructions SKIP (il pouvait incrémenter le ''program counter'' par pas de 1 ou de 2 en cas de SKIP). Le processeur contient aussi deux registres, qui servent en quelque sorte de pile d'adresse de retour. Un premier registre mémorise l'adresse de retour d'une fonction, l'autre mémorise le ''program counter'' lors d'une interruption, pour savoir où brancher à la fin de l'interruption.
[[File:HP nanoprocessor.png|centre|vignette|upright=2.5|HP nanoprocessor]]
Fait intéressant, le concepteur du processeur a gracieusement donné les masques utilisés pour graver le silicium du processeur au site [https://www.cpushack.com/ CPU Shack]. Les masques en question sont disponibles ici :
* [https://www.cpushack.com/2020/08/20/hp-nanoprocessor-mask-set/ HP NanoProcessor Mask Set]
* [https://www.cpushack.com/2020/08/09/the-forgotten-ones-hp-nanoprocessor/ The Forgotten Ones: HP Nanoprocessor]
Les masques ont été analysés par Ken Shirrif dans cet article de blog :
* [https://www.righto.com/2020/09/hp-nanoprocessor-part-ii-reverse.html HP Nanoprocessor part II: Reverse-engineering the circuits from the masks]
==Les processeurs 8/16 bits à architecture Von Neumann==
L'usage d'une architecture Harvard est une solution pour adresser plus de mémoire avec des CPU 8 bits. Mais plusieurs microprocesseurs commerciaux n'utilisaient pas cette solution. À la place, c'était des architectures Von Neumann, mais qui étaient capables de gérer des adresses de 16 bits. Les données faisaient 8 bits, les registres faisaient 8 bits, mais quelques techniques permettaient de gérer des adresses de 16 bits. Nous parlerons de '''processeurs 8/16 bits''' pour les désigner, et nous allons les étudier à part.
Un point important est que la gestion d'adresses de 16 bits permet d'adresser 64 kibioctets, qui peuvent être remplis avec de la RAM et de la ROM. On a donc le meilleur des mondes : 64 kibioctets de mémoire, mais avec des données de 8 bits et les économies de circuit qui vont avec. L'avantage est que le processeur peut maintenant gérer une vraie pile d'appel, pas seulement une pile d'adresse de retour. Il lui suffit pour cela d'intégrer un pointeur de pile codé sur 16 bits.
===Les modes d'adressage par page des CPU Motorola===
Les processeurs Motorola 8 bits étaient des processeurs 8 bits avec un bus d'adresse de 16 bits. C'était des processeurs à accumulateur incorporant deux registres d'indice, un registre d'état, un pointeur de pile, et un ''program counter''. Tous les registres sont reliés au bus d'adresse, sauf le registre d'état et l’accumulateur. Tous les registres font 8 bits, sauf le ''program counter''. La pile est câblée pour être dans un bloc de 256 octets compris entre l'adresse 1 0000 0000 et l'adresse 1 1111 1111, ce qui fait que son adressage se fait avec un seul octet.
[[File:6502-architecture.svg|centre|vignette|upright=1.5|Architecture simplifiée du 6502.</br> X et Y : registres d'indice ;</br> S : le pointeur de pile ;</br> A : accumulateur ;</br>P : registre d'état.</br>]]
Les processeurs Motorola 8 bits utilisaient une méthode simple pour adresser 64 kibioctets de RAM, avec des registres de 8 bits. Pour cela, ils utilisaient une variante de l'adressage base + décalage. Elle améliore l'adressage absolu, qui intègre l'adresse à lire/écrire dans l'instruction elle-même. L'adresse en question est de 8 bits et n'encode que les 8 bits de poids faible de l'adresse, les 8 bits de poids fort sont dans un '''registre de page''' adressé implicitement. L'adresse finale est obtenue en concaténant ce registre avec l'adresse mémoire intégrée dans l’instruction. Le résultat est que la mémoire était découpée en blocs de 256 consécutifs, chacun pouvant servir de fenêtre de 256 octets. Une page est réservée pour la pile, la seconde, comme dit plus haut.
Formellement, ce mode d'adressage a des ressemblances avec la commutation de banques, une technique qu'on verra dans les chapitres sur l'espace d'adressage et la mémoire virtuelle. Mais ce n'en est pas du tout : le registre de page est utilisé uniquement pour les accès mémoire avec le mode d'adressage base + décalage, mais pas pour les autres accès mémoire, qui gèrent des adresses complètes. Notons que l'usage d'un registre de page dédié fait que celui-ci est adressé implicitement.
Il faut noter que la technique a été utilisée sur des processeurs 16 bits, pour contourner la petite taille des instructions. Un exemple est celui du HP 2100, un processeur 16 bits. Il avait un registre de page de 5 bits et encodait 10 bits d'adresse dans ses instructions. Ses instructions d'accès mémoire disposaient d'un bit qui choisit quel mode d'adressage utiliser. S'il était à 0, l'adressage absolu était utilisé, le registre de page n'était pas utilisé. Mais s'il était à 1, le registre de page était utilisé pour calculer l'adresse.
Une évolution de l'adressage précédent est le '''mode page direct'''. Avec lui, le registre de page est étendu et contient une adresse mémoire complète. L'adresse finale n'est pas obtenue par concaténation, mais en additionnant le registre de page avec l'adresse fournie par adressage absolu + décalage. Un exemple est celui des premiers processeurs Motorola, qui géraient des adresses courtes de 8 bits. L'adresse courte de 8 bits correspondait non pas aux 256 premiers octets de la mémoire, mais à une fenêtre de 256 octets déplaçable en mémoire. La position de la fenêtre de 256 octets était spécifiée par le registre de page de 16 bits, qui précisait l'adresse du début de la fenêtre, celle de sa première donnée.
Il s'agit donc formellement d'adressage base + décalage, à un détail près : il n'y a qu'un seul registre de base. Le fait que ce registre de base soit unique fait qu'il est adressé implicitement, on n'a pas à encoder le numéro/noms de registre dans l'instruction. Le registre de base est utilisé uniquement pour l'adressage absolu, pas pour les autres accès mémoire. S'il y a des ressemblances avec la segmentation, une technique de mémoire virtuelle qu'on abordera dans quelques chapitres, ce n'en est pas vu que le registre de base est utilisé seulement pour un mode d'adressage bien précis.
===Le ''pseudo-aliasing'' des registres des processeurs Intel x86===
Voyons maintenant le cas des anciens processeurs 8 bits d'Intel à savoir l'Intel 4004, 4040, 8008 et 8080. Le Z80, un processeur inspiré des CPU Intel 8 bits, est aussi concerné. Avant de poursuivre, parlons des registres de ces processeurs. Les premiers CPU Intel incorporaient 7 registres de 8 bits nommés A, B, C, D, E, F, H, L, SP. Ils correspondent respectivement à : l'accumulateur A ; six registres nommés B, C, D, E, H et L ; le registre d'état F ; le pointeur de pile SP. Le Z80 ajoute deux registres d'indice X et Y. De plus, le Z80 dispose de registres d'interruption, qui sont en quelque sorte des copies des registres A, B, C, D, E, F, H, L. Le tout est illustré dans le tableau ci-dessous.
{|class="wikitable" style="text-align:center;"
|-
!
! Registres des CPU Intel
! Registres supplémentaires du Z80
|-
! Accumulateur
| A
| A'
|-
! Registre d'état
| F
| F'
|-
! Registres généraux
| B, C, D, E, H, L
| B', C', D', E', H', L'
|-
! Pointeur de pile
| colspan="2" | SP (sauf pour le 8008)
|-
! Registres d'indice
|
| X et Y
|}
Le 8008 incorpore une pile d'appel de 7 adresses, dans le processeur lui-même. Il en est de la même avec le 4004 et le 4040, comme on le verra dans la section sur les processeurs 4 bits. Mais le 8080 et le 8085 ont remplacé le tout par un simple pointeur de pile, afin d'avoir une véritable pile d'appel. Autant c'est impossible d'avoir une pile d'appel avec seulement 256 octets de mémoire, autant on peut se le permettre avec 65 536 adresses.
Pour gérer des adresses de 16 bits, ils auraient pu utiliser des registres d'adresse séparés, mais on préféré un système de '''pseudo-''aliasing'' de registres'''. Formellement, c'est un système qui concatène deux registres 8 bits pour obtenir une adresse de 16 bits. L’appariement a lieu lors de certaines opérations bien précises, qui n'ont de sens que pour les adresses : la lecture/écriture en mémoire, et l'incrémentation.
Il y avait cependant des contraintes quant aux paires de registres possibles, toutes les paires de registres n'étaient pas autorisées. Les CPU concernés sont donc des processeurs hybrides accumulateur-registre généraux. L'accumulateur ne peut pas être appairé, seuls les registres généraux le peuvent. Le Z80 autorise plus de paires que les CPU Intel. Voici les paires de registres qui pouvaient servir d'adresse 16 bits :
* Les CPU 8008 d'Intel autorisait une seule paire formée des registres H et L.
* Les autres processeurs, à savoir le 8080, le 8085 et le Z80, autorisaient : les paires BC, DE et HL.
Le 8008 ne gérait que des opérations sur 8 bits. Mais le 8080 et le 8085 ont ajouté des instructions 16 bits qui agissaient sur des paires de registre, que le Z80 a repris. Une paire de registres est considérée comme un registre unique de 16 bits pour certaines opérations arithmétiques, dont l'incrémentation. Voici la liste des instructions concernées :
* INC et DEC pour l'incrémentation et la décrémentation ;
* DAD : additionne le registre HL avec une autre paire (Hl inclus) ;
* LXI : copie une constante immédiate dans une paire de registres ;
* LHLD : lit 16 depuis la mémoire et l'enregistre dans une paire de registres ;
* SHLD : copie 16 bits depuis une paire de registres et l'enregistre en mémoire ;
* PUSH et POP : empile ou dépilent une paire de registre sur la pile ;
* XTHL : échange la paire HL avec les 16 bits au sommet de la pile d'appel ;
* XCHG : échange le contenu de la paire HL et DE.
Pour résumer, le processeur avait des instructions LOAD, STORE, PUSH et POP adaptées pour gérer des paires de registre. De plus, l'instruction XCHG permettait d’échanger le contenu des paires DE et HL. L'instruction a été étendue sur les processeurs 16 bits pour échanger tous les registres. Mais l'implémentation était alors différente. L'incrémentation sur une paire de 16 bit était très utile, car les adresses sont souvent incrémentées quand on parcours un tableau. Ces instructions nous donnent quelques indices sur ce qu'il y a dans le processeur.
Le système de pseudo-aliasing a un impact sur le banc de registre. Le banc de registre regroupe les registres généraux et le pointeur de pile, mais ne contient pas l'accumulateur. Les contraintes sur les paires de registres possibles ne s'expliquent que d'une seule manière : le banc de registre contient des registres de 16 bits, une paire de registres 8 bits est mémorisée dans un registre unique. Il faut donc faire une différence entre les registres architecturaux de 8 bits, et les registres réels de 16 bits.
Le banc de registre a un port de 8 bits pour les données, qui est fabriqué à partir d'un port 16 bits auquel on a rajouté un multiplexeur pour choisir soit l'octet de poids faible, soit l'octet de poids fort. Le bus de données fait 8 bits, ce qui fait que les instructions LOAD, STORE, PUSH et POP pour paires 16 bits sont réalisées en deux fois : on lit/écrit l'octet de poids faible, puis celui de poids fort. Par contre, le bus d'adresse fait bien 16 bits. Cela suggère que le banc de registre dispose d'un port de 16 bits dédié aux adresses, en plus du port de données 8 bits.
[[File:Architecture d'un CPU 8-16 bits avec un banc de registre double port.png|centre|vignette|upright=2|Architecture d'un CPU 8-16 bits avec un banc de registre double port]]
L'incrémentation d'une paire 16 bits ne coute rien à implémenter, ou presque. En effet, le processeur incorpore un incrémenteur 16 bits pour le ''program counter'', qui est relié au bus d'adresse. L'idée est de rentabiliser cet incrémenteur, en lui permettant d'incrémenter des données/adresses de 16 bits obtenues via pseudo-aliasing. De même, il peut être utilisé pour incrémenter le pointeur de pile, voire un compteur de rafraichissement mémoire (pour rappel, le rafraîchissement mémoire demande de balayer la mémoire d'adresse en adresse et été fait par le CPU à l'époque). Pour cela, il suffit de connecter le ''program counter'', le banc de registre, et l'incrémenteur, via un bus dédié.
[[File:Calcul d'adresse par ALU dédiée avec PC séparé.png|centre|vignette|upright=2|Calcul d'adresse par ALU dédiée avec PC séparé]]
Notez qu'on peut encore simplifier le tout en placant le ''program counter'' dans le banc de registre, ce qui ne gênera pas le travail de l'incrémenteur mais simplifiera le câblage au bus d'adresse. Ce n'était pas systématique, certains processeurs mettaient le ''program counter'' dans le banc de registre, d'autres non.
: Inclure le ''program counter'' dans le banc de registre permet parfois de remplir un vide. Par exemple, sur un processeur avec 12 registres, le banc de registre devrait faire idéalement 16 registres, inclure le ''program counter'' dedans fait monter le tout à 13.
[[File:Architecture d'un CPU 8-16 bits.png|centre|vignette|upright=2|Architecture d'un CPU 8-16 bits]]
Les processeurs Intel 8 bits, à savoir le 8008, le 8080 et le 8085 ; mettaient le ''program counter'' dans le banc de registre. Vous avez donc toutes les armes pour comprendre leur micro-architecture. Par exemple, voici la micro-architecture du processeur 8080. Remarquez le banc de registre, qui contient tous les registres sauf l'accumulateur et le registre. Il a deux ports : un pour les adresses et un pour les données. Notez le dé-multiplexeur sur le port de donnée. Pour le reste, il s'agit d'une architecture à accumulateur hybride des plus classiques.
[[File:Intel 8080 arch.svg|centre|vignette|upright=3|Microarchitecture de l'Intel 8080.]]
Le Z80 est un processeur inspiré du design des processeurs Intel 8 bits, mais avec pas mal d'améliorations. Un point particulier de ce processeur est son banc de registre. Il contient tous les registres du processeur, y compris l'accumulateur et le registre d'état ! Les seuls registres en-dehors du banc de registre sont le ''program counter'' et un compteur de rafraichissement mémoire IR.
Un autre point particulier est que les registres dans le banc de registres avaient une copie séparée accessible uniquement pour les interruptions, via fenêtrage de registres. Et l'accumulateur et le registre d'état étant dans le banc de registre, il y avait deux accumulateurs et deux registres d'état. Les registres A, B, C, D, E et F étaient dupliqués, par le pointeur de pile ni les registres d'indice. Les copies des registres étaient nommées A', B', C', D', E' et F'.
Le Z80 supportait des instructions d'échange de registre en plus des CPU Intel 8 bits. L'instruction EX peut échanger soit le contenu des paires D,E et H,F, soit la paire A,F avec la paire A',F'. L'instruction EXX échange les paires BC, DE, HL avec les paires BC', DE', HL'. En faisant cela, le programmeur pouvait utiliser deux fois plus de registres généraux s'il n'utilisait pas les interruptions. L'échange de paires se fait sans copies de registres, mais simplement en modifiant l'adresse envoyée sur le banc de registre. Pour cela, plusieurs bascules mémorisent des bits qui indiquent si les paires ont été échangées ou non. Il y a une bascule pour les paires DE , HL ; une autre pour les paires A,F et paire A',F', une dernière pour l'instruction EXX. En combinant ces bascules avec les noms de registres envoyés par le séquenceur, on peut échanger les paires de registres.
==Le cas particulier des processeurs 4 bits : le 4004 d'Intel==
L'Intel 4004 était le tout premier micro-processeur. Il s'agissait d'un microprocesseur de 4 bits, basé sur une architecture à accumulateur. Il disposait d'un accumulateur et de 16 registres d'indice, tous de 4 bits. Il faisait des calculs sur des données de 4 bits, appelées des nibbles. Cependant, sur ses 46 instructions machines supportées, 41 agissaient sur des opérandes de 8 bits, les 5 restantes sur des opérandes de 16 bits. Simplement, les calculs se faisaient en deux fois, en échangeant des données entre mémoire RAM et accumulateur.
Le 4004 est un circuit intégré avec peu de broches. Il dispose notamment d'un bus de données/adresse, qui est multiplexé, c’est-à-dire qu'il sert alternativement de bus de données et de bus d'adresse selon les besoins. Le bus de commande mémoire fait 5 bits, dont 4 pour les chips de RAM, un pour la ROM. Les adresses sont codées sur 12 bits, les données sur 4 et les instructions sur 8 bits. L'envoi d'une adresse sur le bus se fait en plusieurs fois, de même que la lecture d'une instruction. Il s'agit là d'une adaptation pour outrepasser les limitations d'un processeur 4 bit.
[[File:Intel 4004 processor pinout.png|centre|vignette|upright=2|Broches de l'Intel 4004. Nous verrons à quoi elles servent plus bas.]]
===L'espace d'adressage de l'Intel 4004===
Les adresses du processeur sont sur 12 bits, ce qui fait 4096 adresses différentes. Elles regroupent à la fois la ROM et la mémoire RAM, vu que l'architecture est une sorte de mélange bizarre entre une architecture Von Neumann et Harvard. Le processeur gère bien deux espaces d'adressage séparés, mais la RAM et la ROM sont reliés au même bus. La sortie CM-ROM du processeur indique si l'adresse envoyée correspond à la RAM ou la ROM. Un circuit de décodage d'adresse active ou désactive la RAM selon la valeur de ce bit, l'inverse pour la ROM, en agissant sur leurs bits Chip Select. Seule la RAM ou la ROM répondent alors à l'adresse.
Pour ce qui est de la RAM, le circuit de décodage d'adresse pouvait gérer au maximum 1024 adresses différentes, chacune contenant un nibble. Pour cela, le CPU 4004 était relié à une ou plusieurs RAM externes, des Intel 4002. Chaque Intel 4002 contenait 64 nibbles de données, plus 16 nibbles de statut qu'on ne détaillera pas ici. Les nibbles de statut étaient accessibles en utilisant des instructions d'entrée-sortie, donc pas avec des lectures/écritures mémoire. Les 64 nibbles de données sont découpés en 4 groupes de 16 nibbles. Le CPU pouvait être relié à maximum 16 Intel 4002, ce qui fait 1024 nibbles de données et 256 nibbles de statut. L'ensemble permet de remplir l'espace d'adressage de 1024 adresses.
===Le registre de page et le pseudo-aliasing des registres===
Sélectionner une adresse mémoire utilisait un mélange entre pseudo-aliasing et registre de page. Pour les données, les 1024 adresses étaient découpées en 4 pages de 256 adresses. Pour la ROM, les 4096 adresses étaient découpées en 16 pages de 256 adresses. Localiser une donnée dans une page ne requiert que 8 bits, 2/4 bits supplémentaires permettent de sélectionner la page voulue. Le registre de page était dans le processeur lui-même, et était relié aux sorties du processeur nommées CM-RAM 0, 1, 2 et 3. Les 4 sorties encodaient un nombre qui permet de sélectionner le numéro de page voulu.
Le registre de page fait 5 bits : un pour distinguer RAM et ROM, 4 bits pour sélectionner la page voulue. L'avantage est que la carte mère gère au maximum 16 chips de RAM, ce qui colle parfaitement avec les 4 utilisés pour sélectionner une page. Un chip de RAM correspond à une page, et chacun est activé ou désactivé suivant la page sélectionnée. Pour cela, il suffit d'ajouter un décodeur sur la carte mère, qui prend les 4 bits du registre de page et fournit les signaux Chip Select aux différents chips de RAM.
Reste alors à utiliser les 8 bits d'adresse à l'intérieur d'un chip de RAM. Le 4004 permettait de concaténer deux registres d'indice de 4 bits pour former une adresse de 8 bits. Les instructions d'accès mémoire pouvaient ainsi préciser une paire de registre d'indice pour préciser quelle adresse lire/écrire. Idem pour les branchements indirects : le processeur supportait une instruction de branchement indirect qui précisait l'adresse dans une paire de registres d'indice. Les registres d'indice sont donc assez mal nommés sur cette architecture, vu qu'ils peuvent servir soit de registre d'indice, soit de demi-registre d'adresse. Il s'agit là du système de pseudo-aliasing des registres, mais appliqué aux registres d'indice.
L'Intel 4004 gérait deux instructions pour gérer les adresses mémoires. La première, l'instruction DCL (''Designate Command Line'') configure le registre de page. Elle prend en entrée un numéro de page et le copie dans le registre de page. L'opérande peut provenir d'un registre d'indice ou de l'accumulateur. La seconde, l'instruction SRC (''Send Register Control'') concatène deux registres d'indice pour obtenir une adresse de 8 bits. Un accès mémoire se fait donc en maximum trois instructions : une qui configure le registre de page si ce n'est pas déjà fait, une instruction SRC pour envoyer l'adresse, et une troisième instruction qui dit s'il faut faire une lecture ou une écriture.
===La microarchitecture de l'Intel 4004===
Il incorporait une pile d'adresse de retour intégrée au processeur. La pile d'adresse acceptait exactement 3 adresses maximum. Elle était regroupée avec le ''program counter'' dans un banc de registre, de 4 registres. Le ''program counter'' et le pointeur de pile faisaient chacun 12 bits, soit trois nibble. Ils étaient incrémentés par un incrémenteur dédié.
SI on omet le registre de page et la pile d'adresse, le 4004 est une architecture à accumulateur des plus classiques, avec un bus interne unique, un banc de registre pour les registres d'indices, un accumulateur relié à une unité de calcul. Les registres d'indice étaient dans un banc de registre séparés, car ils faisaient 4 bits chacun, contrairement au pointeur de pile et le ''program counter''. Un détail important est que les bancs de registres du 4004 étaient implémentés avec de la DRAM, et non des registres usuels fabriqués avec des bascules 1 bit.
[[File:Microarchitecture de l'Intel 4004.png|centre|vignette|upright=2.5|Microarchitecture de l'Intel 4004]]
<noinclude>
{{NavChapitre | book=Fonctionnement d'un ordinateur
| prev=Les architectures à pile et mémoire-mémoire
| prevText=Les architectures à pile et mémoire-mémoire
| next=Les processeurs de traitement du signal
| nextText=Les processeurs de traitement du signal
}}
</noinclude>
fvodcbcv4lhcx8c5rmacm0v9wht9qr9
765734
765733
2026-05-01T20:42:35Z
Mewtow
31375
/* Les microcontrôleurs Intel 8051/8031 */
765734
wikitext
text/x-wiki
Nous avons déjà abordé la notion de processeur 8, 16, 32, 64 bits. Elle désigne la taille des registres généraux, ou de l'accumulateur. De nos jours, les processeurs 32 et 64 bits sont la norme, mais les premiers micro-processeurs étaient des processeurs 4 et 8, avant de passer rapidement au 16 bits. La raison est que leur budget en transistor limité faisait qu'on ne pouvait pas utiliser une ALU trop grande : une ALU 8 bit prend deux fois moins de place et de transistors qu'une ALU 16 bits. Cependant, les processeurs 8 bits avaient de sérieuses limitations qui étaient compensées par diverses solutions. Dans ce chapitre, nous allons faire une revue rapide des processeurs 8 bits et de leurs fonctionnalités.
La principale limitation des CPU 8 bits était l'adressage : des registres de 8 bits limitaient l'espace d'adressage à seulement 256 adresses, soit à peine 256 octets ! Intuitivement, on se dit que 256 octets est purement impraticable, on ne peut rien faire d'intéressant avec seulement 256 de RAM + ROM. Et c'est partiellement vrai. L'adage veut que 16 bits est la taille minimale intéressante, la limite à partir de laquelle on a assez de mémoire RAM/ROM pour coder des applications intéressantes. Mais 256 octets de RAM est largement suffisant sur de nombreux systèmes embarqués simples s'en accommodent : des caisses enregistreuses, des systèmes de régulation de feu de circulation, etc.
Pour les applications demandant plus de mémoire RAM, les CPU de l'époque contournaient la limitation de 256 octets de RAM avec de nombreux stratagèmes. Dans ce qui va suivre, nous allons séparer les CPU 8 bits selon qu'ils utilisent une architecture Harvard ou une architecture Von Neumann. La raison est qu'une architecture Harvard permet en soi de contourner partiellement ce problème d'adressage. Les choses sont plus compliquées avec une architecture Von Neumann.
==Les processeurs 8/16 bits à architecture Harvard ==
La première solution est d'utiliser une architecture Harvard. Le processeur 8 bit a alors deux espaces d'adressage : un pour la RAM, un autre pour la ROM. Et les deux utilisent des adresses de taille différente. La ROM est reliée à un bus d'adresse de 16 bits, alors que la RAM est elle connectée à un bus d'adresse de 8 bits. La RAM est donc limitée à 256 octets, alors que la ROM peut monter jusqu'à 64 kibioctets. Mine de rien, faire ainsi est largement suffisant.
Pour encore améliorer la situation, il est possible d'utiliser une architecture Harvard modifiée, qui permet de lire des données depuis la mémoire ROM. Cela réduit encore plus les besoins en mémoire RAM. Les constantes manipulées par le programme sont mémorisées en ROM, lues depuis la ROM, au lieu d'être chargées en RAM. Avec ce genre de stratagèmes, 256 octets de RAM est largement suffisant sur de nombreux systèmes, à condition qu'on ait assez de ROM pour coder un programme digne de ce nom. Par exemple, de nombreux systèmes embarqués simples s'en accommodent : des caisses enregistreuses, des systèmes de régulation de feu de circulation, etc.
Les processeurs 8 bits intègrent parfois les 256 octets de RAM directement dans le processeur, dans le banc de registres ! Beaucoup en implémentaient moins, avec par exemple seulement 64 octets de RAM, ou 32 octets, ou 128 octets. L'avantage est que cela élimine le bus pour les données, ce qui économise beaucoup de broches sur le circuit intégré du CPU. Et pour les applications demandant plus de RAM, on pouvait ajouter un circuit séparé qui permettait d'adresser une RAM plus grande. Et c'est ce qui explique que cette solution est beaucoup utilisée sur les microcontrôleurs peu puissants. Les exemples qui vont suivre devraient vous convaincre.
: Les processeurs de ce type implémentent des optimisations pour adresser plus de 256 octets de RAM. La plus connue est la commutation de banques. Mais nous n'avons pas encore abordé celle-ci, et il faudra attendre le chapitre sur l'espace d'adressage pour cela.
===Les microcontrôleurs PIC===
Les '''microcontrôleurs PIC''' regroupent des microcontrôleurs allant de microcontrôleurs 8 bits aux performances très faible, à des microcontrôleurs 32 bits bien plus puissants. Les microcontrôleurs PIC sont très utilisés dans l'embarqué ou d'informatique industrielle. Ils sont vendu à des volumes assez impressionnants, plusieurs millions par an. Et si vous avez ou êtes en train de faire des études d'électronique, je parie que vous les avez déjà vu en classe, ou que ce ne saurait tarder. Dans ce qui suit, nous allons nous concentrer sur les microcontrôleurs PIC 8 bits, à savoir les PIC 16, 16 et 18. Les PIC 24, qui sont des microcontrôleurs 16 bits, ne seront pas abordés.
Les microcontrôleurs PIC 8 bits sont une architecture Harvard, comme dit plus haut. Il y a aussi des registres pour les entrées et sorties. Les registres d'entrée-sortie permettent de lire ou écrire sur un port d'entrée-sortie ou de lire un ''timer''. En clair, les PIC ont un espace d'adressage séparé pour les entrées-sorties.
La mémoire ROM des PIC va de 1024 instructions à 4096 instructions. En comparaison, la mémoire RAM des microcontrôleurs PIC ne peut pas dépasser 256 adresses, et elle est encore plus petite en pratique sur certains modèles. Pour donner un exemple, le PIC16F84 a une RAM composée de 68 "registres" de 8 bits. Le terme "registres" devrait vous faire tiquer, mais c'est bien le terme utilisé dans la documentation des PIC. Et il faut admettre que la différence entre banc de registre et SRAM intégrée est floue, mais nous expliquerons pourquoi dans quelques paragraphes.
: Les PIC 18 peuvent adresser plus de 256 octets de RAM en utilisant la commutation de banques, une technique qui sera abordée dans plusieurs chapitres.
[[File:DocPIC16F84 3.png|centre|vignette|upright=3|Espaces d'adressage du PIC16F84.]]
Un détail est que la SRAM n'a qu'un seul port qui sert à la fois pour les lectures et écritures. Pour compenser, les PIC sont des architectures à accumulateur, où une opérande est lue depuis la SRAM, l'autre depuis l'accumulateur. Leur implémentation de l'accumulateur ajoute une petite subtilité : le résultat d'une opération arithmétique peut être enregistré ailleurs que dans l'accumulateur. Le résultat peut aussi remplacer la seconde opérande, celle lue en mémoire RAM. Dit autrement, le résultat est enregistré dans l'adresse mémoire source. Les instructions de calcul ont le choix : un bit dans leur encodage précise où enregistrer le résultat.
{|
|-
|[[File:DocPIC16F84 4.png|centre|vignette|upright=2|Microarchitecture simplifiée d'un microcontroleur PIC (ici, un 16F84).]]
|[[File:DocPIC16F84 5.png|centre|vignette|upright=2|Microarchitecture simplifiée d'un microcontroleur PIC (ici, un 16F84), avec les branchements directs.]]
|}
Outre l'accumulateur, les PIC disposent de registres de contrôle, d'un ''program counter'', d'un registre d'état, et d'un pointeur de pile. Un détail très important est que les registres sont mappés en mémoire, à quelques exceptions près ! En clair, on peut y accéder en lisant/écrivant à une adresse mémoire bien précise. Les seules registres qui ne sont pas mappés en mémoire sont l'accumulateur, les registres d'entrée-sortie, et la pile d'adresses de retour intégrée au processeur (voir plus bas). Par exemple, sur les modèles 16F, l'espace d'adressage fait 128 octets, dont 32 sont réservés aux registres du processeur, ce qui fait que seules 96 octets sont adressables comme de la RAM. Mais les 128 octets sont un seul et unique SRAM dans le processeur. Ce qui explique qu'il est difficile de séparer banc de registre et RAM principale sur ce processeur : les deux sont fusionnées ! Cela gaspille quelques adresses mémoire, mais permet une implémentation plus simple, avec un banc de registre unique.
: Les modèles PIC 17 ont rendu l'accumulateur mappé en mémoire RAM !
[[File:DocPIC16F84.png|centre|vignette|upright=2|DocPIC16F84]]
La petite taille de la ROM d'un PIC n'est pas une surprise. Les architectures 8 bits sont conçues pour ne pas utiliser beaucoup de transistors et être très simples. Aussi, utiliser une petite ROM est nécessaire. Mais il faut aussi adapter le jeu d'instruction, pour qu'il ait une bonne densité de code. Par exemple, il faut faire en sorte d'avoir des instructions assez courtes. Si les instructions font 16 bits au lieu de 32, on divise par deux le nombre de transistors nécessaire pour la mémoire ROM. La conséquence est que le jeu d’instruction des PIC est adapté à cette contrainte.
Les microcontrôleurs PIC utilisent un jeu d'instruction propriétaire, dont les instructions sont très petites. Les premières versions du jeu d'instruction utilisaient des instructions codées sur 12 bits, dont 5 pour l'adresse mémoire de la seconde opérande. Pour les branchements, 3 bits étaient utilisés pour l'opcode, 9 pour l'adresse de destination. Par la suite, les instructions ont été étendues à 13 bits sur les PIC1670, puis à 14, 15 et 16 bits. Les adresses ont alors été élargies, ce qui permet d'adresser en peu plus de mémoire RAM.
Il est intéressant de regarder comment les PIC font pour obtenir des instructions aussi courtes. Premièrement, le fait d'utiliser une architecture à accumulateur, couplé à une RAM très petite aident grandement. Les architectures à accumulateur ont besoin de préciser un opcode et une adresse mémoire pour chaque instruction, pas besoin de préciser de noms de registres ni le mode d'adressage. La taille des adresses mémoire est censé être un problème pour la densité de code, mais les adresses d'un processeur 8 bits font 8 bits. On peut alors avoir un jeu d'instruction étoffé, en utilisant des instructions 16 bits, qui concatènent un opcode et une adresse mémoire, d'un octet chacun.
Mais d'autres optimisations permettent d'avoir une bonne densité de code. Les PIC ont des branchements pour les appels et retour de fonction. Les PIC incorporent une pile d'appel de retour, qui fait 2 à 8 adresses suivant les modèles. Elle permet d'économiser quelques registres, car la pile d'appel n'est pas mappé dans l'espace d'adressage, elle n'est pas adressable. On économise ainsi 2 à 8 registres, sur 32-256 registres. De plus, cela simplifie l'encodage des instructions d'appel/retour de fonction, qui n'ont pas à préciser où enregistre l'adresse de retour.
Les PIC n'ont pas d'instructions de branchement conditionnels, ils font avec une SKIP instruction et des branchements inconditionnels. Du moins, c'est le principe, car si vous regardez la liste des instructions ci-dessous, vous verrez qu'il n'y a pas d'instruction SKIP. A la place, les instructions SKIP sont fusionnées avec d'autres instructions. Elles sont notamment fusionnées avec les instructions d'incrémentation et de décrémentation. Les PIC supportent une incrémentation normale, une décrémentation normale, une décrémentation fusionnée avec une instruction SKIP, et une incrémentation fusionnée avec une instruction SKIP. Les deux dernières incrémentent/décrémentent l'accumulateur et SKIP l'instruction suivante si le résultat est zéro. Elles permettent de fortement simplifier l'implémentation des boucles qui s'exécutent tant que leur compteur atteint zéro.
Les PIC disposent aussi d'instructions de manipulation de bit, pour tester/masquer un bit dans une opérande, 4 en tout. Il y a en a 4 en tout : mettre à 0, mettre à 1, tester si bit = 1, tester si bit = 0. Les instructions qui testent un bit prennent leur opérande dans l'accumulateur. Elles font le test du bit et décident s'il faut skipper l'instruction suivante ou non. Il y a aussi deux instructions de rotation à gauche et droite, qui tiennent compte de la retenue mémorisée dans le registre d'état. Par contre, il n'y a pas d'instructions de décalages, qui peuvent être émulées avec une rotation suivie d'un ET bit à bit. Mentionnons aussi une instruction pour inverser deux ''nibbles'' dans un octet.
Les modèles haute performance ajoutent des instructions d'addition avec retenue entrante, idem pour la soustraction. De telles instructions ssont très utiles pour faire des additions/soustractions sur des opérandes de 16 bits. Le processeur a beau être un CPU 8 bits, il peut être utilisé pour faire des calculs 16 bits, la performance est alors amoindrie, mais ce n'est pas un problème pour les applications d'un tel microcontroleur.
Les modèles intiaux, comme les PIC 10 et 12, ne supportaient pas les interruptions, mais c'est chose réglé sur les modèles plus récents. Ils ont même des registres séparés pour les interruptions et les programmes normaux. De plus, ils intégrent nativement un ''watchdog timer''.
{|class="wikitable" style="text-align:center"
|+ Jeu d'instruction des dodèles PCI 16
|-
! colspan="5" | Instructions diverses
|-
| colspan="3" | 00 0000 0000 0000 || NOP || Ne fait rien
|-
| colspan="3" | 00 0000 0000 1000 || RETURN || Instruction de retour pour une fonction
|-
| colspan="3" | 00 0000 0000 1001 || NOP || Instruction de retour pour une interruption
|-
| colspan="3" | 00 0000 0110 0011 || SLEEP || Mise en veille
|-
| colspan="3" | 00 0000 0110 0100 || CLRWDT || RESET le ''watchdog timer'', intégré dans le PIC
|-
! colspan="5" | Instructions de manipulation de bit
|-
| 0100 || Position du bit dans l'opérande || Adresse mémoire || BCF || Met le bit à 1
|-
| 0101 || Position du bit dans l'opérande || Adresse mémoire || BSF || Met le bit à 0
|-
| 0110 || Position du bit dans l'opérande || Adresse mémoire || BTFSC || Teste si le bit adressé est à 1
|-
| 0111 || Position du bit dans l'opérande || Adresse mémoire || BTFSS || Teste si le bit adressé est à 0
|-
! colspan="5" | Branchements
|-
| colspan="2" | 100 || Adresse mémoire || CALL || Appel de fonction
|-
| colspan="2" | 100 || Adresse mémoire || GOTO || Branchement inconditionnel
|-
! colspan="5" | Instructions logiques/arithmétiques avec opérande lue en mémoire RAM
|-
| colspan="5" | ''Le bit '''d''' dans l'opcode indique la destination : accumulateur ou adresse mémoire''.
|-
| colspan="2" | 0000001 || Adresse mémoire || MOVWF || Store (accumulateur vers destination)
|-
| colspan="2" | 000001d || Adresse mémoire || MOVWF || Met à zéro la destination (adresse ou registre)
|-
| colspan="2" | 000001d || Adresse mémoire || SUBWF || Soustraction
|-
| colspan="2" | 000010d|| Adresse mémoire || DECF || Décrémentation
|-
| colspan="2" | 000100d|| Adresse mémoire || IORWF || OU bit à bit
|-
| colspan="2" | 000101d|| Adresse mémoire || ANDWF || ET bit à bit
|-
| colspan="2" | 000110d || Adresse mémoire || XORWF || XOR bit à bit
|-
| colspan="2" | 000111d || Adresse mémoire || ADDWF VWF || Addition
|-
| colspan="2" | 001000d || Adresse mémoire || MOVF || LOAD
|-
| colspan="2" | 001001d || Adresse mémoire || COMF || NOT bit à bit
|-
| colspan="2" | 001010d || Adresse mémoire || INCF || Incrémentation
|-
| colspan="2" | 001011d || Adresse mémoire || DECFSZ || Décrémentation, puis instruction SKIP si résultat = 0
|-
| colspan="2" | 001100d || Adresse mémoire || RRF || Rotation à droite avec retenue entrante
|-
| colspan="2" | 001101d || Adresse mémoire || RLF || Rotation à gauche avec retenue entrante
|-
| colspan="2" | 001110d || Adresse mémoire || SWAPF || Echange deux ''niblle'' dans un octet
|-
| colspan="2" | 001111d || Adresse mémoire || INCFSZ || Incrémentation, puis instruction SKIP si résultat = 0
|-
! colspan="5" | Instructions logiques/arithmétiques avec constante immédiate
|-
| colspan="2" | 1100xx || Constante immédiate (8bits) || MOVLW || Copie constante dans accumulateur
|-
| colspan="2" | 1101xx || Constante immédiate (8bits) || RETLW || MOV fusionné avec un retour de fonction
|-
| colspan="2" | 111000 || Constante immédiate (8bits) || IORLW || OU
|-
| colspan="2" | 111001 || Constante immédiate (8bits) || ANDLW || ET
|-
| colspan="2" | 111010 || Constante immédiate (8bits) || XORLW || XOR
|-
| colspan="2" | 11110x || Constante immédiate (8bits) || SUBLW || Soustraction
|-
| colspan="2" | 11111x || Constante immédiate (8bits) || ADDLW || Addition
|}
Les PIC gèrent l'adressage absolu et immédiat, mais pas plus. L'adressage absolu, celui où l'adresse est intégrée dans l'instruction, est très simple à implémenter. Les adresses prennent moins d'un octet, vu que la taille de la RAM est très petite, les adresses sont très courtes, les intégrer dans des instructions elles-mêmes courtes n'est pas un problème. L'adresse est encodée sur 5 à 7 bits, selon le modèle, ce qui permet d'adresser entre 32 et 128 octets.
Les PIC ne supportent pas l'adressage indirect, mais peuvent l'émuler grâce à un '''registre d'adresse''' dédié. Il s'agit du registre FSR, qui mémorise l'adresse à lire/écrire. Il est possible de copier un pointeur dedans, qui provient soit de l'accumulateur, soit de la mémoire SRAM. Dans les deux cas, la donnée adressée est lue ou écrite dans un registre INDR, est un registre d’interfaçage rendu adressable. Le registre FSR est directement connecté sur le bus d'adresse.
Les modèles de base se débrouillent avec un registre FSR et un registre INDR, mais les modèles plus performants ont deux ou trois copies de chaque registre. Les modèles PIC18 ajoutent aussi des instructions LOAD/STORE qui émulent les modes d'adressage à post- ou pré-incrément/décrément, et le mode d'adressage "Base + Indice + Décalage", encore une fois en utilisant les registres FSR et INDR.
Avec tout ce qu'on vient de dire, vous devriez pouvoir comprendre la microarchitecture d'un PIC, qui est résumée dans ce schéma.
[[File:DocPIC16F84 all.png|centre|vignette|upright=2.5|Microarchitecture du PIC16F84.]]
===Les microcontrôleurs Intel 8051/8031===
[[File:Pinagem8031.jpg|vignette|Broches du 8051.]]
Les microcontrôleurs Intel 8051/8031 sont des microcontrôleurs 8 bits, commercialisés par Intel. Elle contient un processeur 8/16 bits, 4 kibioctets de mémoire ROM, une RAM de 128 octets. Niveau entrées-sorties, il contient un port série, ainsi que 4 ports d'un octet chacun sur lesquels il peut lire ou écrire. Il supporte des interruptions, avec un contrôleur d'interruption intégré. Il contient aussi deux ''timers'' de 16 bits chacun, qui déclenchent des interruptions quand ils tombent à zéro ou à une valeur configurable.
Ils ont de nombreuses ressemblances avec les microcontrôleurs PIC. Le processeur du 8051 est une architecture à accumulateur de 8 bits, ses registres sont mappés en mémoire RAM, il a un registre d'adresse dédié à l'adressage indirect et j'en passe. Mais il y a aussi des différences notables. Par exemple, le 8051 n'a pas de pile d'adresse de retour, contrairement aux processeurs PIC. Il fait autrement, à savoir qu'il gère une pile d'appel placée en mémoire RAM,ce qui est très différent. De même, il utilise deux accumulateurs nommés A et B.
Une autre différence est que les registres sont placés dans un banc de registre à part des 128 octets de SRAM. Il y a une SRAM séparée du banc de registre, contrairement à ce qu'on a sur les microcontrôleurs PIC. Par contre, les registres du processeur sont mappés en mémoire RAM, y compris les deux accumulateurs, le registre d'état, le ''program counter'', et bien d'autres. Mais le fait qu'ils soient séparés de la SRAM permet de les mapper dans l'espace d'adressage sans marcher sur les pieds de la SRAM. Vu que le processeur peut adresser 256 octets, mais n'a que 128 octets de SRAM, les registres sont mappés dans les 128 octets restants. Les entrées-sorties aussi sont mappées dans ces 128 octets restants.
L'ensemble utilise une architecture Harvard, contrairement à ce que pourrait faire croire le schéma ci-dessous.
[[File:Arkitektura mikro kontrollerit Intel 8051.png|centre|vignette|upright=2.5|Microcontrôleur 8051]]
Voyons maintenant la ''memory map'' de ce microcontroleur, pour la SRAM. Un point assez original est que 16 octets de la SRAM sont adressables bit par bit, à savoir que chaque bit a sa propre adresse. En tout, cela permet d'adresser 128 bits (16 adresses * 8 bits par octet adressé). L'intervalle bit-adressable va de l'adresse 32 (inclue) à l'adresse 47 (inclue).
Les 32 premières adresses sont réservés à la mémoire SRAM, c'est 32 octets de RAM utilisable à volonté par le programmeur. Les 16 adresses suivantes sont les 16 adresses bit-adressables mentionnées dans le paragraphe précédent. Les 96 octets suivants sont de la mémoire RAM adressable, affectée par défaut à la pile d'appel mais adressable via adressage direct si besoin. Les 128 octets de poids fort sont réservés aux registres du processeur et aux entrée-sorties mappées en mémoire.
[[File:Memory map du 8051.png|centre|vignette|upright=2|Memory map du 8051]]
Les 128 octets au sommet de l'espace d'adressage sont décrit dans le schéma ci-dessous. On voit que les deux accumulateurs sont mappés dedans, de même que le registre d'état PSW, le registre de configuration des interruptions IE (''Interrupt Enable''), et quelques autres. Les ports d'entrée-sortie sont aussi mappés dedans, que ce soit les 4 ports parallèles ou le port série. Les deux ''timers'' sont aussi mappés dedans, ainsi que leurs registres de configuration.
Une partie des octets sont bit-adressables, et cette partie inclus les registres du processeur et les ports d'entrées-sorties. Pour le dire autrement, chaque bit d'un port d'entrée-sortie a sa propre adresse mémoire, qui permet de le sélectionner. Par contre, les registres pour les ''timers'' ne sont pas dedans, sauf pour le troisième ajoutés dans des extensions du 8051.
[[File:MFrey SFR MCS-51.svg|centre|vignette|upright=2|Memory map des 128 octets de poids fort du 8051]]
Pour ce qui est des instructions, le 8051 supporte les opérations de multiplications et de divisions, contrairement aux microcontrôleurs PIC qui se limitaient à l'addition et la soustraction. Une autre particularité est que le processeur incorpore une '''unité de calcul de 1 bit'''. Elle permet de faire des opérations sur des bits, avec 17 instructions possibles au total. L'ALU de 1 bit est reliée à un accumulateur de 1 bit et 32 registres de 1 bits. Elle peut lire des opérandes de 1 bit en mémoire RAM ou sur les ports d'entrée-sortie, pour les portions qui sont bit-adressables.
Le 8051 peut communiquer avec une mémoire RAM externe, en plus de la SRAM interne. Pour cela, le processeur du 8051 avait un espace d'adressage séparé pour la RAM externe, capable d'adresser 64 kibioctets. Communiquer avec cet espace d'adressage se faisait avec des instructions d'accès mémoire séparées des autres, pas les LOAD/STORE normaux. Par exemple, l'instruction MOVX lisaient une donnée dans cet espace d'adressage, et la copiait dans l'accumulateur ou la SRAM. Pour envoyer l'adresse à lire/écrire à cette RAM externe, le processeur incorporait un registre d'adresse dédié. Il s'agit du '''registre DPTR''', qui contient une adresse de 16 bits. Le processeur devait copier l'adresse à lire/écrire dedans, puis lancer l'instruction MOVX.
Le processeur supporte aussi l'adressage indirect dans la SRAM, grâce à deux registres d'adresse de 8 bits chacun. Ils portent les noms R0 et R1. C'est là une ressemblance avec les microcontrôleurs PIC.
===Le Fairchild F8 et la console de jeu Fairchild Channel F===
Un autre exemple est la Fairchild F8 de la défunte entreprise Fairchild Semiconductor. Il incorpore un processeur 8 bits, c'est à dire que le processeur fait des calculs sur des entiers de 8 bits maximum, une mémoire RAM de 64 octets, ainsi qu'une mémoire ROM de 1 kibioctet. Les 64 octets de RAM sont certes très peu, mais c'est suffisant pour certaines applications simples, comme les caisses automatiques de l'époque, ou des applications embarquées. Et de toute façon, il est possible d'ajouter de la mémoire RAM supplémentaire si les 64 octets de RAM intégrée ne suffisent pas. Le système était donc modulaire, adaptable selon les besoins, peu cher pour son implémentation minimale sans RAM en plus.
Vu qu'il s'agit d'un des tout premiers ordinateurs, il est sorti à une époque où la technologie était rudimentaire. À cette époque, le processeur était composé de pièces détachées qu'il fallait souder ensemble pour obtenir un processeur fonctionnel. Ce n'est que plus tard qu'est apparu le micro-processeur, qui regroupe un processeur complet dans un seul circuit intégré. Le résultat est que le processeur du Fairchild F8 est coupé en deux, l'unité de calcul et l'unité de contrôle sont placés dans des pièces détachées séparés.
Le microcontrôleur est composé de trois à quatre pièces détachées, certaines étant optionnelles. La première est le '''3850 CPU''', qui regroupe l'unité de calcul et la mémoire RAM intégrée. La seconde est le PSU (''3851 Program Storage Unit''), qui regroupe la mémoire ROM et l'unité de contrôle, ''program counter'' inclut. S'il y a besoin d'utiliser plus de RAM, il faut ajouter un circuit d’interface mémoire, qui est au choix le ''3852 Dynamic Memory Interface'' (DMI) ou le ''3853 Static Memory Interface'', le premier étant connecté à une mémoire de type DRAM, l'autre à une SRAM (nous verrons ce que sont les DRAM et les SRAM dans le prochain chapitre).
[[File:Fairchild F8.png|centre|vignette|upright=2|Fairchild F8]]
Le système minimal est composé d'un PSU et d'un 3850, sans les circuits d'interface mémoire. Le tout donne un système avec un processeur 8 bit, 64 octets de RAM et 1 kibioctet de ROM, les deux mémoires étant intégrées dans le "processeur". Le processeur gérait 4 entrées-sorties, chacune étant reliée avec un bus de 8 bit au processeur. Au passage, en 1977, Mostek a créé un microcontrôleur qui regroupe un PSU et un 3850 : le Mostek 3870. Le système minimal n'avait pas de bus d'adresse, vu que la RAM était intégrée au processeur. C'est les 3852 et 3853 qui ajoutaient un bus d'adresse. Ils ajoutent un bus d'adresse de 16 bits, ce qui permet d'adresser 64 kibioctets de RAM.
[[File:Fairchild-Channel-F.jpg|vignette|un Fairchild Channel F]]
Le Fairchild F8 a été utilisé dans la Fairchild Channel F, une des toute première console de seconde génération, à savoir des consoles qui utilisaient des cartouches de jeu. Avant les consoles de seconde génération, les consoles étaient non-programmables. Elles étaient conçues pour faire tourner un jeu précis, aucun autre, le jeu étant implémenté dans leurs circuits.
La Fairchild Channel F est composé du système minimal, auquel on a ajouté une carte son rudimentaire et 2 kibioctets de mémoire vidéo. La mémoire vidéo sert uniquement pour afficher des images à l'écran : on écrit l'image à afficher dedans, un circuit vidéo se charge de l'afficher à l'écran automatiquement. Le processeur ne fait qu'écrire dans cette RAM vidéo, il ne peut pas en lire le contenu. De la RAM supplémentaire peut cependant être ajoutée dans les cartouches de jeu.
===Le HP Nanoprocessor : un processeur sans ALU===
Un dernier exemple est celui du processeur HP Nanoprocessor, de l'entreprise HP. Il a été commercialisé en 1974, en même temps que les premiers micro-processeurs d'Intel. Tous les processeurs de l'époque étaient des processeurs 8 bits et le HP Nanoprocessor ne faisait pas exception. Ce n'était pas un processeur haute performance, il était destiné à des applications d'informatique industrielle ou embarquée. D'ailleurs, il utilisait des transistors de type metal-gate, peu performants, là où ses contemporains utilisait des transistors en silicium, plus performants.
Mais une caractéristique qui rend cela encore plus claire est qu'il n'y a pas d'ALU ! En effet, ce processeur est incapable de faire des additions, des soustractions ou autres opérations simples ! Il est cependant capable d'effectuer des incrémentations et décrémentations, des décalages, des opérations logiques comme des ET/OU/NON/XOR et bien d'autres. Il supporte en tout 48 instructions, avec un support limité des modes d'adressage indirects. Les instructions de branchement étaient des instructions SKIP, il n'y avait pas d'instructions de branchement généralistes.
Pour ce qui est des registres, il disposait de 16 registres de 8 bits et d'un accumulateur. Niveau mémoire, il était relié à une mémoire ROM, rien de plus. Il n'avait de RAM supplémentaire qu'on pouvait lui adjoindre, il devait se débrouiller avec seulement ses registres. Et cela ne posait pas de problèmes pour son usage. Seul le mode d'adressage indirect à registre est supporté, il n'y a pas de registres d'indices. Ce mode d'adressage permet de lire des données en mémoire ROM, la ROM pouvant contenir des tableaux de valeurs constantes.
: Il est possible de lui adjoindre de la RAM via les ports d'entrée-sortie, ainsi qu'une ALU, mais RAM et ALU sont traités comme des périphériques avec lesquels on communique, ils ne sont pas intégrés au processeur.
Niveau micro-architecture, il incorporait une unité de calcul logique et un circuit comparateur. Le comparateur était un circuit comparateur série des plus basiques, qui était utilisé pour les instructions de branchement et associées. L'unité de calcul logique gérait des incrémentations/décrémentation, des décalages, les opérations logiques et quelques autres. L'unité de calcul logique était bit-slicée, à savoir conçue en assemblant 8 ALU de 1 bit chacune, enchainées en série. Le tout était combiné à des circuits de ''carry skip''.
[[File:Unité de calcul du HP nanonprocessor.png|centre|vignette|upright=2|Unité de calcul du HP nanoprocessor]]
Son unité de décodage d'instruction était très simple, essentiellement basée sur des portes NOR, grâce à un encodage efficace des instructions machine. Le ''program counter'' fait 11 bits, ce qui permet d'adresser une ROM de 2 kibioctets. Le ''program counter'' était relié à un circuit incrémenteur qui gérait les isntructions SKIP (il pouvait incrémenter le ''program counter'' par pas de 1 ou de 2 en cas de SKIP). Le processeur contient aussi deux registres, qui servent en quelque sorte de pile d'adresse de retour. Un premier registre mémorise l'adresse de retour d'une fonction, l'autre mémorise le ''program counter'' lors d'une interruption, pour savoir où brancher à la fin de l'interruption.
[[File:HP nanoprocessor.png|centre|vignette|upright=2.5|HP nanoprocessor]]
Fait intéressant, le concepteur du processeur a gracieusement donné les masques utilisés pour graver le silicium du processeur au site [https://www.cpushack.com/ CPU Shack]. Les masques en question sont disponibles ici :
* [https://www.cpushack.com/2020/08/20/hp-nanoprocessor-mask-set/ HP NanoProcessor Mask Set]
* [https://www.cpushack.com/2020/08/09/the-forgotten-ones-hp-nanoprocessor/ The Forgotten Ones: HP Nanoprocessor]
Les masques ont été analysés par Ken Shirrif dans cet article de blog :
* [https://www.righto.com/2020/09/hp-nanoprocessor-part-ii-reverse.html HP Nanoprocessor part II: Reverse-engineering the circuits from the masks]
==Les processeurs 8/16 bits à architecture Von Neumann==
L'usage d'une architecture Harvard est une solution pour adresser plus de mémoire avec des CPU 8 bits. Mais plusieurs microprocesseurs commerciaux n'utilisaient pas cette solution. À la place, c'était des architectures Von Neumann, mais qui étaient capables de gérer des adresses de 16 bits. Les données faisaient 8 bits, les registres faisaient 8 bits, mais quelques techniques permettaient de gérer des adresses de 16 bits. Nous parlerons de '''processeurs 8/16 bits''' pour les désigner, et nous allons les étudier à part.
Un point important est que la gestion d'adresses de 16 bits permet d'adresser 64 kibioctets, qui peuvent être remplis avec de la RAM et de la ROM. On a donc le meilleur des mondes : 64 kibioctets de mémoire, mais avec des données de 8 bits et les économies de circuit qui vont avec. L'avantage est que le processeur peut maintenant gérer une vraie pile d'appel, pas seulement une pile d'adresse de retour. Il lui suffit pour cela d'intégrer un pointeur de pile codé sur 16 bits.
===Les modes d'adressage par page des CPU Motorola===
Les processeurs Motorola 8 bits étaient des processeurs 8 bits avec un bus d'adresse de 16 bits. C'était des processeurs à accumulateur incorporant deux registres d'indice, un registre d'état, un pointeur de pile, et un ''program counter''. Tous les registres sont reliés au bus d'adresse, sauf le registre d'état et l’accumulateur. Tous les registres font 8 bits, sauf le ''program counter''. La pile est câblée pour être dans un bloc de 256 octets compris entre l'adresse 1 0000 0000 et l'adresse 1 1111 1111, ce qui fait que son adressage se fait avec un seul octet.
[[File:6502-architecture.svg|centre|vignette|upright=1.5|Architecture simplifiée du 6502.</br> X et Y : registres d'indice ;</br> S : le pointeur de pile ;</br> A : accumulateur ;</br>P : registre d'état.</br>]]
Les processeurs Motorola 8 bits utilisaient une méthode simple pour adresser 64 kibioctets de RAM, avec des registres de 8 bits. Pour cela, ils utilisaient une variante de l'adressage base + décalage. Elle améliore l'adressage absolu, qui intègre l'adresse à lire/écrire dans l'instruction elle-même. L'adresse en question est de 8 bits et n'encode que les 8 bits de poids faible de l'adresse, les 8 bits de poids fort sont dans un '''registre de page''' adressé implicitement. L'adresse finale est obtenue en concaténant ce registre avec l'adresse mémoire intégrée dans l’instruction. Le résultat est que la mémoire était découpée en blocs de 256 consécutifs, chacun pouvant servir de fenêtre de 256 octets. Une page est réservée pour la pile, la seconde, comme dit plus haut.
Formellement, ce mode d'adressage a des ressemblances avec la commutation de banques, une technique qu'on verra dans les chapitres sur l'espace d'adressage et la mémoire virtuelle. Mais ce n'en est pas du tout : le registre de page est utilisé uniquement pour les accès mémoire avec le mode d'adressage base + décalage, mais pas pour les autres accès mémoire, qui gèrent des adresses complètes. Notons que l'usage d'un registre de page dédié fait que celui-ci est adressé implicitement.
Il faut noter que la technique a été utilisée sur des processeurs 16 bits, pour contourner la petite taille des instructions. Un exemple est celui du HP 2100, un processeur 16 bits. Il avait un registre de page de 5 bits et encodait 10 bits d'adresse dans ses instructions. Ses instructions d'accès mémoire disposaient d'un bit qui choisit quel mode d'adressage utiliser. S'il était à 0, l'adressage absolu était utilisé, le registre de page n'était pas utilisé. Mais s'il était à 1, le registre de page était utilisé pour calculer l'adresse.
Une évolution de l'adressage précédent est le '''mode page direct'''. Avec lui, le registre de page est étendu et contient une adresse mémoire complète. L'adresse finale n'est pas obtenue par concaténation, mais en additionnant le registre de page avec l'adresse fournie par adressage absolu + décalage. Un exemple est celui des premiers processeurs Motorola, qui géraient des adresses courtes de 8 bits. L'adresse courte de 8 bits correspondait non pas aux 256 premiers octets de la mémoire, mais à une fenêtre de 256 octets déplaçable en mémoire. La position de la fenêtre de 256 octets était spécifiée par le registre de page de 16 bits, qui précisait l'adresse du début de la fenêtre, celle de sa première donnée.
Il s'agit donc formellement d'adressage base + décalage, à un détail près : il n'y a qu'un seul registre de base. Le fait que ce registre de base soit unique fait qu'il est adressé implicitement, on n'a pas à encoder le numéro/noms de registre dans l'instruction. Le registre de base est utilisé uniquement pour l'adressage absolu, pas pour les autres accès mémoire. S'il y a des ressemblances avec la segmentation, une technique de mémoire virtuelle qu'on abordera dans quelques chapitres, ce n'en est pas vu que le registre de base est utilisé seulement pour un mode d'adressage bien précis.
===Le ''pseudo-aliasing'' des registres des processeurs Intel x86===
Voyons maintenant le cas des anciens processeurs 8 bits d'Intel à savoir l'Intel 4004, 4040, 8008 et 8080. Le Z80, un processeur inspiré des CPU Intel 8 bits, est aussi concerné. Avant de poursuivre, parlons des registres de ces processeurs. Les premiers CPU Intel incorporaient 7 registres de 8 bits nommés A, B, C, D, E, F, H, L, SP. Ils correspondent respectivement à : l'accumulateur A ; six registres nommés B, C, D, E, H et L ; le registre d'état F ; le pointeur de pile SP. Le Z80 ajoute deux registres d'indice X et Y. De plus, le Z80 dispose de registres d'interruption, qui sont en quelque sorte des copies des registres A, B, C, D, E, F, H, L. Le tout est illustré dans le tableau ci-dessous.
{|class="wikitable" style="text-align:center;"
|-
!
! Registres des CPU Intel
! Registres supplémentaires du Z80
|-
! Accumulateur
| A
| A'
|-
! Registre d'état
| F
| F'
|-
! Registres généraux
| B, C, D, E, H, L
| B', C', D', E', H', L'
|-
! Pointeur de pile
| colspan="2" | SP (sauf pour le 8008)
|-
! Registres d'indice
|
| X et Y
|}
Le 8008 incorpore une pile d'appel de 7 adresses, dans le processeur lui-même. Il en est de la même avec le 4004 et le 4040, comme on le verra dans la section sur les processeurs 4 bits. Mais le 8080 et le 8085 ont remplacé le tout par un simple pointeur de pile, afin d'avoir une véritable pile d'appel. Autant c'est impossible d'avoir une pile d'appel avec seulement 256 octets de mémoire, autant on peut se le permettre avec 65 536 adresses.
Pour gérer des adresses de 16 bits, ils auraient pu utiliser des registres d'adresse séparés, mais on préféré un système de '''pseudo-''aliasing'' de registres'''. Formellement, c'est un système qui concatène deux registres 8 bits pour obtenir une adresse de 16 bits. L’appariement a lieu lors de certaines opérations bien précises, qui n'ont de sens que pour les adresses : la lecture/écriture en mémoire, et l'incrémentation.
Il y avait cependant des contraintes quant aux paires de registres possibles, toutes les paires de registres n'étaient pas autorisées. Les CPU concernés sont donc des processeurs hybrides accumulateur-registre généraux. L'accumulateur ne peut pas être appairé, seuls les registres généraux le peuvent. Le Z80 autorise plus de paires que les CPU Intel. Voici les paires de registres qui pouvaient servir d'adresse 16 bits :
* Les CPU 8008 d'Intel autorisait une seule paire formée des registres H et L.
* Les autres processeurs, à savoir le 8080, le 8085 et le Z80, autorisaient : les paires BC, DE et HL.
Le 8008 ne gérait que des opérations sur 8 bits. Mais le 8080 et le 8085 ont ajouté des instructions 16 bits qui agissaient sur des paires de registre, que le Z80 a repris. Une paire de registres est considérée comme un registre unique de 16 bits pour certaines opérations arithmétiques, dont l'incrémentation. Voici la liste des instructions concernées :
* INC et DEC pour l'incrémentation et la décrémentation ;
* DAD : additionne le registre HL avec une autre paire (Hl inclus) ;
* LXI : copie une constante immédiate dans une paire de registres ;
* LHLD : lit 16 depuis la mémoire et l'enregistre dans une paire de registres ;
* SHLD : copie 16 bits depuis une paire de registres et l'enregistre en mémoire ;
* PUSH et POP : empile ou dépilent une paire de registre sur la pile ;
* XTHL : échange la paire HL avec les 16 bits au sommet de la pile d'appel ;
* XCHG : échange le contenu de la paire HL et DE.
Pour résumer, le processeur avait des instructions LOAD, STORE, PUSH et POP adaptées pour gérer des paires de registre. De plus, l'instruction XCHG permettait d’échanger le contenu des paires DE et HL. L'instruction a été étendue sur les processeurs 16 bits pour échanger tous les registres. Mais l'implémentation était alors différente. L'incrémentation sur une paire de 16 bit était très utile, car les adresses sont souvent incrémentées quand on parcours un tableau. Ces instructions nous donnent quelques indices sur ce qu'il y a dans le processeur.
Le système de pseudo-aliasing a un impact sur le banc de registre. Le banc de registre regroupe les registres généraux et le pointeur de pile, mais ne contient pas l'accumulateur. Les contraintes sur les paires de registres possibles ne s'expliquent que d'une seule manière : le banc de registre contient des registres de 16 bits, une paire de registres 8 bits est mémorisée dans un registre unique. Il faut donc faire une différence entre les registres architecturaux de 8 bits, et les registres réels de 16 bits.
Le banc de registre a un port de 8 bits pour les données, qui est fabriqué à partir d'un port 16 bits auquel on a rajouté un multiplexeur pour choisir soit l'octet de poids faible, soit l'octet de poids fort. Le bus de données fait 8 bits, ce qui fait que les instructions LOAD, STORE, PUSH et POP pour paires 16 bits sont réalisées en deux fois : on lit/écrit l'octet de poids faible, puis celui de poids fort. Par contre, le bus d'adresse fait bien 16 bits. Cela suggère que le banc de registre dispose d'un port de 16 bits dédié aux adresses, en plus du port de données 8 bits.
[[File:Architecture d'un CPU 8-16 bits avec un banc de registre double port.png|centre|vignette|upright=2|Architecture d'un CPU 8-16 bits avec un banc de registre double port]]
L'incrémentation d'une paire 16 bits ne coute rien à implémenter, ou presque. En effet, le processeur incorpore un incrémenteur 16 bits pour le ''program counter'', qui est relié au bus d'adresse. L'idée est de rentabiliser cet incrémenteur, en lui permettant d'incrémenter des données/adresses de 16 bits obtenues via pseudo-aliasing. De même, il peut être utilisé pour incrémenter le pointeur de pile, voire un compteur de rafraichissement mémoire (pour rappel, le rafraîchissement mémoire demande de balayer la mémoire d'adresse en adresse et été fait par le CPU à l'époque). Pour cela, il suffit de connecter le ''program counter'', le banc de registre, et l'incrémenteur, via un bus dédié.
[[File:Calcul d'adresse par ALU dédiée avec PC séparé.png|centre|vignette|upright=2|Calcul d'adresse par ALU dédiée avec PC séparé]]
Notez qu'on peut encore simplifier le tout en placant le ''program counter'' dans le banc de registre, ce qui ne gênera pas le travail de l'incrémenteur mais simplifiera le câblage au bus d'adresse. Ce n'était pas systématique, certains processeurs mettaient le ''program counter'' dans le banc de registre, d'autres non.
: Inclure le ''program counter'' dans le banc de registre permet parfois de remplir un vide. Par exemple, sur un processeur avec 12 registres, le banc de registre devrait faire idéalement 16 registres, inclure le ''program counter'' dedans fait monter le tout à 13.
[[File:Architecture d'un CPU 8-16 bits.png|centre|vignette|upright=2|Architecture d'un CPU 8-16 bits]]
Les processeurs Intel 8 bits, à savoir le 8008, le 8080 et le 8085 ; mettaient le ''program counter'' dans le banc de registre. Vous avez donc toutes les armes pour comprendre leur micro-architecture. Par exemple, voici la micro-architecture du processeur 8080. Remarquez le banc de registre, qui contient tous les registres sauf l'accumulateur et le registre. Il a deux ports : un pour les adresses et un pour les données. Notez le dé-multiplexeur sur le port de donnée. Pour le reste, il s'agit d'une architecture à accumulateur hybride des plus classiques.
[[File:Intel 8080 arch.svg|centre|vignette|upright=3|Microarchitecture de l'Intel 8080.]]
Le Z80 est un processeur inspiré du design des processeurs Intel 8 bits, mais avec pas mal d'améliorations. Un point particulier de ce processeur est son banc de registre. Il contient tous les registres du processeur, y compris l'accumulateur et le registre d'état ! Les seuls registres en-dehors du banc de registre sont le ''program counter'' et un compteur de rafraichissement mémoire IR.
Un autre point particulier est que les registres dans le banc de registres avaient une copie séparée accessible uniquement pour les interruptions, via fenêtrage de registres. Et l'accumulateur et le registre d'état étant dans le banc de registre, il y avait deux accumulateurs et deux registres d'état. Les registres A, B, C, D, E et F étaient dupliqués, par le pointeur de pile ni les registres d'indice. Les copies des registres étaient nommées A', B', C', D', E' et F'.
Le Z80 supportait des instructions d'échange de registre en plus des CPU Intel 8 bits. L'instruction EX peut échanger soit le contenu des paires D,E et H,F, soit la paire A,F avec la paire A',F'. L'instruction EXX échange les paires BC, DE, HL avec les paires BC', DE', HL'. En faisant cela, le programmeur pouvait utiliser deux fois plus de registres généraux s'il n'utilisait pas les interruptions. L'échange de paires se fait sans copies de registres, mais simplement en modifiant l'adresse envoyée sur le banc de registre. Pour cela, plusieurs bascules mémorisent des bits qui indiquent si les paires ont été échangées ou non. Il y a une bascule pour les paires DE , HL ; une autre pour les paires A,F et paire A',F', une dernière pour l'instruction EXX. En combinant ces bascules avec les noms de registres envoyés par le séquenceur, on peut échanger les paires de registres.
==Le cas particulier des processeurs 4 bits : le 4004 d'Intel==
L'Intel 4004 était le tout premier micro-processeur. Il s'agissait d'un microprocesseur de 4 bits, basé sur une architecture à accumulateur. Il disposait d'un accumulateur et de 16 registres d'indice, tous de 4 bits. Il faisait des calculs sur des données de 4 bits, appelées des nibbles. Cependant, sur ses 46 instructions machines supportées, 41 agissaient sur des opérandes de 8 bits, les 5 restantes sur des opérandes de 16 bits. Simplement, les calculs se faisaient en deux fois, en échangeant des données entre mémoire RAM et accumulateur.
Le 4004 est un circuit intégré avec peu de broches. Il dispose notamment d'un bus de données/adresse, qui est multiplexé, c’est-à-dire qu'il sert alternativement de bus de données et de bus d'adresse selon les besoins. Le bus de commande mémoire fait 5 bits, dont 4 pour les chips de RAM, un pour la ROM. Les adresses sont codées sur 12 bits, les données sur 4 et les instructions sur 8 bits. L'envoi d'une adresse sur le bus se fait en plusieurs fois, de même que la lecture d'une instruction. Il s'agit là d'une adaptation pour outrepasser les limitations d'un processeur 4 bit.
[[File:Intel 4004 processor pinout.png|centre|vignette|upright=2|Broches de l'Intel 4004. Nous verrons à quoi elles servent plus bas.]]
===L'espace d'adressage de l'Intel 4004===
Les adresses du processeur sont sur 12 bits, ce qui fait 4096 adresses différentes. Elles regroupent à la fois la ROM et la mémoire RAM, vu que l'architecture est une sorte de mélange bizarre entre une architecture Von Neumann et Harvard. Le processeur gère bien deux espaces d'adressage séparés, mais la RAM et la ROM sont reliés au même bus. La sortie CM-ROM du processeur indique si l'adresse envoyée correspond à la RAM ou la ROM. Un circuit de décodage d'adresse active ou désactive la RAM selon la valeur de ce bit, l'inverse pour la ROM, en agissant sur leurs bits Chip Select. Seule la RAM ou la ROM répondent alors à l'adresse.
Pour ce qui est de la RAM, le circuit de décodage d'adresse pouvait gérer au maximum 1024 adresses différentes, chacune contenant un nibble. Pour cela, le CPU 4004 était relié à une ou plusieurs RAM externes, des Intel 4002. Chaque Intel 4002 contenait 64 nibbles de données, plus 16 nibbles de statut qu'on ne détaillera pas ici. Les nibbles de statut étaient accessibles en utilisant des instructions d'entrée-sortie, donc pas avec des lectures/écritures mémoire. Les 64 nibbles de données sont découpés en 4 groupes de 16 nibbles. Le CPU pouvait être relié à maximum 16 Intel 4002, ce qui fait 1024 nibbles de données et 256 nibbles de statut. L'ensemble permet de remplir l'espace d'adressage de 1024 adresses.
===Le registre de page et le pseudo-aliasing des registres===
Sélectionner une adresse mémoire utilisait un mélange entre pseudo-aliasing et registre de page. Pour les données, les 1024 adresses étaient découpées en 4 pages de 256 adresses. Pour la ROM, les 4096 adresses étaient découpées en 16 pages de 256 adresses. Localiser une donnée dans une page ne requiert que 8 bits, 2/4 bits supplémentaires permettent de sélectionner la page voulue. Le registre de page était dans le processeur lui-même, et était relié aux sorties du processeur nommées CM-RAM 0, 1, 2 et 3. Les 4 sorties encodaient un nombre qui permet de sélectionner le numéro de page voulu.
Le registre de page fait 5 bits : un pour distinguer RAM et ROM, 4 bits pour sélectionner la page voulue. L'avantage est que la carte mère gère au maximum 16 chips de RAM, ce qui colle parfaitement avec les 4 utilisés pour sélectionner une page. Un chip de RAM correspond à une page, et chacun est activé ou désactivé suivant la page sélectionnée. Pour cela, il suffit d'ajouter un décodeur sur la carte mère, qui prend les 4 bits du registre de page et fournit les signaux Chip Select aux différents chips de RAM.
Reste alors à utiliser les 8 bits d'adresse à l'intérieur d'un chip de RAM. Le 4004 permettait de concaténer deux registres d'indice de 4 bits pour former une adresse de 8 bits. Les instructions d'accès mémoire pouvaient ainsi préciser une paire de registre d'indice pour préciser quelle adresse lire/écrire. Idem pour les branchements indirects : le processeur supportait une instruction de branchement indirect qui précisait l'adresse dans une paire de registres d'indice. Les registres d'indice sont donc assez mal nommés sur cette architecture, vu qu'ils peuvent servir soit de registre d'indice, soit de demi-registre d'adresse. Il s'agit là du système de pseudo-aliasing des registres, mais appliqué aux registres d'indice.
L'Intel 4004 gérait deux instructions pour gérer les adresses mémoires. La première, l'instruction DCL (''Designate Command Line'') configure le registre de page. Elle prend en entrée un numéro de page et le copie dans le registre de page. L'opérande peut provenir d'un registre d'indice ou de l'accumulateur. La seconde, l'instruction SRC (''Send Register Control'') concatène deux registres d'indice pour obtenir une adresse de 8 bits. Un accès mémoire se fait donc en maximum trois instructions : une qui configure le registre de page si ce n'est pas déjà fait, une instruction SRC pour envoyer l'adresse, et une troisième instruction qui dit s'il faut faire une lecture ou une écriture.
===La microarchitecture de l'Intel 4004===
Il incorporait une pile d'adresse de retour intégrée au processeur. La pile d'adresse acceptait exactement 3 adresses maximum. Elle était regroupée avec le ''program counter'' dans un banc de registre, de 4 registres. Le ''program counter'' et le pointeur de pile faisaient chacun 12 bits, soit trois nibble. Ils étaient incrémentés par un incrémenteur dédié.
SI on omet le registre de page et la pile d'adresse, le 4004 est une architecture à accumulateur des plus classiques, avec un bus interne unique, un banc de registre pour les registres d'indices, un accumulateur relié à une unité de calcul. Les registres d'indice étaient dans un banc de registre séparés, car ils faisaient 4 bits chacun, contrairement au pointeur de pile et le ''program counter''. Un détail important est que les bancs de registres du 4004 étaient implémentés avec de la DRAM, et non des registres usuels fabriqués avec des bascules 1 bit.
[[File:Microarchitecture de l'Intel 4004.png|centre|vignette|upright=2.5|Microarchitecture de l'Intel 4004]]
<noinclude>
{{NavChapitre | book=Fonctionnement d'un ordinateur
| prev=Les architectures à pile et mémoire-mémoire
| prevText=Les architectures à pile et mémoire-mémoire
| next=Les processeurs de traitement du signal
| nextText=Les processeurs de traitement du signal
}}
</noinclude>
jfiz1ylqnlbfww0ldz2cz43mq6s12j1
765735
765734
2026-05-01T20:45:46Z
Mewtow
31375
/* Les microcontrôleurs Intel 8051/8031 */
765735
wikitext
text/x-wiki
Nous avons déjà abordé la notion de processeur 8, 16, 32, 64 bits. Elle désigne la taille des registres généraux, ou de l'accumulateur. De nos jours, les processeurs 32 et 64 bits sont la norme, mais les premiers micro-processeurs étaient des processeurs 4 et 8, avant de passer rapidement au 16 bits. La raison est que leur budget en transistor limité faisait qu'on ne pouvait pas utiliser une ALU trop grande : une ALU 8 bit prend deux fois moins de place et de transistors qu'une ALU 16 bits. Cependant, les processeurs 8 bits avaient de sérieuses limitations qui étaient compensées par diverses solutions. Dans ce chapitre, nous allons faire une revue rapide des processeurs 8 bits et de leurs fonctionnalités.
La principale limitation des CPU 8 bits était l'adressage : des registres de 8 bits limitaient l'espace d'adressage à seulement 256 adresses, soit à peine 256 octets ! Intuitivement, on se dit que 256 octets est purement impraticable, on ne peut rien faire d'intéressant avec seulement 256 de RAM + ROM. Et c'est partiellement vrai. L'adage veut que 16 bits est la taille minimale intéressante, la limite à partir de laquelle on a assez de mémoire RAM/ROM pour coder des applications intéressantes. Mais 256 octets de RAM est largement suffisant sur de nombreux systèmes embarqués simples s'en accommodent : des caisses enregistreuses, des systèmes de régulation de feu de circulation, etc.
Pour les applications demandant plus de mémoire RAM, les CPU de l'époque contournaient la limitation de 256 octets de RAM avec de nombreux stratagèmes. Dans ce qui va suivre, nous allons séparer les CPU 8 bits selon qu'ils utilisent une architecture Harvard ou une architecture Von Neumann. La raison est qu'une architecture Harvard permet en soi de contourner partiellement ce problème d'adressage. Les choses sont plus compliquées avec une architecture Von Neumann.
==Les processeurs 8/16 bits à architecture Harvard ==
La première solution est d'utiliser une architecture Harvard. Le processeur 8 bit a alors deux espaces d'adressage : un pour la RAM, un autre pour la ROM. Et les deux utilisent des adresses de taille différente. La ROM est reliée à un bus d'adresse de 16 bits, alors que la RAM est elle connectée à un bus d'adresse de 8 bits. La RAM est donc limitée à 256 octets, alors que la ROM peut monter jusqu'à 64 kibioctets. Mine de rien, faire ainsi est largement suffisant.
Pour encore améliorer la situation, il est possible d'utiliser une architecture Harvard modifiée, qui permet de lire des données depuis la mémoire ROM. Cela réduit encore plus les besoins en mémoire RAM. Les constantes manipulées par le programme sont mémorisées en ROM, lues depuis la ROM, au lieu d'être chargées en RAM. Avec ce genre de stratagèmes, 256 octets de RAM est largement suffisant sur de nombreux systèmes, à condition qu'on ait assez de ROM pour coder un programme digne de ce nom. Par exemple, de nombreux systèmes embarqués simples s'en accommodent : des caisses enregistreuses, des systèmes de régulation de feu de circulation, etc.
Les processeurs 8 bits intègrent parfois les 256 octets de RAM directement dans le processeur, dans le banc de registres ! Beaucoup en implémentaient moins, avec par exemple seulement 64 octets de RAM, ou 32 octets, ou 128 octets. L'avantage est que cela élimine le bus pour les données, ce qui économise beaucoup de broches sur le circuit intégré du CPU. Et pour les applications demandant plus de RAM, on pouvait ajouter un circuit séparé qui permettait d'adresser une RAM plus grande. Et c'est ce qui explique que cette solution est beaucoup utilisée sur les microcontrôleurs peu puissants. Les exemples qui vont suivre devraient vous convaincre.
: Les processeurs de ce type implémentent des optimisations pour adresser plus de 256 octets de RAM. La plus connue est la commutation de banques. Mais nous n'avons pas encore abordé celle-ci, et il faudra attendre le chapitre sur l'espace d'adressage pour cela.
===Les microcontrôleurs PIC===
Les '''microcontrôleurs PIC''' regroupent des microcontrôleurs allant de microcontrôleurs 8 bits aux performances très faible, à des microcontrôleurs 32 bits bien plus puissants. Les microcontrôleurs PIC sont très utilisés dans l'embarqué ou d'informatique industrielle. Ils sont vendu à des volumes assez impressionnants, plusieurs millions par an. Et si vous avez ou êtes en train de faire des études d'électronique, je parie que vous les avez déjà vu en classe, ou que ce ne saurait tarder. Dans ce qui suit, nous allons nous concentrer sur les microcontrôleurs PIC 8 bits, à savoir les PIC 16, 16 et 18. Les PIC 24, qui sont des microcontrôleurs 16 bits, ne seront pas abordés.
Les microcontrôleurs PIC 8 bits sont une architecture Harvard, comme dit plus haut. Il y a aussi des registres pour les entrées et sorties. Les registres d'entrée-sortie permettent de lire ou écrire sur un port d'entrée-sortie ou de lire un ''timer''. En clair, les PIC ont un espace d'adressage séparé pour les entrées-sorties.
La mémoire ROM des PIC va de 1024 instructions à 4096 instructions. En comparaison, la mémoire RAM des microcontrôleurs PIC ne peut pas dépasser 256 adresses, et elle est encore plus petite en pratique sur certains modèles. Pour donner un exemple, le PIC16F84 a une RAM composée de 68 "registres" de 8 bits. Le terme "registres" devrait vous faire tiquer, mais c'est bien le terme utilisé dans la documentation des PIC. Et il faut admettre que la différence entre banc de registre et SRAM intégrée est floue, mais nous expliquerons pourquoi dans quelques paragraphes.
: Les PIC 18 peuvent adresser plus de 256 octets de RAM en utilisant la commutation de banques, une technique qui sera abordée dans plusieurs chapitres.
[[File:DocPIC16F84 3.png|centre|vignette|upright=3|Espaces d'adressage du PIC16F84.]]
Un détail est que la SRAM n'a qu'un seul port qui sert à la fois pour les lectures et écritures. Pour compenser, les PIC sont des architectures à accumulateur, où une opérande est lue depuis la SRAM, l'autre depuis l'accumulateur. Leur implémentation de l'accumulateur ajoute une petite subtilité : le résultat d'une opération arithmétique peut être enregistré ailleurs que dans l'accumulateur. Le résultat peut aussi remplacer la seconde opérande, celle lue en mémoire RAM. Dit autrement, le résultat est enregistré dans l'adresse mémoire source. Les instructions de calcul ont le choix : un bit dans leur encodage précise où enregistrer le résultat.
{|
|-
|[[File:DocPIC16F84 4.png|centre|vignette|upright=2|Microarchitecture simplifiée d'un microcontroleur PIC (ici, un 16F84).]]
|[[File:DocPIC16F84 5.png|centre|vignette|upright=2|Microarchitecture simplifiée d'un microcontroleur PIC (ici, un 16F84), avec les branchements directs.]]
|}
Outre l'accumulateur, les PIC disposent de registres de contrôle, d'un ''program counter'', d'un registre d'état, et d'un pointeur de pile. Un détail très important est que les registres sont mappés en mémoire, à quelques exceptions près ! En clair, on peut y accéder en lisant/écrivant à une adresse mémoire bien précise. Les seules registres qui ne sont pas mappés en mémoire sont l'accumulateur, les registres d'entrée-sortie, et la pile d'adresses de retour intégrée au processeur (voir plus bas). Par exemple, sur les modèles 16F, l'espace d'adressage fait 128 octets, dont 32 sont réservés aux registres du processeur, ce qui fait que seules 96 octets sont adressables comme de la RAM. Mais les 128 octets sont un seul et unique SRAM dans le processeur. Ce qui explique qu'il est difficile de séparer banc de registre et RAM principale sur ce processeur : les deux sont fusionnées ! Cela gaspille quelques adresses mémoire, mais permet une implémentation plus simple, avec un banc de registre unique.
: Les modèles PIC 17 ont rendu l'accumulateur mappé en mémoire RAM !
[[File:DocPIC16F84.png|centre|vignette|upright=2|DocPIC16F84]]
La petite taille de la ROM d'un PIC n'est pas une surprise. Les architectures 8 bits sont conçues pour ne pas utiliser beaucoup de transistors et être très simples. Aussi, utiliser une petite ROM est nécessaire. Mais il faut aussi adapter le jeu d'instruction, pour qu'il ait une bonne densité de code. Par exemple, il faut faire en sorte d'avoir des instructions assez courtes. Si les instructions font 16 bits au lieu de 32, on divise par deux le nombre de transistors nécessaire pour la mémoire ROM. La conséquence est que le jeu d’instruction des PIC est adapté à cette contrainte.
Les microcontrôleurs PIC utilisent un jeu d'instruction propriétaire, dont les instructions sont très petites. Les premières versions du jeu d'instruction utilisaient des instructions codées sur 12 bits, dont 5 pour l'adresse mémoire de la seconde opérande. Pour les branchements, 3 bits étaient utilisés pour l'opcode, 9 pour l'adresse de destination. Par la suite, les instructions ont été étendues à 13 bits sur les PIC1670, puis à 14, 15 et 16 bits. Les adresses ont alors été élargies, ce qui permet d'adresser en peu plus de mémoire RAM.
Il est intéressant de regarder comment les PIC font pour obtenir des instructions aussi courtes. Premièrement, le fait d'utiliser une architecture à accumulateur, couplé à une RAM très petite aident grandement. Les architectures à accumulateur ont besoin de préciser un opcode et une adresse mémoire pour chaque instruction, pas besoin de préciser de noms de registres ni le mode d'adressage. La taille des adresses mémoire est censé être un problème pour la densité de code, mais les adresses d'un processeur 8 bits font 8 bits. On peut alors avoir un jeu d'instruction étoffé, en utilisant des instructions 16 bits, qui concatènent un opcode et une adresse mémoire, d'un octet chacun.
Mais d'autres optimisations permettent d'avoir une bonne densité de code. Les PIC ont des branchements pour les appels et retour de fonction. Les PIC incorporent une pile d'appel de retour, qui fait 2 à 8 adresses suivant les modèles. Elle permet d'économiser quelques registres, car la pile d'appel n'est pas mappé dans l'espace d'adressage, elle n'est pas adressable. On économise ainsi 2 à 8 registres, sur 32-256 registres. De plus, cela simplifie l'encodage des instructions d'appel/retour de fonction, qui n'ont pas à préciser où enregistre l'adresse de retour.
Les PIC n'ont pas d'instructions de branchement conditionnels, ils font avec une SKIP instruction et des branchements inconditionnels. Du moins, c'est le principe, car si vous regardez la liste des instructions ci-dessous, vous verrez qu'il n'y a pas d'instruction SKIP. A la place, les instructions SKIP sont fusionnées avec d'autres instructions. Elles sont notamment fusionnées avec les instructions d'incrémentation et de décrémentation. Les PIC supportent une incrémentation normale, une décrémentation normale, une décrémentation fusionnée avec une instruction SKIP, et une incrémentation fusionnée avec une instruction SKIP. Les deux dernières incrémentent/décrémentent l'accumulateur et SKIP l'instruction suivante si le résultat est zéro. Elles permettent de fortement simplifier l'implémentation des boucles qui s'exécutent tant que leur compteur atteint zéro.
Les PIC disposent aussi d'instructions de manipulation de bit, pour tester/masquer un bit dans une opérande, 4 en tout. Il y a en a 4 en tout : mettre à 0, mettre à 1, tester si bit = 1, tester si bit = 0. Les instructions qui testent un bit prennent leur opérande dans l'accumulateur. Elles font le test du bit et décident s'il faut skipper l'instruction suivante ou non. Il y a aussi deux instructions de rotation à gauche et droite, qui tiennent compte de la retenue mémorisée dans le registre d'état. Par contre, il n'y a pas d'instructions de décalages, qui peuvent être émulées avec une rotation suivie d'un ET bit à bit. Mentionnons aussi une instruction pour inverser deux ''nibbles'' dans un octet.
Les modèles haute performance ajoutent des instructions d'addition avec retenue entrante, idem pour la soustraction. De telles instructions ssont très utiles pour faire des additions/soustractions sur des opérandes de 16 bits. Le processeur a beau être un CPU 8 bits, il peut être utilisé pour faire des calculs 16 bits, la performance est alors amoindrie, mais ce n'est pas un problème pour les applications d'un tel microcontroleur.
Les modèles intiaux, comme les PIC 10 et 12, ne supportaient pas les interruptions, mais c'est chose réglé sur les modèles plus récents. Ils ont même des registres séparés pour les interruptions et les programmes normaux. De plus, ils intégrent nativement un ''watchdog timer''.
{|class="wikitable" style="text-align:center"
|+ Jeu d'instruction des dodèles PCI 16
|-
! colspan="5" | Instructions diverses
|-
| colspan="3" | 00 0000 0000 0000 || NOP || Ne fait rien
|-
| colspan="3" | 00 0000 0000 1000 || RETURN || Instruction de retour pour une fonction
|-
| colspan="3" | 00 0000 0000 1001 || NOP || Instruction de retour pour une interruption
|-
| colspan="3" | 00 0000 0110 0011 || SLEEP || Mise en veille
|-
| colspan="3" | 00 0000 0110 0100 || CLRWDT || RESET le ''watchdog timer'', intégré dans le PIC
|-
! colspan="5" | Instructions de manipulation de bit
|-
| 0100 || Position du bit dans l'opérande || Adresse mémoire || BCF || Met le bit à 1
|-
| 0101 || Position du bit dans l'opérande || Adresse mémoire || BSF || Met le bit à 0
|-
| 0110 || Position du bit dans l'opérande || Adresse mémoire || BTFSC || Teste si le bit adressé est à 1
|-
| 0111 || Position du bit dans l'opérande || Adresse mémoire || BTFSS || Teste si le bit adressé est à 0
|-
! colspan="5" | Branchements
|-
| colspan="2" | 100 || Adresse mémoire || CALL || Appel de fonction
|-
| colspan="2" | 100 || Adresse mémoire || GOTO || Branchement inconditionnel
|-
! colspan="5" | Instructions logiques/arithmétiques avec opérande lue en mémoire RAM
|-
| colspan="5" | ''Le bit '''d''' dans l'opcode indique la destination : accumulateur ou adresse mémoire''.
|-
| colspan="2" | 0000001 || Adresse mémoire || MOVWF || Store (accumulateur vers destination)
|-
| colspan="2" | 000001d || Adresse mémoire || MOVWF || Met à zéro la destination (adresse ou registre)
|-
| colspan="2" | 000001d || Adresse mémoire || SUBWF || Soustraction
|-
| colspan="2" | 000010d|| Adresse mémoire || DECF || Décrémentation
|-
| colspan="2" | 000100d|| Adresse mémoire || IORWF || OU bit à bit
|-
| colspan="2" | 000101d|| Adresse mémoire || ANDWF || ET bit à bit
|-
| colspan="2" | 000110d || Adresse mémoire || XORWF || XOR bit à bit
|-
| colspan="2" | 000111d || Adresse mémoire || ADDWF VWF || Addition
|-
| colspan="2" | 001000d || Adresse mémoire || MOVF || LOAD
|-
| colspan="2" | 001001d || Adresse mémoire || COMF || NOT bit à bit
|-
| colspan="2" | 001010d || Adresse mémoire || INCF || Incrémentation
|-
| colspan="2" | 001011d || Adresse mémoire || DECFSZ || Décrémentation, puis instruction SKIP si résultat = 0
|-
| colspan="2" | 001100d || Adresse mémoire || RRF || Rotation à droite avec retenue entrante
|-
| colspan="2" | 001101d || Adresse mémoire || RLF || Rotation à gauche avec retenue entrante
|-
| colspan="2" | 001110d || Adresse mémoire || SWAPF || Echange deux ''niblle'' dans un octet
|-
| colspan="2" | 001111d || Adresse mémoire || INCFSZ || Incrémentation, puis instruction SKIP si résultat = 0
|-
! colspan="5" | Instructions logiques/arithmétiques avec constante immédiate
|-
| colspan="2" | 1100xx || Constante immédiate (8bits) || MOVLW || Copie constante dans accumulateur
|-
| colspan="2" | 1101xx || Constante immédiate (8bits) || RETLW || MOV fusionné avec un retour de fonction
|-
| colspan="2" | 111000 || Constante immédiate (8bits) || IORLW || OU
|-
| colspan="2" | 111001 || Constante immédiate (8bits) || ANDLW || ET
|-
| colspan="2" | 111010 || Constante immédiate (8bits) || XORLW || XOR
|-
| colspan="2" | 11110x || Constante immédiate (8bits) || SUBLW || Soustraction
|-
| colspan="2" | 11111x || Constante immédiate (8bits) || ADDLW || Addition
|}
Les PIC gèrent l'adressage absolu et immédiat, mais pas plus. L'adressage absolu, celui où l'adresse est intégrée dans l'instruction, est très simple à implémenter. Les adresses prennent moins d'un octet, vu que la taille de la RAM est très petite, les adresses sont très courtes, les intégrer dans des instructions elles-mêmes courtes n'est pas un problème. L'adresse est encodée sur 5 à 7 bits, selon le modèle, ce qui permet d'adresser entre 32 et 128 octets.
Les PIC ne supportent pas l'adressage indirect, mais peuvent l'émuler grâce à un '''registre d'adresse''' dédié. Il s'agit du registre FSR, qui mémorise l'adresse à lire/écrire. Il est possible de copier un pointeur dedans, qui provient soit de l'accumulateur, soit de la mémoire SRAM. Dans les deux cas, la donnée adressée est lue ou écrite dans un registre INDR, est un registre d’interfaçage rendu adressable. Le registre FSR est directement connecté sur le bus d'adresse.
Les modèles de base se débrouillent avec un registre FSR et un registre INDR, mais les modèles plus performants ont deux ou trois copies de chaque registre. Les modèles PIC18 ajoutent aussi des instructions LOAD/STORE qui émulent les modes d'adressage à post- ou pré-incrément/décrément, et le mode d'adressage "Base + Indice + Décalage", encore une fois en utilisant les registres FSR et INDR.
Avec tout ce qu'on vient de dire, vous devriez pouvoir comprendre la microarchitecture d'un PIC, qui est résumée dans ce schéma.
[[File:DocPIC16F84 all.png|centre|vignette|upright=2.5|Microarchitecture du PIC16F84.]]
===Les microcontrôleurs Intel 8051/8031===
[[File:Pinagem8031.jpg|vignette|Broches du 8051.]]
Les microcontrôleurs Intel 8051/8031 sont des microcontrôleurs 8 bits, commercialisés par Intel. Elle contient un processeur 8/16 bits, 4 kibioctets de mémoire ROM, une RAM de 128 octets. Niveau entrées-sorties, il contient un port série, ainsi que 4 ports d'un octet chacun sur lesquels il peut lire ou écrire. Il supporte des interruptions, avec un contrôleur d'interruption intégré. Il contient aussi deux ''timers'' de 16 bits chacun, qui déclenchent des interruptions quand ils tombent à zéro ou à une valeur configurable.
Ils ont de nombreuses ressemblances avec les microcontrôleurs PIC. Le processeur du 8051 est une architecture à accumulateur de 8 bits, ses registres sont mappés en mémoire RAM, il a un registre d'adresse dédié à l'adressage indirect et j'en passe. Mais il y a aussi des différences notables. Par exemple, le 8051 n'a pas de pile d'adresse de retour, contrairement aux processeurs PIC. Il fait autrement, à savoir qu'il gère une pile d'appel placée en mémoire RAM,ce qui est très différent. De même, il utilise deux accumulateurs nommés A et B.
Une autre différence est que les registres sont placés dans un banc de registre à part des 128 octets de SRAM. Il y a une SRAM séparée du banc de registre, contrairement à ce qu'on a sur les microcontrôleurs PIC. Par contre, les registres du processeur sont mappés en mémoire RAM, y compris les deux accumulateurs, le registre d'état, le ''program counter'', et bien d'autres. Mais le fait qu'ils soient séparés de la SRAM permet de les mapper dans l'espace d'adressage sans marcher sur les pieds de la SRAM. Vu que le processeur peut adresser 256 octets, mais n'a que 128 octets de SRAM, les registres sont mappés dans les 128 octets restants. Les entrées-sorties aussi sont mappées dans ces 128 octets restants.
L'ensemble utilise une architecture Harvard, contrairement à ce que pourrait faire croire le schéma ci-dessous.
[[File:Arkitektura mikro kontrollerit Intel 8051.png|centre|vignette|upright=2.5|Microcontrôleur 8051]]
Voyons maintenant la ''memory map'' de ce microcontroleur, pour la SRAM. Un point assez original est que 16 octets de la SRAM sont adressables bit par bit, à savoir que chaque bit a sa propre adresse. En tout, cela permet d'adresser 128 bits (16 adresses * 8 bits par octet adressé). L'intervalle bit-adressable va de l'adresse 32 (inclue) à l'adresse 47 (inclue).
Les 32 premières adresses sont réservés à la mémoire SRAM, c'est 32 octets de RAM utilisable à volonté par le programmeur. Les 16 adresses suivantes sont les 16 adresses bit-adressables mentionnées dans le paragraphe précédent. Les 96 octets suivants sont de la mémoire RAM adressable, affectée par défaut à la pile d'appel mais adressable via adressage direct si besoin. Les 128 octets de poids fort sont réservés aux registres du processeur et aux entrée-sorties mappées en mémoire.
[[File:Memory map du 8051.png|centre|vignette|upright=2|Memory map du 8051]]
Les 128 octets au sommet de l'espace d'adressage sont décrit dans le schéma ci-dessous. On voit que les deux accumulateurs sont mappés dedans, de même que le registre d'état PSW, le registre de configuration des interruptions IE (''Interrupt Enable''), et quelques autres. Les ports d'entrée-sortie sont aussi mappés dedans, que ce soit les 4 ports parallèles ou le port série. Les deux ''timers'' sont aussi mappés dedans, ainsi que leurs registres de configuration.
Une partie des octets sont bit-adressables, et cette partie inclus les registres du processeur et les ports d'entrées-sorties. Pour le dire autrement, chaque bit d'un port d'entrée-sortie a sa propre adresse mémoire, qui permet de le sélectionner. Par contre, les registres pour les ''timers'' ne sont pas dedans, sauf pour le troisième ajoutés dans des extensions du 8051.
[[File:MFrey SFR MCS-51.svg|centre|vignette|upright=2|Memory map des 128 octets de poids fort du 8051]]
Pour ce qui est des instructions, le 8051 supporte les opérations de multiplications et de divisions, contrairement aux microcontrôleurs PIC qui se limitaient à l'addition et la soustraction. Une autre particularité est que le processeur incorpore une '''unité de calcul de 1 bit'''. Elle permet de faire des opérations sur des bits, avec 17 instructions possibles au total. L'ALU de 1 bit est reliée à un accumulateur de 1 bit et 32 registres de 1 bits. Elle peut lire des opérandes de 1 bit en mémoire RAM ou sur les ports d'entrée-sortie, pour les portions qui sont bit-adressables.
Le processeur supporte aussi l'adressage indirect dans la SRAM, mais celui-ci fonctionne différemment comparé aux microcontrôleurs PIC. Il n'y a pas deux registres d'adresse dédiés, séparés des autres. A la place, l'adressage indiorect est implémenté normalement, en utilisant les registres généraux. Par contre, il y a une contrainte : seuls les deux premiers registres R0 et R1 sont utilisables. En clair, seuls ces deux registres peuvent contenir une adresse, un pointeur.
Le 8051 peut communiquer avec une mémoire RAM externe, en plus de la SRAM interne. Pour cela, le processeur du 8051 avait un espace d'adressage séparé pour la RAM externe, capable d'adresser 64 kibioctets. Communiquer avec cet espace d'adressage se faisait avec des instructions d'accès mémoire séparées des autres, pas les LOAD/STORE normaux. Par exemple, l'instruction MOVX lisaient une donnée dans cet espace d'adressage, et la copiait dans l'accumulateur ou la SRAM. Pour envoyer l'adresse à lire/écrire à cette RAM externe, le processeur incorporait un registre d'adresse dédié. Il s'agit du '''registre DPTR''', qui contient une adresse de 16 bits. Le processeur devait copier l'adresse à lire/écrire dedans, puis lancer l'instruction MOVX.
===Le Fairchild F8 et la console de jeu Fairchild Channel F===
Un autre exemple est la Fairchild F8 de la défunte entreprise Fairchild Semiconductor. Il incorpore un processeur 8 bits, c'est à dire que le processeur fait des calculs sur des entiers de 8 bits maximum, une mémoire RAM de 64 octets, ainsi qu'une mémoire ROM de 1 kibioctet. Les 64 octets de RAM sont certes très peu, mais c'est suffisant pour certaines applications simples, comme les caisses automatiques de l'époque, ou des applications embarquées. Et de toute façon, il est possible d'ajouter de la mémoire RAM supplémentaire si les 64 octets de RAM intégrée ne suffisent pas. Le système était donc modulaire, adaptable selon les besoins, peu cher pour son implémentation minimale sans RAM en plus.
Vu qu'il s'agit d'un des tout premiers ordinateurs, il est sorti à une époque où la technologie était rudimentaire. À cette époque, le processeur était composé de pièces détachées qu'il fallait souder ensemble pour obtenir un processeur fonctionnel. Ce n'est que plus tard qu'est apparu le micro-processeur, qui regroupe un processeur complet dans un seul circuit intégré. Le résultat est que le processeur du Fairchild F8 est coupé en deux, l'unité de calcul et l'unité de contrôle sont placés dans des pièces détachées séparés.
Le microcontrôleur est composé de trois à quatre pièces détachées, certaines étant optionnelles. La première est le '''3850 CPU''', qui regroupe l'unité de calcul et la mémoire RAM intégrée. La seconde est le PSU (''3851 Program Storage Unit''), qui regroupe la mémoire ROM et l'unité de contrôle, ''program counter'' inclut. S'il y a besoin d'utiliser plus de RAM, il faut ajouter un circuit d’interface mémoire, qui est au choix le ''3852 Dynamic Memory Interface'' (DMI) ou le ''3853 Static Memory Interface'', le premier étant connecté à une mémoire de type DRAM, l'autre à une SRAM (nous verrons ce que sont les DRAM et les SRAM dans le prochain chapitre).
[[File:Fairchild F8.png|centre|vignette|upright=2|Fairchild F8]]
Le système minimal est composé d'un PSU et d'un 3850, sans les circuits d'interface mémoire. Le tout donne un système avec un processeur 8 bit, 64 octets de RAM et 1 kibioctet de ROM, les deux mémoires étant intégrées dans le "processeur". Le processeur gérait 4 entrées-sorties, chacune étant reliée avec un bus de 8 bit au processeur. Au passage, en 1977, Mostek a créé un microcontrôleur qui regroupe un PSU et un 3850 : le Mostek 3870. Le système minimal n'avait pas de bus d'adresse, vu que la RAM était intégrée au processeur. C'est les 3852 et 3853 qui ajoutaient un bus d'adresse. Ils ajoutent un bus d'adresse de 16 bits, ce qui permet d'adresser 64 kibioctets de RAM.
[[File:Fairchild-Channel-F.jpg|vignette|un Fairchild Channel F]]
Le Fairchild F8 a été utilisé dans la Fairchild Channel F, une des toute première console de seconde génération, à savoir des consoles qui utilisaient des cartouches de jeu. Avant les consoles de seconde génération, les consoles étaient non-programmables. Elles étaient conçues pour faire tourner un jeu précis, aucun autre, le jeu étant implémenté dans leurs circuits.
La Fairchild Channel F est composé du système minimal, auquel on a ajouté une carte son rudimentaire et 2 kibioctets de mémoire vidéo. La mémoire vidéo sert uniquement pour afficher des images à l'écran : on écrit l'image à afficher dedans, un circuit vidéo se charge de l'afficher à l'écran automatiquement. Le processeur ne fait qu'écrire dans cette RAM vidéo, il ne peut pas en lire le contenu. De la RAM supplémentaire peut cependant être ajoutée dans les cartouches de jeu.
===Le HP Nanoprocessor : un processeur sans ALU===
Un dernier exemple est celui du processeur HP Nanoprocessor, de l'entreprise HP. Il a été commercialisé en 1974, en même temps que les premiers micro-processeurs d'Intel. Tous les processeurs de l'époque étaient des processeurs 8 bits et le HP Nanoprocessor ne faisait pas exception. Ce n'était pas un processeur haute performance, il était destiné à des applications d'informatique industrielle ou embarquée. D'ailleurs, il utilisait des transistors de type metal-gate, peu performants, là où ses contemporains utilisait des transistors en silicium, plus performants.
Mais une caractéristique qui rend cela encore plus claire est qu'il n'y a pas d'ALU ! En effet, ce processeur est incapable de faire des additions, des soustractions ou autres opérations simples ! Il est cependant capable d'effectuer des incrémentations et décrémentations, des décalages, des opérations logiques comme des ET/OU/NON/XOR et bien d'autres. Il supporte en tout 48 instructions, avec un support limité des modes d'adressage indirects. Les instructions de branchement étaient des instructions SKIP, il n'y avait pas d'instructions de branchement généralistes.
Pour ce qui est des registres, il disposait de 16 registres de 8 bits et d'un accumulateur. Niveau mémoire, il était relié à une mémoire ROM, rien de plus. Il n'avait de RAM supplémentaire qu'on pouvait lui adjoindre, il devait se débrouiller avec seulement ses registres. Et cela ne posait pas de problèmes pour son usage. Seul le mode d'adressage indirect à registre est supporté, il n'y a pas de registres d'indices. Ce mode d'adressage permet de lire des données en mémoire ROM, la ROM pouvant contenir des tableaux de valeurs constantes.
: Il est possible de lui adjoindre de la RAM via les ports d'entrée-sortie, ainsi qu'une ALU, mais RAM et ALU sont traités comme des périphériques avec lesquels on communique, ils ne sont pas intégrés au processeur.
Niveau micro-architecture, il incorporait une unité de calcul logique et un circuit comparateur. Le comparateur était un circuit comparateur série des plus basiques, qui était utilisé pour les instructions de branchement et associées. L'unité de calcul logique gérait des incrémentations/décrémentation, des décalages, les opérations logiques et quelques autres. L'unité de calcul logique était bit-slicée, à savoir conçue en assemblant 8 ALU de 1 bit chacune, enchainées en série. Le tout était combiné à des circuits de ''carry skip''.
[[File:Unité de calcul du HP nanonprocessor.png|centre|vignette|upright=2|Unité de calcul du HP nanoprocessor]]
Son unité de décodage d'instruction était très simple, essentiellement basée sur des portes NOR, grâce à un encodage efficace des instructions machine. Le ''program counter'' fait 11 bits, ce qui permet d'adresser une ROM de 2 kibioctets. Le ''program counter'' était relié à un circuit incrémenteur qui gérait les isntructions SKIP (il pouvait incrémenter le ''program counter'' par pas de 1 ou de 2 en cas de SKIP). Le processeur contient aussi deux registres, qui servent en quelque sorte de pile d'adresse de retour. Un premier registre mémorise l'adresse de retour d'une fonction, l'autre mémorise le ''program counter'' lors d'une interruption, pour savoir où brancher à la fin de l'interruption.
[[File:HP nanoprocessor.png|centre|vignette|upright=2.5|HP nanoprocessor]]
Fait intéressant, le concepteur du processeur a gracieusement donné les masques utilisés pour graver le silicium du processeur au site [https://www.cpushack.com/ CPU Shack]. Les masques en question sont disponibles ici :
* [https://www.cpushack.com/2020/08/20/hp-nanoprocessor-mask-set/ HP NanoProcessor Mask Set]
* [https://www.cpushack.com/2020/08/09/the-forgotten-ones-hp-nanoprocessor/ The Forgotten Ones: HP Nanoprocessor]
Les masques ont été analysés par Ken Shirrif dans cet article de blog :
* [https://www.righto.com/2020/09/hp-nanoprocessor-part-ii-reverse.html HP Nanoprocessor part II: Reverse-engineering the circuits from the masks]
==Les processeurs 8/16 bits à architecture Von Neumann==
L'usage d'une architecture Harvard est une solution pour adresser plus de mémoire avec des CPU 8 bits. Mais plusieurs microprocesseurs commerciaux n'utilisaient pas cette solution. À la place, c'était des architectures Von Neumann, mais qui étaient capables de gérer des adresses de 16 bits. Les données faisaient 8 bits, les registres faisaient 8 bits, mais quelques techniques permettaient de gérer des adresses de 16 bits. Nous parlerons de '''processeurs 8/16 bits''' pour les désigner, et nous allons les étudier à part.
Un point important est que la gestion d'adresses de 16 bits permet d'adresser 64 kibioctets, qui peuvent être remplis avec de la RAM et de la ROM. On a donc le meilleur des mondes : 64 kibioctets de mémoire, mais avec des données de 8 bits et les économies de circuit qui vont avec. L'avantage est que le processeur peut maintenant gérer une vraie pile d'appel, pas seulement une pile d'adresse de retour. Il lui suffit pour cela d'intégrer un pointeur de pile codé sur 16 bits.
===Les modes d'adressage par page des CPU Motorola===
Les processeurs Motorola 8 bits étaient des processeurs 8 bits avec un bus d'adresse de 16 bits. C'était des processeurs à accumulateur incorporant deux registres d'indice, un registre d'état, un pointeur de pile, et un ''program counter''. Tous les registres sont reliés au bus d'adresse, sauf le registre d'état et l’accumulateur. Tous les registres font 8 bits, sauf le ''program counter''. La pile est câblée pour être dans un bloc de 256 octets compris entre l'adresse 1 0000 0000 et l'adresse 1 1111 1111, ce qui fait que son adressage se fait avec un seul octet.
[[File:6502-architecture.svg|centre|vignette|upright=1.5|Architecture simplifiée du 6502.</br> X et Y : registres d'indice ;</br> S : le pointeur de pile ;</br> A : accumulateur ;</br>P : registre d'état.</br>]]
Les processeurs Motorola 8 bits utilisaient une méthode simple pour adresser 64 kibioctets de RAM, avec des registres de 8 bits. Pour cela, ils utilisaient une variante de l'adressage base + décalage. Elle améliore l'adressage absolu, qui intègre l'adresse à lire/écrire dans l'instruction elle-même. L'adresse en question est de 8 bits et n'encode que les 8 bits de poids faible de l'adresse, les 8 bits de poids fort sont dans un '''registre de page''' adressé implicitement. L'adresse finale est obtenue en concaténant ce registre avec l'adresse mémoire intégrée dans l’instruction. Le résultat est que la mémoire était découpée en blocs de 256 consécutifs, chacun pouvant servir de fenêtre de 256 octets. Une page est réservée pour la pile, la seconde, comme dit plus haut.
Formellement, ce mode d'adressage a des ressemblances avec la commutation de banques, une technique qu'on verra dans les chapitres sur l'espace d'adressage et la mémoire virtuelle. Mais ce n'en est pas du tout : le registre de page est utilisé uniquement pour les accès mémoire avec le mode d'adressage base + décalage, mais pas pour les autres accès mémoire, qui gèrent des adresses complètes. Notons que l'usage d'un registre de page dédié fait que celui-ci est adressé implicitement.
Il faut noter que la technique a été utilisée sur des processeurs 16 bits, pour contourner la petite taille des instructions. Un exemple est celui du HP 2100, un processeur 16 bits. Il avait un registre de page de 5 bits et encodait 10 bits d'adresse dans ses instructions. Ses instructions d'accès mémoire disposaient d'un bit qui choisit quel mode d'adressage utiliser. S'il était à 0, l'adressage absolu était utilisé, le registre de page n'était pas utilisé. Mais s'il était à 1, le registre de page était utilisé pour calculer l'adresse.
Une évolution de l'adressage précédent est le '''mode page direct'''. Avec lui, le registre de page est étendu et contient une adresse mémoire complète. L'adresse finale n'est pas obtenue par concaténation, mais en additionnant le registre de page avec l'adresse fournie par adressage absolu + décalage. Un exemple est celui des premiers processeurs Motorola, qui géraient des adresses courtes de 8 bits. L'adresse courte de 8 bits correspondait non pas aux 256 premiers octets de la mémoire, mais à une fenêtre de 256 octets déplaçable en mémoire. La position de la fenêtre de 256 octets était spécifiée par le registre de page de 16 bits, qui précisait l'adresse du début de la fenêtre, celle de sa première donnée.
Il s'agit donc formellement d'adressage base + décalage, à un détail près : il n'y a qu'un seul registre de base. Le fait que ce registre de base soit unique fait qu'il est adressé implicitement, on n'a pas à encoder le numéro/noms de registre dans l'instruction. Le registre de base est utilisé uniquement pour l'adressage absolu, pas pour les autres accès mémoire. S'il y a des ressemblances avec la segmentation, une technique de mémoire virtuelle qu'on abordera dans quelques chapitres, ce n'en est pas vu que le registre de base est utilisé seulement pour un mode d'adressage bien précis.
===Le ''pseudo-aliasing'' des registres des processeurs Intel x86===
Voyons maintenant le cas des anciens processeurs 8 bits d'Intel à savoir l'Intel 4004, 4040, 8008 et 8080. Le Z80, un processeur inspiré des CPU Intel 8 bits, est aussi concerné. Avant de poursuivre, parlons des registres de ces processeurs. Les premiers CPU Intel incorporaient 7 registres de 8 bits nommés A, B, C, D, E, F, H, L, SP. Ils correspondent respectivement à : l'accumulateur A ; six registres nommés B, C, D, E, H et L ; le registre d'état F ; le pointeur de pile SP. Le Z80 ajoute deux registres d'indice X et Y. De plus, le Z80 dispose de registres d'interruption, qui sont en quelque sorte des copies des registres A, B, C, D, E, F, H, L. Le tout est illustré dans le tableau ci-dessous.
{|class="wikitable" style="text-align:center;"
|-
!
! Registres des CPU Intel
! Registres supplémentaires du Z80
|-
! Accumulateur
| A
| A'
|-
! Registre d'état
| F
| F'
|-
! Registres généraux
| B, C, D, E, H, L
| B', C', D', E', H', L'
|-
! Pointeur de pile
| colspan="2" | SP (sauf pour le 8008)
|-
! Registres d'indice
|
| X et Y
|}
Le 8008 incorpore une pile d'appel de 7 adresses, dans le processeur lui-même. Il en est de la même avec le 4004 et le 4040, comme on le verra dans la section sur les processeurs 4 bits. Mais le 8080 et le 8085 ont remplacé le tout par un simple pointeur de pile, afin d'avoir une véritable pile d'appel. Autant c'est impossible d'avoir une pile d'appel avec seulement 256 octets de mémoire, autant on peut se le permettre avec 65 536 adresses.
Pour gérer des adresses de 16 bits, ils auraient pu utiliser des registres d'adresse séparés, mais on préféré un système de '''pseudo-''aliasing'' de registres'''. Formellement, c'est un système qui concatène deux registres 8 bits pour obtenir une adresse de 16 bits. L’appariement a lieu lors de certaines opérations bien précises, qui n'ont de sens que pour les adresses : la lecture/écriture en mémoire, et l'incrémentation.
Il y avait cependant des contraintes quant aux paires de registres possibles, toutes les paires de registres n'étaient pas autorisées. Les CPU concernés sont donc des processeurs hybrides accumulateur-registre généraux. L'accumulateur ne peut pas être appairé, seuls les registres généraux le peuvent. Le Z80 autorise plus de paires que les CPU Intel. Voici les paires de registres qui pouvaient servir d'adresse 16 bits :
* Les CPU 8008 d'Intel autorisait une seule paire formée des registres H et L.
* Les autres processeurs, à savoir le 8080, le 8085 et le Z80, autorisaient : les paires BC, DE et HL.
Le 8008 ne gérait que des opérations sur 8 bits. Mais le 8080 et le 8085 ont ajouté des instructions 16 bits qui agissaient sur des paires de registre, que le Z80 a repris. Une paire de registres est considérée comme un registre unique de 16 bits pour certaines opérations arithmétiques, dont l'incrémentation. Voici la liste des instructions concernées :
* INC et DEC pour l'incrémentation et la décrémentation ;
* DAD : additionne le registre HL avec une autre paire (Hl inclus) ;
* LXI : copie une constante immédiate dans une paire de registres ;
* LHLD : lit 16 depuis la mémoire et l'enregistre dans une paire de registres ;
* SHLD : copie 16 bits depuis une paire de registres et l'enregistre en mémoire ;
* PUSH et POP : empile ou dépilent une paire de registre sur la pile ;
* XTHL : échange la paire HL avec les 16 bits au sommet de la pile d'appel ;
* XCHG : échange le contenu de la paire HL et DE.
Pour résumer, le processeur avait des instructions LOAD, STORE, PUSH et POP adaptées pour gérer des paires de registre. De plus, l'instruction XCHG permettait d’échanger le contenu des paires DE et HL. L'instruction a été étendue sur les processeurs 16 bits pour échanger tous les registres. Mais l'implémentation était alors différente. L'incrémentation sur une paire de 16 bit était très utile, car les adresses sont souvent incrémentées quand on parcours un tableau. Ces instructions nous donnent quelques indices sur ce qu'il y a dans le processeur.
Le système de pseudo-aliasing a un impact sur le banc de registre. Le banc de registre regroupe les registres généraux et le pointeur de pile, mais ne contient pas l'accumulateur. Les contraintes sur les paires de registres possibles ne s'expliquent que d'une seule manière : le banc de registre contient des registres de 16 bits, une paire de registres 8 bits est mémorisée dans un registre unique. Il faut donc faire une différence entre les registres architecturaux de 8 bits, et les registres réels de 16 bits.
Le banc de registre a un port de 8 bits pour les données, qui est fabriqué à partir d'un port 16 bits auquel on a rajouté un multiplexeur pour choisir soit l'octet de poids faible, soit l'octet de poids fort. Le bus de données fait 8 bits, ce qui fait que les instructions LOAD, STORE, PUSH et POP pour paires 16 bits sont réalisées en deux fois : on lit/écrit l'octet de poids faible, puis celui de poids fort. Par contre, le bus d'adresse fait bien 16 bits. Cela suggère que le banc de registre dispose d'un port de 16 bits dédié aux adresses, en plus du port de données 8 bits.
[[File:Architecture d'un CPU 8-16 bits avec un banc de registre double port.png|centre|vignette|upright=2|Architecture d'un CPU 8-16 bits avec un banc de registre double port]]
L'incrémentation d'une paire 16 bits ne coute rien à implémenter, ou presque. En effet, le processeur incorpore un incrémenteur 16 bits pour le ''program counter'', qui est relié au bus d'adresse. L'idée est de rentabiliser cet incrémenteur, en lui permettant d'incrémenter des données/adresses de 16 bits obtenues via pseudo-aliasing. De même, il peut être utilisé pour incrémenter le pointeur de pile, voire un compteur de rafraichissement mémoire (pour rappel, le rafraîchissement mémoire demande de balayer la mémoire d'adresse en adresse et été fait par le CPU à l'époque). Pour cela, il suffit de connecter le ''program counter'', le banc de registre, et l'incrémenteur, via un bus dédié.
[[File:Calcul d'adresse par ALU dédiée avec PC séparé.png|centre|vignette|upright=2|Calcul d'adresse par ALU dédiée avec PC séparé]]
Notez qu'on peut encore simplifier le tout en placant le ''program counter'' dans le banc de registre, ce qui ne gênera pas le travail de l'incrémenteur mais simplifiera le câblage au bus d'adresse. Ce n'était pas systématique, certains processeurs mettaient le ''program counter'' dans le banc de registre, d'autres non.
: Inclure le ''program counter'' dans le banc de registre permet parfois de remplir un vide. Par exemple, sur un processeur avec 12 registres, le banc de registre devrait faire idéalement 16 registres, inclure le ''program counter'' dedans fait monter le tout à 13.
[[File:Architecture d'un CPU 8-16 bits.png|centre|vignette|upright=2|Architecture d'un CPU 8-16 bits]]
Les processeurs Intel 8 bits, à savoir le 8008, le 8080 et le 8085 ; mettaient le ''program counter'' dans le banc de registre. Vous avez donc toutes les armes pour comprendre leur micro-architecture. Par exemple, voici la micro-architecture du processeur 8080. Remarquez le banc de registre, qui contient tous les registres sauf l'accumulateur et le registre. Il a deux ports : un pour les adresses et un pour les données. Notez le dé-multiplexeur sur le port de donnée. Pour le reste, il s'agit d'une architecture à accumulateur hybride des plus classiques.
[[File:Intel 8080 arch.svg|centre|vignette|upright=3|Microarchitecture de l'Intel 8080.]]
Le Z80 est un processeur inspiré du design des processeurs Intel 8 bits, mais avec pas mal d'améliorations. Un point particulier de ce processeur est son banc de registre. Il contient tous les registres du processeur, y compris l'accumulateur et le registre d'état ! Les seuls registres en-dehors du banc de registre sont le ''program counter'' et un compteur de rafraichissement mémoire IR.
Un autre point particulier est que les registres dans le banc de registres avaient une copie séparée accessible uniquement pour les interruptions, via fenêtrage de registres. Et l'accumulateur et le registre d'état étant dans le banc de registre, il y avait deux accumulateurs et deux registres d'état. Les registres A, B, C, D, E et F étaient dupliqués, par le pointeur de pile ni les registres d'indice. Les copies des registres étaient nommées A', B', C', D', E' et F'.
Le Z80 supportait des instructions d'échange de registre en plus des CPU Intel 8 bits. L'instruction EX peut échanger soit le contenu des paires D,E et H,F, soit la paire A,F avec la paire A',F'. L'instruction EXX échange les paires BC, DE, HL avec les paires BC', DE', HL'. En faisant cela, le programmeur pouvait utiliser deux fois plus de registres généraux s'il n'utilisait pas les interruptions. L'échange de paires se fait sans copies de registres, mais simplement en modifiant l'adresse envoyée sur le banc de registre. Pour cela, plusieurs bascules mémorisent des bits qui indiquent si les paires ont été échangées ou non. Il y a une bascule pour les paires DE , HL ; une autre pour les paires A,F et paire A',F', une dernière pour l'instruction EXX. En combinant ces bascules avec les noms de registres envoyés par le séquenceur, on peut échanger les paires de registres.
==Le cas particulier des processeurs 4 bits : le 4004 d'Intel==
L'Intel 4004 était le tout premier micro-processeur. Il s'agissait d'un microprocesseur de 4 bits, basé sur une architecture à accumulateur. Il disposait d'un accumulateur et de 16 registres d'indice, tous de 4 bits. Il faisait des calculs sur des données de 4 bits, appelées des nibbles. Cependant, sur ses 46 instructions machines supportées, 41 agissaient sur des opérandes de 8 bits, les 5 restantes sur des opérandes de 16 bits. Simplement, les calculs se faisaient en deux fois, en échangeant des données entre mémoire RAM et accumulateur.
Le 4004 est un circuit intégré avec peu de broches. Il dispose notamment d'un bus de données/adresse, qui est multiplexé, c’est-à-dire qu'il sert alternativement de bus de données et de bus d'adresse selon les besoins. Le bus de commande mémoire fait 5 bits, dont 4 pour les chips de RAM, un pour la ROM. Les adresses sont codées sur 12 bits, les données sur 4 et les instructions sur 8 bits. L'envoi d'une adresse sur le bus se fait en plusieurs fois, de même que la lecture d'une instruction. Il s'agit là d'une adaptation pour outrepasser les limitations d'un processeur 4 bit.
[[File:Intel 4004 processor pinout.png|centre|vignette|upright=2|Broches de l'Intel 4004. Nous verrons à quoi elles servent plus bas.]]
===L'espace d'adressage de l'Intel 4004===
Les adresses du processeur sont sur 12 bits, ce qui fait 4096 adresses différentes. Elles regroupent à la fois la ROM et la mémoire RAM, vu que l'architecture est une sorte de mélange bizarre entre une architecture Von Neumann et Harvard. Le processeur gère bien deux espaces d'adressage séparés, mais la RAM et la ROM sont reliés au même bus. La sortie CM-ROM du processeur indique si l'adresse envoyée correspond à la RAM ou la ROM. Un circuit de décodage d'adresse active ou désactive la RAM selon la valeur de ce bit, l'inverse pour la ROM, en agissant sur leurs bits Chip Select. Seule la RAM ou la ROM répondent alors à l'adresse.
Pour ce qui est de la RAM, le circuit de décodage d'adresse pouvait gérer au maximum 1024 adresses différentes, chacune contenant un nibble. Pour cela, le CPU 4004 était relié à une ou plusieurs RAM externes, des Intel 4002. Chaque Intel 4002 contenait 64 nibbles de données, plus 16 nibbles de statut qu'on ne détaillera pas ici. Les nibbles de statut étaient accessibles en utilisant des instructions d'entrée-sortie, donc pas avec des lectures/écritures mémoire. Les 64 nibbles de données sont découpés en 4 groupes de 16 nibbles. Le CPU pouvait être relié à maximum 16 Intel 4002, ce qui fait 1024 nibbles de données et 256 nibbles de statut. L'ensemble permet de remplir l'espace d'adressage de 1024 adresses.
===Le registre de page et le pseudo-aliasing des registres===
Sélectionner une adresse mémoire utilisait un mélange entre pseudo-aliasing et registre de page. Pour les données, les 1024 adresses étaient découpées en 4 pages de 256 adresses. Pour la ROM, les 4096 adresses étaient découpées en 16 pages de 256 adresses. Localiser une donnée dans une page ne requiert que 8 bits, 2/4 bits supplémentaires permettent de sélectionner la page voulue. Le registre de page était dans le processeur lui-même, et était relié aux sorties du processeur nommées CM-RAM 0, 1, 2 et 3. Les 4 sorties encodaient un nombre qui permet de sélectionner le numéro de page voulu.
Le registre de page fait 5 bits : un pour distinguer RAM et ROM, 4 bits pour sélectionner la page voulue. L'avantage est que la carte mère gère au maximum 16 chips de RAM, ce qui colle parfaitement avec les 4 utilisés pour sélectionner une page. Un chip de RAM correspond à une page, et chacun est activé ou désactivé suivant la page sélectionnée. Pour cela, il suffit d'ajouter un décodeur sur la carte mère, qui prend les 4 bits du registre de page et fournit les signaux Chip Select aux différents chips de RAM.
Reste alors à utiliser les 8 bits d'adresse à l'intérieur d'un chip de RAM. Le 4004 permettait de concaténer deux registres d'indice de 4 bits pour former une adresse de 8 bits. Les instructions d'accès mémoire pouvaient ainsi préciser une paire de registre d'indice pour préciser quelle adresse lire/écrire. Idem pour les branchements indirects : le processeur supportait une instruction de branchement indirect qui précisait l'adresse dans une paire de registres d'indice. Les registres d'indice sont donc assez mal nommés sur cette architecture, vu qu'ils peuvent servir soit de registre d'indice, soit de demi-registre d'adresse. Il s'agit là du système de pseudo-aliasing des registres, mais appliqué aux registres d'indice.
L'Intel 4004 gérait deux instructions pour gérer les adresses mémoires. La première, l'instruction DCL (''Designate Command Line'') configure le registre de page. Elle prend en entrée un numéro de page et le copie dans le registre de page. L'opérande peut provenir d'un registre d'indice ou de l'accumulateur. La seconde, l'instruction SRC (''Send Register Control'') concatène deux registres d'indice pour obtenir une adresse de 8 bits. Un accès mémoire se fait donc en maximum trois instructions : une qui configure le registre de page si ce n'est pas déjà fait, une instruction SRC pour envoyer l'adresse, et une troisième instruction qui dit s'il faut faire une lecture ou une écriture.
===La microarchitecture de l'Intel 4004===
Il incorporait une pile d'adresse de retour intégrée au processeur. La pile d'adresse acceptait exactement 3 adresses maximum. Elle était regroupée avec le ''program counter'' dans un banc de registre, de 4 registres. Le ''program counter'' et le pointeur de pile faisaient chacun 12 bits, soit trois nibble. Ils étaient incrémentés par un incrémenteur dédié.
SI on omet le registre de page et la pile d'adresse, le 4004 est une architecture à accumulateur des plus classiques, avec un bus interne unique, un banc de registre pour les registres d'indices, un accumulateur relié à une unité de calcul. Les registres d'indice étaient dans un banc de registre séparés, car ils faisaient 4 bits chacun, contrairement au pointeur de pile et le ''program counter''. Un détail important est que les bancs de registres du 4004 étaient implémentés avec de la DRAM, et non des registres usuels fabriqués avec des bascules 1 bit.
[[File:Microarchitecture de l'Intel 4004.png|centre|vignette|upright=2.5|Microarchitecture de l'Intel 4004]]
<noinclude>
{{NavChapitre | book=Fonctionnement d'un ordinateur
| prev=Les architectures à pile et mémoire-mémoire
| prevText=Les architectures à pile et mémoire-mémoire
| next=Les processeurs de traitement du signal
| nextText=Les processeurs de traitement du signal
}}
</noinclude>
hztszxfpq6wvn03yu3jc9nboug2mcht
765736
765735
2026-05-01T20:46:06Z
Mewtow
31375
/* Les microcontrôleurs Intel 8051/8031 */
765736
wikitext
text/x-wiki
Nous avons déjà abordé la notion de processeur 8, 16, 32, 64 bits. Elle désigne la taille des registres généraux, ou de l'accumulateur. De nos jours, les processeurs 32 et 64 bits sont la norme, mais les premiers micro-processeurs étaient des processeurs 4 et 8, avant de passer rapidement au 16 bits. La raison est que leur budget en transistor limité faisait qu'on ne pouvait pas utiliser une ALU trop grande : une ALU 8 bit prend deux fois moins de place et de transistors qu'une ALU 16 bits. Cependant, les processeurs 8 bits avaient de sérieuses limitations qui étaient compensées par diverses solutions. Dans ce chapitre, nous allons faire une revue rapide des processeurs 8 bits et de leurs fonctionnalités.
La principale limitation des CPU 8 bits était l'adressage : des registres de 8 bits limitaient l'espace d'adressage à seulement 256 adresses, soit à peine 256 octets ! Intuitivement, on se dit que 256 octets est purement impraticable, on ne peut rien faire d'intéressant avec seulement 256 de RAM + ROM. Et c'est partiellement vrai. L'adage veut que 16 bits est la taille minimale intéressante, la limite à partir de laquelle on a assez de mémoire RAM/ROM pour coder des applications intéressantes. Mais 256 octets de RAM est largement suffisant sur de nombreux systèmes embarqués simples s'en accommodent : des caisses enregistreuses, des systèmes de régulation de feu de circulation, etc.
Pour les applications demandant plus de mémoire RAM, les CPU de l'époque contournaient la limitation de 256 octets de RAM avec de nombreux stratagèmes. Dans ce qui va suivre, nous allons séparer les CPU 8 bits selon qu'ils utilisent une architecture Harvard ou une architecture Von Neumann. La raison est qu'une architecture Harvard permet en soi de contourner partiellement ce problème d'adressage. Les choses sont plus compliquées avec une architecture Von Neumann.
==Les processeurs 8/16 bits à architecture Harvard ==
La première solution est d'utiliser une architecture Harvard. Le processeur 8 bit a alors deux espaces d'adressage : un pour la RAM, un autre pour la ROM. Et les deux utilisent des adresses de taille différente. La ROM est reliée à un bus d'adresse de 16 bits, alors que la RAM est elle connectée à un bus d'adresse de 8 bits. La RAM est donc limitée à 256 octets, alors que la ROM peut monter jusqu'à 64 kibioctets. Mine de rien, faire ainsi est largement suffisant.
Pour encore améliorer la situation, il est possible d'utiliser une architecture Harvard modifiée, qui permet de lire des données depuis la mémoire ROM. Cela réduit encore plus les besoins en mémoire RAM. Les constantes manipulées par le programme sont mémorisées en ROM, lues depuis la ROM, au lieu d'être chargées en RAM. Avec ce genre de stratagèmes, 256 octets de RAM est largement suffisant sur de nombreux systèmes, à condition qu'on ait assez de ROM pour coder un programme digne de ce nom. Par exemple, de nombreux systèmes embarqués simples s'en accommodent : des caisses enregistreuses, des systèmes de régulation de feu de circulation, etc.
Les processeurs 8 bits intègrent parfois les 256 octets de RAM directement dans le processeur, dans le banc de registres ! Beaucoup en implémentaient moins, avec par exemple seulement 64 octets de RAM, ou 32 octets, ou 128 octets. L'avantage est que cela élimine le bus pour les données, ce qui économise beaucoup de broches sur le circuit intégré du CPU. Et pour les applications demandant plus de RAM, on pouvait ajouter un circuit séparé qui permettait d'adresser une RAM plus grande. Et c'est ce qui explique que cette solution est beaucoup utilisée sur les microcontrôleurs peu puissants. Les exemples qui vont suivre devraient vous convaincre.
: Les processeurs de ce type implémentent des optimisations pour adresser plus de 256 octets de RAM. La plus connue est la commutation de banques. Mais nous n'avons pas encore abordé celle-ci, et il faudra attendre le chapitre sur l'espace d'adressage pour cela.
===Les microcontrôleurs PIC===
Les '''microcontrôleurs PIC''' regroupent des microcontrôleurs allant de microcontrôleurs 8 bits aux performances très faible, à des microcontrôleurs 32 bits bien plus puissants. Les microcontrôleurs PIC sont très utilisés dans l'embarqué ou d'informatique industrielle. Ils sont vendu à des volumes assez impressionnants, plusieurs millions par an. Et si vous avez ou êtes en train de faire des études d'électronique, je parie que vous les avez déjà vu en classe, ou que ce ne saurait tarder. Dans ce qui suit, nous allons nous concentrer sur les microcontrôleurs PIC 8 bits, à savoir les PIC 16, 16 et 18. Les PIC 24, qui sont des microcontrôleurs 16 bits, ne seront pas abordés.
Les microcontrôleurs PIC 8 bits sont une architecture Harvard, comme dit plus haut. Il y a aussi des registres pour les entrées et sorties. Les registres d'entrée-sortie permettent de lire ou écrire sur un port d'entrée-sortie ou de lire un ''timer''. En clair, les PIC ont un espace d'adressage séparé pour les entrées-sorties.
La mémoire ROM des PIC va de 1024 instructions à 4096 instructions. En comparaison, la mémoire RAM des microcontrôleurs PIC ne peut pas dépasser 256 adresses, et elle est encore plus petite en pratique sur certains modèles. Pour donner un exemple, le PIC16F84 a une RAM composée de 68 "registres" de 8 bits. Le terme "registres" devrait vous faire tiquer, mais c'est bien le terme utilisé dans la documentation des PIC. Et il faut admettre que la différence entre banc de registre et SRAM intégrée est floue, mais nous expliquerons pourquoi dans quelques paragraphes.
: Les PIC 18 peuvent adresser plus de 256 octets de RAM en utilisant la commutation de banques, une technique qui sera abordée dans plusieurs chapitres.
[[File:DocPIC16F84 3.png|centre|vignette|upright=3|Espaces d'adressage du PIC16F84.]]
Un détail est que la SRAM n'a qu'un seul port qui sert à la fois pour les lectures et écritures. Pour compenser, les PIC sont des architectures à accumulateur, où une opérande est lue depuis la SRAM, l'autre depuis l'accumulateur. Leur implémentation de l'accumulateur ajoute une petite subtilité : le résultat d'une opération arithmétique peut être enregistré ailleurs que dans l'accumulateur. Le résultat peut aussi remplacer la seconde opérande, celle lue en mémoire RAM. Dit autrement, le résultat est enregistré dans l'adresse mémoire source. Les instructions de calcul ont le choix : un bit dans leur encodage précise où enregistrer le résultat.
{|
|-
|[[File:DocPIC16F84 4.png|centre|vignette|upright=2|Microarchitecture simplifiée d'un microcontroleur PIC (ici, un 16F84).]]
|[[File:DocPIC16F84 5.png|centre|vignette|upright=2|Microarchitecture simplifiée d'un microcontroleur PIC (ici, un 16F84), avec les branchements directs.]]
|}
Outre l'accumulateur, les PIC disposent de registres de contrôle, d'un ''program counter'', d'un registre d'état, et d'un pointeur de pile. Un détail très important est que les registres sont mappés en mémoire, à quelques exceptions près ! En clair, on peut y accéder en lisant/écrivant à une adresse mémoire bien précise. Les seules registres qui ne sont pas mappés en mémoire sont l'accumulateur, les registres d'entrée-sortie, et la pile d'adresses de retour intégrée au processeur (voir plus bas). Par exemple, sur les modèles 16F, l'espace d'adressage fait 128 octets, dont 32 sont réservés aux registres du processeur, ce qui fait que seules 96 octets sont adressables comme de la RAM. Mais les 128 octets sont un seul et unique SRAM dans le processeur. Ce qui explique qu'il est difficile de séparer banc de registre et RAM principale sur ce processeur : les deux sont fusionnées ! Cela gaspille quelques adresses mémoire, mais permet une implémentation plus simple, avec un banc de registre unique.
: Les modèles PIC 17 ont rendu l'accumulateur mappé en mémoire RAM !
[[File:DocPIC16F84.png|centre|vignette|upright=2|DocPIC16F84]]
La petite taille de la ROM d'un PIC n'est pas une surprise. Les architectures 8 bits sont conçues pour ne pas utiliser beaucoup de transistors et être très simples. Aussi, utiliser une petite ROM est nécessaire. Mais il faut aussi adapter le jeu d'instruction, pour qu'il ait une bonne densité de code. Par exemple, il faut faire en sorte d'avoir des instructions assez courtes. Si les instructions font 16 bits au lieu de 32, on divise par deux le nombre de transistors nécessaire pour la mémoire ROM. La conséquence est que le jeu d’instruction des PIC est adapté à cette contrainte.
Les microcontrôleurs PIC utilisent un jeu d'instruction propriétaire, dont les instructions sont très petites. Les premières versions du jeu d'instruction utilisaient des instructions codées sur 12 bits, dont 5 pour l'adresse mémoire de la seconde opérande. Pour les branchements, 3 bits étaient utilisés pour l'opcode, 9 pour l'adresse de destination. Par la suite, les instructions ont été étendues à 13 bits sur les PIC1670, puis à 14, 15 et 16 bits. Les adresses ont alors été élargies, ce qui permet d'adresser en peu plus de mémoire RAM.
Il est intéressant de regarder comment les PIC font pour obtenir des instructions aussi courtes. Premièrement, le fait d'utiliser une architecture à accumulateur, couplé à une RAM très petite aident grandement. Les architectures à accumulateur ont besoin de préciser un opcode et une adresse mémoire pour chaque instruction, pas besoin de préciser de noms de registres ni le mode d'adressage. La taille des adresses mémoire est censé être un problème pour la densité de code, mais les adresses d'un processeur 8 bits font 8 bits. On peut alors avoir un jeu d'instruction étoffé, en utilisant des instructions 16 bits, qui concatènent un opcode et une adresse mémoire, d'un octet chacun.
Mais d'autres optimisations permettent d'avoir une bonne densité de code. Les PIC ont des branchements pour les appels et retour de fonction. Les PIC incorporent une pile d'appel de retour, qui fait 2 à 8 adresses suivant les modèles. Elle permet d'économiser quelques registres, car la pile d'appel n'est pas mappé dans l'espace d'adressage, elle n'est pas adressable. On économise ainsi 2 à 8 registres, sur 32-256 registres. De plus, cela simplifie l'encodage des instructions d'appel/retour de fonction, qui n'ont pas à préciser où enregistre l'adresse de retour.
Les PIC n'ont pas d'instructions de branchement conditionnels, ils font avec une SKIP instruction et des branchements inconditionnels. Du moins, c'est le principe, car si vous regardez la liste des instructions ci-dessous, vous verrez qu'il n'y a pas d'instruction SKIP. A la place, les instructions SKIP sont fusionnées avec d'autres instructions. Elles sont notamment fusionnées avec les instructions d'incrémentation et de décrémentation. Les PIC supportent une incrémentation normale, une décrémentation normale, une décrémentation fusionnée avec une instruction SKIP, et une incrémentation fusionnée avec une instruction SKIP. Les deux dernières incrémentent/décrémentent l'accumulateur et SKIP l'instruction suivante si le résultat est zéro. Elles permettent de fortement simplifier l'implémentation des boucles qui s'exécutent tant que leur compteur atteint zéro.
Les PIC disposent aussi d'instructions de manipulation de bit, pour tester/masquer un bit dans une opérande, 4 en tout. Il y a en a 4 en tout : mettre à 0, mettre à 1, tester si bit = 1, tester si bit = 0. Les instructions qui testent un bit prennent leur opérande dans l'accumulateur. Elles font le test du bit et décident s'il faut skipper l'instruction suivante ou non. Il y a aussi deux instructions de rotation à gauche et droite, qui tiennent compte de la retenue mémorisée dans le registre d'état. Par contre, il n'y a pas d'instructions de décalages, qui peuvent être émulées avec une rotation suivie d'un ET bit à bit. Mentionnons aussi une instruction pour inverser deux ''nibbles'' dans un octet.
Les modèles haute performance ajoutent des instructions d'addition avec retenue entrante, idem pour la soustraction. De telles instructions ssont très utiles pour faire des additions/soustractions sur des opérandes de 16 bits. Le processeur a beau être un CPU 8 bits, il peut être utilisé pour faire des calculs 16 bits, la performance est alors amoindrie, mais ce n'est pas un problème pour les applications d'un tel microcontroleur.
Les modèles intiaux, comme les PIC 10 et 12, ne supportaient pas les interruptions, mais c'est chose réglé sur les modèles plus récents. Ils ont même des registres séparés pour les interruptions et les programmes normaux. De plus, ils intégrent nativement un ''watchdog timer''.
{|class="wikitable" style="text-align:center"
|+ Jeu d'instruction des dodèles PCI 16
|-
! colspan="5" | Instructions diverses
|-
| colspan="3" | 00 0000 0000 0000 || NOP || Ne fait rien
|-
| colspan="3" | 00 0000 0000 1000 || RETURN || Instruction de retour pour une fonction
|-
| colspan="3" | 00 0000 0000 1001 || NOP || Instruction de retour pour une interruption
|-
| colspan="3" | 00 0000 0110 0011 || SLEEP || Mise en veille
|-
| colspan="3" | 00 0000 0110 0100 || CLRWDT || RESET le ''watchdog timer'', intégré dans le PIC
|-
! colspan="5" | Instructions de manipulation de bit
|-
| 0100 || Position du bit dans l'opérande || Adresse mémoire || BCF || Met le bit à 1
|-
| 0101 || Position du bit dans l'opérande || Adresse mémoire || BSF || Met le bit à 0
|-
| 0110 || Position du bit dans l'opérande || Adresse mémoire || BTFSC || Teste si le bit adressé est à 1
|-
| 0111 || Position du bit dans l'opérande || Adresse mémoire || BTFSS || Teste si le bit adressé est à 0
|-
! colspan="5" | Branchements
|-
| colspan="2" | 100 || Adresse mémoire || CALL || Appel de fonction
|-
| colspan="2" | 100 || Adresse mémoire || GOTO || Branchement inconditionnel
|-
! colspan="5" | Instructions logiques/arithmétiques avec opérande lue en mémoire RAM
|-
| colspan="5" | ''Le bit '''d''' dans l'opcode indique la destination : accumulateur ou adresse mémoire''.
|-
| colspan="2" | 0000001 || Adresse mémoire || MOVWF || Store (accumulateur vers destination)
|-
| colspan="2" | 000001d || Adresse mémoire || MOVWF || Met à zéro la destination (adresse ou registre)
|-
| colspan="2" | 000001d || Adresse mémoire || SUBWF || Soustraction
|-
| colspan="2" | 000010d|| Adresse mémoire || DECF || Décrémentation
|-
| colspan="2" | 000100d|| Adresse mémoire || IORWF || OU bit à bit
|-
| colspan="2" | 000101d|| Adresse mémoire || ANDWF || ET bit à bit
|-
| colspan="2" | 000110d || Adresse mémoire || XORWF || XOR bit à bit
|-
| colspan="2" | 000111d || Adresse mémoire || ADDWF VWF || Addition
|-
| colspan="2" | 001000d || Adresse mémoire || MOVF || LOAD
|-
| colspan="2" | 001001d || Adresse mémoire || COMF || NOT bit à bit
|-
| colspan="2" | 001010d || Adresse mémoire || INCF || Incrémentation
|-
| colspan="2" | 001011d || Adresse mémoire || DECFSZ || Décrémentation, puis instruction SKIP si résultat = 0
|-
| colspan="2" | 001100d || Adresse mémoire || RRF || Rotation à droite avec retenue entrante
|-
| colspan="2" | 001101d || Adresse mémoire || RLF || Rotation à gauche avec retenue entrante
|-
| colspan="2" | 001110d || Adresse mémoire || SWAPF || Echange deux ''niblle'' dans un octet
|-
| colspan="2" | 001111d || Adresse mémoire || INCFSZ || Incrémentation, puis instruction SKIP si résultat = 0
|-
! colspan="5" | Instructions logiques/arithmétiques avec constante immédiate
|-
| colspan="2" | 1100xx || Constante immédiate (8bits) || MOVLW || Copie constante dans accumulateur
|-
| colspan="2" | 1101xx || Constante immédiate (8bits) || RETLW || MOV fusionné avec un retour de fonction
|-
| colspan="2" | 111000 || Constante immédiate (8bits) || IORLW || OU
|-
| colspan="2" | 111001 || Constante immédiate (8bits) || ANDLW || ET
|-
| colspan="2" | 111010 || Constante immédiate (8bits) || XORLW || XOR
|-
| colspan="2" | 11110x || Constante immédiate (8bits) || SUBLW || Soustraction
|-
| colspan="2" | 11111x || Constante immédiate (8bits) || ADDLW || Addition
|}
Les PIC gèrent l'adressage absolu et immédiat, mais pas plus. L'adressage absolu, celui où l'adresse est intégrée dans l'instruction, est très simple à implémenter. Les adresses prennent moins d'un octet, vu que la taille de la RAM est très petite, les adresses sont très courtes, les intégrer dans des instructions elles-mêmes courtes n'est pas un problème. L'adresse est encodée sur 5 à 7 bits, selon le modèle, ce qui permet d'adresser entre 32 et 128 octets.
Les PIC ne supportent pas l'adressage indirect, mais peuvent l'émuler grâce à un '''registre d'adresse''' dédié. Il s'agit du registre FSR, qui mémorise l'adresse à lire/écrire. Il est possible de copier un pointeur dedans, qui provient soit de l'accumulateur, soit de la mémoire SRAM. Dans les deux cas, la donnée adressée est lue ou écrite dans un registre INDR, est un registre d’interfaçage rendu adressable. Le registre FSR est directement connecté sur le bus d'adresse.
Les modèles de base se débrouillent avec un registre FSR et un registre INDR, mais les modèles plus performants ont deux ou trois copies de chaque registre. Les modèles PIC18 ajoutent aussi des instructions LOAD/STORE qui émulent les modes d'adressage à post- ou pré-incrément/décrément, et le mode d'adressage "Base + Indice + Décalage", encore une fois en utilisant les registres FSR et INDR.
Avec tout ce qu'on vient de dire, vous devriez pouvoir comprendre la microarchitecture d'un PIC, qui est résumée dans ce schéma.
[[File:DocPIC16F84 all.png|centre|vignette|upright=2.5|Microarchitecture du PIC16F84.]]
===Les microcontrôleurs Intel 8051/8031===
[[File:Pinagem8031.jpg|vignette|Broches du 8051.]]
Les microcontrôleurs Intel 8051/8031 sont des microcontrôleurs 8 bits, commercialisés par Intel. Elle contient un processeur 8/16 bits, 4 kibioctets de mémoire ROM, une RAM de 128 octets. Niveau entrées-sorties, il contient un port série, ainsi que 4 ports d'un octet chacun sur lesquels il peut lire ou écrire. Il supporte des interruptions, avec un contrôleur d'interruption intégré. Il contient aussi deux ''timers'' de 16 bits chacun, qui déclenchent des interruptions quand ils tombent à zéro ou à une valeur configurable.
Ils ont de nombreuses ressemblances avec les microcontrôleurs PIC. Le processeur du 8051 est une architecture à accumulateur de 8 bits, ses registres sont mappés en mémoire RAM, il a un registre d'adresse dédié à l'adressage indirect et j'en passe. Mais il y a aussi des différences notables. Par exemple, le 8051 n'a pas de pile d'adresse de retour, contrairement aux processeurs PIC. Il fait autrement, à savoir qu'il gère une pile d'appel placée en mémoire RAM,ce qui est très différent. De même, il utilise deux accumulateurs nommés A et B.
Une autre différence est que les registres sont placés dans un banc de registre à part des 128 octets de SRAM. Il y a une SRAM séparée du banc de registre, contrairement à ce qu'on a sur les microcontrôleurs PIC. Par contre, les registres du processeur sont mappés en mémoire RAM, y compris les deux accumulateurs, le registre d'état, le ''program counter'', et bien d'autres. Mais le fait qu'ils soient séparés de la SRAM permet de les mapper dans l'espace d'adressage sans marcher sur les pieds de la SRAM. Vu que le processeur peut adresser 256 octets, mais n'a que 128 octets de SRAM, les registres sont mappés dans les 128 octets restants. Les entrées-sorties aussi sont mappées dans ces 128 octets restants.
L'ensemble utilise une architecture Harvard, contrairement à ce que pourrait faire croire le schéma ci-dessous.
[[File:Arkitektura mikro kontrollerit Intel 8051.png|centre|vignette|upright=2.5|Microcontrôleur 8051]]
Voyons maintenant la ''memory map'' de ce microcontroleur, pour la SRAM. Un point assez original est que 16 octets de la SRAM sont adressables bit par bit, à savoir que chaque bit a sa propre adresse. En tout, cela permet d'adresser 128 bits (16 adresses * 8 bits par octet adressé). L'intervalle bit-adressable va de l'adresse 32 (inclue) à l'adresse 47 (inclue).
Les 32 premières adresses sont réservés à la mémoire SRAM, c'est 32 octets de RAM utilisable à volonté par le programmeur. Les 16 adresses suivantes sont les 16 adresses bit-adressables mentionnées dans le paragraphe précédent. Les 96 octets suivants sont de la mémoire RAM adressable, affectée par défaut à la pile d'appel mais adressable via adressage direct si besoin. Les 128 octets de poids fort sont réservés aux registres du processeur et aux entrée-sorties mappées en mémoire.
[[File:Memory map du 8051.png|centre|vignette|upright=2|Memory map du 8051]]
Les 128 octets au sommet de l'espace d'adressage sont décrit dans le schéma ci-dessous. On voit que les deux accumulateurs sont mappés dedans, de même que le registre d'état PSW, le registre de configuration des interruptions IE (''Interrupt Enable''), et quelques autres. Les ports d'entrée-sortie sont aussi mappés dedans, que ce soit les 4 ports parallèles ou le port série. Les deux ''timers'' sont aussi mappés dedans, ainsi que leurs registres de configuration.
Une partie des octets sont bit-adressables, et cette partie inclus les registres du processeur et les ports d'entrées-sorties. Pour le dire autrement, chaque bit d'un port d'entrée-sortie a sa propre adresse mémoire, qui permet de le sélectionner. Par contre, les registres pour les ''timers'' ne sont pas dedans, sauf pour le troisième ajoutés dans des extensions du 8051.
[[File:MFrey SFR MCS-51.svg|centre|vignette|upright=2|Memory map des 128 octets de poids fort du 8051]]
Pour ce qui est des instructions, le 8051 supporte les opérations de multiplications et de divisions, contrairement aux microcontrôleurs PIC qui se limitaient à l'addition et la soustraction. Une autre particularité est que le processeur incorpore une '''unité de calcul de 1 bit'''. Elle permet de faire des opérations sur des bits, avec 17 instructions possibles au total. L'ALU de 1 bit est reliée à un accumulateur de 1 bit et 32 registres de 1 bits. Elle peut lire des opérandes de 1 bit en mémoire RAM ou sur les ports d'entrée-sortie, pour les portions qui sont bit-adressables.
Le processeur supporte aussi l'adressage indirect dans la SRAM, mais celui-ci fonctionne différemment comparé aux microcontrôleurs PIC. Il n'y a pas deux registres d'adresse dédiés, séparés des autres. A la place, l'adressage indiorect est implémenté normalement, en utilisant les registres généraux. Par contre, il y a une contrainte : seuls les deux premiers registres R0 et R1 sont utilisables. En clair, seuls ces deux registres peuvent contenir une adresse, un pointeur. C'est là une différence liée au fait que le 8051 a un banc de registre séparé.
Le 8051 peut communiquer avec une mémoire RAM externe, en plus de la SRAM interne. Pour cela, le processeur du 8051 avait un espace d'adressage séparé pour la RAM externe, capable d'adresser 64 kibioctets. Communiquer avec cet espace d'adressage se faisait avec des instructions d'accès mémoire séparées des autres, pas les LOAD/STORE normaux. Par exemple, l'instruction MOVX lisaient une donnée dans cet espace d'adressage, et la copiait dans l'accumulateur ou la SRAM. Pour envoyer l'adresse à lire/écrire à cette RAM externe, le processeur incorporait un registre d'adresse dédié. Il s'agit du '''registre DPTR''', qui contient une adresse de 16 bits. Le processeur devait copier l'adresse à lire/écrire dedans, puis lancer l'instruction MOVX.
===Le Fairchild F8 et la console de jeu Fairchild Channel F===
Un autre exemple est la Fairchild F8 de la défunte entreprise Fairchild Semiconductor. Il incorpore un processeur 8 bits, c'est à dire que le processeur fait des calculs sur des entiers de 8 bits maximum, une mémoire RAM de 64 octets, ainsi qu'une mémoire ROM de 1 kibioctet. Les 64 octets de RAM sont certes très peu, mais c'est suffisant pour certaines applications simples, comme les caisses automatiques de l'époque, ou des applications embarquées. Et de toute façon, il est possible d'ajouter de la mémoire RAM supplémentaire si les 64 octets de RAM intégrée ne suffisent pas. Le système était donc modulaire, adaptable selon les besoins, peu cher pour son implémentation minimale sans RAM en plus.
Vu qu'il s'agit d'un des tout premiers ordinateurs, il est sorti à une époque où la technologie était rudimentaire. À cette époque, le processeur était composé de pièces détachées qu'il fallait souder ensemble pour obtenir un processeur fonctionnel. Ce n'est que plus tard qu'est apparu le micro-processeur, qui regroupe un processeur complet dans un seul circuit intégré. Le résultat est que le processeur du Fairchild F8 est coupé en deux, l'unité de calcul et l'unité de contrôle sont placés dans des pièces détachées séparés.
Le microcontrôleur est composé de trois à quatre pièces détachées, certaines étant optionnelles. La première est le '''3850 CPU''', qui regroupe l'unité de calcul et la mémoire RAM intégrée. La seconde est le PSU (''3851 Program Storage Unit''), qui regroupe la mémoire ROM et l'unité de contrôle, ''program counter'' inclut. S'il y a besoin d'utiliser plus de RAM, il faut ajouter un circuit d’interface mémoire, qui est au choix le ''3852 Dynamic Memory Interface'' (DMI) ou le ''3853 Static Memory Interface'', le premier étant connecté à une mémoire de type DRAM, l'autre à une SRAM (nous verrons ce que sont les DRAM et les SRAM dans le prochain chapitre).
[[File:Fairchild F8.png|centre|vignette|upright=2|Fairchild F8]]
Le système minimal est composé d'un PSU et d'un 3850, sans les circuits d'interface mémoire. Le tout donne un système avec un processeur 8 bit, 64 octets de RAM et 1 kibioctet de ROM, les deux mémoires étant intégrées dans le "processeur". Le processeur gérait 4 entrées-sorties, chacune étant reliée avec un bus de 8 bit au processeur. Au passage, en 1977, Mostek a créé un microcontrôleur qui regroupe un PSU et un 3850 : le Mostek 3870. Le système minimal n'avait pas de bus d'adresse, vu que la RAM était intégrée au processeur. C'est les 3852 et 3853 qui ajoutaient un bus d'adresse. Ils ajoutent un bus d'adresse de 16 bits, ce qui permet d'adresser 64 kibioctets de RAM.
[[File:Fairchild-Channel-F.jpg|vignette|un Fairchild Channel F]]
Le Fairchild F8 a été utilisé dans la Fairchild Channel F, une des toute première console de seconde génération, à savoir des consoles qui utilisaient des cartouches de jeu. Avant les consoles de seconde génération, les consoles étaient non-programmables. Elles étaient conçues pour faire tourner un jeu précis, aucun autre, le jeu étant implémenté dans leurs circuits.
La Fairchild Channel F est composé du système minimal, auquel on a ajouté une carte son rudimentaire et 2 kibioctets de mémoire vidéo. La mémoire vidéo sert uniquement pour afficher des images à l'écran : on écrit l'image à afficher dedans, un circuit vidéo se charge de l'afficher à l'écran automatiquement. Le processeur ne fait qu'écrire dans cette RAM vidéo, il ne peut pas en lire le contenu. De la RAM supplémentaire peut cependant être ajoutée dans les cartouches de jeu.
===Le HP Nanoprocessor : un processeur sans ALU===
Un dernier exemple est celui du processeur HP Nanoprocessor, de l'entreprise HP. Il a été commercialisé en 1974, en même temps que les premiers micro-processeurs d'Intel. Tous les processeurs de l'époque étaient des processeurs 8 bits et le HP Nanoprocessor ne faisait pas exception. Ce n'était pas un processeur haute performance, il était destiné à des applications d'informatique industrielle ou embarquée. D'ailleurs, il utilisait des transistors de type metal-gate, peu performants, là où ses contemporains utilisait des transistors en silicium, plus performants.
Mais une caractéristique qui rend cela encore plus claire est qu'il n'y a pas d'ALU ! En effet, ce processeur est incapable de faire des additions, des soustractions ou autres opérations simples ! Il est cependant capable d'effectuer des incrémentations et décrémentations, des décalages, des opérations logiques comme des ET/OU/NON/XOR et bien d'autres. Il supporte en tout 48 instructions, avec un support limité des modes d'adressage indirects. Les instructions de branchement étaient des instructions SKIP, il n'y avait pas d'instructions de branchement généralistes.
Pour ce qui est des registres, il disposait de 16 registres de 8 bits et d'un accumulateur. Niveau mémoire, il était relié à une mémoire ROM, rien de plus. Il n'avait de RAM supplémentaire qu'on pouvait lui adjoindre, il devait se débrouiller avec seulement ses registres. Et cela ne posait pas de problèmes pour son usage. Seul le mode d'adressage indirect à registre est supporté, il n'y a pas de registres d'indices. Ce mode d'adressage permet de lire des données en mémoire ROM, la ROM pouvant contenir des tableaux de valeurs constantes.
: Il est possible de lui adjoindre de la RAM via les ports d'entrée-sortie, ainsi qu'une ALU, mais RAM et ALU sont traités comme des périphériques avec lesquels on communique, ils ne sont pas intégrés au processeur.
Niveau micro-architecture, il incorporait une unité de calcul logique et un circuit comparateur. Le comparateur était un circuit comparateur série des plus basiques, qui était utilisé pour les instructions de branchement et associées. L'unité de calcul logique gérait des incrémentations/décrémentation, des décalages, les opérations logiques et quelques autres. L'unité de calcul logique était bit-slicée, à savoir conçue en assemblant 8 ALU de 1 bit chacune, enchainées en série. Le tout était combiné à des circuits de ''carry skip''.
[[File:Unité de calcul du HP nanonprocessor.png|centre|vignette|upright=2|Unité de calcul du HP nanoprocessor]]
Son unité de décodage d'instruction était très simple, essentiellement basée sur des portes NOR, grâce à un encodage efficace des instructions machine. Le ''program counter'' fait 11 bits, ce qui permet d'adresser une ROM de 2 kibioctets. Le ''program counter'' était relié à un circuit incrémenteur qui gérait les isntructions SKIP (il pouvait incrémenter le ''program counter'' par pas de 1 ou de 2 en cas de SKIP). Le processeur contient aussi deux registres, qui servent en quelque sorte de pile d'adresse de retour. Un premier registre mémorise l'adresse de retour d'une fonction, l'autre mémorise le ''program counter'' lors d'une interruption, pour savoir où brancher à la fin de l'interruption.
[[File:HP nanoprocessor.png|centre|vignette|upright=2.5|HP nanoprocessor]]
Fait intéressant, le concepteur du processeur a gracieusement donné les masques utilisés pour graver le silicium du processeur au site [https://www.cpushack.com/ CPU Shack]. Les masques en question sont disponibles ici :
* [https://www.cpushack.com/2020/08/20/hp-nanoprocessor-mask-set/ HP NanoProcessor Mask Set]
* [https://www.cpushack.com/2020/08/09/the-forgotten-ones-hp-nanoprocessor/ The Forgotten Ones: HP Nanoprocessor]
Les masques ont été analysés par Ken Shirrif dans cet article de blog :
* [https://www.righto.com/2020/09/hp-nanoprocessor-part-ii-reverse.html HP Nanoprocessor part II: Reverse-engineering the circuits from the masks]
==Les processeurs 8/16 bits à architecture Von Neumann==
L'usage d'une architecture Harvard est une solution pour adresser plus de mémoire avec des CPU 8 bits. Mais plusieurs microprocesseurs commerciaux n'utilisaient pas cette solution. À la place, c'était des architectures Von Neumann, mais qui étaient capables de gérer des adresses de 16 bits. Les données faisaient 8 bits, les registres faisaient 8 bits, mais quelques techniques permettaient de gérer des adresses de 16 bits. Nous parlerons de '''processeurs 8/16 bits''' pour les désigner, et nous allons les étudier à part.
Un point important est que la gestion d'adresses de 16 bits permet d'adresser 64 kibioctets, qui peuvent être remplis avec de la RAM et de la ROM. On a donc le meilleur des mondes : 64 kibioctets de mémoire, mais avec des données de 8 bits et les économies de circuit qui vont avec. L'avantage est que le processeur peut maintenant gérer une vraie pile d'appel, pas seulement une pile d'adresse de retour. Il lui suffit pour cela d'intégrer un pointeur de pile codé sur 16 bits.
===Les modes d'adressage par page des CPU Motorola===
Les processeurs Motorola 8 bits étaient des processeurs 8 bits avec un bus d'adresse de 16 bits. C'était des processeurs à accumulateur incorporant deux registres d'indice, un registre d'état, un pointeur de pile, et un ''program counter''. Tous les registres sont reliés au bus d'adresse, sauf le registre d'état et l’accumulateur. Tous les registres font 8 bits, sauf le ''program counter''. La pile est câblée pour être dans un bloc de 256 octets compris entre l'adresse 1 0000 0000 et l'adresse 1 1111 1111, ce qui fait que son adressage se fait avec un seul octet.
[[File:6502-architecture.svg|centre|vignette|upright=1.5|Architecture simplifiée du 6502.</br> X et Y : registres d'indice ;</br> S : le pointeur de pile ;</br> A : accumulateur ;</br>P : registre d'état.</br>]]
Les processeurs Motorola 8 bits utilisaient une méthode simple pour adresser 64 kibioctets de RAM, avec des registres de 8 bits. Pour cela, ils utilisaient une variante de l'adressage base + décalage. Elle améliore l'adressage absolu, qui intègre l'adresse à lire/écrire dans l'instruction elle-même. L'adresse en question est de 8 bits et n'encode que les 8 bits de poids faible de l'adresse, les 8 bits de poids fort sont dans un '''registre de page''' adressé implicitement. L'adresse finale est obtenue en concaténant ce registre avec l'adresse mémoire intégrée dans l’instruction. Le résultat est que la mémoire était découpée en blocs de 256 consécutifs, chacun pouvant servir de fenêtre de 256 octets. Une page est réservée pour la pile, la seconde, comme dit plus haut.
Formellement, ce mode d'adressage a des ressemblances avec la commutation de banques, une technique qu'on verra dans les chapitres sur l'espace d'adressage et la mémoire virtuelle. Mais ce n'en est pas du tout : le registre de page est utilisé uniquement pour les accès mémoire avec le mode d'adressage base + décalage, mais pas pour les autres accès mémoire, qui gèrent des adresses complètes. Notons que l'usage d'un registre de page dédié fait que celui-ci est adressé implicitement.
Il faut noter que la technique a été utilisée sur des processeurs 16 bits, pour contourner la petite taille des instructions. Un exemple est celui du HP 2100, un processeur 16 bits. Il avait un registre de page de 5 bits et encodait 10 bits d'adresse dans ses instructions. Ses instructions d'accès mémoire disposaient d'un bit qui choisit quel mode d'adressage utiliser. S'il était à 0, l'adressage absolu était utilisé, le registre de page n'était pas utilisé. Mais s'il était à 1, le registre de page était utilisé pour calculer l'adresse.
Une évolution de l'adressage précédent est le '''mode page direct'''. Avec lui, le registre de page est étendu et contient une adresse mémoire complète. L'adresse finale n'est pas obtenue par concaténation, mais en additionnant le registre de page avec l'adresse fournie par adressage absolu + décalage. Un exemple est celui des premiers processeurs Motorola, qui géraient des adresses courtes de 8 bits. L'adresse courte de 8 bits correspondait non pas aux 256 premiers octets de la mémoire, mais à une fenêtre de 256 octets déplaçable en mémoire. La position de la fenêtre de 256 octets était spécifiée par le registre de page de 16 bits, qui précisait l'adresse du début de la fenêtre, celle de sa première donnée.
Il s'agit donc formellement d'adressage base + décalage, à un détail près : il n'y a qu'un seul registre de base. Le fait que ce registre de base soit unique fait qu'il est adressé implicitement, on n'a pas à encoder le numéro/noms de registre dans l'instruction. Le registre de base est utilisé uniquement pour l'adressage absolu, pas pour les autres accès mémoire. S'il y a des ressemblances avec la segmentation, une technique de mémoire virtuelle qu'on abordera dans quelques chapitres, ce n'en est pas vu que le registre de base est utilisé seulement pour un mode d'adressage bien précis.
===Le ''pseudo-aliasing'' des registres des processeurs Intel x86===
Voyons maintenant le cas des anciens processeurs 8 bits d'Intel à savoir l'Intel 4004, 4040, 8008 et 8080. Le Z80, un processeur inspiré des CPU Intel 8 bits, est aussi concerné. Avant de poursuivre, parlons des registres de ces processeurs. Les premiers CPU Intel incorporaient 7 registres de 8 bits nommés A, B, C, D, E, F, H, L, SP. Ils correspondent respectivement à : l'accumulateur A ; six registres nommés B, C, D, E, H et L ; le registre d'état F ; le pointeur de pile SP. Le Z80 ajoute deux registres d'indice X et Y. De plus, le Z80 dispose de registres d'interruption, qui sont en quelque sorte des copies des registres A, B, C, D, E, F, H, L. Le tout est illustré dans le tableau ci-dessous.
{|class="wikitable" style="text-align:center;"
|-
!
! Registres des CPU Intel
! Registres supplémentaires du Z80
|-
! Accumulateur
| A
| A'
|-
! Registre d'état
| F
| F'
|-
! Registres généraux
| B, C, D, E, H, L
| B', C', D', E', H', L'
|-
! Pointeur de pile
| colspan="2" | SP (sauf pour le 8008)
|-
! Registres d'indice
|
| X et Y
|}
Le 8008 incorpore une pile d'appel de 7 adresses, dans le processeur lui-même. Il en est de la même avec le 4004 et le 4040, comme on le verra dans la section sur les processeurs 4 bits. Mais le 8080 et le 8085 ont remplacé le tout par un simple pointeur de pile, afin d'avoir une véritable pile d'appel. Autant c'est impossible d'avoir une pile d'appel avec seulement 256 octets de mémoire, autant on peut se le permettre avec 65 536 adresses.
Pour gérer des adresses de 16 bits, ils auraient pu utiliser des registres d'adresse séparés, mais on préféré un système de '''pseudo-''aliasing'' de registres'''. Formellement, c'est un système qui concatène deux registres 8 bits pour obtenir une adresse de 16 bits. L’appariement a lieu lors de certaines opérations bien précises, qui n'ont de sens que pour les adresses : la lecture/écriture en mémoire, et l'incrémentation.
Il y avait cependant des contraintes quant aux paires de registres possibles, toutes les paires de registres n'étaient pas autorisées. Les CPU concernés sont donc des processeurs hybrides accumulateur-registre généraux. L'accumulateur ne peut pas être appairé, seuls les registres généraux le peuvent. Le Z80 autorise plus de paires que les CPU Intel. Voici les paires de registres qui pouvaient servir d'adresse 16 bits :
* Les CPU 8008 d'Intel autorisait une seule paire formée des registres H et L.
* Les autres processeurs, à savoir le 8080, le 8085 et le Z80, autorisaient : les paires BC, DE et HL.
Le 8008 ne gérait que des opérations sur 8 bits. Mais le 8080 et le 8085 ont ajouté des instructions 16 bits qui agissaient sur des paires de registre, que le Z80 a repris. Une paire de registres est considérée comme un registre unique de 16 bits pour certaines opérations arithmétiques, dont l'incrémentation. Voici la liste des instructions concernées :
* INC et DEC pour l'incrémentation et la décrémentation ;
* DAD : additionne le registre HL avec une autre paire (Hl inclus) ;
* LXI : copie une constante immédiate dans une paire de registres ;
* LHLD : lit 16 depuis la mémoire et l'enregistre dans une paire de registres ;
* SHLD : copie 16 bits depuis une paire de registres et l'enregistre en mémoire ;
* PUSH et POP : empile ou dépilent une paire de registre sur la pile ;
* XTHL : échange la paire HL avec les 16 bits au sommet de la pile d'appel ;
* XCHG : échange le contenu de la paire HL et DE.
Pour résumer, le processeur avait des instructions LOAD, STORE, PUSH et POP adaptées pour gérer des paires de registre. De plus, l'instruction XCHG permettait d’échanger le contenu des paires DE et HL. L'instruction a été étendue sur les processeurs 16 bits pour échanger tous les registres. Mais l'implémentation était alors différente. L'incrémentation sur une paire de 16 bit était très utile, car les adresses sont souvent incrémentées quand on parcours un tableau. Ces instructions nous donnent quelques indices sur ce qu'il y a dans le processeur.
Le système de pseudo-aliasing a un impact sur le banc de registre. Le banc de registre regroupe les registres généraux et le pointeur de pile, mais ne contient pas l'accumulateur. Les contraintes sur les paires de registres possibles ne s'expliquent que d'une seule manière : le banc de registre contient des registres de 16 bits, une paire de registres 8 bits est mémorisée dans un registre unique. Il faut donc faire une différence entre les registres architecturaux de 8 bits, et les registres réels de 16 bits.
Le banc de registre a un port de 8 bits pour les données, qui est fabriqué à partir d'un port 16 bits auquel on a rajouté un multiplexeur pour choisir soit l'octet de poids faible, soit l'octet de poids fort. Le bus de données fait 8 bits, ce qui fait que les instructions LOAD, STORE, PUSH et POP pour paires 16 bits sont réalisées en deux fois : on lit/écrit l'octet de poids faible, puis celui de poids fort. Par contre, le bus d'adresse fait bien 16 bits. Cela suggère que le banc de registre dispose d'un port de 16 bits dédié aux adresses, en plus du port de données 8 bits.
[[File:Architecture d'un CPU 8-16 bits avec un banc de registre double port.png|centre|vignette|upright=2|Architecture d'un CPU 8-16 bits avec un banc de registre double port]]
L'incrémentation d'une paire 16 bits ne coute rien à implémenter, ou presque. En effet, le processeur incorpore un incrémenteur 16 bits pour le ''program counter'', qui est relié au bus d'adresse. L'idée est de rentabiliser cet incrémenteur, en lui permettant d'incrémenter des données/adresses de 16 bits obtenues via pseudo-aliasing. De même, il peut être utilisé pour incrémenter le pointeur de pile, voire un compteur de rafraichissement mémoire (pour rappel, le rafraîchissement mémoire demande de balayer la mémoire d'adresse en adresse et été fait par le CPU à l'époque). Pour cela, il suffit de connecter le ''program counter'', le banc de registre, et l'incrémenteur, via un bus dédié.
[[File:Calcul d'adresse par ALU dédiée avec PC séparé.png|centre|vignette|upright=2|Calcul d'adresse par ALU dédiée avec PC séparé]]
Notez qu'on peut encore simplifier le tout en placant le ''program counter'' dans le banc de registre, ce qui ne gênera pas le travail de l'incrémenteur mais simplifiera le câblage au bus d'adresse. Ce n'était pas systématique, certains processeurs mettaient le ''program counter'' dans le banc de registre, d'autres non.
: Inclure le ''program counter'' dans le banc de registre permet parfois de remplir un vide. Par exemple, sur un processeur avec 12 registres, le banc de registre devrait faire idéalement 16 registres, inclure le ''program counter'' dedans fait monter le tout à 13.
[[File:Architecture d'un CPU 8-16 bits.png|centre|vignette|upright=2|Architecture d'un CPU 8-16 bits]]
Les processeurs Intel 8 bits, à savoir le 8008, le 8080 et le 8085 ; mettaient le ''program counter'' dans le banc de registre. Vous avez donc toutes les armes pour comprendre leur micro-architecture. Par exemple, voici la micro-architecture du processeur 8080. Remarquez le banc de registre, qui contient tous les registres sauf l'accumulateur et le registre. Il a deux ports : un pour les adresses et un pour les données. Notez le dé-multiplexeur sur le port de donnée. Pour le reste, il s'agit d'une architecture à accumulateur hybride des plus classiques.
[[File:Intel 8080 arch.svg|centre|vignette|upright=3|Microarchitecture de l'Intel 8080.]]
Le Z80 est un processeur inspiré du design des processeurs Intel 8 bits, mais avec pas mal d'améliorations. Un point particulier de ce processeur est son banc de registre. Il contient tous les registres du processeur, y compris l'accumulateur et le registre d'état ! Les seuls registres en-dehors du banc de registre sont le ''program counter'' et un compteur de rafraichissement mémoire IR.
Un autre point particulier est que les registres dans le banc de registres avaient une copie séparée accessible uniquement pour les interruptions, via fenêtrage de registres. Et l'accumulateur et le registre d'état étant dans le banc de registre, il y avait deux accumulateurs et deux registres d'état. Les registres A, B, C, D, E et F étaient dupliqués, par le pointeur de pile ni les registres d'indice. Les copies des registres étaient nommées A', B', C', D', E' et F'.
Le Z80 supportait des instructions d'échange de registre en plus des CPU Intel 8 bits. L'instruction EX peut échanger soit le contenu des paires D,E et H,F, soit la paire A,F avec la paire A',F'. L'instruction EXX échange les paires BC, DE, HL avec les paires BC', DE', HL'. En faisant cela, le programmeur pouvait utiliser deux fois plus de registres généraux s'il n'utilisait pas les interruptions. L'échange de paires se fait sans copies de registres, mais simplement en modifiant l'adresse envoyée sur le banc de registre. Pour cela, plusieurs bascules mémorisent des bits qui indiquent si les paires ont été échangées ou non. Il y a une bascule pour les paires DE , HL ; une autre pour les paires A,F et paire A',F', une dernière pour l'instruction EXX. En combinant ces bascules avec les noms de registres envoyés par le séquenceur, on peut échanger les paires de registres.
==Le cas particulier des processeurs 4 bits : le 4004 d'Intel==
L'Intel 4004 était le tout premier micro-processeur. Il s'agissait d'un microprocesseur de 4 bits, basé sur une architecture à accumulateur. Il disposait d'un accumulateur et de 16 registres d'indice, tous de 4 bits. Il faisait des calculs sur des données de 4 bits, appelées des nibbles. Cependant, sur ses 46 instructions machines supportées, 41 agissaient sur des opérandes de 8 bits, les 5 restantes sur des opérandes de 16 bits. Simplement, les calculs se faisaient en deux fois, en échangeant des données entre mémoire RAM et accumulateur.
Le 4004 est un circuit intégré avec peu de broches. Il dispose notamment d'un bus de données/adresse, qui est multiplexé, c’est-à-dire qu'il sert alternativement de bus de données et de bus d'adresse selon les besoins. Le bus de commande mémoire fait 5 bits, dont 4 pour les chips de RAM, un pour la ROM. Les adresses sont codées sur 12 bits, les données sur 4 et les instructions sur 8 bits. L'envoi d'une adresse sur le bus se fait en plusieurs fois, de même que la lecture d'une instruction. Il s'agit là d'une adaptation pour outrepasser les limitations d'un processeur 4 bit.
[[File:Intel 4004 processor pinout.png|centre|vignette|upright=2|Broches de l'Intel 4004. Nous verrons à quoi elles servent plus bas.]]
===L'espace d'adressage de l'Intel 4004===
Les adresses du processeur sont sur 12 bits, ce qui fait 4096 adresses différentes. Elles regroupent à la fois la ROM et la mémoire RAM, vu que l'architecture est une sorte de mélange bizarre entre une architecture Von Neumann et Harvard. Le processeur gère bien deux espaces d'adressage séparés, mais la RAM et la ROM sont reliés au même bus. La sortie CM-ROM du processeur indique si l'adresse envoyée correspond à la RAM ou la ROM. Un circuit de décodage d'adresse active ou désactive la RAM selon la valeur de ce bit, l'inverse pour la ROM, en agissant sur leurs bits Chip Select. Seule la RAM ou la ROM répondent alors à l'adresse.
Pour ce qui est de la RAM, le circuit de décodage d'adresse pouvait gérer au maximum 1024 adresses différentes, chacune contenant un nibble. Pour cela, le CPU 4004 était relié à une ou plusieurs RAM externes, des Intel 4002. Chaque Intel 4002 contenait 64 nibbles de données, plus 16 nibbles de statut qu'on ne détaillera pas ici. Les nibbles de statut étaient accessibles en utilisant des instructions d'entrée-sortie, donc pas avec des lectures/écritures mémoire. Les 64 nibbles de données sont découpés en 4 groupes de 16 nibbles. Le CPU pouvait être relié à maximum 16 Intel 4002, ce qui fait 1024 nibbles de données et 256 nibbles de statut. L'ensemble permet de remplir l'espace d'adressage de 1024 adresses.
===Le registre de page et le pseudo-aliasing des registres===
Sélectionner une adresse mémoire utilisait un mélange entre pseudo-aliasing et registre de page. Pour les données, les 1024 adresses étaient découpées en 4 pages de 256 adresses. Pour la ROM, les 4096 adresses étaient découpées en 16 pages de 256 adresses. Localiser une donnée dans une page ne requiert que 8 bits, 2/4 bits supplémentaires permettent de sélectionner la page voulue. Le registre de page était dans le processeur lui-même, et était relié aux sorties du processeur nommées CM-RAM 0, 1, 2 et 3. Les 4 sorties encodaient un nombre qui permet de sélectionner le numéro de page voulu.
Le registre de page fait 5 bits : un pour distinguer RAM et ROM, 4 bits pour sélectionner la page voulue. L'avantage est que la carte mère gère au maximum 16 chips de RAM, ce qui colle parfaitement avec les 4 utilisés pour sélectionner une page. Un chip de RAM correspond à une page, et chacun est activé ou désactivé suivant la page sélectionnée. Pour cela, il suffit d'ajouter un décodeur sur la carte mère, qui prend les 4 bits du registre de page et fournit les signaux Chip Select aux différents chips de RAM.
Reste alors à utiliser les 8 bits d'adresse à l'intérieur d'un chip de RAM. Le 4004 permettait de concaténer deux registres d'indice de 4 bits pour former une adresse de 8 bits. Les instructions d'accès mémoire pouvaient ainsi préciser une paire de registre d'indice pour préciser quelle adresse lire/écrire. Idem pour les branchements indirects : le processeur supportait une instruction de branchement indirect qui précisait l'adresse dans une paire de registres d'indice. Les registres d'indice sont donc assez mal nommés sur cette architecture, vu qu'ils peuvent servir soit de registre d'indice, soit de demi-registre d'adresse. Il s'agit là du système de pseudo-aliasing des registres, mais appliqué aux registres d'indice.
L'Intel 4004 gérait deux instructions pour gérer les adresses mémoires. La première, l'instruction DCL (''Designate Command Line'') configure le registre de page. Elle prend en entrée un numéro de page et le copie dans le registre de page. L'opérande peut provenir d'un registre d'indice ou de l'accumulateur. La seconde, l'instruction SRC (''Send Register Control'') concatène deux registres d'indice pour obtenir une adresse de 8 bits. Un accès mémoire se fait donc en maximum trois instructions : une qui configure le registre de page si ce n'est pas déjà fait, une instruction SRC pour envoyer l'adresse, et une troisième instruction qui dit s'il faut faire une lecture ou une écriture.
===La microarchitecture de l'Intel 4004===
Il incorporait une pile d'adresse de retour intégrée au processeur. La pile d'adresse acceptait exactement 3 adresses maximum. Elle était regroupée avec le ''program counter'' dans un banc de registre, de 4 registres. Le ''program counter'' et le pointeur de pile faisaient chacun 12 bits, soit trois nibble. Ils étaient incrémentés par un incrémenteur dédié.
SI on omet le registre de page et la pile d'adresse, le 4004 est une architecture à accumulateur des plus classiques, avec un bus interne unique, un banc de registre pour les registres d'indices, un accumulateur relié à une unité de calcul. Les registres d'indice étaient dans un banc de registre séparés, car ils faisaient 4 bits chacun, contrairement au pointeur de pile et le ''program counter''. Un détail important est que les bancs de registres du 4004 étaient implémentés avec de la DRAM, et non des registres usuels fabriqués avec des bascules 1 bit.
[[File:Microarchitecture de l'Intel 4004.png|centre|vignette|upright=2.5|Microarchitecture de l'Intel 4004]]
<noinclude>
{{NavChapitre | book=Fonctionnement d'un ordinateur
| prev=Les architectures à pile et mémoire-mémoire
| prevText=Les architectures à pile et mémoire-mémoire
| next=Les processeurs de traitement du signal
| nextText=Les processeurs de traitement du signal
}}
</noinclude>
9av1ee5bmtzui27zkwk16m9mtfo1z16
765737
765736
2026-05-01T20:54:54Z
Mewtow
31375
/* Les microcontrôleurs PIC */
765737
wikitext
text/x-wiki
Nous avons déjà abordé la notion de processeur 8, 16, 32, 64 bits. Elle désigne la taille des registres généraux, ou de l'accumulateur. De nos jours, les processeurs 32 et 64 bits sont la norme, mais les premiers micro-processeurs étaient des processeurs 4 et 8, avant de passer rapidement au 16 bits. La raison est que leur budget en transistor limité faisait qu'on ne pouvait pas utiliser une ALU trop grande : une ALU 8 bit prend deux fois moins de place et de transistors qu'une ALU 16 bits. Cependant, les processeurs 8 bits avaient de sérieuses limitations qui étaient compensées par diverses solutions. Dans ce chapitre, nous allons faire une revue rapide des processeurs 8 bits et de leurs fonctionnalités.
La principale limitation des CPU 8 bits était l'adressage : des registres de 8 bits limitaient l'espace d'adressage à seulement 256 adresses, soit à peine 256 octets ! Intuitivement, on se dit que 256 octets est purement impraticable, on ne peut rien faire d'intéressant avec seulement 256 de RAM + ROM. Et c'est partiellement vrai. L'adage veut que 16 bits est la taille minimale intéressante, la limite à partir de laquelle on a assez de mémoire RAM/ROM pour coder des applications intéressantes. Mais 256 octets de RAM est largement suffisant sur de nombreux systèmes embarqués simples s'en accommodent : des caisses enregistreuses, des systèmes de régulation de feu de circulation, etc.
Pour les applications demandant plus de mémoire RAM, les CPU de l'époque contournaient la limitation de 256 octets de RAM avec de nombreux stratagèmes. Dans ce qui va suivre, nous allons séparer les CPU 8 bits selon qu'ils utilisent une architecture Harvard ou une architecture Von Neumann. La raison est qu'une architecture Harvard permet en soi de contourner partiellement ce problème d'adressage. Les choses sont plus compliquées avec une architecture Von Neumann.
==Les processeurs 8/16 bits à architecture Harvard ==
La première solution est d'utiliser une architecture Harvard. Le processeur 8 bit a alors deux espaces d'adressage : un pour la RAM, un autre pour la ROM. Et les deux utilisent des adresses de taille différente. La ROM est reliée à un bus d'adresse de 16 bits, alors que la RAM est elle connectée à un bus d'adresse de 8 bits. La RAM est donc limitée à 256 octets, alors que la ROM peut monter jusqu'à 64 kibioctets. Mine de rien, faire ainsi est largement suffisant.
Pour encore améliorer la situation, il est possible d'utiliser une architecture Harvard modifiée, qui permet de lire des données depuis la mémoire ROM. Cela réduit encore plus les besoins en mémoire RAM. Les constantes manipulées par le programme sont mémorisées en ROM, lues depuis la ROM, au lieu d'être chargées en RAM. Avec ce genre de stratagèmes, 256 octets de RAM est largement suffisant sur de nombreux systèmes, à condition qu'on ait assez de ROM pour coder un programme digne de ce nom. Par exemple, de nombreux systèmes embarqués simples s'en accommodent : des caisses enregistreuses, des systèmes de régulation de feu de circulation, etc.
Les processeurs 8 bits intègrent parfois les 256 octets de RAM directement dans le processeur, dans le banc de registres ! Beaucoup en implémentaient moins, avec par exemple seulement 64 octets de RAM, ou 32 octets, ou 128 octets. L'avantage est que cela élimine le bus pour les données, ce qui économise beaucoup de broches sur le circuit intégré du CPU. Et pour les applications demandant plus de RAM, on pouvait ajouter un circuit séparé qui permettait d'adresser une RAM plus grande. Et c'est ce qui explique que cette solution est beaucoup utilisée sur les microcontrôleurs peu puissants. Les exemples qui vont suivre devraient vous convaincre.
: Les processeurs de ce type implémentent des optimisations pour adresser plus de 256 octets de RAM. La plus connue est la commutation de banques. Mais nous n'avons pas encore abordé celle-ci, et il faudra attendre le chapitre sur l'espace d'adressage pour cela.
===Les microcontrôleurs PIC===
Les '''microcontrôleurs PIC''' regroupent des microcontrôleurs allant de microcontrôleurs 8 bits aux performances très faible, à des microcontrôleurs 32 bits bien plus puissants. Les microcontrôleurs PIC sont très utilisés dans l'embarqué ou d'informatique industrielle. Ils sont vendu à des volumes assez impressionnants, plusieurs millions par an. Et si vous avez ou êtes en train de faire des études d'électronique, je parie que vous les avez déjà vu en classe, ou que ce ne saurait tarder. Dans ce qui suit, nous allons nous concentrer sur les microcontrôleurs PIC 8 bits, à savoir les PIC 16, 16 et 18. Les PIC 24, qui sont des microcontrôleurs 16 bits, ne seront pas abordés.
Le processeur incorpore de nombreuses optimisations pour éviter de trop gaspiller d'adresses mémoire. Mais ces optimisations sont partiellement compensées par d'autres choix de conception que nous détaillerons plus bas. Déjà, les microcontrôleurs PIC 8 bits sont une architecture Harvard, comme dit plus haut. Ensuite, le processeur utilise un espace d'adressage séparé pour les entrés-sorties. Les ports d'entrée-sortie et les ''timers'' ne sont donc pas mappés en mémoire RAM, ce qui économise quelques adresses.
La mémoire ROM des PIC va de 1024 instructions à 4096 instructions. En comparaison, la mémoire RAM des microcontrôleurs PIC ne peut pas dépasser 256 adresses, et elle est encore plus petite en pratique sur certains modèles. Pour donner un exemple, le PIC16F84 a une RAM composée de 68 "registres" de 8 bits. Le terme "registres" devrait vous faire tiquer, mais c'est bien le terme utilisé dans la documentation des PIC. Et il faut admettre que la différence entre banc de registre et SRAM intégrée est floue, comme on va tenter de l'expliquer dans les paragraphes suivants.
: Les PIC 18 peuvent adresser plus de 256 octets de RAM en utilisant la commutation de banques, une technique qui sera abordée dans plusieurs chapitres.
[[File:DocPIC16F84 3.png|centre|vignette|upright=3|Espaces d'adressage du PIC16F84.]]
Les PIC disposent de nombreux registres de contrôle, d'un ''program counter'', d'un registre d'état, et d'un pointeur de pile. Un détail très important est que ces registres sont placés dans la mémoire SRAM ! En clair, on peut y accéder en lisant/écrivant à une adresse mémoire bien précise. Sur les modèles 16F, l'espace d'adressage fait 128 octets, dont 32 sont réservés aux registres du processeur, ce qui fait que seules 96 octets sont adressables comme de la RAM. Mais les 128 octets sont un seul et unique SRAM dans le processeur. Ce qui explique qu'il est difficile de séparer banc de registre et RAM principale sur ce processeur : les deux sont fusionnées ! Cela gaspille quelques adresses mémoire, mais permet une implémentation plus simple, avec un banc de registre unique.
[[File:DocPIC16F84.png|centre|vignette|upright=2|DocPIC16F84]]
Les PIC sont une architecture à accumulateur basique, ce qui permet d'utiliser un banc de registre à un seul port. Ce choix simplifie grandement la conception du processeur. Il faut préciser que l'accumulateur n'est pas mappé en mémoire. Sauf sur les modèles PIC 17, qui mappé l'accumulateur en mémoire RAM !
Leur implémentation de l'accumulateur ajoute une petite subtilité : le résultat d'une opération arithmétique peut être enregistré ailleurs que dans l'accumulateur. Le résultat peut aussi remplacer la seconde opérande, celle lue en mémoire RAM. Dit autrement, le résultat est enregistré dans l'adresse mémoire source. Les instructions de calcul ont le choix : un bit dans leur encodage précise où enregistrer le résultat.
{|
|-
|[[File:DocPIC16F84 4.png|centre|vignette|upright=2|Microarchitecture simplifiée d'un microcontroleur PIC (ici, un 16F84).]]
|[[File:DocPIC16F84 5.png|centre|vignette|upright=2|Microarchitecture simplifiée d'un microcontroleur PIC (ici, un 16F84), avec les branchements directs.]]
|}
La petite taille de la ROM d'un PIC n'est pas une surprise. Les architectures 8 bits sont conçues pour ne pas utiliser beaucoup de transistors et être très simples. Aussi, utiliser une petite ROM est nécessaire. Mais il faut aussi adapter le jeu d'instruction, pour qu'il ait une bonne densité de code. Par exemple, il faut faire en sorte d'avoir des instructions assez courtes. Si les instructions font 16 bits au lieu de 32, on divise par deux le nombre de transistors nécessaire pour la mémoire ROM. La conséquence est que le jeu d’instruction des PIC est adapté à cette contrainte.
Les microcontrôleurs PIC utilisent un jeu d'instruction propriétaire, dont les instructions sont très petites. Les premières versions du jeu d'instruction utilisaient des instructions codées sur 12 bits, dont 5 pour l'adresse mémoire de la seconde opérande. Pour les branchements, 3 bits étaient utilisés pour l'opcode, 9 pour l'adresse de destination. Par la suite, les instructions ont été étendues à 13 bits sur les PIC1670, puis à 14, 15 et 16 bits. Les adresses ont alors été élargies, ce qui permet d'adresser en peu plus de mémoire RAM.
Il est intéressant de regarder comment les PIC font pour obtenir des instructions aussi courtes. Premièrement, le fait d'utiliser une architecture à accumulateur, couplé à une RAM très petite aident grandement. Les architectures à accumulateur ont besoin de préciser un opcode et une adresse mémoire pour chaque instruction, pas besoin de préciser de noms de registres ni le mode d'adressage. La taille des adresses mémoire est censé être un problème pour la densité de code, mais les adresses d'un processeur 8 bits font 8 bits. On peut alors avoir un jeu d'instruction étoffé, en utilisant des instructions 16 bits, qui concatènent un opcode et une adresse mémoire, d'un octet chacun.
Mais d'autres optimisations permettent d'avoir une bonne densité de code. Les PIC ont des branchements pour les appels et retour de fonction. Les PIC incorporent une pile d'appel de retour, qui fait 2 à 8 adresses suivant les modèles. Elle permet d'économiser quelques registres, car la pile d'appel n'est pas mappée dans l'espace d'adressage, elle n'est pas adressable. On économise ainsi 2 à 8 registres, sur 32-256 registres. De plus, cela simplifie l'encodage des instructions d'appel/retour de fonction, qui n'ont pas à préciser où enregistre l'adresse de retour.
Les PIC n'ont pas d'instructions de branchement conditionnels, ils font avec une SKIP instruction et des branchements inconditionnels. Du moins, c'est le principe, car si vous regardez la liste des instructions ci-dessous, vous verrez qu'il n'y a pas d'instruction SKIP. A la place, les instructions SKIP sont fusionnées avec d'autres instructions. Elles sont notamment fusionnées avec les instructions d'incrémentation et de décrémentation. Les PIC supportent une incrémentation normale, une décrémentation normale, une décrémentation fusionnée avec une instruction SKIP, et une incrémentation fusionnée avec une instruction SKIP. Les deux dernières incrémentent/décrémentent l'accumulateur et SKIP l'instruction suivante si le résultat est zéro. Elles permettent de fortement simplifier l'implémentation des boucles qui s'exécutent tant que leur compteur atteint zéro.
Les PIC disposent aussi d'instructions de manipulation de bit, pour tester/masquer un bit dans une opérande, 4 en tout. Il y a en a 4 en tout : mettre à 0, mettre à 1, tester si bit = 1, tester si bit = 0. Les instructions qui testent un bit prennent leur opérande dans l'accumulateur. Elles font le test du bit et décident s'il faut skipper l'instruction suivante ou non. Il y a aussi deux instructions de rotation à gauche et droite, qui tiennent compte de la retenue mémorisée dans le registre d'état. Par contre, il n'y a pas d'instructions de décalages, qui peuvent être émulées avec une rotation suivie d'un ET bit à bit. Mentionnons aussi une instruction pour inverser deux ''nibbles'' dans un octet.
Les modèles haute performance ajoutent des instructions d'addition avec retenue entrante, idem pour la soustraction. De telles instructions ssont très utiles pour faire des additions/soustractions sur des opérandes de 16 bits. Le processeur a beau être un CPU 8 bits, il peut être utilisé pour faire des calculs 16 bits, la performance est alors amoindrie, mais ce n'est pas un problème pour les applications d'un tel microcontroleur.
Les modèles intiaux, comme les PIC 10 et 12, ne supportaient pas les interruptions, mais c'est chose réglé sur les modèles plus récents. Ils ont même des registres séparés pour les interruptions et les programmes normaux. De plus, ils intégrent nativement un ''watchdog timer''.
{|class="wikitable" style="text-align:center"
|+ Jeu d'instruction des dodèles PCI 16
|-
! colspan="5" | Instructions diverses
|-
| colspan="3" | 00 0000 0000 0000 || NOP || Ne fait rien
|-
| colspan="3" | 00 0000 0000 1000 || RETURN || Instruction de retour pour une fonction
|-
| colspan="3" | 00 0000 0000 1001 || NOP || Instruction de retour pour une interruption
|-
| colspan="3" | 00 0000 0110 0011 || SLEEP || Mise en veille
|-
| colspan="3" | 00 0000 0110 0100 || CLRWDT || RESET le ''watchdog timer'', intégré dans le PIC
|-
! colspan="5" | Instructions de manipulation de bit
|-
| 0100 || Position du bit dans l'opérande || Adresse mémoire || BCF || Met le bit à 1
|-
| 0101 || Position du bit dans l'opérande || Adresse mémoire || BSF || Met le bit à 0
|-
| 0110 || Position du bit dans l'opérande || Adresse mémoire || BTFSC || Teste si le bit adressé est à 1
|-
| 0111 || Position du bit dans l'opérande || Adresse mémoire || BTFSS || Teste si le bit adressé est à 0
|-
! colspan="5" | Branchements
|-
| colspan="2" | 100 || Adresse mémoire || CALL || Appel de fonction
|-
| colspan="2" | 100 || Adresse mémoire || GOTO || Branchement inconditionnel
|-
! colspan="5" | Instructions logiques/arithmétiques avec opérande lue en mémoire RAM
|-
| colspan="5" | ''Le bit '''d''' dans l'opcode indique la destination : accumulateur ou adresse mémoire''.
|-
| colspan="2" | 0000001 || Adresse mémoire || MOVWF || Store (accumulateur vers destination)
|-
| colspan="2" | 000001d || Adresse mémoire || MOVWF || Met à zéro la destination (adresse ou registre)
|-
| colspan="2" | 000001d || Adresse mémoire || SUBWF || Soustraction
|-
| colspan="2" | 000010d|| Adresse mémoire || DECF || Décrémentation
|-
| colspan="2" | 000100d|| Adresse mémoire || IORWF || OU bit à bit
|-
| colspan="2" | 000101d|| Adresse mémoire || ANDWF || ET bit à bit
|-
| colspan="2" | 000110d || Adresse mémoire || XORWF || XOR bit à bit
|-
| colspan="2" | 000111d || Adresse mémoire || ADDWF VWF || Addition
|-
| colspan="2" | 001000d || Adresse mémoire || MOVF || LOAD
|-
| colspan="2" | 001001d || Adresse mémoire || COMF || NOT bit à bit
|-
| colspan="2" | 001010d || Adresse mémoire || INCF || Incrémentation
|-
| colspan="2" | 001011d || Adresse mémoire || DECFSZ || Décrémentation, puis instruction SKIP si résultat = 0
|-
| colspan="2" | 001100d || Adresse mémoire || RRF || Rotation à droite avec retenue entrante
|-
| colspan="2" | 001101d || Adresse mémoire || RLF || Rotation à gauche avec retenue entrante
|-
| colspan="2" | 001110d || Adresse mémoire || SWAPF || Echange deux ''niblle'' dans un octet
|-
| colspan="2" | 001111d || Adresse mémoire || INCFSZ || Incrémentation, puis instruction SKIP si résultat = 0
|-
! colspan="5" | Instructions logiques/arithmétiques avec constante immédiate
|-
| colspan="2" | 1100xx || Constante immédiate (8bits) || MOVLW || Copie constante dans accumulateur
|-
| colspan="2" | 1101xx || Constante immédiate (8bits) || RETLW || MOV fusionné avec un retour de fonction
|-
| colspan="2" | 111000 || Constante immédiate (8bits) || IORLW || OU
|-
| colspan="2" | 111001 || Constante immédiate (8bits) || ANDLW || ET
|-
| colspan="2" | 111010 || Constante immédiate (8bits) || XORLW || XOR
|-
| colspan="2" | 11110x || Constante immédiate (8bits) || SUBLW || Soustraction
|-
| colspan="2" | 11111x || Constante immédiate (8bits) || ADDLW || Addition
|}
Les PIC gèrent l'adressage absolu et immédiat, mais pas plus. L'adressage absolu, celui où l'adresse est intégrée dans l'instruction, est très simple à implémenter. Les adresses prennent moins d'un octet, vu que la taille de la RAM est très petite, les adresses sont très courtes, les intégrer dans des instructions elles-mêmes courtes n'est pas un problème. L'adresse est encodée sur 5 à 7 bits, selon le modèle, ce qui permet d'adresser entre 32 et 128 octets.
Les PIC ne supportent pas l'adressage indirect, mais peuvent l'émuler grâce à un '''registre d'adresse''' dédié. Il s'agit du registre FSR, qui mémorise l'adresse à lire/écrire. Il est possible de copier un pointeur dedans, qui provient soit de l'accumulateur, soit de la mémoire SRAM. Dans les deux cas, la donnée adressée est lue ou écrite dans un registre INDR, est un registre d’interfaçage rendu adressable. Le registre FSR est directement connecté sur le bus d'adresse.
Les modèles de base se débrouillent avec un registre FSR et un registre INDR, mais les modèles plus performants ont deux ou trois copies de chaque registre. Les modèles PIC18 ajoutent aussi des instructions LOAD/STORE qui émulent les modes d'adressage à post- ou pré-incrément/décrément, et le mode d'adressage "Base + Indice + Décalage", encore une fois en utilisant les registres FSR et INDR.
Avec tout ce qu'on vient de dire, vous devriez pouvoir comprendre la microarchitecture d'un PIC, qui est résumée dans ce schéma.
[[File:DocPIC16F84 all.png|centre|vignette|upright=2.5|Microarchitecture du PIC16F84.]]
===Les microcontrôleurs Intel 8051/8031===
[[File:Pinagem8031.jpg|vignette|Broches du 8051.]]
Les microcontrôleurs Intel 8051/8031 sont des microcontrôleurs 8 bits, commercialisés par Intel. Elle contient un processeur 8/16 bits, 4 kibioctets de mémoire ROM, une RAM de 128 octets. Niveau entrées-sorties, il contient un port série, ainsi que 4 ports d'un octet chacun sur lesquels il peut lire ou écrire. Il supporte des interruptions, avec un contrôleur d'interruption intégré. Il contient aussi deux ''timers'' de 16 bits chacun, qui déclenchent des interruptions quand ils tombent à zéro ou à une valeur configurable.
Ils ont de nombreuses ressemblances avec les microcontrôleurs PIC. Le processeur du 8051 est une architecture à accumulateur de 8 bits, ses registres sont mappés en mémoire RAM, il a un registre d'adresse dédié à l'adressage indirect et j'en passe. Mais il y a aussi des différences notables. Par exemple, le 8051 n'a pas de pile d'adresse de retour, contrairement aux processeurs PIC. Il fait autrement, à savoir qu'il gère une pile d'appel placée en mémoire RAM,ce qui est très différent. De même, il utilise deux accumulateurs nommés A et B.
Une autre différence est que les registres sont placés dans un banc de registre à part des 128 octets de SRAM. Il y a une SRAM séparée du banc de registre, contrairement à ce qu'on a sur les microcontrôleurs PIC. Par contre, les registres du processeur sont mappés en mémoire RAM, y compris les deux accumulateurs, le registre d'état, le ''program counter'', et bien d'autres. Mais le fait qu'ils soient séparés de la SRAM permet de les mapper dans l'espace d'adressage sans marcher sur les pieds de la SRAM. Vu que le processeur peut adresser 256 octets, mais n'a que 128 octets de SRAM, les registres sont mappés dans les 128 octets restants. Les entrées-sorties aussi sont mappées dans ces 128 octets restants.
L'ensemble utilise une architecture Harvard, contrairement à ce que pourrait faire croire le schéma ci-dessous.
[[File:Arkitektura mikro kontrollerit Intel 8051.png|centre|vignette|upright=2.5|Microcontrôleur 8051]]
Voyons maintenant la ''memory map'' de ce microcontroleur, pour la SRAM. Un point assez original est que 16 octets de la SRAM sont adressables bit par bit, à savoir que chaque bit a sa propre adresse. En tout, cela permet d'adresser 128 bits (16 adresses * 8 bits par octet adressé). L'intervalle bit-adressable va de l'adresse 32 (inclue) à l'adresse 47 (inclue).
Les 32 premières adresses sont réservés à la mémoire SRAM, c'est 32 octets de RAM utilisable à volonté par le programmeur. Les 16 adresses suivantes sont les 16 adresses bit-adressables mentionnées dans le paragraphe précédent. Les 96 octets suivants sont de la mémoire RAM adressable, affectée par défaut à la pile d'appel mais adressable via adressage direct si besoin. Les 128 octets de poids fort sont réservés aux registres du processeur et aux entrée-sorties mappées en mémoire.
[[File:Memory map du 8051.png|centre|vignette|upright=2|Memory map du 8051]]
Les 128 octets au sommet de l'espace d'adressage sont décrit dans le schéma ci-dessous. On voit que les deux accumulateurs sont mappés dedans, de même que le registre d'état PSW, le registre de configuration des interruptions IE (''Interrupt Enable''), et quelques autres. Les ports d'entrée-sortie sont aussi mappés dedans, que ce soit les 4 ports parallèles ou le port série. Les deux ''timers'' sont aussi mappés dedans, ainsi que leurs registres de configuration.
Une partie des octets sont bit-adressables, et cette partie inclus les registres du processeur et les ports d'entrées-sorties. Pour le dire autrement, chaque bit d'un port d'entrée-sortie a sa propre adresse mémoire, qui permet de le sélectionner. Par contre, les registres pour les ''timers'' ne sont pas dedans, sauf pour le troisième ajoutés dans des extensions du 8051.
[[File:MFrey SFR MCS-51.svg|centre|vignette|upright=2|Memory map des 128 octets de poids fort du 8051]]
Pour ce qui est des instructions, le 8051 supporte les opérations de multiplications et de divisions, contrairement aux microcontrôleurs PIC qui se limitaient à l'addition et la soustraction. Une autre particularité est que le processeur incorpore une '''unité de calcul de 1 bit'''. Elle permet de faire des opérations sur des bits, avec 17 instructions possibles au total. L'ALU de 1 bit est reliée à un accumulateur de 1 bit et 32 registres de 1 bits. Elle peut lire des opérandes de 1 bit en mémoire RAM ou sur les ports d'entrée-sortie, pour les portions qui sont bit-adressables.
Le processeur supporte aussi l'adressage indirect dans la SRAM, mais celui-ci fonctionne différemment comparé aux microcontrôleurs PIC. Il n'y a pas deux registres d'adresse dédiés, séparés des autres. A la place, l'adressage indiorect est implémenté normalement, en utilisant les registres généraux. Par contre, il y a une contrainte : seuls les deux premiers registres R0 et R1 sont utilisables. En clair, seuls ces deux registres peuvent contenir une adresse, un pointeur. C'est là une différence liée au fait que le 8051 a un banc de registre séparé.
Le 8051 peut communiquer avec une mémoire RAM externe, en plus de la SRAM interne. Pour cela, le processeur du 8051 avait un espace d'adressage séparé pour la RAM externe, capable d'adresser 64 kibioctets. Communiquer avec cet espace d'adressage se faisait avec des instructions d'accès mémoire séparées des autres, pas les LOAD/STORE normaux. Par exemple, l'instruction MOVX lisaient une donnée dans cet espace d'adressage, et la copiait dans l'accumulateur ou la SRAM. Pour envoyer l'adresse à lire/écrire à cette RAM externe, le processeur incorporait un registre d'adresse dédié. Il s'agit du '''registre DPTR''', qui contient une adresse de 16 bits. Le processeur devait copier l'adresse à lire/écrire dedans, puis lancer l'instruction MOVX.
===Le Fairchild F8 et la console de jeu Fairchild Channel F===
Un autre exemple est la Fairchild F8 de la défunte entreprise Fairchild Semiconductor. Il incorpore un processeur 8 bits, c'est à dire que le processeur fait des calculs sur des entiers de 8 bits maximum, une mémoire RAM de 64 octets, ainsi qu'une mémoire ROM de 1 kibioctet. Les 64 octets de RAM sont certes très peu, mais c'est suffisant pour certaines applications simples, comme les caisses automatiques de l'époque, ou des applications embarquées. Et de toute façon, il est possible d'ajouter de la mémoire RAM supplémentaire si les 64 octets de RAM intégrée ne suffisent pas. Le système était donc modulaire, adaptable selon les besoins, peu cher pour son implémentation minimale sans RAM en plus.
Vu qu'il s'agit d'un des tout premiers ordinateurs, il est sorti à une époque où la technologie était rudimentaire. À cette époque, le processeur était composé de pièces détachées qu'il fallait souder ensemble pour obtenir un processeur fonctionnel. Ce n'est que plus tard qu'est apparu le micro-processeur, qui regroupe un processeur complet dans un seul circuit intégré. Le résultat est que le processeur du Fairchild F8 est coupé en deux, l'unité de calcul et l'unité de contrôle sont placés dans des pièces détachées séparés.
Le microcontrôleur est composé de trois à quatre pièces détachées, certaines étant optionnelles. La première est le '''3850 CPU''', qui regroupe l'unité de calcul et la mémoire RAM intégrée. La seconde est le PSU (''3851 Program Storage Unit''), qui regroupe la mémoire ROM et l'unité de contrôle, ''program counter'' inclut. S'il y a besoin d'utiliser plus de RAM, il faut ajouter un circuit d’interface mémoire, qui est au choix le ''3852 Dynamic Memory Interface'' (DMI) ou le ''3853 Static Memory Interface'', le premier étant connecté à une mémoire de type DRAM, l'autre à une SRAM (nous verrons ce que sont les DRAM et les SRAM dans le prochain chapitre).
[[File:Fairchild F8.png|centre|vignette|upright=2|Fairchild F8]]
Le système minimal est composé d'un PSU et d'un 3850, sans les circuits d'interface mémoire. Le tout donne un système avec un processeur 8 bit, 64 octets de RAM et 1 kibioctet de ROM, les deux mémoires étant intégrées dans le "processeur". Le processeur gérait 4 entrées-sorties, chacune étant reliée avec un bus de 8 bit au processeur. Au passage, en 1977, Mostek a créé un microcontrôleur qui regroupe un PSU et un 3850 : le Mostek 3870. Le système minimal n'avait pas de bus d'adresse, vu que la RAM était intégrée au processeur. C'est les 3852 et 3853 qui ajoutaient un bus d'adresse. Ils ajoutent un bus d'adresse de 16 bits, ce qui permet d'adresser 64 kibioctets de RAM.
[[File:Fairchild-Channel-F.jpg|vignette|un Fairchild Channel F]]
Le Fairchild F8 a été utilisé dans la Fairchild Channel F, une des toute première console de seconde génération, à savoir des consoles qui utilisaient des cartouches de jeu. Avant les consoles de seconde génération, les consoles étaient non-programmables. Elles étaient conçues pour faire tourner un jeu précis, aucun autre, le jeu étant implémenté dans leurs circuits.
La Fairchild Channel F est composé du système minimal, auquel on a ajouté une carte son rudimentaire et 2 kibioctets de mémoire vidéo. La mémoire vidéo sert uniquement pour afficher des images à l'écran : on écrit l'image à afficher dedans, un circuit vidéo se charge de l'afficher à l'écran automatiquement. Le processeur ne fait qu'écrire dans cette RAM vidéo, il ne peut pas en lire le contenu. De la RAM supplémentaire peut cependant être ajoutée dans les cartouches de jeu.
===Le HP Nanoprocessor : un processeur sans ALU===
Un dernier exemple est celui du processeur HP Nanoprocessor, de l'entreprise HP. Il a été commercialisé en 1974, en même temps que les premiers micro-processeurs d'Intel. Tous les processeurs de l'époque étaient des processeurs 8 bits et le HP Nanoprocessor ne faisait pas exception. Ce n'était pas un processeur haute performance, il était destiné à des applications d'informatique industrielle ou embarquée. D'ailleurs, il utilisait des transistors de type metal-gate, peu performants, là où ses contemporains utilisait des transistors en silicium, plus performants.
Mais une caractéristique qui rend cela encore plus claire est qu'il n'y a pas d'ALU ! En effet, ce processeur est incapable de faire des additions, des soustractions ou autres opérations simples ! Il est cependant capable d'effectuer des incrémentations et décrémentations, des décalages, des opérations logiques comme des ET/OU/NON/XOR et bien d'autres. Il supporte en tout 48 instructions, avec un support limité des modes d'adressage indirects. Les instructions de branchement étaient des instructions SKIP, il n'y avait pas d'instructions de branchement généralistes.
Pour ce qui est des registres, il disposait de 16 registres de 8 bits et d'un accumulateur. Niveau mémoire, il était relié à une mémoire ROM, rien de plus. Il n'avait de RAM supplémentaire qu'on pouvait lui adjoindre, il devait se débrouiller avec seulement ses registres. Et cela ne posait pas de problèmes pour son usage. Seul le mode d'adressage indirect à registre est supporté, il n'y a pas de registres d'indices. Ce mode d'adressage permet de lire des données en mémoire ROM, la ROM pouvant contenir des tableaux de valeurs constantes.
: Il est possible de lui adjoindre de la RAM via les ports d'entrée-sortie, ainsi qu'une ALU, mais RAM et ALU sont traités comme des périphériques avec lesquels on communique, ils ne sont pas intégrés au processeur.
Niveau micro-architecture, il incorporait une unité de calcul logique et un circuit comparateur. Le comparateur était un circuit comparateur série des plus basiques, qui était utilisé pour les instructions de branchement et associées. L'unité de calcul logique gérait des incrémentations/décrémentation, des décalages, les opérations logiques et quelques autres. L'unité de calcul logique était bit-slicée, à savoir conçue en assemblant 8 ALU de 1 bit chacune, enchainées en série. Le tout était combiné à des circuits de ''carry skip''.
[[File:Unité de calcul du HP nanonprocessor.png|centre|vignette|upright=2|Unité de calcul du HP nanoprocessor]]
Son unité de décodage d'instruction était très simple, essentiellement basée sur des portes NOR, grâce à un encodage efficace des instructions machine. Le ''program counter'' fait 11 bits, ce qui permet d'adresser une ROM de 2 kibioctets. Le ''program counter'' était relié à un circuit incrémenteur qui gérait les isntructions SKIP (il pouvait incrémenter le ''program counter'' par pas de 1 ou de 2 en cas de SKIP). Le processeur contient aussi deux registres, qui servent en quelque sorte de pile d'adresse de retour. Un premier registre mémorise l'adresse de retour d'une fonction, l'autre mémorise le ''program counter'' lors d'une interruption, pour savoir où brancher à la fin de l'interruption.
[[File:HP nanoprocessor.png|centre|vignette|upright=2.5|HP nanoprocessor]]
Fait intéressant, le concepteur du processeur a gracieusement donné les masques utilisés pour graver le silicium du processeur au site [https://www.cpushack.com/ CPU Shack]. Les masques en question sont disponibles ici :
* [https://www.cpushack.com/2020/08/20/hp-nanoprocessor-mask-set/ HP NanoProcessor Mask Set]
* [https://www.cpushack.com/2020/08/09/the-forgotten-ones-hp-nanoprocessor/ The Forgotten Ones: HP Nanoprocessor]
Les masques ont été analysés par Ken Shirrif dans cet article de blog :
* [https://www.righto.com/2020/09/hp-nanoprocessor-part-ii-reverse.html HP Nanoprocessor part II: Reverse-engineering the circuits from the masks]
==Les processeurs 8/16 bits à architecture Von Neumann==
L'usage d'une architecture Harvard est une solution pour adresser plus de mémoire avec des CPU 8 bits. Mais plusieurs microprocesseurs commerciaux n'utilisaient pas cette solution. À la place, c'était des architectures Von Neumann, mais qui étaient capables de gérer des adresses de 16 bits. Les données faisaient 8 bits, les registres faisaient 8 bits, mais quelques techniques permettaient de gérer des adresses de 16 bits. Nous parlerons de '''processeurs 8/16 bits''' pour les désigner, et nous allons les étudier à part.
Un point important est que la gestion d'adresses de 16 bits permet d'adresser 64 kibioctets, qui peuvent être remplis avec de la RAM et de la ROM. On a donc le meilleur des mondes : 64 kibioctets de mémoire, mais avec des données de 8 bits et les économies de circuit qui vont avec. L'avantage est que le processeur peut maintenant gérer une vraie pile d'appel, pas seulement une pile d'adresse de retour. Il lui suffit pour cela d'intégrer un pointeur de pile codé sur 16 bits.
===Les modes d'adressage par page des CPU Motorola===
Les processeurs Motorola 8 bits étaient des processeurs 8 bits avec un bus d'adresse de 16 bits. C'était des processeurs à accumulateur incorporant deux registres d'indice, un registre d'état, un pointeur de pile, et un ''program counter''. Tous les registres sont reliés au bus d'adresse, sauf le registre d'état et l’accumulateur. Tous les registres font 8 bits, sauf le ''program counter''. La pile est câblée pour être dans un bloc de 256 octets compris entre l'adresse 1 0000 0000 et l'adresse 1 1111 1111, ce qui fait que son adressage se fait avec un seul octet.
[[File:6502-architecture.svg|centre|vignette|upright=1.5|Architecture simplifiée du 6502.</br> X et Y : registres d'indice ;</br> S : le pointeur de pile ;</br> A : accumulateur ;</br>P : registre d'état.</br>]]
Les processeurs Motorola 8 bits utilisaient une méthode simple pour adresser 64 kibioctets de RAM, avec des registres de 8 bits. Pour cela, ils utilisaient une variante de l'adressage base + décalage. Elle améliore l'adressage absolu, qui intègre l'adresse à lire/écrire dans l'instruction elle-même. L'adresse en question est de 8 bits et n'encode que les 8 bits de poids faible de l'adresse, les 8 bits de poids fort sont dans un '''registre de page''' adressé implicitement. L'adresse finale est obtenue en concaténant ce registre avec l'adresse mémoire intégrée dans l’instruction. Le résultat est que la mémoire était découpée en blocs de 256 consécutifs, chacun pouvant servir de fenêtre de 256 octets. Une page est réservée pour la pile, la seconde, comme dit plus haut.
Formellement, ce mode d'adressage a des ressemblances avec la commutation de banques, une technique qu'on verra dans les chapitres sur l'espace d'adressage et la mémoire virtuelle. Mais ce n'en est pas du tout : le registre de page est utilisé uniquement pour les accès mémoire avec le mode d'adressage base + décalage, mais pas pour les autres accès mémoire, qui gèrent des adresses complètes. Notons que l'usage d'un registre de page dédié fait que celui-ci est adressé implicitement.
Il faut noter que la technique a été utilisée sur des processeurs 16 bits, pour contourner la petite taille des instructions. Un exemple est celui du HP 2100, un processeur 16 bits. Il avait un registre de page de 5 bits et encodait 10 bits d'adresse dans ses instructions. Ses instructions d'accès mémoire disposaient d'un bit qui choisit quel mode d'adressage utiliser. S'il était à 0, l'adressage absolu était utilisé, le registre de page n'était pas utilisé. Mais s'il était à 1, le registre de page était utilisé pour calculer l'adresse.
Une évolution de l'adressage précédent est le '''mode page direct'''. Avec lui, le registre de page est étendu et contient une adresse mémoire complète. L'adresse finale n'est pas obtenue par concaténation, mais en additionnant le registre de page avec l'adresse fournie par adressage absolu + décalage. Un exemple est celui des premiers processeurs Motorola, qui géraient des adresses courtes de 8 bits. L'adresse courte de 8 bits correspondait non pas aux 256 premiers octets de la mémoire, mais à une fenêtre de 256 octets déplaçable en mémoire. La position de la fenêtre de 256 octets était spécifiée par le registre de page de 16 bits, qui précisait l'adresse du début de la fenêtre, celle de sa première donnée.
Il s'agit donc formellement d'adressage base + décalage, à un détail près : il n'y a qu'un seul registre de base. Le fait que ce registre de base soit unique fait qu'il est adressé implicitement, on n'a pas à encoder le numéro/noms de registre dans l'instruction. Le registre de base est utilisé uniquement pour l'adressage absolu, pas pour les autres accès mémoire. S'il y a des ressemblances avec la segmentation, une technique de mémoire virtuelle qu'on abordera dans quelques chapitres, ce n'en est pas vu que le registre de base est utilisé seulement pour un mode d'adressage bien précis.
===Le ''pseudo-aliasing'' des registres des processeurs Intel x86===
Voyons maintenant le cas des anciens processeurs 8 bits d'Intel à savoir l'Intel 4004, 4040, 8008 et 8080. Le Z80, un processeur inspiré des CPU Intel 8 bits, est aussi concerné. Avant de poursuivre, parlons des registres de ces processeurs. Les premiers CPU Intel incorporaient 7 registres de 8 bits nommés A, B, C, D, E, F, H, L, SP. Ils correspondent respectivement à : l'accumulateur A ; six registres nommés B, C, D, E, H et L ; le registre d'état F ; le pointeur de pile SP. Le Z80 ajoute deux registres d'indice X et Y. De plus, le Z80 dispose de registres d'interruption, qui sont en quelque sorte des copies des registres A, B, C, D, E, F, H, L. Le tout est illustré dans le tableau ci-dessous.
{|class="wikitable" style="text-align:center;"
|-
!
! Registres des CPU Intel
! Registres supplémentaires du Z80
|-
! Accumulateur
| A
| A'
|-
! Registre d'état
| F
| F'
|-
! Registres généraux
| B, C, D, E, H, L
| B', C', D', E', H', L'
|-
! Pointeur de pile
| colspan="2" | SP (sauf pour le 8008)
|-
! Registres d'indice
|
| X et Y
|}
Le 8008 incorpore une pile d'appel de 7 adresses, dans le processeur lui-même. Il en est de la même avec le 4004 et le 4040, comme on le verra dans la section sur les processeurs 4 bits. Mais le 8080 et le 8085 ont remplacé le tout par un simple pointeur de pile, afin d'avoir une véritable pile d'appel. Autant c'est impossible d'avoir une pile d'appel avec seulement 256 octets de mémoire, autant on peut se le permettre avec 65 536 adresses.
Pour gérer des adresses de 16 bits, ils auraient pu utiliser des registres d'adresse séparés, mais on préféré un système de '''pseudo-''aliasing'' de registres'''. Formellement, c'est un système qui concatène deux registres 8 bits pour obtenir une adresse de 16 bits. L’appariement a lieu lors de certaines opérations bien précises, qui n'ont de sens que pour les adresses : la lecture/écriture en mémoire, et l'incrémentation.
Il y avait cependant des contraintes quant aux paires de registres possibles, toutes les paires de registres n'étaient pas autorisées. Les CPU concernés sont donc des processeurs hybrides accumulateur-registre généraux. L'accumulateur ne peut pas être appairé, seuls les registres généraux le peuvent. Le Z80 autorise plus de paires que les CPU Intel. Voici les paires de registres qui pouvaient servir d'adresse 16 bits :
* Les CPU 8008 d'Intel autorisait une seule paire formée des registres H et L.
* Les autres processeurs, à savoir le 8080, le 8085 et le Z80, autorisaient : les paires BC, DE et HL.
Le 8008 ne gérait que des opérations sur 8 bits. Mais le 8080 et le 8085 ont ajouté des instructions 16 bits qui agissaient sur des paires de registre, que le Z80 a repris. Une paire de registres est considérée comme un registre unique de 16 bits pour certaines opérations arithmétiques, dont l'incrémentation. Voici la liste des instructions concernées :
* INC et DEC pour l'incrémentation et la décrémentation ;
* DAD : additionne le registre HL avec une autre paire (Hl inclus) ;
* LXI : copie une constante immédiate dans une paire de registres ;
* LHLD : lit 16 depuis la mémoire et l'enregistre dans une paire de registres ;
* SHLD : copie 16 bits depuis une paire de registres et l'enregistre en mémoire ;
* PUSH et POP : empile ou dépilent une paire de registre sur la pile ;
* XTHL : échange la paire HL avec les 16 bits au sommet de la pile d'appel ;
* XCHG : échange le contenu de la paire HL et DE.
Pour résumer, le processeur avait des instructions LOAD, STORE, PUSH et POP adaptées pour gérer des paires de registre. De plus, l'instruction XCHG permettait d’échanger le contenu des paires DE et HL. L'instruction a été étendue sur les processeurs 16 bits pour échanger tous les registres. Mais l'implémentation était alors différente. L'incrémentation sur une paire de 16 bit était très utile, car les adresses sont souvent incrémentées quand on parcours un tableau. Ces instructions nous donnent quelques indices sur ce qu'il y a dans le processeur.
Le système de pseudo-aliasing a un impact sur le banc de registre. Le banc de registre regroupe les registres généraux et le pointeur de pile, mais ne contient pas l'accumulateur. Les contraintes sur les paires de registres possibles ne s'expliquent que d'une seule manière : le banc de registre contient des registres de 16 bits, une paire de registres 8 bits est mémorisée dans un registre unique. Il faut donc faire une différence entre les registres architecturaux de 8 bits, et les registres réels de 16 bits.
Le banc de registre a un port de 8 bits pour les données, qui est fabriqué à partir d'un port 16 bits auquel on a rajouté un multiplexeur pour choisir soit l'octet de poids faible, soit l'octet de poids fort. Le bus de données fait 8 bits, ce qui fait que les instructions LOAD, STORE, PUSH et POP pour paires 16 bits sont réalisées en deux fois : on lit/écrit l'octet de poids faible, puis celui de poids fort. Par contre, le bus d'adresse fait bien 16 bits. Cela suggère que le banc de registre dispose d'un port de 16 bits dédié aux adresses, en plus du port de données 8 bits.
[[File:Architecture d'un CPU 8-16 bits avec un banc de registre double port.png|centre|vignette|upright=2|Architecture d'un CPU 8-16 bits avec un banc de registre double port]]
L'incrémentation d'une paire 16 bits ne coute rien à implémenter, ou presque. En effet, le processeur incorpore un incrémenteur 16 bits pour le ''program counter'', qui est relié au bus d'adresse. L'idée est de rentabiliser cet incrémenteur, en lui permettant d'incrémenter des données/adresses de 16 bits obtenues via pseudo-aliasing. De même, il peut être utilisé pour incrémenter le pointeur de pile, voire un compteur de rafraichissement mémoire (pour rappel, le rafraîchissement mémoire demande de balayer la mémoire d'adresse en adresse et été fait par le CPU à l'époque). Pour cela, il suffit de connecter le ''program counter'', le banc de registre, et l'incrémenteur, via un bus dédié.
[[File:Calcul d'adresse par ALU dédiée avec PC séparé.png|centre|vignette|upright=2|Calcul d'adresse par ALU dédiée avec PC séparé]]
Notez qu'on peut encore simplifier le tout en placant le ''program counter'' dans le banc de registre, ce qui ne gênera pas le travail de l'incrémenteur mais simplifiera le câblage au bus d'adresse. Ce n'était pas systématique, certains processeurs mettaient le ''program counter'' dans le banc de registre, d'autres non.
: Inclure le ''program counter'' dans le banc de registre permet parfois de remplir un vide. Par exemple, sur un processeur avec 12 registres, le banc de registre devrait faire idéalement 16 registres, inclure le ''program counter'' dedans fait monter le tout à 13.
[[File:Architecture d'un CPU 8-16 bits.png|centre|vignette|upright=2|Architecture d'un CPU 8-16 bits]]
Les processeurs Intel 8 bits, à savoir le 8008, le 8080 et le 8085 ; mettaient le ''program counter'' dans le banc de registre. Vous avez donc toutes les armes pour comprendre leur micro-architecture. Par exemple, voici la micro-architecture du processeur 8080. Remarquez le banc de registre, qui contient tous les registres sauf l'accumulateur et le registre. Il a deux ports : un pour les adresses et un pour les données. Notez le dé-multiplexeur sur le port de donnée. Pour le reste, il s'agit d'une architecture à accumulateur hybride des plus classiques.
[[File:Intel 8080 arch.svg|centre|vignette|upright=3|Microarchitecture de l'Intel 8080.]]
Le Z80 est un processeur inspiré du design des processeurs Intel 8 bits, mais avec pas mal d'améliorations. Un point particulier de ce processeur est son banc de registre. Il contient tous les registres du processeur, y compris l'accumulateur et le registre d'état ! Les seuls registres en-dehors du banc de registre sont le ''program counter'' et un compteur de rafraichissement mémoire IR.
Un autre point particulier est que les registres dans le banc de registres avaient une copie séparée accessible uniquement pour les interruptions, via fenêtrage de registres. Et l'accumulateur et le registre d'état étant dans le banc de registre, il y avait deux accumulateurs et deux registres d'état. Les registres A, B, C, D, E et F étaient dupliqués, par le pointeur de pile ni les registres d'indice. Les copies des registres étaient nommées A', B', C', D', E' et F'.
Le Z80 supportait des instructions d'échange de registre en plus des CPU Intel 8 bits. L'instruction EX peut échanger soit le contenu des paires D,E et H,F, soit la paire A,F avec la paire A',F'. L'instruction EXX échange les paires BC, DE, HL avec les paires BC', DE', HL'. En faisant cela, le programmeur pouvait utiliser deux fois plus de registres généraux s'il n'utilisait pas les interruptions. L'échange de paires se fait sans copies de registres, mais simplement en modifiant l'adresse envoyée sur le banc de registre. Pour cela, plusieurs bascules mémorisent des bits qui indiquent si les paires ont été échangées ou non. Il y a une bascule pour les paires DE , HL ; une autre pour les paires A,F et paire A',F', une dernière pour l'instruction EXX. En combinant ces bascules avec les noms de registres envoyés par le séquenceur, on peut échanger les paires de registres.
==Le cas particulier des processeurs 4 bits : le 4004 d'Intel==
L'Intel 4004 était le tout premier micro-processeur. Il s'agissait d'un microprocesseur de 4 bits, basé sur une architecture à accumulateur. Il disposait d'un accumulateur et de 16 registres d'indice, tous de 4 bits. Il faisait des calculs sur des données de 4 bits, appelées des nibbles. Cependant, sur ses 46 instructions machines supportées, 41 agissaient sur des opérandes de 8 bits, les 5 restantes sur des opérandes de 16 bits. Simplement, les calculs se faisaient en deux fois, en échangeant des données entre mémoire RAM et accumulateur.
Le 4004 est un circuit intégré avec peu de broches. Il dispose notamment d'un bus de données/adresse, qui est multiplexé, c’est-à-dire qu'il sert alternativement de bus de données et de bus d'adresse selon les besoins. Le bus de commande mémoire fait 5 bits, dont 4 pour les chips de RAM, un pour la ROM. Les adresses sont codées sur 12 bits, les données sur 4 et les instructions sur 8 bits. L'envoi d'une adresse sur le bus se fait en plusieurs fois, de même que la lecture d'une instruction. Il s'agit là d'une adaptation pour outrepasser les limitations d'un processeur 4 bit.
[[File:Intel 4004 processor pinout.png|centre|vignette|upright=2|Broches de l'Intel 4004. Nous verrons à quoi elles servent plus bas.]]
===L'espace d'adressage de l'Intel 4004===
Les adresses du processeur sont sur 12 bits, ce qui fait 4096 adresses différentes. Elles regroupent à la fois la ROM et la mémoire RAM, vu que l'architecture est une sorte de mélange bizarre entre une architecture Von Neumann et Harvard. Le processeur gère bien deux espaces d'adressage séparés, mais la RAM et la ROM sont reliés au même bus. La sortie CM-ROM du processeur indique si l'adresse envoyée correspond à la RAM ou la ROM. Un circuit de décodage d'adresse active ou désactive la RAM selon la valeur de ce bit, l'inverse pour la ROM, en agissant sur leurs bits Chip Select. Seule la RAM ou la ROM répondent alors à l'adresse.
Pour ce qui est de la RAM, le circuit de décodage d'adresse pouvait gérer au maximum 1024 adresses différentes, chacune contenant un nibble. Pour cela, le CPU 4004 était relié à une ou plusieurs RAM externes, des Intel 4002. Chaque Intel 4002 contenait 64 nibbles de données, plus 16 nibbles de statut qu'on ne détaillera pas ici. Les nibbles de statut étaient accessibles en utilisant des instructions d'entrée-sortie, donc pas avec des lectures/écritures mémoire. Les 64 nibbles de données sont découpés en 4 groupes de 16 nibbles. Le CPU pouvait être relié à maximum 16 Intel 4002, ce qui fait 1024 nibbles de données et 256 nibbles de statut. L'ensemble permet de remplir l'espace d'adressage de 1024 adresses.
===Le registre de page et le pseudo-aliasing des registres===
Sélectionner une adresse mémoire utilisait un mélange entre pseudo-aliasing et registre de page. Pour les données, les 1024 adresses étaient découpées en 4 pages de 256 adresses. Pour la ROM, les 4096 adresses étaient découpées en 16 pages de 256 adresses. Localiser une donnée dans une page ne requiert que 8 bits, 2/4 bits supplémentaires permettent de sélectionner la page voulue. Le registre de page était dans le processeur lui-même, et était relié aux sorties du processeur nommées CM-RAM 0, 1, 2 et 3. Les 4 sorties encodaient un nombre qui permet de sélectionner le numéro de page voulu.
Le registre de page fait 5 bits : un pour distinguer RAM et ROM, 4 bits pour sélectionner la page voulue. L'avantage est que la carte mère gère au maximum 16 chips de RAM, ce qui colle parfaitement avec les 4 utilisés pour sélectionner une page. Un chip de RAM correspond à une page, et chacun est activé ou désactivé suivant la page sélectionnée. Pour cela, il suffit d'ajouter un décodeur sur la carte mère, qui prend les 4 bits du registre de page et fournit les signaux Chip Select aux différents chips de RAM.
Reste alors à utiliser les 8 bits d'adresse à l'intérieur d'un chip de RAM. Le 4004 permettait de concaténer deux registres d'indice de 4 bits pour former une adresse de 8 bits. Les instructions d'accès mémoire pouvaient ainsi préciser une paire de registre d'indice pour préciser quelle adresse lire/écrire. Idem pour les branchements indirects : le processeur supportait une instruction de branchement indirect qui précisait l'adresse dans une paire de registres d'indice. Les registres d'indice sont donc assez mal nommés sur cette architecture, vu qu'ils peuvent servir soit de registre d'indice, soit de demi-registre d'adresse. Il s'agit là du système de pseudo-aliasing des registres, mais appliqué aux registres d'indice.
L'Intel 4004 gérait deux instructions pour gérer les adresses mémoires. La première, l'instruction DCL (''Designate Command Line'') configure le registre de page. Elle prend en entrée un numéro de page et le copie dans le registre de page. L'opérande peut provenir d'un registre d'indice ou de l'accumulateur. La seconde, l'instruction SRC (''Send Register Control'') concatène deux registres d'indice pour obtenir une adresse de 8 bits. Un accès mémoire se fait donc en maximum trois instructions : une qui configure le registre de page si ce n'est pas déjà fait, une instruction SRC pour envoyer l'adresse, et une troisième instruction qui dit s'il faut faire une lecture ou une écriture.
===La microarchitecture de l'Intel 4004===
Il incorporait une pile d'adresse de retour intégrée au processeur. La pile d'adresse acceptait exactement 3 adresses maximum. Elle était regroupée avec le ''program counter'' dans un banc de registre, de 4 registres. Le ''program counter'' et le pointeur de pile faisaient chacun 12 bits, soit trois nibble. Ils étaient incrémentés par un incrémenteur dédié.
SI on omet le registre de page et la pile d'adresse, le 4004 est une architecture à accumulateur des plus classiques, avec un bus interne unique, un banc de registre pour les registres d'indices, un accumulateur relié à une unité de calcul. Les registres d'indice étaient dans un banc de registre séparés, car ils faisaient 4 bits chacun, contrairement au pointeur de pile et le ''program counter''. Un détail important est que les bancs de registres du 4004 étaient implémentés avec de la DRAM, et non des registres usuels fabriqués avec des bascules 1 bit.
[[File:Microarchitecture de l'Intel 4004.png|centre|vignette|upright=2.5|Microarchitecture de l'Intel 4004]]
<noinclude>
{{NavChapitre | book=Fonctionnement d'un ordinateur
| prev=Les architectures à pile et mémoire-mémoire
| prevText=Les architectures à pile et mémoire-mémoire
| next=Les processeurs de traitement du signal
| nextText=Les processeurs de traitement du signal
}}
</noinclude>
pq96ugzsurdcesaphbhtnwjouyd4wvz
765738
765737
2026-05-01T20:56:11Z
Mewtow
31375
/* Les microcontrôleurs PIC */
765738
wikitext
text/x-wiki
Nous avons déjà abordé la notion de processeur 8, 16, 32, 64 bits. Elle désigne la taille des registres généraux, ou de l'accumulateur. De nos jours, les processeurs 32 et 64 bits sont la norme, mais les premiers micro-processeurs étaient des processeurs 4 et 8, avant de passer rapidement au 16 bits. La raison est que leur budget en transistor limité faisait qu'on ne pouvait pas utiliser une ALU trop grande : une ALU 8 bit prend deux fois moins de place et de transistors qu'une ALU 16 bits. Cependant, les processeurs 8 bits avaient de sérieuses limitations qui étaient compensées par diverses solutions. Dans ce chapitre, nous allons faire une revue rapide des processeurs 8 bits et de leurs fonctionnalités.
La principale limitation des CPU 8 bits était l'adressage : des registres de 8 bits limitaient l'espace d'adressage à seulement 256 adresses, soit à peine 256 octets ! Intuitivement, on se dit que 256 octets est purement impraticable, on ne peut rien faire d'intéressant avec seulement 256 de RAM + ROM. Et c'est partiellement vrai. L'adage veut que 16 bits est la taille minimale intéressante, la limite à partir de laquelle on a assez de mémoire RAM/ROM pour coder des applications intéressantes. Mais 256 octets de RAM est largement suffisant sur de nombreux systèmes embarqués simples s'en accommodent : des caisses enregistreuses, des systèmes de régulation de feu de circulation, etc.
Pour les applications demandant plus de mémoire RAM, les CPU de l'époque contournaient la limitation de 256 octets de RAM avec de nombreux stratagèmes. Dans ce qui va suivre, nous allons séparer les CPU 8 bits selon qu'ils utilisent une architecture Harvard ou une architecture Von Neumann. La raison est qu'une architecture Harvard permet en soi de contourner partiellement ce problème d'adressage. Les choses sont plus compliquées avec une architecture Von Neumann.
==Les processeurs 8/16 bits à architecture Harvard ==
La première solution est d'utiliser une architecture Harvard. Le processeur 8 bit a alors deux espaces d'adressage : un pour la RAM, un autre pour la ROM. Et les deux utilisent des adresses de taille différente. La ROM est reliée à un bus d'adresse de 16 bits, alors que la RAM est elle connectée à un bus d'adresse de 8 bits. La RAM est donc limitée à 256 octets, alors que la ROM peut monter jusqu'à 64 kibioctets. Mine de rien, faire ainsi est largement suffisant.
Pour encore améliorer la situation, il est possible d'utiliser une architecture Harvard modifiée, qui permet de lire des données depuis la mémoire ROM. Cela réduit encore plus les besoins en mémoire RAM. Les constantes manipulées par le programme sont mémorisées en ROM, lues depuis la ROM, au lieu d'être chargées en RAM. Avec ce genre de stratagèmes, 256 octets de RAM est largement suffisant sur de nombreux systèmes, à condition qu'on ait assez de ROM pour coder un programme digne de ce nom. Par exemple, de nombreux systèmes embarqués simples s'en accommodent : des caisses enregistreuses, des systèmes de régulation de feu de circulation, etc.
Les processeurs 8 bits intègrent parfois les 256 octets de RAM directement dans le processeur, dans le banc de registres ! Beaucoup en implémentaient moins, avec par exemple seulement 64 octets de RAM, ou 32 octets, ou 128 octets. L'avantage est que cela élimine le bus pour les données, ce qui économise beaucoup de broches sur le circuit intégré du CPU. Et pour les applications demandant plus de RAM, on pouvait ajouter un circuit séparé qui permettait d'adresser une RAM plus grande. Et c'est ce qui explique que cette solution est beaucoup utilisée sur les microcontrôleurs peu puissants. Les exemples qui vont suivre devraient vous convaincre.
: Les processeurs de ce type implémentent des optimisations pour adresser plus de 256 octets de RAM. La plus connue est la commutation de banques. Mais nous n'avons pas encore abordé celle-ci, et il faudra attendre le chapitre sur l'espace d'adressage pour cela.
===Les microcontrôleurs PIC===
Les '''microcontrôleurs PIC''' regroupent des microcontrôleurs allant de microcontrôleurs 8 bits aux performances très faible, à des microcontrôleurs 32 bits bien plus puissants. Les microcontrôleurs PIC sont très utilisés dans l'embarqué ou d'informatique industrielle. Ils sont vendu à des volumes assez impressionnants, plusieurs millions par an. Et si vous avez ou êtes en train de faire des études d'électronique, je parie que vous les avez déjà vu en classe, ou que ce ne saurait tarder. Dans ce qui suit, nous allons nous concentrer sur les microcontrôleurs PIC 8 bits, à savoir les PIC 16, 16 et 18. Les PIC 24, qui sont des microcontrôleurs 16 bits, ne seront pas abordés.
Le processeur incorpore de nombreuses optimisations pour éviter de trop gaspiller d'adresses mémoire. Mais ces optimisations sont partiellement compensées par d'autres choix de conception que nous détaillerons plus bas. Déjà, les microcontrôleurs PIC 8 bits sont une architecture Harvard, comme dit plus haut. Ensuite, le processeur utilise un espace d'adressage séparé pour les entrés-sorties. Les ports d'entrée-sortie et les ''timers'' ne sont donc pas mappés en mémoire RAM, ce qui économise quelques adresses.
La mémoire ROM des PIC va de 1024 instructions à 4096 instructions. En comparaison, la mémoire RAM des microcontrôleurs PIC ne peut pas dépasser 256 adresses, et elle est encore plus petite en pratique sur certains modèles. Pour donner un exemple, le PIC16F84 a une RAM composée de 68 "registres" de 8 bits. Le terme "registres" devrait vous faire tiquer, mais c'est bien le terme utilisé dans la documentation des PIC. Et il faut admettre que la différence entre banc de registre et SRAM intégrée est floue, comme on va tenter de l'expliquer dans les paragraphes suivants.
: Les PIC 18 peuvent adresser plus de 256 octets de RAM en utilisant la commutation de banques, une technique qui sera abordée dans plusieurs chapitres.
[[File:DocPIC16F84 3.png|centre|vignette|upright=3|Espaces d'adressage du PIC16F84.]]
Les PIC disposent de nombreux registres de contrôle, d'un ''program counter'', d'un registre d'état, et d'un pointeur de pile. Un détail très important est que ces registres sont placés dans la mémoire SRAM ! En clair, on peut y accéder en lisant/écrivant à une adresse mémoire bien précise. Sur les modèles 16F, l'espace d'adressage fait 128 octets, dont 32 sont réservés aux registres du processeur, ce qui fait que seules 96 octets sont adressables comme de la RAM. Mais les 128 octets sont un seul et unique SRAM dans le processeur. Ce qui explique qu'il est difficile de séparer banc de registre et RAM principale sur ce processeur : les deux sont fusionnées ! Cela gaspille quelques adresses mémoire, mais permet une implémentation plus simple, avec un banc de registre unique.
Les PIC sont une architecture à accumulateur basique, ce qui permet d'utiliser un banc de registre à un seul port. Ce choix simplifie grandement la conception du processeur. Il faut préciser que l'accumulateur n'est pas mappé en mémoire. Sauf sur les modèles PIC 17, qui mappé l'accumulateur en mémoire RAM !
Leur implémentation de l'accumulateur ajoute une petite subtilité : le résultat d'une opération arithmétique peut être enregistré ailleurs que dans l'accumulateur. Le résultat peut aussi remplacer la seconde opérande, celle lue en mémoire RAM. Dit autrement, le résultat est enregistré dans l'adresse mémoire source. Les instructions de calcul ont le choix : un bit dans leur encodage précise où enregistrer le résultat.
{|
|-
|[[File:DocPIC16F84 4.png|centre|vignette|upright=2|Microarchitecture simplifiée d'un microcontroleur PIC (ici, un 16F84).]]
|[[File:DocPIC16F84 5.png|centre|vignette|upright=2|Microarchitecture simplifiée d'un microcontroleur PIC (ici, un 16F84), avec les branchements directs.]]
|}
La petite taille de la ROM d'un PIC n'est pas une surprise. Les architectures 8 bits sont conçues pour ne pas utiliser beaucoup de transistors et être très simples. Aussi, utiliser une petite ROM est nécessaire. Mais il faut aussi adapter le jeu d'instruction, pour qu'il ait une bonne densité de code. Par exemple, il faut faire en sorte d'avoir des instructions assez courtes. Si les instructions font 16 bits au lieu de 32, on divise par deux le nombre de transistors nécessaire pour la mémoire ROM. La conséquence est que le jeu d’instruction des PIC est adapté à cette contrainte.
Les microcontrôleurs PIC utilisent un jeu d'instruction propriétaire, dont les instructions sont très petites. Les premières versions du jeu d'instruction utilisaient des instructions codées sur 12 bits, dont 5 pour l'adresse mémoire de la seconde opérande. Pour les branchements, 3 bits étaient utilisés pour l'opcode, 9 pour l'adresse de destination. Par la suite, les instructions ont été étendues à 13 bits sur les PIC1670, puis à 14, 15 et 16 bits. Les adresses ont alors été élargies, ce qui permet d'adresser en peu plus de mémoire RAM.
Il est intéressant de regarder comment les PIC font pour obtenir des instructions aussi courtes. Premièrement, le fait d'utiliser une architecture à accumulateur, couplé à une RAM très petite aident grandement. Les architectures à accumulateur ont besoin de préciser un opcode et une adresse mémoire pour chaque instruction, pas besoin de préciser de noms de registres ni le mode d'adressage. La taille des adresses mémoire est censé être un problème pour la densité de code, mais les adresses d'un processeur 8 bits font 8 bits. On peut alors avoir un jeu d'instruction étoffé, en utilisant des instructions 16 bits, qui concatènent un opcode et une adresse mémoire, d'un octet chacun.
Mais d'autres optimisations permettent d'avoir une bonne densité de code. Les PIC ont des branchements pour les appels et retour de fonction. Les PIC incorporent une pile d'appel de retour, qui fait 2 à 8 adresses suivant les modèles. Elle permet d'économiser quelques registres, car la pile d'appel n'est pas mappée dans l'espace d'adressage, elle n'est pas adressable. On économise ainsi 2 à 8 registres, sur 32-256 registres. De plus, cela simplifie l'encodage des instructions d'appel/retour de fonction, qui n'ont pas à préciser où enregistre l'adresse de retour.
Les PIC n'ont pas d'instructions de branchement conditionnels, ils font avec une SKIP instruction et des branchements inconditionnels. Du moins, c'est le principe, car si vous regardez la liste des instructions ci-dessous, vous verrez qu'il n'y a pas d'instruction SKIP. A la place, les instructions SKIP sont fusionnées avec d'autres instructions. Elles sont notamment fusionnées avec les instructions d'incrémentation et de décrémentation. Les PIC supportent une incrémentation normale, une décrémentation normale, une décrémentation fusionnée avec une instruction SKIP, et une incrémentation fusionnée avec une instruction SKIP. Les deux dernières incrémentent/décrémentent l'accumulateur et SKIP l'instruction suivante si le résultat est zéro. Elles permettent de fortement simplifier l'implémentation des boucles qui s'exécutent tant que leur compteur atteint zéro.
Les PIC disposent aussi d'instructions de manipulation de bit, pour tester/masquer un bit dans une opérande, 4 en tout. Il y a en a 4 en tout : mettre à 0, mettre à 1, tester si bit = 1, tester si bit = 0. Les instructions qui testent un bit prennent leur opérande dans l'accumulateur. Elles font le test du bit et décident s'il faut skipper l'instruction suivante ou non. Il y a aussi deux instructions de rotation à gauche et droite, qui tiennent compte de la retenue mémorisée dans le registre d'état. Par contre, il n'y a pas d'instructions de décalages, qui peuvent être émulées avec une rotation suivie d'un ET bit à bit. Mentionnons aussi une instruction pour inverser deux ''nibbles'' dans un octet.
Les modèles haute performance ajoutent des instructions d'addition avec retenue entrante, idem pour la soustraction. De telles instructions ssont très utiles pour faire des additions/soustractions sur des opérandes de 16 bits. Le processeur a beau être un CPU 8 bits, il peut être utilisé pour faire des calculs 16 bits, la performance est alors amoindrie, mais ce n'est pas un problème pour les applications d'un tel microcontroleur.
Les modèles intiaux, comme les PIC 10 et 12, ne supportaient pas les interruptions, mais c'est chose réglé sur les modèles plus récents. Ils ont même des registres séparés pour les interruptions et les programmes normaux. De plus, ils intégrent nativement un ''watchdog timer''.
{|class="wikitable" style="text-align:center"
|+ Jeu d'instruction des dodèles PCI 16
|-
! colspan="5" | Instructions diverses
|-
| colspan="3" | 00 0000 0000 0000 || NOP || Ne fait rien
|-
| colspan="3" | 00 0000 0000 1000 || RETURN || Instruction de retour pour une fonction
|-
| colspan="3" | 00 0000 0000 1001 || NOP || Instruction de retour pour une interruption
|-
| colspan="3" | 00 0000 0110 0011 || SLEEP || Mise en veille
|-
| colspan="3" | 00 0000 0110 0100 || CLRWDT || RESET le ''watchdog timer'', intégré dans le PIC
|-
! colspan="5" | Instructions de manipulation de bit
|-
| 0100 || Position du bit dans l'opérande || Adresse mémoire || BCF || Met le bit à 1
|-
| 0101 || Position du bit dans l'opérande || Adresse mémoire || BSF || Met le bit à 0
|-
| 0110 || Position du bit dans l'opérande || Adresse mémoire || BTFSC || Teste si le bit adressé est à 1
|-
| 0111 || Position du bit dans l'opérande || Adresse mémoire || BTFSS || Teste si le bit adressé est à 0
|-
! colspan="5" | Branchements
|-
| colspan="2" | 100 || Adresse mémoire || CALL || Appel de fonction
|-
| colspan="2" | 100 || Adresse mémoire || GOTO || Branchement inconditionnel
|-
! colspan="5" | Instructions logiques/arithmétiques avec opérande lue en mémoire RAM
|-
| colspan="5" | ''Le bit '''d''' dans l'opcode indique la destination : accumulateur ou adresse mémoire''.
|-
| colspan="2" | 0000001 || Adresse mémoire || MOVWF || Store (accumulateur vers destination)
|-
| colspan="2" | 000001d || Adresse mémoire || MOVWF || Met à zéro la destination (adresse ou registre)
|-
| colspan="2" | 000001d || Adresse mémoire || SUBWF || Soustraction
|-
| colspan="2" | 000010d|| Adresse mémoire || DECF || Décrémentation
|-
| colspan="2" | 000100d|| Adresse mémoire || IORWF || OU bit à bit
|-
| colspan="2" | 000101d|| Adresse mémoire || ANDWF || ET bit à bit
|-
| colspan="2" | 000110d || Adresse mémoire || XORWF || XOR bit à bit
|-
| colspan="2" | 000111d || Adresse mémoire || ADDWF VWF || Addition
|-
| colspan="2" | 001000d || Adresse mémoire || MOVF || LOAD
|-
| colspan="2" | 001001d || Adresse mémoire || COMF || NOT bit à bit
|-
| colspan="2" | 001010d || Adresse mémoire || INCF || Incrémentation
|-
| colspan="2" | 001011d || Adresse mémoire || DECFSZ || Décrémentation, puis instruction SKIP si résultat = 0
|-
| colspan="2" | 001100d || Adresse mémoire || RRF || Rotation à droite avec retenue entrante
|-
| colspan="2" | 001101d || Adresse mémoire || RLF || Rotation à gauche avec retenue entrante
|-
| colspan="2" | 001110d || Adresse mémoire || SWAPF || Echange deux ''niblle'' dans un octet
|-
| colspan="2" | 001111d || Adresse mémoire || INCFSZ || Incrémentation, puis instruction SKIP si résultat = 0
|-
! colspan="5" | Instructions logiques/arithmétiques avec constante immédiate
|-
| colspan="2" | 1100xx || Constante immédiate (8bits) || MOVLW || Copie constante dans accumulateur
|-
| colspan="2" | 1101xx || Constante immédiate (8bits) || RETLW || MOV fusionné avec un retour de fonction
|-
| colspan="2" | 111000 || Constante immédiate (8bits) || IORLW || OU
|-
| colspan="2" | 111001 || Constante immédiate (8bits) || ANDLW || ET
|-
| colspan="2" | 111010 || Constante immédiate (8bits) || XORLW || XOR
|-
| colspan="2" | 11110x || Constante immédiate (8bits) || SUBLW || Soustraction
|-
| colspan="2" | 11111x || Constante immédiate (8bits) || ADDLW || Addition
|}
Les PIC gèrent l'adressage absolu et immédiat, mais pas plus. L'adressage absolu, celui où l'adresse est intégrée dans l'instruction, est très simple à implémenter. Les adresses prennent moins d'un octet, vu que la taille de la RAM est très petite, les adresses sont très courtes, les intégrer dans des instructions elles-mêmes courtes n'est pas un problème. L'adresse est encodée sur 5 à 7 bits, selon le modèle, ce qui permet d'adresser entre 32 et 128 octets.
Les PIC ne supportent pas l'adressage indirect, mais peuvent l'émuler grâce à un '''registre d'adresse''' dédié. Il s'agit du registre FSR, qui mémorise l'adresse à lire/écrire. Il est possible de copier un pointeur dedans, qui provient soit de l'accumulateur, soit de la mémoire SRAM. Dans les deux cas, la donnée adressée est lue ou écrite dans un registre INDR, est un registre d’interfaçage rendu adressable. Le registre FSR est directement connecté sur le bus d'adresse.
Les modèles de base se débrouillent avec un registre FSR et un registre INDR, mais les modèles plus performants ont deux ou trois copies de chaque registre. Les modèles PIC18 ajoutent aussi des instructions LOAD/STORE qui émulent les modes d'adressage à post- ou pré-incrément/décrément, et le mode d'adressage "Base + Indice + Décalage", encore une fois en utilisant les registres FSR et INDR.
Avec tout ce qu'on vient de dire, vous devriez pouvoir comprendre la microarchitecture d'un PIC, qui est résumée dans ce schéma.
[[File:DocPIC16F84 all.png|centre|vignette|upright=2.5|Microarchitecture du PIC16F84.]]
===Les microcontrôleurs Intel 8051/8031===
[[File:Pinagem8031.jpg|vignette|Broches du 8051.]]
Les microcontrôleurs Intel 8051/8031 sont des microcontrôleurs 8 bits, commercialisés par Intel. Elle contient un processeur 8/16 bits, 4 kibioctets de mémoire ROM, une RAM de 128 octets. Niveau entrées-sorties, il contient un port série, ainsi que 4 ports d'un octet chacun sur lesquels il peut lire ou écrire. Il supporte des interruptions, avec un contrôleur d'interruption intégré. Il contient aussi deux ''timers'' de 16 bits chacun, qui déclenchent des interruptions quand ils tombent à zéro ou à une valeur configurable.
Ils ont de nombreuses ressemblances avec les microcontrôleurs PIC. Le processeur du 8051 est une architecture à accumulateur de 8 bits, ses registres sont mappés en mémoire RAM, il a un registre d'adresse dédié à l'adressage indirect et j'en passe. Mais il y a aussi des différences notables. Par exemple, le 8051 n'a pas de pile d'adresse de retour, contrairement aux processeurs PIC. Il fait autrement, à savoir qu'il gère une pile d'appel placée en mémoire RAM,ce qui est très différent. De même, il utilise deux accumulateurs nommés A et B.
Une autre différence est que les registres sont placés dans un banc de registre à part des 128 octets de SRAM. Il y a une SRAM séparée du banc de registre, contrairement à ce qu'on a sur les microcontrôleurs PIC. Par contre, les registres du processeur sont mappés en mémoire RAM, y compris les deux accumulateurs, le registre d'état, le ''program counter'', et bien d'autres. Mais le fait qu'ils soient séparés de la SRAM permet de les mapper dans l'espace d'adressage sans marcher sur les pieds de la SRAM. Vu que le processeur peut adresser 256 octets, mais n'a que 128 octets de SRAM, les registres sont mappés dans les 128 octets restants. Les entrées-sorties aussi sont mappées dans ces 128 octets restants.
L'ensemble utilise une architecture Harvard, contrairement à ce que pourrait faire croire le schéma ci-dessous.
[[File:Arkitektura mikro kontrollerit Intel 8051.png|centre|vignette|upright=2.5|Microcontrôleur 8051]]
Voyons maintenant la ''memory map'' de ce microcontroleur, pour la SRAM. Un point assez original est que 16 octets de la SRAM sont adressables bit par bit, à savoir que chaque bit a sa propre adresse. En tout, cela permet d'adresser 128 bits (16 adresses * 8 bits par octet adressé). L'intervalle bit-adressable va de l'adresse 32 (inclue) à l'adresse 47 (inclue).
Les 32 premières adresses sont réservés à la mémoire SRAM, c'est 32 octets de RAM utilisable à volonté par le programmeur. Les 16 adresses suivantes sont les 16 adresses bit-adressables mentionnées dans le paragraphe précédent. Les 96 octets suivants sont de la mémoire RAM adressable, affectée par défaut à la pile d'appel mais adressable via adressage direct si besoin. Les 128 octets de poids fort sont réservés aux registres du processeur et aux entrée-sorties mappées en mémoire.
[[File:Memory map du 8051.png|centre|vignette|upright=2|Memory map du 8051]]
Les 128 octets au sommet de l'espace d'adressage sont décrit dans le schéma ci-dessous. On voit que les deux accumulateurs sont mappés dedans, de même que le registre d'état PSW, le registre de configuration des interruptions IE (''Interrupt Enable''), et quelques autres. Les ports d'entrée-sortie sont aussi mappés dedans, que ce soit les 4 ports parallèles ou le port série. Les deux ''timers'' sont aussi mappés dedans, ainsi que leurs registres de configuration.
Une partie des octets sont bit-adressables, et cette partie inclus les registres du processeur et les ports d'entrées-sorties. Pour le dire autrement, chaque bit d'un port d'entrée-sortie a sa propre adresse mémoire, qui permet de le sélectionner. Par contre, les registres pour les ''timers'' ne sont pas dedans, sauf pour le troisième ajoutés dans des extensions du 8051.
[[File:MFrey SFR MCS-51.svg|centre|vignette|upright=2|Memory map des 128 octets de poids fort du 8051]]
Pour ce qui est des instructions, le 8051 supporte les opérations de multiplications et de divisions, contrairement aux microcontrôleurs PIC qui se limitaient à l'addition et la soustraction. Une autre particularité est que le processeur incorpore une '''unité de calcul de 1 bit'''. Elle permet de faire des opérations sur des bits, avec 17 instructions possibles au total. L'ALU de 1 bit est reliée à un accumulateur de 1 bit et 32 registres de 1 bits. Elle peut lire des opérandes de 1 bit en mémoire RAM ou sur les ports d'entrée-sortie, pour les portions qui sont bit-adressables.
Le processeur supporte aussi l'adressage indirect dans la SRAM, mais celui-ci fonctionne différemment comparé aux microcontrôleurs PIC. Il n'y a pas deux registres d'adresse dédiés, séparés des autres. A la place, l'adressage indiorect est implémenté normalement, en utilisant les registres généraux. Par contre, il y a une contrainte : seuls les deux premiers registres R0 et R1 sont utilisables. En clair, seuls ces deux registres peuvent contenir une adresse, un pointeur. C'est là une différence liée au fait que le 8051 a un banc de registre séparé.
Le 8051 peut communiquer avec une mémoire RAM externe, en plus de la SRAM interne. Pour cela, le processeur du 8051 avait un espace d'adressage séparé pour la RAM externe, capable d'adresser 64 kibioctets. Communiquer avec cet espace d'adressage se faisait avec des instructions d'accès mémoire séparées des autres, pas les LOAD/STORE normaux. Par exemple, l'instruction MOVX lisaient une donnée dans cet espace d'adressage, et la copiait dans l'accumulateur ou la SRAM. Pour envoyer l'adresse à lire/écrire à cette RAM externe, le processeur incorporait un registre d'adresse dédié. Il s'agit du '''registre DPTR''', qui contient une adresse de 16 bits. Le processeur devait copier l'adresse à lire/écrire dedans, puis lancer l'instruction MOVX.
===Le Fairchild F8 et la console de jeu Fairchild Channel F===
Un autre exemple est la Fairchild F8 de la défunte entreprise Fairchild Semiconductor. Il incorpore un processeur 8 bits, c'est à dire que le processeur fait des calculs sur des entiers de 8 bits maximum, une mémoire RAM de 64 octets, ainsi qu'une mémoire ROM de 1 kibioctet. Les 64 octets de RAM sont certes très peu, mais c'est suffisant pour certaines applications simples, comme les caisses automatiques de l'époque, ou des applications embarquées. Et de toute façon, il est possible d'ajouter de la mémoire RAM supplémentaire si les 64 octets de RAM intégrée ne suffisent pas. Le système était donc modulaire, adaptable selon les besoins, peu cher pour son implémentation minimale sans RAM en plus.
Vu qu'il s'agit d'un des tout premiers ordinateurs, il est sorti à une époque où la technologie était rudimentaire. À cette époque, le processeur était composé de pièces détachées qu'il fallait souder ensemble pour obtenir un processeur fonctionnel. Ce n'est que plus tard qu'est apparu le micro-processeur, qui regroupe un processeur complet dans un seul circuit intégré. Le résultat est que le processeur du Fairchild F8 est coupé en deux, l'unité de calcul et l'unité de contrôle sont placés dans des pièces détachées séparés.
Le microcontrôleur est composé de trois à quatre pièces détachées, certaines étant optionnelles. La première est le '''3850 CPU''', qui regroupe l'unité de calcul et la mémoire RAM intégrée. La seconde est le PSU (''3851 Program Storage Unit''), qui regroupe la mémoire ROM et l'unité de contrôle, ''program counter'' inclut. S'il y a besoin d'utiliser plus de RAM, il faut ajouter un circuit d’interface mémoire, qui est au choix le ''3852 Dynamic Memory Interface'' (DMI) ou le ''3853 Static Memory Interface'', le premier étant connecté à une mémoire de type DRAM, l'autre à une SRAM (nous verrons ce que sont les DRAM et les SRAM dans le prochain chapitre).
[[File:Fairchild F8.png|centre|vignette|upright=2|Fairchild F8]]
Le système minimal est composé d'un PSU et d'un 3850, sans les circuits d'interface mémoire. Le tout donne un système avec un processeur 8 bit, 64 octets de RAM et 1 kibioctet de ROM, les deux mémoires étant intégrées dans le "processeur". Le processeur gérait 4 entrées-sorties, chacune étant reliée avec un bus de 8 bit au processeur. Au passage, en 1977, Mostek a créé un microcontrôleur qui regroupe un PSU et un 3850 : le Mostek 3870. Le système minimal n'avait pas de bus d'adresse, vu que la RAM était intégrée au processeur. C'est les 3852 et 3853 qui ajoutaient un bus d'adresse. Ils ajoutent un bus d'adresse de 16 bits, ce qui permet d'adresser 64 kibioctets de RAM.
[[File:Fairchild-Channel-F.jpg|vignette|un Fairchild Channel F]]
Le Fairchild F8 a été utilisé dans la Fairchild Channel F, une des toute première console de seconde génération, à savoir des consoles qui utilisaient des cartouches de jeu. Avant les consoles de seconde génération, les consoles étaient non-programmables. Elles étaient conçues pour faire tourner un jeu précis, aucun autre, le jeu étant implémenté dans leurs circuits.
La Fairchild Channel F est composé du système minimal, auquel on a ajouté une carte son rudimentaire et 2 kibioctets de mémoire vidéo. La mémoire vidéo sert uniquement pour afficher des images à l'écran : on écrit l'image à afficher dedans, un circuit vidéo se charge de l'afficher à l'écran automatiquement. Le processeur ne fait qu'écrire dans cette RAM vidéo, il ne peut pas en lire le contenu. De la RAM supplémentaire peut cependant être ajoutée dans les cartouches de jeu.
===Le HP Nanoprocessor : un processeur sans ALU===
Un dernier exemple est celui du processeur HP Nanoprocessor, de l'entreprise HP. Il a été commercialisé en 1974, en même temps que les premiers micro-processeurs d'Intel. Tous les processeurs de l'époque étaient des processeurs 8 bits et le HP Nanoprocessor ne faisait pas exception. Ce n'était pas un processeur haute performance, il était destiné à des applications d'informatique industrielle ou embarquée. D'ailleurs, il utilisait des transistors de type metal-gate, peu performants, là où ses contemporains utilisait des transistors en silicium, plus performants.
Mais une caractéristique qui rend cela encore plus claire est qu'il n'y a pas d'ALU ! En effet, ce processeur est incapable de faire des additions, des soustractions ou autres opérations simples ! Il est cependant capable d'effectuer des incrémentations et décrémentations, des décalages, des opérations logiques comme des ET/OU/NON/XOR et bien d'autres. Il supporte en tout 48 instructions, avec un support limité des modes d'adressage indirects. Les instructions de branchement étaient des instructions SKIP, il n'y avait pas d'instructions de branchement généralistes.
Pour ce qui est des registres, il disposait de 16 registres de 8 bits et d'un accumulateur. Niveau mémoire, il était relié à une mémoire ROM, rien de plus. Il n'avait de RAM supplémentaire qu'on pouvait lui adjoindre, il devait se débrouiller avec seulement ses registres. Et cela ne posait pas de problèmes pour son usage. Seul le mode d'adressage indirect à registre est supporté, il n'y a pas de registres d'indices. Ce mode d'adressage permet de lire des données en mémoire ROM, la ROM pouvant contenir des tableaux de valeurs constantes.
: Il est possible de lui adjoindre de la RAM via les ports d'entrée-sortie, ainsi qu'une ALU, mais RAM et ALU sont traités comme des périphériques avec lesquels on communique, ils ne sont pas intégrés au processeur.
Niveau micro-architecture, il incorporait une unité de calcul logique et un circuit comparateur. Le comparateur était un circuit comparateur série des plus basiques, qui était utilisé pour les instructions de branchement et associées. L'unité de calcul logique gérait des incrémentations/décrémentation, des décalages, les opérations logiques et quelques autres. L'unité de calcul logique était bit-slicée, à savoir conçue en assemblant 8 ALU de 1 bit chacune, enchainées en série. Le tout était combiné à des circuits de ''carry skip''.
[[File:Unité de calcul du HP nanonprocessor.png|centre|vignette|upright=2|Unité de calcul du HP nanoprocessor]]
Son unité de décodage d'instruction était très simple, essentiellement basée sur des portes NOR, grâce à un encodage efficace des instructions machine. Le ''program counter'' fait 11 bits, ce qui permet d'adresser une ROM de 2 kibioctets. Le ''program counter'' était relié à un circuit incrémenteur qui gérait les isntructions SKIP (il pouvait incrémenter le ''program counter'' par pas de 1 ou de 2 en cas de SKIP). Le processeur contient aussi deux registres, qui servent en quelque sorte de pile d'adresse de retour. Un premier registre mémorise l'adresse de retour d'une fonction, l'autre mémorise le ''program counter'' lors d'une interruption, pour savoir où brancher à la fin de l'interruption.
[[File:HP nanoprocessor.png|centre|vignette|upright=2.5|HP nanoprocessor]]
Fait intéressant, le concepteur du processeur a gracieusement donné les masques utilisés pour graver le silicium du processeur au site [https://www.cpushack.com/ CPU Shack]. Les masques en question sont disponibles ici :
* [https://www.cpushack.com/2020/08/20/hp-nanoprocessor-mask-set/ HP NanoProcessor Mask Set]
* [https://www.cpushack.com/2020/08/09/the-forgotten-ones-hp-nanoprocessor/ The Forgotten Ones: HP Nanoprocessor]
Les masques ont été analysés par Ken Shirrif dans cet article de blog :
* [https://www.righto.com/2020/09/hp-nanoprocessor-part-ii-reverse.html HP Nanoprocessor part II: Reverse-engineering the circuits from the masks]
==Les processeurs 8/16 bits à architecture Von Neumann==
L'usage d'une architecture Harvard est une solution pour adresser plus de mémoire avec des CPU 8 bits. Mais plusieurs microprocesseurs commerciaux n'utilisaient pas cette solution. À la place, c'était des architectures Von Neumann, mais qui étaient capables de gérer des adresses de 16 bits. Les données faisaient 8 bits, les registres faisaient 8 bits, mais quelques techniques permettaient de gérer des adresses de 16 bits. Nous parlerons de '''processeurs 8/16 bits''' pour les désigner, et nous allons les étudier à part.
Un point important est que la gestion d'adresses de 16 bits permet d'adresser 64 kibioctets, qui peuvent être remplis avec de la RAM et de la ROM. On a donc le meilleur des mondes : 64 kibioctets de mémoire, mais avec des données de 8 bits et les économies de circuit qui vont avec. L'avantage est que le processeur peut maintenant gérer une vraie pile d'appel, pas seulement une pile d'adresse de retour. Il lui suffit pour cela d'intégrer un pointeur de pile codé sur 16 bits.
===Les modes d'adressage par page des CPU Motorola===
Les processeurs Motorola 8 bits étaient des processeurs 8 bits avec un bus d'adresse de 16 bits. C'était des processeurs à accumulateur incorporant deux registres d'indice, un registre d'état, un pointeur de pile, et un ''program counter''. Tous les registres sont reliés au bus d'adresse, sauf le registre d'état et l’accumulateur. Tous les registres font 8 bits, sauf le ''program counter''. La pile est câblée pour être dans un bloc de 256 octets compris entre l'adresse 1 0000 0000 et l'adresse 1 1111 1111, ce qui fait que son adressage se fait avec un seul octet.
[[File:6502-architecture.svg|centre|vignette|upright=1.5|Architecture simplifiée du 6502.</br> X et Y : registres d'indice ;</br> S : le pointeur de pile ;</br> A : accumulateur ;</br>P : registre d'état.</br>]]
Les processeurs Motorola 8 bits utilisaient une méthode simple pour adresser 64 kibioctets de RAM, avec des registres de 8 bits. Pour cela, ils utilisaient une variante de l'adressage base + décalage. Elle améliore l'adressage absolu, qui intègre l'adresse à lire/écrire dans l'instruction elle-même. L'adresse en question est de 8 bits et n'encode que les 8 bits de poids faible de l'adresse, les 8 bits de poids fort sont dans un '''registre de page''' adressé implicitement. L'adresse finale est obtenue en concaténant ce registre avec l'adresse mémoire intégrée dans l’instruction. Le résultat est que la mémoire était découpée en blocs de 256 consécutifs, chacun pouvant servir de fenêtre de 256 octets. Une page est réservée pour la pile, la seconde, comme dit plus haut.
Formellement, ce mode d'adressage a des ressemblances avec la commutation de banques, une technique qu'on verra dans les chapitres sur l'espace d'adressage et la mémoire virtuelle. Mais ce n'en est pas du tout : le registre de page est utilisé uniquement pour les accès mémoire avec le mode d'adressage base + décalage, mais pas pour les autres accès mémoire, qui gèrent des adresses complètes. Notons que l'usage d'un registre de page dédié fait que celui-ci est adressé implicitement.
Il faut noter que la technique a été utilisée sur des processeurs 16 bits, pour contourner la petite taille des instructions. Un exemple est celui du HP 2100, un processeur 16 bits. Il avait un registre de page de 5 bits et encodait 10 bits d'adresse dans ses instructions. Ses instructions d'accès mémoire disposaient d'un bit qui choisit quel mode d'adressage utiliser. S'il était à 0, l'adressage absolu était utilisé, le registre de page n'était pas utilisé. Mais s'il était à 1, le registre de page était utilisé pour calculer l'adresse.
Une évolution de l'adressage précédent est le '''mode page direct'''. Avec lui, le registre de page est étendu et contient une adresse mémoire complète. L'adresse finale n'est pas obtenue par concaténation, mais en additionnant le registre de page avec l'adresse fournie par adressage absolu + décalage. Un exemple est celui des premiers processeurs Motorola, qui géraient des adresses courtes de 8 bits. L'adresse courte de 8 bits correspondait non pas aux 256 premiers octets de la mémoire, mais à une fenêtre de 256 octets déplaçable en mémoire. La position de la fenêtre de 256 octets était spécifiée par le registre de page de 16 bits, qui précisait l'adresse du début de la fenêtre, celle de sa première donnée.
Il s'agit donc formellement d'adressage base + décalage, à un détail près : il n'y a qu'un seul registre de base. Le fait que ce registre de base soit unique fait qu'il est adressé implicitement, on n'a pas à encoder le numéro/noms de registre dans l'instruction. Le registre de base est utilisé uniquement pour l'adressage absolu, pas pour les autres accès mémoire. S'il y a des ressemblances avec la segmentation, une technique de mémoire virtuelle qu'on abordera dans quelques chapitres, ce n'en est pas vu que le registre de base est utilisé seulement pour un mode d'adressage bien précis.
===Le ''pseudo-aliasing'' des registres des processeurs Intel x86===
Voyons maintenant le cas des anciens processeurs 8 bits d'Intel à savoir l'Intel 4004, 4040, 8008 et 8080. Le Z80, un processeur inspiré des CPU Intel 8 bits, est aussi concerné. Avant de poursuivre, parlons des registres de ces processeurs. Les premiers CPU Intel incorporaient 7 registres de 8 bits nommés A, B, C, D, E, F, H, L, SP. Ils correspondent respectivement à : l'accumulateur A ; six registres nommés B, C, D, E, H et L ; le registre d'état F ; le pointeur de pile SP. Le Z80 ajoute deux registres d'indice X et Y. De plus, le Z80 dispose de registres d'interruption, qui sont en quelque sorte des copies des registres A, B, C, D, E, F, H, L. Le tout est illustré dans le tableau ci-dessous.
{|class="wikitable" style="text-align:center;"
|-
!
! Registres des CPU Intel
! Registres supplémentaires du Z80
|-
! Accumulateur
| A
| A'
|-
! Registre d'état
| F
| F'
|-
! Registres généraux
| B, C, D, E, H, L
| B', C', D', E', H', L'
|-
! Pointeur de pile
| colspan="2" | SP (sauf pour le 8008)
|-
! Registres d'indice
|
| X et Y
|}
Le 8008 incorpore une pile d'appel de 7 adresses, dans le processeur lui-même. Il en est de la même avec le 4004 et le 4040, comme on le verra dans la section sur les processeurs 4 bits. Mais le 8080 et le 8085 ont remplacé le tout par un simple pointeur de pile, afin d'avoir une véritable pile d'appel. Autant c'est impossible d'avoir une pile d'appel avec seulement 256 octets de mémoire, autant on peut se le permettre avec 65 536 adresses.
Pour gérer des adresses de 16 bits, ils auraient pu utiliser des registres d'adresse séparés, mais on préféré un système de '''pseudo-''aliasing'' de registres'''. Formellement, c'est un système qui concatène deux registres 8 bits pour obtenir une adresse de 16 bits. L’appariement a lieu lors de certaines opérations bien précises, qui n'ont de sens que pour les adresses : la lecture/écriture en mémoire, et l'incrémentation.
Il y avait cependant des contraintes quant aux paires de registres possibles, toutes les paires de registres n'étaient pas autorisées. Les CPU concernés sont donc des processeurs hybrides accumulateur-registre généraux. L'accumulateur ne peut pas être appairé, seuls les registres généraux le peuvent. Le Z80 autorise plus de paires que les CPU Intel. Voici les paires de registres qui pouvaient servir d'adresse 16 bits :
* Les CPU 8008 d'Intel autorisait une seule paire formée des registres H et L.
* Les autres processeurs, à savoir le 8080, le 8085 et le Z80, autorisaient : les paires BC, DE et HL.
Le 8008 ne gérait que des opérations sur 8 bits. Mais le 8080 et le 8085 ont ajouté des instructions 16 bits qui agissaient sur des paires de registre, que le Z80 a repris. Une paire de registres est considérée comme un registre unique de 16 bits pour certaines opérations arithmétiques, dont l'incrémentation. Voici la liste des instructions concernées :
* INC et DEC pour l'incrémentation et la décrémentation ;
* DAD : additionne le registre HL avec une autre paire (Hl inclus) ;
* LXI : copie une constante immédiate dans une paire de registres ;
* LHLD : lit 16 depuis la mémoire et l'enregistre dans une paire de registres ;
* SHLD : copie 16 bits depuis une paire de registres et l'enregistre en mémoire ;
* PUSH et POP : empile ou dépilent une paire de registre sur la pile ;
* XTHL : échange la paire HL avec les 16 bits au sommet de la pile d'appel ;
* XCHG : échange le contenu de la paire HL et DE.
Pour résumer, le processeur avait des instructions LOAD, STORE, PUSH et POP adaptées pour gérer des paires de registre. De plus, l'instruction XCHG permettait d’échanger le contenu des paires DE et HL. L'instruction a été étendue sur les processeurs 16 bits pour échanger tous les registres. Mais l'implémentation était alors différente. L'incrémentation sur une paire de 16 bit était très utile, car les adresses sont souvent incrémentées quand on parcours un tableau. Ces instructions nous donnent quelques indices sur ce qu'il y a dans le processeur.
Le système de pseudo-aliasing a un impact sur le banc de registre. Le banc de registre regroupe les registres généraux et le pointeur de pile, mais ne contient pas l'accumulateur. Les contraintes sur les paires de registres possibles ne s'expliquent que d'une seule manière : le banc de registre contient des registres de 16 bits, une paire de registres 8 bits est mémorisée dans un registre unique. Il faut donc faire une différence entre les registres architecturaux de 8 bits, et les registres réels de 16 bits.
Le banc de registre a un port de 8 bits pour les données, qui est fabriqué à partir d'un port 16 bits auquel on a rajouté un multiplexeur pour choisir soit l'octet de poids faible, soit l'octet de poids fort. Le bus de données fait 8 bits, ce qui fait que les instructions LOAD, STORE, PUSH et POP pour paires 16 bits sont réalisées en deux fois : on lit/écrit l'octet de poids faible, puis celui de poids fort. Par contre, le bus d'adresse fait bien 16 bits. Cela suggère que le banc de registre dispose d'un port de 16 bits dédié aux adresses, en plus du port de données 8 bits.
[[File:Architecture d'un CPU 8-16 bits avec un banc de registre double port.png|centre|vignette|upright=2|Architecture d'un CPU 8-16 bits avec un banc de registre double port]]
L'incrémentation d'une paire 16 bits ne coute rien à implémenter, ou presque. En effet, le processeur incorpore un incrémenteur 16 bits pour le ''program counter'', qui est relié au bus d'adresse. L'idée est de rentabiliser cet incrémenteur, en lui permettant d'incrémenter des données/adresses de 16 bits obtenues via pseudo-aliasing. De même, il peut être utilisé pour incrémenter le pointeur de pile, voire un compteur de rafraichissement mémoire (pour rappel, le rafraîchissement mémoire demande de balayer la mémoire d'adresse en adresse et été fait par le CPU à l'époque). Pour cela, il suffit de connecter le ''program counter'', le banc de registre, et l'incrémenteur, via un bus dédié.
[[File:Calcul d'adresse par ALU dédiée avec PC séparé.png|centre|vignette|upright=2|Calcul d'adresse par ALU dédiée avec PC séparé]]
Notez qu'on peut encore simplifier le tout en placant le ''program counter'' dans le banc de registre, ce qui ne gênera pas le travail de l'incrémenteur mais simplifiera le câblage au bus d'adresse. Ce n'était pas systématique, certains processeurs mettaient le ''program counter'' dans le banc de registre, d'autres non.
: Inclure le ''program counter'' dans le banc de registre permet parfois de remplir un vide. Par exemple, sur un processeur avec 12 registres, le banc de registre devrait faire idéalement 16 registres, inclure le ''program counter'' dedans fait monter le tout à 13.
[[File:Architecture d'un CPU 8-16 bits.png|centre|vignette|upright=2|Architecture d'un CPU 8-16 bits]]
Les processeurs Intel 8 bits, à savoir le 8008, le 8080 et le 8085 ; mettaient le ''program counter'' dans le banc de registre. Vous avez donc toutes les armes pour comprendre leur micro-architecture. Par exemple, voici la micro-architecture du processeur 8080. Remarquez le banc de registre, qui contient tous les registres sauf l'accumulateur et le registre. Il a deux ports : un pour les adresses et un pour les données. Notez le dé-multiplexeur sur le port de donnée. Pour le reste, il s'agit d'une architecture à accumulateur hybride des plus classiques.
[[File:Intel 8080 arch.svg|centre|vignette|upright=3|Microarchitecture de l'Intel 8080.]]
Le Z80 est un processeur inspiré du design des processeurs Intel 8 bits, mais avec pas mal d'améliorations. Un point particulier de ce processeur est son banc de registre. Il contient tous les registres du processeur, y compris l'accumulateur et le registre d'état ! Les seuls registres en-dehors du banc de registre sont le ''program counter'' et un compteur de rafraichissement mémoire IR.
Un autre point particulier est que les registres dans le banc de registres avaient une copie séparée accessible uniquement pour les interruptions, via fenêtrage de registres. Et l'accumulateur et le registre d'état étant dans le banc de registre, il y avait deux accumulateurs et deux registres d'état. Les registres A, B, C, D, E et F étaient dupliqués, par le pointeur de pile ni les registres d'indice. Les copies des registres étaient nommées A', B', C', D', E' et F'.
Le Z80 supportait des instructions d'échange de registre en plus des CPU Intel 8 bits. L'instruction EX peut échanger soit le contenu des paires D,E et H,F, soit la paire A,F avec la paire A',F'. L'instruction EXX échange les paires BC, DE, HL avec les paires BC', DE', HL'. En faisant cela, le programmeur pouvait utiliser deux fois plus de registres généraux s'il n'utilisait pas les interruptions. L'échange de paires se fait sans copies de registres, mais simplement en modifiant l'adresse envoyée sur le banc de registre. Pour cela, plusieurs bascules mémorisent des bits qui indiquent si les paires ont été échangées ou non. Il y a une bascule pour les paires DE , HL ; une autre pour les paires A,F et paire A',F', une dernière pour l'instruction EXX. En combinant ces bascules avec les noms de registres envoyés par le séquenceur, on peut échanger les paires de registres.
==Le cas particulier des processeurs 4 bits : le 4004 d'Intel==
L'Intel 4004 était le tout premier micro-processeur. Il s'agissait d'un microprocesseur de 4 bits, basé sur une architecture à accumulateur. Il disposait d'un accumulateur et de 16 registres d'indice, tous de 4 bits. Il faisait des calculs sur des données de 4 bits, appelées des nibbles. Cependant, sur ses 46 instructions machines supportées, 41 agissaient sur des opérandes de 8 bits, les 5 restantes sur des opérandes de 16 bits. Simplement, les calculs se faisaient en deux fois, en échangeant des données entre mémoire RAM et accumulateur.
Le 4004 est un circuit intégré avec peu de broches. Il dispose notamment d'un bus de données/adresse, qui est multiplexé, c’est-à-dire qu'il sert alternativement de bus de données et de bus d'adresse selon les besoins. Le bus de commande mémoire fait 5 bits, dont 4 pour les chips de RAM, un pour la ROM. Les adresses sont codées sur 12 bits, les données sur 4 et les instructions sur 8 bits. L'envoi d'une adresse sur le bus se fait en plusieurs fois, de même que la lecture d'une instruction. Il s'agit là d'une adaptation pour outrepasser les limitations d'un processeur 4 bit.
[[File:Intel 4004 processor pinout.png|centre|vignette|upright=2|Broches de l'Intel 4004. Nous verrons à quoi elles servent plus bas.]]
===L'espace d'adressage de l'Intel 4004===
Les adresses du processeur sont sur 12 bits, ce qui fait 4096 adresses différentes. Elles regroupent à la fois la ROM et la mémoire RAM, vu que l'architecture est une sorte de mélange bizarre entre une architecture Von Neumann et Harvard. Le processeur gère bien deux espaces d'adressage séparés, mais la RAM et la ROM sont reliés au même bus. La sortie CM-ROM du processeur indique si l'adresse envoyée correspond à la RAM ou la ROM. Un circuit de décodage d'adresse active ou désactive la RAM selon la valeur de ce bit, l'inverse pour la ROM, en agissant sur leurs bits Chip Select. Seule la RAM ou la ROM répondent alors à l'adresse.
Pour ce qui est de la RAM, le circuit de décodage d'adresse pouvait gérer au maximum 1024 adresses différentes, chacune contenant un nibble. Pour cela, le CPU 4004 était relié à une ou plusieurs RAM externes, des Intel 4002. Chaque Intel 4002 contenait 64 nibbles de données, plus 16 nibbles de statut qu'on ne détaillera pas ici. Les nibbles de statut étaient accessibles en utilisant des instructions d'entrée-sortie, donc pas avec des lectures/écritures mémoire. Les 64 nibbles de données sont découpés en 4 groupes de 16 nibbles. Le CPU pouvait être relié à maximum 16 Intel 4002, ce qui fait 1024 nibbles de données et 256 nibbles de statut. L'ensemble permet de remplir l'espace d'adressage de 1024 adresses.
===Le registre de page et le pseudo-aliasing des registres===
Sélectionner une adresse mémoire utilisait un mélange entre pseudo-aliasing et registre de page. Pour les données, les 1024 adresses étaient découpées en 4 pages de 256 adresses. Pour la ROM, les 4096 adresses étaient découpées en 16 pages de 256 adresses. Localiser une donnée dans une page ne requiert que 8 bits, 2/4 bits supplémentaires permettent de sélectionner la page voulue. Le registre de page était dans le processeur lui-même, et était relié aux sorties du processeur nommées CM-RAM 0, 1, 2 et 3. Les 4 sorties encodaient un nombre qui permet de sélectionner le numéro de page voulu.
Le registre de page fait 5 bits : un pour distinguer RAM et ROM, 4 bits pour sélectionner la page voulue. L'avantage est que la carte mère gère au maximum 16 chips de RAM, ce qui colle parfaitement avec les 4 utilisés pour sélectionner une page. Un chip de RAM correspond à une page, et chacun est activé ou désactivé suivant la page sélectionnée. Pour cela, il suffit d'ajouter un décodeur sur la carte mère, qui prend les 4 bits du registre de page et fournit les signaux Chip Select aux différents chips de RAM.
Reste alors à utiliser les 8 bits d'adresse à l'intérieur d'un chip de RAM. Le 4004 permettait de concaténer deux registres d'indice de 4 bits pour former une adresse de 8 bits. Les instructions d'accès mémoire pouvaient ainsi préciser une paire de registre d'indice pour préciser quelle adresse lire/écrire. Idem pour les branchements indirects : le processeur supportait une instruction de branchement indirect qui précisait l'adresse dans une paire de registres d'indice. Les registres d'indice sont donc assez mal nommés sur cette architecture, vu qu'ils peuvent servir soit de registre d'indice, soit de demi-registre d'adresse. Il s'agit là du système de pseudo-aliasing des registres, mais appliqué aux registres d'indice.
L'Intel 4004 gérait deux instructions pour gérer les adresses mémoires. La première, l'instruction DCL (''Designate Command Line'') configure le registre de page. Elle prend en entrée un numéro de page et le copie dans le registre de page. L'opérande peut provenir d'un registre d'indice ou de l'accumulateur. La seconde, l'instruction SRC (''Send Register Control'') concatène deux registres d'indice pour obtenir une adresse de 8 bits. Un accès mémoire se fait donc en maximum trois instructions : une qui configure le registre de page si ce n'est pas déjà fait, une instruction SRC pour envoyer l'adresse, et une troisième instruction qui dit s'il faut faire une lecture ou une écriture.
===La microarchitecture de l'Intel 4004===
Il incorporait une pile d'adresse de retour intégrée au processeur. La pile d'adresse acceptait exactement 3 adresses maximum. Elle était regroupée avec le ''program counter'' dans un banc de registre, de 4 registres. Le ''program counter'' et le pointeur de pile faisaient chacun 12 bits, soit trois nibble. Ils étaient incrémentés par un incrémenteur dédié.
SI on omet le registre de page et la pile d'adresse, le 4004 est une architecture à accumulateur des plus classiques, avec un bus interne unique, un banc de registre pour les registres d'indices, un accumulateur relié à une unité de calcul. Les registres d'indice étaient dans un banc de registre séparés, car ils faisaient 4 bits chacun, contrairement au pointeur de pile et le ''program counter''. Un détail important est que les bancs de registres du 4004 étaient implémentés avec de la DRAM, et non des registres usuels fabriqués avec des bascules 1 bit.
[[File:Microarchitecture de l'Intel 4004.png|centre|vignette|upright=2.5|Microarchitecture de l'Intel 4004]]
<noinclude>
{{NavChapitre | book=Fonctionnement d'un ordinateur
| prev=Les architectures à pile et mémoire-mémoire
| prevText=Les architectures à pile et mémoire-mémoire
| next=Les processeurs de traitement du signal
| nextText=Les processeurs de traitement du signal
}}
</noinclude>
bg08qowfdojt3asmsy5w5znnrzwova6
765739
765738
2026-05-01T20:58:32Z
Mewtow
31375
/* Les processeurs 8/16 bits à architecture Harvard */
765739
wikitext
text/x-wiki
Nous avons déjà abordé la notion de processeur 8, 16, 32, 64 bits. Elle désigne la taille des registres généraux, ou de l'accumulateur. De nos jours, les processeurs 32 et 64 bits sont la norme, mais les premiers micro-processeurs étaient des processeurs 4 et 8, avant de passer rapidement au 16 bits. La raison est que leur budget en transistor limité faisait qu'on ne pouvait pas utiliser une ALU trop grande : une ALU 8 bit prend deux fois moins de place et de transistors qu'une ALU 16 bits. Cependant, les processeurs 8 bits avaient de sérieuses limitations qui étaient compensées par diverses solutions. Dans ce chapitre, nous allons faire une revue rapide des processeurs 8 bits et de leurs fonctionnalités.
La principale limitation des CPU 8 bits était l'adressage : des registres de 8 bits limitaient l'espace d'adressage à seulement 256 adresses, soit à peine 256 octets ! Intuitivement, on se dit que 256 octets est purement impraticable, on ne peut rien faire d'intéressant avec seulement 256 de RAM + ROM. Et c'est partiellement vrai. L'adage veut que 16 bits est la taille minimale intéressante, la limite à partir de laquelle on a assez de mémoire RAM/ROM pour coder des applications intéressantes. Mais 256 octets de RAM est largement suffisant sur de nombreux systèmes embarqués simples s'en accommodent : des caisses enregistreuses, des systèmes de régulation de feu de circulation, etc.
Pour les applications demandant plus de mémoire RAM, les CPU de l'époque contournaient la limitation de 256 octets de RAM avec de nombreux stratagèmes. Dans ce qui va suivre, nous allons séparer les CPU 8 bits selon qu'ils utilisent une architecture Harvard ou une architecture Von Neumann. La raison est qu'une architecture Harvard permet en soi de contourner partiellement ce problème d'adressage. Les choses sont plus compliquées avec une architecture Von Neumann.
==Les processeurs 8/16 bits à architecture Harvard ==
La première solution est d'utiliser une architecture Harvard. Le processeur 8 bit a alors deux espaces d'adressage : un pour la RAM, un autre pour la ROM. Et les deux utilisent des adresses de taille différente. La ROM est reliée à un bus d'adresse de 16 bits, alors que la RAM est elle connectée à un bus d'adresse de 8 bits. La RAM est donc limitée à 256 octets, alors que la ROM peut monter jusqu'à 64 kibioctets. Mine de rien, faire ainsi est largement suffisant.
Pour encore améliorer la situation, il est possible d'utiliser une architecture Harvard modifiée, qui permet de lire des données depuis la mémoire ROM. Cela réduit encore plus les besoins en mémoire RAM. Les constantes manipulées par le programme sont mémorisées en ROM, lues depuis la ROM, au lieu d'être chargées en RAM. Avec ce genre de stratagèmes, 256 octets de RAM est largement suffisant sur de nombreux systèmes, à condition qu'on ait assez de ROM pour coder un programme digne de ce nom. Par exemple, de nombreux systèmes embarqués simples s'en accommodent : des caisses enregistreuses, des systèmes de régulation de feu de circulation, etc.
Les processeurs 8 bits intègrent parfois les 256 octets de RAM directement dans le processeur, dans le banc de registres ! Beaucoup en implémentaient moins, avec par exemple seulement 64 octets de RAM, ou 32 octets, ou 128 octets. L'avantage est que cela élimine le bus pour les données, ce qui économise beaucoup de broches sur le circuit intégré du CPU. Et pour les applications demandant plus de RAM, on pouvait ajouter un circuit séparé qui permettait d'adresser une RAM plus grande. Et c'est ce qui explique que cette solution est beaucoup utilisée sur les microcontrôleurs peu puissants. Les exemples qui vont suivre devraient vous convaincre.
: Les processeurs de ce type implémentent des optimisations pour adresser plus de 256 octets de RAM. La plus connue est la commutation de banques. Mais nous n'avons pas encore abordé celle-ci, et il faudra attendre le chapitre sur l'espace d'adressage pour cela.
===Le Fairchild F8 et la console de jeu Fairchild Channel F===
Un premier exemple est la Fairchild F8 de la défunte entreprise Fairchild Semiconductor. Il incorpore un processeur 8 bits, c'est à dire que le processeur fait des calculs sur des entiers de 8 bits maximum, une mémoire RAM de 64 octets, ainsi qu'une mémoire ROM de 1 kibioctet. Les 64 octets de RAM sont certes très peu, mais c'est suffisant pour certaines applications simples, comme les caisses automatiques de l'époque, ou des applications embarquées. Et de toute façon, il est possible d'ajouter de la mémoire RAM supplémentaire si les 64 octets de RAM intégrée ne suffisent pas. Le système était donc modulaire, adaptable selon les besoins, peu cher pour son implémentation minimale sans RAM en plus.
Vu qu'il s'agit d'un des tout premiers ordinateurs, il est sorti à une époque où la technologie était rudimentaire. À cette époque, le processeur était composé de pièces détachées qu'il fallait souder ensemble pour obtenir un processeur fonctionnel. Ce n'est que plus tard qu'est apparu le micro-processeur, qui regroupe un processeur complet dans un seul circuit intégré. Le résultat est que le processeur du Fairchild F8 est coupé en deux, l'unité de calcul et l'unité de contrôle sont placés dans des pièces détachées séparés.
Le microcontrôleur est composé de trois à quatre pièces détachées, certaines étant optionnelles. La première est le '''3850 CPU''', qui regroupe l'unité de calcul et la mémoire RAM intégrée. La seconde est le PSU (''3851 Program Storage Unit''), qui regroupe la mémoire ROM et l'unité de contrôle, ''program counter'' inclut. S'il y a besoin d'utiliser plus de RAM, il faut ajouter un circuit d’interface mémoire, qui est au choix le ''3852 Dynamic Memory Interface'' (DMI) ou le ''3853 Static Memory Interface'', le premier étant connecté à une mémoire de type DRAM, l'autre à une SRAM (nous verrons ce que sont les DRAM et les SRAM dans le prochain chapitre).
[[File:Fairchild F8.png|centre|vignette|upright=2|Fairchild F8]]
Le système minimal est composé d'un PSU et d'un 3850, sans les circuits d'interface mémoire. Le tout donne un système avec un processeur 8 bit, 64 octets de RAM et 1 kibioctet de ROM, les deux mémoires étant intégrées dans le "processeur". Le processeur gérait 4 entrées-sorties, chacune étant reliée avec un bus de 8 bit au processeur. Au passage, en 1977, Mostek a créé un microcontrôleur qui regroupe un PSU et un 3850 : le Mostek 3870. Le système minimal n'avait pas de bus d'adresse, vu que la RAM était intégrée au processeur. C'est les 3852 et 3853 qui ajoutaient un bus d'adresse. Ils ajoutent un bus d'adresse de 16 bits, ce qui permet d'adresser 64 kibioctets de RAM.
[[File:Fairchild-Channel-F.jpg|vignette|un Fairchild Channel F]]
Le Fairchild F8 a été utilisé dans la Fairchild Channel F, une des toute première console de seconde génération, à savoir des consoles qui utilisaient des cartouches de jeu. Avant les consoles de seconde génération, les consoles étaient non-programmables. Elles étaient conçues pour faire tourner un jeu précis, aucun autre, le jeu étant implémenté dans leurs circuits.
La Fairchild Channel F est composé du système minimal, auquel on a ajouté une carte son rudimentaire et 2 kibioctets de mémoire vidéo. La mémoire vidéo sert uniquement pour afficher des images à l'écran : on écrit l'image à afficher dedans, un circuit vidéo se charge de l'afficher à l'écran automatiquement. Le processeur ne fait qu'écrire dans cette RAM vidéo, il ne peut pas en lire le contenu. De la RAM supplémentaire peut cependant être ajoutée dans les cartouches de jeu.
===Les microcontrôleurs PIC===
Les '''microcontrôleurs PIC''' regroupent des microcontrôleurs allant de microcontrôleurs 8 bits aux performances très faible, à des microcontrôleurs 32 bits bien plus puissants. Les microcontrôleurs PIC sont très utilisés dans l'embarqué ou d'informatique industrielle. Ils sont vendu à des volumes assez impressionnants, plusieurs millions par an. Et si vous avez ou êtes en train de faire des études d'électronique, je parie que vous les avez déjà vu en classe, ou que ce ne saurait tarder. Dans ce qui suit, nous allons nous concentrer sur les microcontrôleurs PIC 8 bits, à savoir les PIC 16, 16 et 18. Les PIC 24, qui sont des microcontrôleurs 16 bits, ne seront pas abordés.
Le processeur incorpore de nombreuses optimisations pour éviter de trop gaspiller d'adresses mémoire. Mais ces optimisations sont partiellement compensées par d'autres choix de conception que nous détaillerons plus bas. Déjà, les microcontrôleurs PIC 8 bits sont une architecture Harvard, comme dit plus haut. Ensuite, le processeur utilise un espace d'adressage séparé pour les entrés-sorties. Les ports d'entrée-sortie et les ''timers'' ne sont donc pas mappés en mémoire RAM, ce qui économise quelques adresses.
La mémoire ROM des PIC va de 1024 instructions à 4096 instructions. En comparaison, la mémoire RAM des microcontrôleurs PIC ne peut pas dépasser 256 adresses, et elle est encore plus petite en pratique sur certains modèles. Pour donner un exemple, le PIC16F84 a une RAM composée de 68 "registres" de 8 bits. Le terme "registres" devrait vous faire tiquer, mais c'est bien le terme utilisé dans la documentation des PIC. Et il faut admettre que la différence entre banc de registre et SRAM intégrée est floue, comme on va tenter de l'expliquer dans les paragraphes suivants.
: Les PIC 18 peuvent adresser plus de 256 octets de RAM en utilisant la commutation de banques, une technique qui sera abordée dans plusieurs chapitres.
[[File:DocPIC16F84 3.png|centre|vignette|upright=3|Espaces d'adressage du PIC16F84.]]
Les PIC disposent de nombreux registres de contrôle, d'un ''program counter'', d'un registre d'état, et d'un pointeur de pile. Un détail très important est que ces registres sont placés dans la mémoire SRAM ! En clair, on peut y accéder en lisant/écrivant à une adresse mémoire bien précise. Sur les modèles 16F, l'espace d'adressage fait 128 octets, dont 32 sont réservés aux registres du processeur, ce qui fait que seules 96 octets sont adressables comme de la RAM. Mais les 128 octets sont un seul et unique SRAM dans le processeur. Ce qui explique qu'il est difficile de séparer banc de registre et RAM principale sur ce processeur : les deux sont fusionnées ! Cela gaspille quelques adresses mémoire, mais permet une implémentation plus simple, avec un banc de registre unique.
Les PIC sont une architecture à accumulateur basique, ce qui permet d'utiliser un banc de registre à un seul port. Ce choix simplifie grandement la conception du processeur. Il faut préciser que l'accumulateur n'est pas mappé en mémoire. Sauf sur les modèles PIC 17, qui mappé l'accumulateur en mémoire RAM !
Leur implémentation de l'accumulateur ajoute une petite subtilité : le résultat d'une opération arithmétique peut être enregistré ailleurs que dans l'accumulateur. Le résultat peut aussi remplacer la seconde opérande, celle lue en mémoire RAM. Dit autrement, le résultat est enregistré dans l'adresse mémoire source. Les instructions de calcul ont le choix : un bit dans leur encodage précise où enregistrer le résultat.
{|
|-
|[[File:DocPIC16F84 4.png|centre|vignette|upright=2|Microarchitecture simplifiée d'un microcontroleur PIC (ici, un 16F84).]]
|[[File:DocPIC16F84 5.png|centre|vignette|upright=2|Microarchitecture simplifiée d'un microcontroleur PIC (ici, un 16F84), avec les branchements directs.]]
|}
La petite taille de la ROM d'un PIC n'est pas une surprise. Les architectures 8 bits sont conçues pour ne pas utiliser beaucoup de transistors et être très simples. Aussi, utiliser une petite ROM est nécessaire. Mais il faut aussi adapter le jeu d'instruction, pour qu'il ait une bonne densité de code. Par exemple, il faut faire en sorte d'avoir des instructions assez courtes. Si les instructions font 16 bits au lieu de 32, on divise par deux le nombre de transistors nécessaire pour la mémoire ROM. La conséquence est que le jeu d’instruction des PIC est adapté à cette contrainte.
Les microcontrôleurs PIC utilisent un jeu d'instruction propriétaire, dont les instructions sont très petites. Les premières versions du jeu d'instruction utilisaient des instructions codées sur 12 bits, dont 5 pour l'adresse mémoire de la seconde opérande. Pour les branchements, 3 bits étaient utilisés pour l'opcode, 9 pour l'adresse de destination. Par la suite, les instructions ont été étendues à 13 bits sur les PIC1670, puis à 14, 15 et 16 bits. Les adresses ont alors été élargies, ce qui permet d'adresser en peu plus de mémoire RAM.
Il est intéressant de regarder comment les PIC font pour obtenir des instructions aussi courtes. Premièrement, le fait d'utiliser une architecture à accumulateur, couplé à une RAM très petite aident grandement. Les architectures à accumulateur ont besoin de préciser un opcode et une adresse mémoire pour chaque instruction, pas besoin de préciser de noms de registres ni le mode d'adressage. La taille des adresses mémoire est censé être un problème pour la densité de code, mais les adresses d'un processeur 8 bits font 8 bits. On peut alors avoir un jeu d'instruction étoffé, en utilisant des instructions 16 bits, qui concatènent un opcode et une adresse mémoire, d'un octet chacun.
Mais d'autres optimisations permettent d'avoir une bonne densité de code. Les PIC ont des branchements pour les appels et retour de fonction. Les PIC incorporent une pile d'appel de retour, qui fait 2 à 8 adresses suivant les modèles. Elle permet d'économiser quelques registres, car la pile d'appel n'est pas mappée dans l'espace d'adressage, elle n'est pas adressable. On économise ainsi 2 à 8 registres, sur 32-256 registres. De plus, cela simplifie l'encodage des instructions d'appel/retour de fonction, qui n'ont pas à préciser où enregistre l'adresse de retour.
Les PIC n'ont pas d'instructions de branchement conditionnels, ils font avec une SKIP instruction et des branchements inconditionnels. Du moins, c'est le principe, car si vous regardez la liste des instructions ci-dessous, vous verrez qu'il n'y a pas d'instruction SKIP. A la place, les instructions SKIP sont fusionnées avec d'autres instructions. Elles sont notamment fusionnées avec les instructions d'incrémentation et de décrémentation. Les PIC supportent une incrémentation normale, une décrémentation normale, une décrémentation fusionnée avec une instruction SKIP, et une incrémentation fusionnée avec une instruction SKIP. Les deux dernières incrémentent/décrémentent l'accumulateur et SKIP l'instruction suivante si le résultat est zéro. Elles permettent de fortement simplifier l'implémentation des boucles qui s'exécutent tant que leur compteur atteint zéro.
Les PIC disposent aussi d'instructions de manipulation de bit, pour tester/masquer un bit dans une opérande, 4 en tout. Il y a en a 4 en tout : mettre à 0, mettre à 1, tester si bit = 1, tester si bit = 0. Les instructions qui testent un bit prennent leur opérande dans l'accumulateur. Elles font le test du bit et décident s'il faut skipper l'instruction suivante ou non. Il y a aussi deux instructions de rotation à gauche et droite, qui tiennent compte de la retenue mémorisée dans le registre d'état. Par contre, il n'y a pas d'instructions de décalages, qui peuvent être émulées avec une rotation suivie d'un ET bit à bit. Mentionnons aussi une instruction pour inverser deux ''nibbles'' dans un octet.
Les modèles haute performance ajoutent des instructions d'addition avec retenue entrante, idem pour la soustraction. De telles instructions ssont très utiles pour faire des additions/soustractions sur des opérandes de 16 bits. Le processeur a beau être un CPU 8 bits, il peut être utilisé pour faire des calculs 16 bits, la performance est alors amoindrie, mais ce n'est pas un problème pour les applications d'un tel microcontroleur.
Les modèles intiaux, comme les PIC 10 et 12, ne supportaient pas les interruptions, mais c'est chose réglé sur les modèles plus récents. Ils ont même des registres séparés pour les interruptions et les programmes normaux. De plus, ils intégrent nativement un ''watchdog timer''.
{|class="wikitable" style="text-align:center"
|+ Jeu d'instruction des dodèles PCI 16
|-
! colspan="5" | Instructions diverses
|-
| colspan="3" | 00 0000 0000 0000 || NOP || Ne fait rien
|-
| colspan="3" | 00 0000 0000 1000 || RETURN || Instruction de retour pour une fonction
|-
| colspan="3" | 00 0000 0000 1001 || NOP || Instruction de retour pour une interruption
|-
| colspan="3" | 00 0000 0110 0011 || SLEEP || Mise en veille
|-
| colspan="3" | 00 0000 0110 0100 || CLRWDT || RESET le ''watchdog timer'', intégré dans le PIC
|-
! colspan="5" | Instructions de manipulation de bit
|-
| 0100 || Position du bit dans l'opérande || Adresse mémoire || BCF || Met le bit à 1
|-
| 0101 || Position du bit dans l'opérande || Adresse mémoire || BSF || Met le bit à 0
|-
| 0110 || Position du bit dans l'opérande || Adresse mémoire || BTFSC || Teste si le bit adressé est à 1
|-
| 0111 || Position du bit dans l'opérande || Adresse mémoire || BTFSS || Teste si le bit adressé est à 0
|-
! colspan="5" | Branchements
|-
| colspan="2" | 100 || Adresse mémoire || CALL || Appel de fonction
|-
| colspan="2" | 100 || Adresse mémoire || GOTO || Branchement inconditionnel
|-
! colspan="5" | Instructions logiques/arithmétiques avec opérande lue en mémoire RAM
|-
| colspan="5" | ''Le bit '''d''' dans l'opcode indique la destination : accumulateur ou adresse mémoire''.
|-
| colspan="2" | 0000001 || Adresse mémoire || MOVWF || Store (accumulateur vers destination)
|-
| colspan="2" | 000001d || Adresse mémoire || MOVWF || Met à zéro la destination (adresse ou registre)
|-
| colspan="2" | 000001d || Adresse mémoire || SUBWF || Soustraction
|-
| colspan="2" | 000010d|| Adresse mémoire || DECF || Décrémentation
|-
| colspan="2" | 000100d|| Adresse mémoire || IORWF || OU bit à bit
|-
| colspan="2" | 000101d|| Adresse mémoire || ANDWF || ET bit à bit
|-
| colspan="2" | 000110d || Adresse mémoire || XORWF || XOR bit à bit
|-
| colspan="2" | 000111d || Adresse mémoire || ADDWF VWF || Addition
|-
| colspan="2" | 001000d || Adresse mémoire || MOVF || LOAD
|-
| colspan="2" | 001001d || Adresse mémoire || COMF || NOT bit à bit
|-
| colspan="2" | 001010d || Adresse mémoire || INCF || Incrémentation
|-
| colspan="2" | 001011d || Adresse mémoire || DECFSZ || Décrémentation, puis instruction SKIP si résultat = 0
|-
| colspan="2" | 001100d || Adresse mémoire || RRF || Rotation à droite avec retenue entrante
|-
| colspan="2" | 001101d || Adresse mémoire || RLF || Rotation à gauche avec retenue entrante
|-
| colspan="2" | 001110d || Adresse mémoire || SWAPF || Echange deux ''niblle'' dans un octet
|-
| colspan="2" | 001111d || Adresse mémoire || INCFSZ || Incrémentation, puis instruction SKIP si résultat = 0
|-
! colspan="5" | Instructions logiques/arithmétiques avec constante immédiate
|-
| colspan="2" | 1100xx || Constante immédiate (8bits) || MOVLW || Copie constante dans accumulateur
|-
| colspan="2" | 1101xx || Constante immédiate (8bits) || RETLW || MOV fusionné avec un retour de fonction
|-
| colspan="2" | 111000 || Constante immédiate (8bits) || IORLW || OU
|-
| colspan="2" | 111001 || Constante immédiate (8bits) || ANDLW || ET
|-
| colspan="2" | 111010 || Constante immédiate (8bits) || XORLW || XOR
|-
| colspan="2" | 11110x || Constante immédiate (8bits) || SUBLW || Soustraction
|-
| colspan="2" | 11111x || Constante immédiate (8bits) || ADDLW || Addition
|}
Les PIC gèrent l'adressage absolu et immédiat, mais pas plus. L'adressage absolu, celui où l'adresse est intégrée dans l'instruction, est très simple à implémenter. Les adresses prennent moins d'un octet, vu que la taille de la RAM est très petite, les adresses sont très courtes, les intégrer dans des instructions elles-mêmes courtes n'est pas un problème. L'adresse est encodée sur 5 à 7 bits, selon le modèle, ce qui permet d'adresser entre 32 et 128 octets.
Les PIC ne supportent pas l'adressage indirect, mais peuvent l'émuler grâce à un '''registre d'adresse''' dédié. Il s'agit du registre FSR, qui mémorise l'adresse à lire/écrire. Il est possible de copier un pointeur dedans, qui provient soit de l'accumulateur, soit de la mémoire SRAM. Dans les deux cas, la donnée adressée est lue ou écrite dans un registre INDR, est un registre d’interfaçage rendu adressable. Le registre FSR est directement connecté sur le bus d'adresse.
Les modèles de base se débrouillent avec un registre FSR et un registre INDR, mais les modèles plus performants ont deux ou trois copies de chaque registre. Les modèles PIC18 ajoutent aussi des instructions LOAD/STORE qui émulent les modes d'adressage à post- ou pré-incrément/décrément, et le mode d'adressage "Base + Indice + Décalage", encore une fois en utilisant les registres FSR et INDR.
Avec tout ce qu'on vient de dire, vous devriez pouvoir comprendre la microarchitecture d'un PIC, qui est résumée dans ce schéma.
[[File:DocPIC16F84 all.png|centre|vignette|upright=2.5|Microarchitecture du PIC16F84.]]
===Les microcontrôleurs Intel 8051/8031===
[[File:Pinagem8031.jpg|vignette|Broches du 8051.]]
Les microcontrôleurs Intel 8051/8031 sont des microcontrôleurs 8 bits, commercialisés par Intel. Elle contient un processeur 8/16 bits, 4 kibioctets de mémoire ROM, une RAM de 128 octets. Niveau entrées-sorties, il contient un port série, ainsi que 4 ports d'un octet chacun sur lesquels il peut lire ou écrire. Il supporte des interruptions, avec un contrôleur d'interruption intégré. Il contient aussi deux ''timers'' de 16 bits chacun, qui déclenchent des interruptions quand ils tombent à zéro ou à une valeur configurable.
Ils ont de nombreuses ressemblances avec les microcontrôleurs PIC. Le processeur du 8051 est une architecture à accumulateur de 8 bits, ses registres sont mappés en mémoire RAM, il a un registre d'adresse dédié à l'adressage indirect et j'en passe. Mais il y a aussi des différences notables. Par exemple, le 8051 n'a pas de pile d'adresse de retour, contrairement aux processeurs PIC. Il fait autrement, à savoir qu'il gère une pile d'appel placée en mémoire RAM,ce qui est très différent. De même, il utilise deux accumulateurs nommés A et B.
Une autre différence est que les registres sont placés dans un banc de registre à part des 128 octets de SRAM. Il y a une SRAM séparée du banc de registre, contrairement à ce qu'on a sur les microcontrôleurs PIC. Par contre, les registres du processeur sont mappés en mémoire RAM, y compris les deux accumulateurs, le registre d'état, le ''program counter'', et bien d'autres. Mais le fait qu'ils soient séparés de la SRAM permet de les mapper dans l'espace d'adressage sans marcher sur les pieds de la SRAM. Vu que le processeur peut adresser 256 octets, mais n'a que 128 octets de SRAM, les registres sont mappés dans les 128 octets restants. Les entrées-sorties aussi sont mappées dans ces 128 octets restants.
L'ensemble utilise une architecture Harvard, contrairement à ce que pourrait faire croire le schéma ci-dessous.
[[File:Arkitektura mikro kontrollerit Intel 8051.png|centre|vignette|upright=2.5|Microcontrôleur 8051]]
Voyons maintenant la ''memory map'' de ce microcontroleur, pour la SRAM. Un point assez original est que 16 octets de la SRAM sont adressables bit par bit, à savoir que chaque bit a sa propre adresse. En tout, cela permet d'adresser 128 bits (16 adresses * 8 bits par octet adressé). L'intervalle bit-adressable va de l'adresse 32 (inclue) à l'adresse 47 (inclue).
Les 32 premières adresses sont réservés à la mémoire SRAM, c'est 32 octets de RAM utilisable à volonté par le programmeur. Les 16 adresses suivantes sont les 16 adresses bit-adressables mentionnées dans le paragraphe précédent. Les 96 octets suivants sont de la mémoire RAM adressable, affectée par défaut à la pile d'appel mais adressable via adressage direct si besoin. Les 128 octets de poids fort sont réservés aux registres du processeur et aux entrée-sorties mappées en mémoire.
[[File:Memory map du 8051.png|centre|vignette|upright=2|Memory map du 8051]]
Les 128 octets au sommet de l'espace d'adressage sont décrit dans le schéma ci-dessous. On voit que les deux accumulateurs sont mappés dedans, de même que le registre d'état PSW, le registre de configuration des interruptions IE (''Interrupt Enable''), et quelques autres. Les ports d'entrée-sortie sont aussi mappés dedans, que ce soit les 4 ports parallèles ou le port série. Les deux ''timers'' sont aussi mappés dedans, ainsi que leurs registres de configuration.
Une partie des octets sont bit-adressables, et cette partie inclus les registres du processeur et les ports d'entrées-sorties. Pour le dire autrement, chaque bit d'un port d'entrée-sortie a sa propre adresse mémoire, qui permet de le sélectionner. Par contre, les registres pour les ''timers'' ne sont pas dedans, sauf pour le troisième ajoutés dans des extensions du 8051.
[[File:MFrey SFR MCS-51.svg|centre|vignette|upright=2|Memory map des 128 octets de poids fort du 8051]]
Pour ce qui est des instructions, le 8051 supporte les opérations de multiplications et de divisions, contrairement aux microcontrôleurs PIC qui se limitaient à l'addition et la soustraction. Une autre particularité est que le processeur incorpore une '''unité de calcul de 1 bit'''. Elle permet de faire des opérations sur des bits, avec 17 instructions possibles au total. L'ALU de 1 bit est reliée à un accumulateur de 1 bit et 32 registres de 1 bits. Elle peut lire des opérandes de 1 bit en mémoire RAM ou sur les ports d'entrée-sortie, pour les portions qui sont bit-adressables.
Le processeur supporte aussi l'adressage indirect dans la SRAM, mais celui-ci fonctionne différemment comparé aux microcontrôleurs PIC. Il n'y a pas deux registres d'adresse dédiés, séparés des autres. A la place, l'adressage indiorect est implémenté normalement, en utilisant les registres généraux. Par contre, il y a une contrainte : seuls les deux premiers registres R0 et R1 sont utilisables. En clair, seuls ces deux registres peuvent contenir une adresse, un pointeur. C'est là une différence liée au fait que le 8051 a un banc de registre séparé.
Le 8051 peut communiquer avec une mémoire RAM externe, en plus de la SRAM interne. Pour cela, le processeur du 8051 avait un espace d'adressage séparé pour la RAM externe, capable d'adresser 64 kibioctets. Communiquer avec cet espace d'adressage se faisait avec des instructions d'accès mémoire séparées des autres, pas les LOAD/STORE normaux. Par exemple, l'instruction MOVX lisaient une donnée dans cet espace d'adressage, et la copiait dans l'accumulateur ou la SRAM. Pour envoyer l'adresse à lire/écrire à cette RAM externe, le processeur incorporait un registre d'adresse dédié. Il s'agit du '''registre DPTR''', qui contient une adresse de 16 bits. Le processeur devait copier l'adresse à lire/écrire dedans, puis lancer l'instruction MOVX.
===Le HP Nanoprocessor : un processeur sans ALU===
Un dernier exemple est celui du processeur HP Nanoprocessor, de l'entreprise HP. Il a été commercialisé en 1974, en même temps que les premiers micro-processeurs d'Intel. Tous les processeurs de l'époque étaient des processeurs 8 bits et le HP Nanoprocessor ne faisait pas exception. Ce n'était pas un processeur haute performance, il était destiné à des applications d'informatique industrielle ou embarquée. D'ailleurs, il utilisait des transistors de type metal-gate, peu performants, là où ses contemporains utilisait des transistors en silicium, plus performants.
Mais une caractéristique qui rend cela encore plus claire est qu'il n'y a pas d'ALU ! En effet, ce processeur est incapable de faire des additions, des soustractions ou autres opérations simples ! Il est cependant capable d'effectuer des incrémentations et décrémentations, des décalages, des opérations logiques comme des ET/OU/NON/XOR et bien d'autres. Il supporte en tout 48 instructions, avec un support limité des modes d'adressage indirects. Les instructions de branchement étaient des instructions SKIP, il n'y avait pas d'instructions de branchement généralistes.
Pour ce qui est des registres, il disposait de 16 registres de 8 bits et d'un accumulateur. Niveau mémoire, il était relié à une mémoire ROM, rien de plus. Il n'avait de RAM supplémentaire qu'on pouvait lui adjoindre, il devait se débrouiller avec seulement ses registres. Et cela ne posait pas de problèmes pour son usage. Seul le mode d'adressage indirect à registre est supporté, il n'y a pas de registres d'indices. Ce mode d'adressage permet de lire des données en mémoire ROM, la ROM pouvant contenir des tableaux de valeurs constantes.
: Il est possible de lui adjoindre de la RAM via les ports d'entrée-sortie, ainsi qu'une ALU, mais RAM et ALU sont traités comme des périphériques avec lesquels on communique, ils ne sont pas intégrés au processeur.
Niveau micro-architecture, il incorporait une unité de calcul logique et un circuit comparateur. Le comparateur était un circuit comparateur série des plus basiques, qui était utilisé pour les instructions de branchement et associées. L'unité de calcul logique gérait des incrémentations/décrémentation, des décalages, les opérations logiques et quelques autres. L'unité de calcul logique était bit-slicée, à savoir conçue en assemblant 8 ALU de 1 bit chacune, enchainées en série. Le tout était combiné à des circuits de ''carry skip''.
[[File:Unité de calcul du HP nanonprocessor.png|centre|vignette|upright=2|Unité de calcul du HP nanoprocessor]]
Son unité de décodage d'instruction était très simple, essentiellement basée sur des portes NOR, grâce à un encodage efficace des instructions machine. Le ''program counter'' fait 11 bits, ce qui permet d'adresser une ROM de 2 kibioctets. Le ''program counter'' était relié à un circuit incrémenteur qui gérait les isntructions SKIP (il pouvait incrémenter le ''program counter'' par pas de 1 ou de 2 en cas de SKIP). Le processeur contient aussi deux registres, qui servent en quelque sorte de pile d'adresse de retour. Un premier registre mémorise l'adresse de retour d'une fonction, l'autre mémorise le ''program counter'' lors d'une interruption, pour savoir où brancher à la fin de l'interruption.
[[File:HP nanoprocessor.png|centre|vignette|upright=2.5|HP nanoprocessor]]
Fait intéressant, le concepteur du processeur a gracieusement donné les masques utilisés pour graver le silicium du processeur au site [https://www.cpushack.com/ CPU Shack]. Les masques en question sont disponibles ici :
* [https://www.cpushack.com/2020/08/20/hp-nanoprocessor-mask-set/ HP NanoProcessor Mask Set]
* [https://www.cpushack.com/2020/08/09/the-forgotten-ones-hp-nanoprocessor/ The Forgotten Ones: HP Nanoprocessor]
Les masques ont été analysés par Ken Shirrif dans cet article de blog :
* [https://www.righto.com/2020/09/hp-nanoprocessor-part-ii-reverse.html HP Nanoprocessor part II: Reverse-engineering the circuits from the masks]
==Les processeurs 8/16 bits à architecture Von Neumann==
L'usage d'une architecture Harvard est une solution pour adresser plus de mémoire avec des CPU 8 bits. Mais plusieurs microprocesseurs commerciaux n'utilisaient pas cette solution. À la place, c'était des architectures Von Neumann, mais qui étaient capables de gérer des adresses de 16 bits. Les données faisaient 8 bits, les registres faisaient 8 bits, mais quelques techniques permettaient de gérer des adresses de 16 bits. Nous parlerons de '''processeurs 8/16 bits''' pour les désigner, et nous allons les étudier à part.
Un point important est que la gestion d'adresses de 16 bits permet d'adresser 64 kibioctets, qui peuvent être remplis avec de la RAM et de la ROM. On a donc le meilleur des mondes : 64 kibioctets de mémoire, mais avec des données de 8 bits et les économies de circuit qui vont avec. L'avantage est que le processeur peut maintenant gérer une vraie pile d'appel, pas seulement une pile d'adresse de retour. Il lui suffit pour cela d'intégrer un pointeur de pile codé sur 16 bits.
===Les modes d'adressage par page des CPU Motorola===
Les processeurs Motorola 8 bits étaient des processeurs 8 bits avec un bus d'adresse de 16 bits. C'était des processeurs à accumulateur incorporant deux registres d'indice, un registre d'état, un pointeur de pile, et un ''program counter''. Tous les registres sont reliés au bus d'adresse, sauf le registre d'état et l’accumulateur. Tous les registres font 8 bits, sauf le ''program counter''. La pile est câblée pour être dans un bloc de 256 octets compris entre l'adresse 1 0000 0000 et l'adresse 1 1111 1111, ce qui fait que son adressage se fait avec un seul octet.
[[File:6502-architecture.svg|centre|vignette|upright=1.5|Architecture simplifiée du 6502.</br> X et Y : registres d'indice ;</br> S : le pointeur de pile ;</br> A : accumulateur ;</br>P : registre d'état.</br>]]
Les processeurs Motorola 8 bits utilisaient une méthode simple pour adresser 64 kibioctets de RAM, avec des registres de 8 bits. Pour cela, ils utilisaient une variante de l'adressage base + décalage. Elle améliore l'adressage absolu, qui intègre l'adresse à lire/écrire dans l'instruction elle-même. L'adresse en question est de 8 bits et n'encode que les 8 bits de poids faible de l'adresse, les 8 bits de poids fort sont dans un '''registre de page''' adressé implicitement. L'adresse finale est obtenue en concaténant ce registre avec l'adresse mémoire intégrée dans l’instruction. Le résultat est que la mémoire était découpée en blocs de 256 consécutifs, chacun pouvant servir de fenêtre de 256 octets. Une page est réservée pour la pile, la seconde, comme dit plus haut.
Formellement, ce mode d'adressage a des ressemblances avec la commutation de banques, une technique qu'on verra dans les chapitres sur l'espace d'adressage et la mémoire virtuelle. Mais ce n'en est pas du tout : le registre de page est utilisé uniquement pour les accès mémoire avec le mode d'adressage base + décalage, mais pas pour les autres accès mémoire, qui gèrent des adresses complètes. Notons que l'usage d'un registre de page dédié fait que celui-ci est adressé implicitement.
Il faut noter que la technique a été utilisée sur des processeurs 16 bits, pour contourner la petite taille des instructions. Un exemple est celui du HP 2100, un processeur 16 bits. Il avait un registre de page de 5 bits et encodait 10 bits d'adresse dans ses instructions. Ses instructions d'accès mémoire disposaient d'un bit qui choisit quel mode d'adressage utiliser. S'il était à 0, l'adressage absolu était utilisé, le registre de page n'était pas utilisé. Mais s'il était à 1, le registre de page était utilisé pour calculer l'adresse.
Une évolution de l'adressage précédent est le '''mode page direct'''. Avec lui, le registre de page est étendu et contient une adresse mémoire complète. L'adresse finale n'est pas obtenue par concaténation, mais en additionnant le registre de page avec l'adresse fournie par adressage absolu + décalage. Un exemple est celui des premiers processeurs Motorola, qui géraient des adresses courtes de 8 bits. L'adresse courte de 8 bits correspondait non pas aux 256 premiers octets de la mémoire, mais à une fenêtre de 256 octets déplaçable en mémoire. La position de la fenêtre de 256 octets était spécifiée par le registre de page de 16 bits, qui précisait l'adresse du début de la fenêtre, celle de sa première donnée.
Il s'agit donc formellement d'adressage base + décalage, à un détail près : il n'y a qu'un seul registre de base. Le fait que ce registre de base soit unique fait qu'il est adressé implicitement, on n'a pas à encoder le numéro/noms de registre dans l'instruction. Le registre de base est utilisé uniquement pour l'adressage absolu, pas pour les autres accès mémoire. S'il y a des ressemblances avec la segmentation, une technique de mémoire virtuelle qu'on abordera dans quelques chapitres, ce n'en est pas vu que le registre de base est utilisé seulement pour un mode d'adressage bien précis.
===Le ''pseudo-aliasing'' des registres des processeurs Intel x86===
Voyons maintenant le cas des anciens processeurs 8 bits d'Intel à savoir l'Intel 4004, 4040, 8008 et 8080. Le Z80, un processeur inspiré des CPU Intel 8 bits, est aussi concerné. Avant de poursuivre, parlons des registres de ces processeurs. Les premiers CPU Intel incorporaient 7 registres de 8 bits nommés A, B, C, D, E, F, H, L, SP. Ils correspondent respectivement à : l'accumulateur A ; six registres nommés B, C, D, E, H et L ; le registre d'état F ; le pointeur de pile SP. Le Z80 ajoute deux registres d'indice X et Y. De plus, le Z80 dispose de registres d'interruption, qui sont en quelque sorte des copies des registres A, B, C, D, E, F, H, L. Le tout est illustré dans le tableau ci-dessous.
{|class="wikitable" style="text-align:center;"
|-
!
! Registres des CPU Intel
! Registres supplémentaires du Z80
|-
! Accumulateur
| A
| A'
|-
! Registre d'état
| F
| F'
|-
! Registres généraux
| B, C, D, E, H, L
| B', C', D', E', H', L'
|-
! Pointeur de pile
| colspan="2" | SP (sauf pour le 8008)
|-
! Registres d'indice
|
| X et Y
|}
Le 8008 incorpore une pile d'appel de 7 adresses, dans le processeur lui-même. Il en est de la même avec le 4004 et le 4040, comme on le verra dans la section sur les processeurs 4 bits. Mais le 8080 et le 8085 ont remplacé le tout par un simple pointeur de pile, afin d'avoir une véritable pile d'appel. Autant c'est impossible d'avoir une pile d'appel avec seulement 256 octets de mémoire, autant on peut se le permettre avec 65 536 adresses.
Pour gérer des adresses de 16 bits, ils auraient pu utiliser des registres d'adresse séparés, mais on préféré un système de '''pseudo-''aliasing'' de registres'''. Formellement, c'est un système qui concatène deux registres 8 bits pour obtenir une adresse de 16 bits. L’appariement a lieu lors de certaines opérations bien précises, qui n'ont de sens que pour les adresses : la lecture/écriture en mémoire, et l'incrémentation.
Il y avait cependant des contraintes quant aux paires de registres possibles, toutes les paires de registres n'étaient pas autorisées. Les CPU concernés sont donc des processeurs hybrides accumulateur-registre généraux. L'accumulateur ne peut pas être appairé, seuls les registres généraux le peuvent. Le Z80 autorise plus de paires que les CPU Intel. Voici les paires de registres qui pouvaient servir d'adresse 16 bits :
* Les CPU 8008 d'Intel autorisait une seule paire formée des registres H et L.
* Les autres processeurs, à savoir le 8080, le 8085 et le Z80, autorisaient : les paires BC, DE et HL.
Le 8008 ne gérait que des opérations sur 8 bits. Mais le 8080 et le 8085 ont ajouté des instructions 16 bits qui agissaient sur des paires de registre, que le Z80 a repris. Une paire de registres est considérée comme un registre unique de 16 bits pour certaines opérations arithmétiques, dont l'incrémentation. Voici la liste des instructions concernées :
* INC et DEC pour l'incrémentation et la décrémentation ;
* DAD : additionne le registre HL avec une autre paire (Hl inclus) ;
* LXI : copie une constante immédiate dans une paire de registres ;
* LHLD : lit 16 depuis la mémoire et l'enregistre dans une paire de registres ;
* SHLD : copie 16 bits depuis une paire de registres et l'enregistre en mémoire ;
* PUSH et POP : empile ou dépilent une paire de registre sur la pile ;
* XTHL : échange la paire HL avec les 16 bits au sommet de la pile d'appel ;
* XCHG : échange le contenu de la paire HL et DE.
Pour résumer, le processeur avait des instructions LOAD, STORE, PUSH et POP adaptées pour gérer des paires de registre. De plus, l'instruction XCHG permettait d’échanger le contenu des paires DE et HL. L'instruction a été étendue sur les processeurs 16 bits pour échanger tous les registres. Mais l'implémentation était alors différente. L'incrémentation sur une paire de 16 bit était très utile, car les adresses sont souvent incrémentées quand on parcours un tableau. Ces instructions nous donnent quelques indices sur ce qu'il y a dans le processeur.
Le système de pseudo-aliasing a un impact sur le banc de registre. Le banc de registre regroupe les registres généraux et le pointeur de pile, mais ne contient pas l'accumulateur. Les contraintes sur les paires de registres possibles ne s'expliquent que d'une seule manière : le banc de registre contient des registres de 16 bits, une paire de registres 8 bits est mémorisée dans un registre unique. Il faut donc faire une différence entre les registres architecturaux de 8 bits, et les registres réels de 16 bits.
Le banc de registre a un port de 8 bits pour les données, qui est fabriqué à partir d'un port 16 bits auquel on a rajouté un multiplexeur pour choisir soit l'octet de poids faible, soit l'octet de poids fort. Le bus de données fait 8 bits, ce qui fait que les instructions LOAD, STORE, PUSH et POP pour paires 16 bits sont réalisées en deux fois : on lit/écrit l'octet de poids faible, puis celui de poids fort. Par contre, le bus d'adresse fait bien 16 bits. Cela suggère que le banc de registre dispose d'un port de 16 bits dédié aux adresses, en plus du port de données 8 bits.
[[File:Architecture d'un CPU 8-16 bits avec un banc de registre double port.png|centre|vignette|upright=2|Architecture d'un CPU 8-16 bits avec un banc de registre double port]]
L'incrémentation d'une paire 16 bits ne coute rien à implémenter, ou presque. En effet, le processeur incorpore un incrémenteur 16 bits pour le ''program counter'', qui est relié au bus d'adresse. L'idée est de rentabiliser cet incrémenteur, en lui permettant d'incrémenter des données/adresses de 16 bits obtenues via pseudo-aliasing. De même, il peut être utilisé pour incrémenter le pointeur de pile, voire un compteur de rafraichissement mémoire (pour rappel, le rafraîchissement mémoire demande de balayer la mémoire d'adresse en adresse et été fait par le CPU à l'époque). Pour cela, il suffit de connecter le ''program counter'', le banc de registre, et l'incrémenteur, via un bus dédié.
[[File:Calcul d'adresse par ALU dédiée avec PC séparé.png|centre|vignette|upright=2|Calcul d'adresse par ALU dédiée avec PC séparé]]
Notez qu'on peut encore simplifier le tout en placant le ''program counter'' dans le banc de registre, ce qui ne gênera pas le travail de l'incrémenteur mais simplifiera le câblage au bus d'adresse. Ce n'était pas systématique, certains processeurs mettaient le ''program counter'' dans le banc de registre, d'autres non.
: Inclure le ''program counter'' dans le banc de registre permet parfois de remplir un vide. Par exemple, sur un processeur avec 12 registres, le banc de registre devrait faire idéalement 16 registres, inclure le ''program counter'' dedans fait monter le tout à 13.
[[File:Architecture d'un CPU 8-16 bits.png|centre|vignette|upright=2|Architecture d'un CPU 8-16 bits]]
Les processeurs Intel 8 bits, à savoir le 8008, le 8080 et le 8085 ; mettaient le ''program counter'' dans le banc de registre. Vous avez donc toutes les armes pour comprendre leur micro-architecture. Par exemple, voici la micro-architecture du processeur 8080. Remarquez le banc de registre, qui contient tous les registres sauf l'accumulateur et le registre. Il a deux ports : un pour les adresses et un pour les données. Notez le dé-multiplexeur sur le port de donnée. Pour le reste, il s'agit d'une architecture à accumulateur hybride des plus classiques.
[[File:Intel 8080 arch.svg|centre|vignette|upright=3|Microarchitecture de l'Intel 8080.]]
Le Z80 est un processeur inspiré du design des processeurs Intel 8 bits, mais avec pas mal d'améliorations. Un point particulier de ce processeur est son banc de registre. Il contient tous les registres du processeur, y compris l'accumulateur et le registre d'état ! Les seuls registres en-dehors du banc de registre sont le ''program counter'' et un compteur de rafraichissement mémoire IR.
Un autre point particulier est que les registres dans le banc de registres avaient une copie séparée accessible uniquement pour les interruptions, via fenêtrage de registres. Et l'accumulateur et le registre d'état étant dans le banc de registre, il y avait deux accumulateurs et deux registres d'état. Les registres A, B, C, D, E et F étaient dupliqués, par le pointeur de pile ni les registres d'indice. Les copies des registres étaient nommées A', B', C', D', E' et F'.
Le Z80 supportait des instructions d'échange de registre en plus des CPU Intel 8 bits. L'instruction EX peut échanger soit le contenu des paires D,E et H,F, soit la paire A,F avec la paire A',F'. L'instruction EXX échange les paires BC, DE, HL avec les paires BC', DE', HL'. En faisant cela, le programmeur pouvait utiliser deux fois plus de registres généraux s'il n'utilisait pas les interruptions. L'échange de paires se fait sans copies de registres, mais simplement en modifiant l'adresse envoyée sur le banc de registre. Pour cela, plusieurs bascules mémorisent des bits qui indiquent si les paires ont été échangées ou non. Il y a une bascule pour les paires DE , HL ; une autre pour les paires A,F et paire A',F', une dernière pour l'instruction EXX. En combinant ces bascules avec les noms de registres envoyés par le séquenceur, on peut échanger les paires de registres.
==Le cas particulier des processeurs 4 bits : le 4004 d'Intel==
L'Intel 4004 était le tout premier micro-processeur. Il s'agissait d'un microprocesseur de 4 bits, basé sur une architecture à accumulateur. Il disposait d'un accumulateur et de 16 registres d'indice, tous de 4 bits. Il faisait des calculs sur des données de 4 bits, appelées des nibbles. Cependant, sur ses 46 instructions machines supportées, 41 agissaient sur des opérandes de 8 bits, les 5 restantes sur des opérandes de 16 bits. Simplement, les calculs se faisaient en deux fois, en échangeant des données entre mémoire RAM et accumulateur.
Le 4004 est un circuit intégré avec peu de broches. Il dispose notamment d'un bus de données/adresse, qui est multiplexé, c’est-à-dire qu'il sert alternativement de bus de données et de bus d'adresse selon les besoins. Le bus de commande mémoire fait 5 bits, dont 4 pour les chips de RAM, un pour la ROM. Les adresses sont codées sur 12 bits, les données sur 4 et les instructions sur 8 bits. L'envoi d'une adresse sur le bus se fait en plusieurs fois, de même que la lecture d'une instruction. Il s'agit là d'une adaptation pour outrepasser les limitations d'un processeur 4 bit.
[[File:Intel 4004 processor pinout.png|centre|vignette|upright=2|Broches de l'Intel 4004. Nous verrons à quoi elles servent plus bas.]]
===L'espace d'adressage de l'Intel 4004===
Les adresses du processeur sont sur 12 bits, ce qui fait 4096 adresses différentes. Elles regroupent à la fois la ROM et la mémoire RAM, vu que l'architecture est une sorte de mélange bizarre entre une architecture Von Neumann et Harvard. Le processeur gère bien deux espaces d'adressage séparés, mais la RAM et la ROM sont reliés au même bus. La sortie CM-ROM du processeur indique si l'adresse envoyée correspond à la RAM ou la ROM. Un circuit de décodage d'adresse active ou désactive la RAM selon la valeur de ce bit, l'inverse pour la ROM, en agissant sur leurs bits Chip Select. Seule la RAM ou la ROM répondent alors à l'adresse.
Pour ce qui est de la RAM, le circuit de décodage d'adresse pouvait gérer au maximum 1024 adresses différentes, chacune contenant un nibble. Pour cela, le CPU 4004 était relié à une ou plusieurs RAM externes, des Intel 4002. Chaque Intel 4002 contenait 64 nibbles de données, plus 16 nibbles de statut qu'on ne détaillera pas ici. Les nibbles de statut étaient accessibles en utilisant des instructions d'entrée-sortie, donc pas avec des lectures/écritures mémoire. Les 64 nibbles de données sont découpés en 4 groupes de 16 nibbles. Le CPU pouvait être relié à maximum 16 Intel 4002, ce qui fait 1024 nibbles de données et 256 nibbles de statut. L'ensemble permet de remplir l'espace d'adressage de 1024 adresses.
===Le registre de page et le pseudo-aliasing des registres===
Sélectionner une adresse mémoire utilisait un mélange entre pseudo-aliasing et registre de page. Pour les données, les 1024 adresses étaient découpées en 4 pages de 256 adresses. Pour la ROM, les 4096 adresses étaient découpées en 16 pages de 256 adresses. Localiser une donnée dans une page ne requiert que 8 bits, 2/4 bits supplémentaires permettent de sélectionner la page voulue. Le registre de page était dans le processeur lui-même, et était relié aux sorties du processeur nommées CM-RAM 0, 1, 2 et 3. Les 4 sorties encodaient un nombre qui permet de sélectionner le numéro de page voulu.
Le registre de page fait 5 bits : un pour distinguer RAM et ROM, 4 bits pour sélectionner la page voulue. L'avantage est que la carte mère gère au maximum 16 chips de RAM, ce qui colle parfaitement avec les 4 utilisés pour sélectionner une page. Un chip de RAM correspond à une page, et chacun est activé ou désactivé suivant la page sélectionnée. Pour cela, il suffit d'ajouter un décodeur sur la carte mère, qui prend les 4 bits du registre de page et fournit les signaux Chip Select aux différents chips de RAM.
Reste alors à utiliser les 8 bits d'adresse à l'intérieur d'un chip de RAM. Le 4004 permettait de concaténer deux registres d'indice de 4 bits pour former une adresse de 8 bits. Les instructions d'accès mémoire pouvaient ainsi préciser une paire de registre d'indice pour préciser quelle adresse lire/écrire. Idem pour les branchements indirects : le processeur supportait une instruction de branchement indirect qui précisait l'adresse dans une paire de registres d'indice. Les registres d'indice sont donc assez mal nommés sur cette architecture, vu qu'ils peuvent servir soit de registre d'indice, soit de demi-registre d'adresse. Il s'agit là du système de pseudo-aliasing des registres, mais appliqué aux registres d'indice.
L'Intel 4004 gérait deux instructions pour gérer les adresses mémoires. La première, l'instruction DCL (''Designate Command Line'') configure le registre de page. Elle prend en entrée un numéro de page et le copie dans le registre de page. L'opérande peut provenir d'un registre d'indice ou de l'accumulateur. La seconde, l'instruction SRC (''Send Register Control'') concatène deux registres d'indice pour obtenir une adresse de 8 bits. Un accès mémoire se fait donc en maximum trois instructions : une qui configure le registre de page si ce n'est pas déjà fait, une instruction SRC pour envoyer l'adresse, et une troisième instruction qui dit s'il faut faire une lecture ou une écriture.
===La microarchitecture de l'Intel 4004===
Il incorporait une pile d'adresse de retour intégrée au processeur. La pile d'adresse acceptait exactement 3 adresses maximum. Elle était regroupée avec le ''program counter'' dans un banc de registre, de 4 registres. Le ''program counter'' et le pointeur de pile faisaient chacun 12 bits, soit trois nibble. Ils étaient incrémentés par un incrémenteur dédié.
SI on omet le registre de page et la pile d'adresse, le 4004 est une architecture à accumulateur des plus classiques, avec un bus interne unique, un banc de registre pour les registres d'indices, un accumulateur relié à une unité de calcul. Les registres d'indice étaient dans un banc de registre séparés, car ils faisaient 4 bits chacun, contrairement au pointeur de pile et le ''program counter''. Un détail important est que les bancs de registres du 4004 étaient implémentés avec de la DRAM, et non des registres usuels fabriqués avec des bascules 1 bit.
[[File:Microarchitecture de l'Intel 4004.png|centre|vignette|upright=2.5|Microarchitecture de l'Intel 4004]]
<noinclude>
{{NavChapitre | book=Fonctionnement d'un ordinateur
| prev=Les architectures à pile et mémoire-mémoire
| prevText=Les architectures à pile et mémoire-mémoire
| next=Les processeurs de traitement du signal
| nextText=Les processeurs de traitement du signal
}}
</noinclude>
a8ikqblyx1c9pl1w3sx9z8skzj61war
765740
765739
2026-05-01T21:09:41Z
Mewtow
31375
/* Les processeurs 8/16 bits à architecture Harvard */
765740
wikitext
text/x-wiki
Nous avons déjà abordé la notion de processeur 8, 16, 32, 64 bits. Elle désigne la taille des registres généraux, ou de l'accumulateur. De nos jours, les processeurs 32 et 64 bits sont la norme, mais les premiers micro-processeurs étaient des processeurs 4 et 8, avant de passer rapidement au 16 bits. La raison est que leur budget en transistor limité faisait qu'on ne pouvait pas utiliser une ALU trop grande : une ALU 8 bit prend deux fois moins de place et de transistors qu'une ALU 16 bits. Cependant, les processeurs 8 bits avaient de sérieuses limitations qui étaient compensées par diverses solutions. Dans ce chapitre, nous allons faire une revue rapide des processeurs 8 bits et de leurs fonctionnalités.
La principale limitation des CPU 8 bits était l'adressage : des registres de 8 bits limitaient l'espace d'adressage à seulement 256 adresses, soit à peine 256 octets ! Intuitivement, on se dit que 256 octets est purement impraticable, on ne peut rien faire d'intéressant avec seulement 256 de RAM + ROM. Et c'est partiellement vrai. L'adage veut que 16 bits est la taille minimale intéressante, la limite à partir de laquelle on a assez de mémoire RAM/ROM pour coder des applications intéressantes. Mais 256 octets de RAM est largement suffisant sur de nombreux systèmes embarqués simples s'en accommodent : des caisses enregistreuses, des systèmes de régulation de feu de circulation, etc.
Pour les applications demandant plus de mémoire RAM, les CPU de l'époque contournaient la limitation de 256 octets de RAM avec de nombreux stratagèmes. Dans ce qui va suivre, nous allons séparer les CPU 8 bits selon qu'ils utilisent une architecture Harvard ou une architecture Von Neumann. La raison est qu'une architecture Harvard permet en soi de contourner partiellement ce problème d'adressage. Les choses sont plus compliquées avec une architecture Von Neumann.
==Les processeurs 8/16 bits à architecture Harvard ==
La première solution est d'utiliser une architecture Harvard. Le processeur 8 bit a alors deux espaces d'adressage : un pour la RAM, un autre pour la ROM. Et les deux utilisent des adresses de taille différente. La ROM est reliée à un bus d'adresse de 16 bits, alors que la RAM est elle connectée à un bus d'adresse de 8 bits. La RAM est donc limitée à 256 octets, alors que la ROM peut monter jusqu'à 64 kibioctets. Mine de rien, faire ainsi est largement suffisant.
Pour encore améliorer la situation, il est possible d'utiliser une architecture Harvard modifiée, qui permet de lire des données depuis la mémoire ROM. Cela réduit encore plus les besoins en mémoire RAM. Les constantes manipulées par le programme sont mémorisées en ROM, lues depuis la ROM, au lieu d'être chargées en RAM. Avec ce genre de stratagèmes, 256 octets de RAM est largement suffisant sur de nombreux systèmes, à condition qu'on ait assez de ROM pour coder un programme digne de ce nom. Par exemple, de nombreux systèmes embarqués simples s'en accommodent : des caisses enregistreuses, des systèmes de régulation de feu de circulation, etc.
Les processeurs 8 bits intègrent parfois les 256 octets de RAM directement dans le processeur, dans le banc de registres ! Beaucoup en implémentaient moins, avec par exemple seulement 64 octets de RAM, ou 32 octets, ou 128 octets. L'avantage est que cela élimine le bus pour les données, ce qui économise beaucoup de broches sur le circuit intégré du CPU. Et pour les applications demandant plus de RAM, on pouvait ajouter un circuit séparé qui permettait d'adresser une RAM plus grande. Et c'est ce qui explique que cette solution est beaucoup utilisée sur les microcontrôleurs peu puissants. Les exemples qui vont suivre devraient vous convaincre.
: Les processeurs de ce type implémentent des optimisations pour adresser plus de 256 octets de RAM. La plus connue est la commutation de banques. Mais nous n'avons pas encore abordé celle-ci, et il faudra attendre le chapitre sur l'espace d'adressage pour cela.
===Le Fairchild F8 et la console de jeu Fairchild Channel F===
Un premier exemple est la Fairchild F8 de la défunte entreprise Fairchild Semiconductor. Il incorpore un processeur 8 bits, c’est-à-dire que le processeur fait des calculs sur des entiers de 8 bits maximum, une mémoire RAM de 64 octets, ainsi qu'une mémoire ROM de 1 kibioctet. Les 64 octets de RAM sont certes très peu, mais c'est suffisant pour certaines applications simples, comme les caisses automatiques de l'époque, ou des applications embarquées. Et de toute façon, il est possible d'ajouter de la mémoire RAM supplémentaire si les 64 octets de RAM intégrée ne suffisent pas. Le système était donc modulaire, adaptable selon les besoins, peu cher pour son implémentation minimale sans RAM en plus.
Vu qu'il s'agit d'un des tout premiers ordinateurs, il est sorti à une époque où la technologie était rudimentaire. À cette époque, le processeur était composé de pièces détachées qu'il fallait souder ensemble pour obtenir un processeur fonctionnel. Ce n'est que plus tard qu'est apparu le micro-processeur, qui regroupe un processeur complet dans un seul circuit intégré. Le résultat est que le processeur du Fairchild F8 est coupé en deux, l'unité de calcul et l'unité de contrôle sont placés dans des pièces détachées séparés.
Le microcontrôleur est composé de trois à quatre pièces détachées, certaines étant optionnelles. La première est le '''3850 CPU''', qui regroupe l'unité de calcul et la mémoire RAM intégrée. La seconde est le PSU (''3851 Program Storage Unit''), qui regroupe la mémoire ROM et l'unité de contrôle, ''program counter'' inclut. S'il y a besoin d'utiliser plus de RAM, il faut ajouter un circuit d’interface mémoire, qui est au choix le ''3852 Dynamic Memory Interface'' (DMI) ou le ''3853 Static Memory Interface'', le premier étant connecté à une mémoire de type DRAM, l'autre à une SRAM (nous verrons ce que sont les DRAM et les SRAM dans le prochain chapitre).
[[File:Fairchild F8.png|centre|vignette|upright=2|Fairchild F8]]
Le système minimal est composé d'un PSU et d'un 3850, sans les circuits d'interface mémoire. Le tout donne un système avec un processeur 8 bit, 64 octets de RAM et 1 kibioctet de ROM, les deux mémoires étant intégrées dans le "processeur". Le processeur gérait 4 entrées-sorties, chacune étant reliée avec un bus de 8 bit au processeur. Au passage, en 1977, Mostek a créé un microcontrôleur qui regroupe un PSU et un 3850 : le Mostek 3870. Le système minimal n'avait pas de bus d'adresse, vu que la RAM était intégrée au processeur. C'est les 3852 et 3853 qui ajoutaient un bus d'adresse. Ils ajoutent un bus d'adresse de 16 bits, ce qui permet d'adresser 64 kibioctets de RAM.
[[File:Fairchild-Channel-F.jpg|vignette|un Fairchild Channel F]]
Le Fairchild F8 a été utilisé dans la Fairchild Channel F, une des toute première console de seconde génération, à savoir des consoles qui utilisaient des cartouches de jeu. Avant les consoles de seconde génération, les consoles étaient non-programmables. Elles étaient conçues pour faire tourner un jeu précis, aucun autre, le jeu étant implémenté dans leurs circuits.
La Fairchild Channel F est composé du système minimal, auquel on a ajouté une carte son rudimentaire et 2 kibioctets de mémoire vidéo. La mémoire vidéo sert uniquement pour afficher des images à l'écran : on écrit l'image à afficher dedans, un circuit vidéo se charge de l'afficher à l'écran automatiquement. Le processeur ne fait qu'écrire dans cette RAM vidéo, il ne peut pas en lire le contenu. De la RAM supplémentaire peut cependant être ajoutée dans les cartouches de jeu.
===Les microcontrôleurs PIC===
Les '''microcontrôleurs PIC''' regroupent des microcontrôleurs allant de microcontrôleurs 8 bits aux performances très faibles, à des microcontrôleurs 32 bits bien plus puissants. Les microcontrôleurs PIC sont très utilisés dans l'embarqué ou d'informatique industrielle. Ils sont vendus à des volumes assez impressionnants, plusieurs millions par an. Et si vous avez ou êtes en train de faire des études d'électronique, je parie que vous les avez déjà vus en classe, ou que ce ne saurait tarder. Dans ce qui suit, nous allons nous concentrer sur les microcontrôleurs PIC 8 bits, à savoir les PIC 16, 16 et 18. Les PIC 24, qui sont des microcontrôleurs 16 bits, ne seront pas abordés.
Le processeur incorpore de nombreuses optimisations pour éviter de trop gaspiller d'adresses mémoire. Mais ces optimisations sont partiellement compensées par d'autres choix de conception que nous détaillerons plus bas. Déjà, les microcontrôleurs PIC 8 bits sont une architecture Harvard, comme dit plus haut. Ensuite, le processeur utilise un espace d'adressage séparé pour les entrés-sorties. Les ports d'entrée-sortie et les ''timers'' ne sont donc pas mappés en mémoire RAM, ce qui économise quelques adresses.
La mémoire ROM des PIC va de 1024 instructions à 4096 instructions. En comparaison, la mémoire RAM des microcontrôleurs PIC ne peut pas dépasser 256 adresses, et elle est encore plus petite en pratique sur certains modèles. Pour donner un exemple, le PIC16F84 a une RAM composée de 68 "registres" de 8 bits. Le terme "registres" devrait vous faire tiquer, mais c'est bien le terme utilisé dans la documentation des PIC. Et il faut admettre que la différence entre banc de registre et SRAM intégrée est floue, comme on va tenter de l'expliquer dans les paragraphes suivants.
: Les PIC 18 peuvent adresser plus de 256 octets de RAM en utilisant la commutation de banques, une technique qui sera abordée dans plusieurs chapitres.
[[File:DocPIC16F84 3.png|centre|vignette|upright=3|Espaces d'adressage du PIC16F84.]]
Les PIC disposent de nombreux registres de contrôle, d'un ''program counter'', d'un registre d'état, et d'un pointeur de pile. Un détail très important est que ces registres sont placés dans la mémoire SRAM ! En clair, on peut y accéder en lisant/écrivant à une adresse mémoire bien précise. Sur les modèles 16F, l'espace d'adressage fait 128 octets, dont 32 sont réservés aux registres du processeur, ce qui fait que seules 96 octets sont adressables comme de la RAM. Mais les 128 octets sont un seul et unique SRAM dans le processeur. Ce qui explique qu'il est difficile de séparer banc de registre et RAM principale sur ce processeur : les deux sont fusionnées ! Cela gaspille quelques adresses mémoire, mais permet une implémentation plus simple, avec un banc de registre unique.
Les PIC sont une architecture à accumulateur basique, ce qui permet d'utiliser un banc de registre à un seul port. Ce choix simplifie grandement la conception du processeur. Il faut préciser que l'accumulateur n'est pas mappé en mémoire. Sauf sur les modèles PIC 17, qui mappé l'accumulateur en mémoire RAM !
Leur implémentation de l'accumulateur ajoute une petite subtilité : le résultat d'une opération arithmétique peut être enregistré ailleurs que dans l'accumulateur. Le résultat peut aussi remplacer la seconde opérande, celle lue en mémoire RAM. Dit autrement, le résultat est enregistré dans l'adresse mémoire source. Les instructions de calcul ont le choix : un bit dans leur encodage précise où enregistrer le résultat.
{|
|-
|[[File:DocPIC16F84 4.png|centre|vignette|upright=2|Microarchitecture simplifiée d'un microcontroleur PIC (ici, un 16F84).]]
|[[File:DocPIC16F84 5.png|centre|vignette|upright=2|Microarchitecture simplifiée d'un microcontroleur PIC (ici, un 16F84), avec les branchements directs.]]
|}
La petite taille de la ROM d'un PIC n'est pas une surprise. Les architectures 8 bits sont conçues pour ne pas utiliser beaucoup de transistors et être très simples. Aussi, utiliser une petite ROM est nécessaire. Mais il faut aussi adapter le jeu d'instruction, pour qu'il ait une bonne densité de code. Par exemple, il faut faire en sorte d'avoir des instructions assez courtes. Si les instructions font 16 bits au lieu de 32, on divise par deux le nombre de transistors nécessaire pour la mémoire ROM. La conséquence est que le jeu d’instruction des PIC est adapté à cette contrainte.
Les microcontrôleurs PIC utilisent un jeu d'instruction propriétaire, dont les instructions sont très petites. Les premières versions du jeu d'instruction utilisaient des instructions codées sur 12 bits, dont 5 pour l'adresse mémoire de la seconde opérande. Pour les branchements, 3 bits étaient utilisés pour l'opcode, 9 pour l'adresse de destination. Par la suite, les instructions ont été étendues à 13 bits sur les PIC1670, puis à 14, 15 et 16 bits. Les adresses ont alors été élargies, ce qui permet d'adresser en peu plus de mémoire RAM.
Il est intéressant de regarder comment les PIC font pour obtenir des instructions aussi courtes. Premièrement, le fait d'utiliser une architecture à accumulateur, couplé à une RAM très petite aident grandement. Les architectures à accumulateur ont besoin de préciser un opcode et une adresse mémoire pour chaque instruction, pas besoin de préciser de noms de registres ni le mode d'adressage. La taille des adresses mémoire est censé être un problème pour la densité de code, mais les adresses d'un processeur 8 bits font 8 bits. On peut alors avoir un jeu d'instruction étoffé, en utilisant des instructions 16 bits, qui concatènent un opcode et une adresse mémoire, d'un octet chacun.
Mais d'autres optimisations permettent d'avoir une bonne densité de code. Les PIC ont des branchements pour les appels et retour de fonction. Les PIC incorporent une pile d'appel de retour, qui fait 2 à 8 adresses suivant les modèles. Elle permet d'économiser quelques registres, car la pile d'appel n'est pas mappée dans l'espace d'adressage, elle n'est pas adressable. On économise ainsi 2 à 8 registres, sur 32-256 registres. De plus, cela simplifie l'encodage des instructions d'appel/retour de fonction, qui n'ont pas à préciser où enregistre l'adresse de retour.
Les PIC n'ont pas d'instructions de branchement conditionnels, ils font avec une SKIP instruction et des branchements inconditionnels. Du moins, c'est le principe, car si vous regardez la liste des instructions ci-dessous, vous verrez qu'il n'y a pas d'instruction SKIP. À la place, les instructions SKIP sont fusionnées avec d'autres instructions. Elles sont notamment fusionnées avec les instructions d'incrémentation et de décrémentation. Les PIC supportent une incrémentation normale, une décrémentation normale, une décrémentation fusionnée avec une instruction SKIP, et une incrémentation fusionnée avec une instruction SKIP. Les deux dernières incrémentent/décrémentent l'accumulateur et SKIP l'instruction suivante si le résultat est zéro. Elles permettent de fortement simplifier l'implémentation des boucles qui s'exécutent tant que leur compteur atteint zéro.
Les PIC disposent aussi d'instructions de manipulation de bit, pour tester/masquer un bit dans une opérande, 4 en tout. Il y a en a 4 en tout : mettre à 0, mettre à 1, tester si bit = 1, tester si bit = 0. Les instructions qui testent un bit prennent leur opérande dans l'accumulateur. Elles font le test du bit et décident s'il faut skipper l'instruction suivante ou non. Il y a aussi deux instructions de rotation à gauche et droite, qui tiennent compte de la retenue mémorisée dans le registre d'état. Par contre, il n'y a pas d'instructions de décalages, qui peuvent être émulées avec une rotation suivie d'un ET bit à bit. Mentionnons aussi une instruction pour inverser deux ''nibbles'' dans un octet.
Les modèles haute performance ajoutent des instructions d'addition avec retenue entrante, idem pour la soustraction. De telles instructions sont très utiles pour faire des additions/soustractions sur des opérandes de 16 bits. Le processeur a beau être un CPU 8 bits, il peut être utilisé pour faire des calculs 16 bits, la performance est alors amoindrie, mais ce n'est pas un problème pour les applications d'un tel microcontrôleur.
Les modèles initiaux, comme les PIC 10 et 12, ne supportaient pas les interruptions, mais c'est chose réglé sur les modèles plus récents. Ils ont même des registres séparés pour les interruptions et les programmes normaux. De plus, ils intègrent nativement un ''watchdog timer''.
{|class="wikitable" style="text-align:center"
|+ Jeu d'instruction des dodèles PCI 16
|-
! colspan="5" | Instructions diverses
|-
| colspan="3" | 00 0000 0000 0000 || NOP || Ne fait rien
|-
| colspan="3" | 00 0000 0000 1000 || RETURN || Instruction de retour pour une fonction
|-
| colspan="3" | 00 0000 0000 1001 || NOP || Instruction de retour pour une interruption
|-
| colspan="3" | 00 0000 0110 0011 || SLEEP || Mise en veille
|-
| colspan="3" | 00 0000 0110 0100 || CLRWDT || RESET le ''watchdog timer'', intégré dans le PIC
|-
! colspan="5" | Instructions de manipulation de bit
|-
| 0100 || Position du bit dans l'opérande || Adresse mémoire || BCF || Met le bit à 1
|-
| 0101 || Position du bit dans l'opérande || Adresse mémoire || BSF || Met le bit à 0
|-
| 0110 || Position du bit dans l'opérande || Adresse mémoire || BTFSC || Teste si le bit adressé est à 1
|-
| 0111 || Position du bit dans l'opérande || Adresse mémoire || BTFSS || Teste si le bit adressé est à 0
|-
! colspan="5" | Branchements
|-
| colspan="2" | 100 || Adresse mémoire || CALL || Appel de fonction
|-
| colspan="2" | 100 || Adresse mémoire || GOTO || Branchement inconditionnel
|-
! colspan="5" | Instructions logiques/arithmétiques avec opérande lue en mémoire RAM
|-
| colspan="5" | ''Le bit '''d''' dans l'opcode indique la destination : accumulateur ou adresse mémoire''.
|-
| colspan="2" | 0000001 || Adresse mémoire || MOVWF || Store (accumulateur vers destination)
|-
| colspan="2" | 000001d || Adresse mémoire || MOVWF || Met à zéro la destination (adresse ou registre)
|-
| colspan="2" | 000001d || Adresse mémoire || SUBWF || Soustraction
|-
| colspan="2" | 000010d|| Adresse mémoire || DECF || Décrémentation
|-
| colspan="2" | 000100d|| Adresse mémoire || IORWF || OU bit à bit
|-
| colspan="2" | 000101d|| Adresse mémoire || ANDWF || ET bit à bit
|-
| colspan="2" | 000110d || Adresse mémoire || XORWF || XOR bit à bit
|-
| colspan="2" | 000111d || Adresse mémoire || ADDWF VWF || Addition
|-
| colspan="2" | 001000d || Adresse mémoire || MOVF || LOAD
|-
| colspan="2" | 001001d || Adresse mémoire || COMF || NOT bit à bit
|-
| colspan="2" | 001010d || Adresse mémoire || INCF || Incrémentation
|-
| colspan="2" | 001011d || Adresse mémoire || DECFSZ || Décrémentation, puis instruction SKIP si résultat = 0
|-
| colspan="2" | 001100d || Adresse mémoire || RRF || Rotation à droite avec retenue entrante
|-
| colspan="2" | 001101d || Adresse mémoire || RLF || Rotation à gauche avec retenue entrante
|-
| colspan="2" | 001110d || Adresse mémoire || SWAPF || Echange deux ''niblle'' dans un octet
|-
| colspan="2" | 001111d || Adresse mémoire || INCFSZ || Incrémentation, puis instruction SKIP si résultat = 0
|-
! colspan="5" | Instructions logiques/arithmétiques avec constante immédiate
|-
| colspan="2" | 1100xx || Constante immédiate (8bits) || MOVLW || Copie constante dans accumulateur
|-
| colspan="2" | 1101xx || Constante immédiate (8bits) || RETLW || MOV fusionné avec un retour de fonction
|-
| colspan="2" | 111000 || Constante immédiate (8bits) || IORLW || OU
|-
| colspan="2" | 111001 || Constante immédiate (8bits) || ANDLW || ET
|-
| colspan="2" | 111010 || Constante immédiate (8bits) || XORLW || XOR
|-
| colspan="2" | 11110x || Constante immédiate (8bits) || SUBLW || Soustraction
|-
| colspan="2" | 11111x || Constante immédiate (8bits) || ADDLW || Addition
|}
Les PIC gèrent l'adressage absolu et immédiat, mais pas plus. L'adressage absolu, celui où l'adresse est intégrée dans l'instruction, est très simple à implémenter. Les adresses prennent moins d'un octet, vu que la taille de la RAM est très petite, les adresses sont très courtes, les intégrer dans des instructions elles-mêmes courtes n'est pas un problème. L'adresse est encodée sur 5 à 7 bits, selon le modèle, ce qui permet d'adresser entre 32 et 128 octets.
Les PIC ne supportent pas l'adressage indirect, mais peuvent l'émuler grâce à un '''registre d'adresse''' dédié. Il s'agit du registre FSR, qui mémorise l'adresse à lire/écrire. Il est possible de copier un pointeur dedans, qui provient soit de l'accumulateur, soit de la mémoire SRAM. Dans les deux cas, la donnée adressée est lue ou écrite dans un registre INDR, est un registre d’interfaçage rendu adressable. Le registre FSR est directement connecté sur le bus d'adresse.
Les modèles de base se débrouillent avec un registre FSR et un registre INDR, mais les modèles plus performants ont deux ou trois copies de chaque registre. Les modèles PIC18 ajoutent aussi des instructions LOAD/STORE qui émulent les modes d'adressage à post- ou pré-incrément/décrément, et le mode d'adressage "Base + Indice + Décalage", encore une fois en utilisant les registres FSR et INDR.
Avec tout ce qu'on vient de dire, vous devriez pouvoir comprendre la microarchitecture d'un PIC, qui est résumée dans ce schéma.
[[File:DocPIC16F84 all.png|centre|vignette|upright=2.5|Microarchitecture du PIC16F84.]]
===Les microcontrôleurs Intel 8051/8031===
[[File:Pinagem8031.jpg|vignette|Broches du 8051.]]
Les microcontrôleurs Intel 8051/8031 sont des microcontrôleurs 8 bits, commercialisés par Intel. Elle contient un processeur 8/16 bits, 4 kibioctets de mémoire ROM, une RAM de 128 octets. Niveau entrées-sorties, il contient un port série, ainsi que 4 ports d'un octet chacun sur lesquels il peut lire ou écrire. Il supporte des interruptions, avec un contrôleur d'interruption intégré. Il contient aussi deux ''timers'' de 16 bits chacun, qui déclenchent des interruptions quand ils tombent à zéro ou à une valeur configurable.
Ils ont de nombreuses ressemblances avec les microcontrôleurs PIC. Le processeur du 8051 est une architecture à accumulateur de 8 bits, ses registres sont mappés en mémoire RAM, il a un registre d'adresse dédié à l'adressage indirect et j'en passe. Mais il y a aussi des différences notables. Par exemple, le 8051 n'a pas de pile d'adresse de retour, contrairement aux processeurs PIC. Il fait autrement, à savoir qu'il gère une pile d'appel placée en mémoire RAM,ce qui est très différent. De même, il utilise deux accumulateurs nommés A et B.
Une autre différence est que les registres sont placés dans un banc de registre à part des 128 octets de SRAM. Il y a une SRAM séparée du banc de registre, contrairement à ce qu'on a sur les microcontrôleurs PIC. Par contre, les registres du processeur sont mappés en mémoire RAM, y compris les deux accumulateurs, le registre d'état, le ''program counter'', et bien d'autres. Mais le fait qu'ils soient séparés de la SRAM permet de les mapper dans l'espace d'adressage sans marcher sur les pieds de la SRAM. Vu que le processeur peut adresser 256 octets, mais n'a que 128 octets de SRAM, les registres sont mappés dans les 128 octets restants. Les entrées-sorties aussi sont mappées dans ces 128 octets restants.
L'ensemble utilise une architecture Harvard, contrairement à ce que pourrait faire croire le schéma ci-dessous.
[[File:Arkitektura mikro kontrollerit Intel 8051.png|centre|vignette|upright=2.5|Microcontrôleur 8051]]
Voyons maintenant la ''memory map'' de ce microcontroleur, pour la SRAM. Un point assez original est que 16 octets de la SRAM sont adressables bit par bit, à savoir que chaque bit a sa propre adresse. En tout, cela permet d'adresser 128 bits (16 adresses * 8 bits par octet adressé). L'intervalle bit-adressable va de l'adresse 32 (inclue) à l'adresse 47 (inclue).
Les 32 premières adresses sont réservées à la mémoire SRAM, c'est 32 octets de RAM utilisable à volonté par le programmeur. Les 16 adresses suivantes sont les 16 adresses bit-adressables mentionnées dans le paragraphe précédent. Les 96 octets suivants sont de la mémoire RAM adressable, affectée par défaut à la pile d'appel mais adressable via adressage direct si besoin. Les 128 octets de poids fort sont réservés aux registres du processeur et aux entrée-sorties mappées en mémoire.
[[File:Memory map du 8051.png|centre|vignette|upright=2|Memory map du 8051]]
Les 128 octets au sommet de l'espace d'adressage sont décrits dans le schéma ci-dessous. On voit que les deux accumulateurs sont mappés dedans, de même que le registre d'état PSW, le registre de configuration des interruptions IE (''Interrupt Enable''), et quelques autres. Les ports d'entrée-sortie sont aussi mappés dedans, que ce soit les 4 ports parallèles ou le port série. Les deux ''timers'' sont aussi mappés dedans, ainsi que leurs registres de configuration.
Une partie des octets sont bit-adressables, et cette partie inclus les registres du processeur et les ports d'entrées-sorties. Pour le dire autrement, chaque bit d'un port d'entrée-sortie a sa propre adresse mémoire, qui permet de le sélectionner. Par contre, les registres pour les ''timers'' ne sont pas dedans, sauf pour le troisième ajouté dans des extensions du 8051.
[[File:MFrey SFR MCS-51.svg|centre|vignette|upright=2|Memory map des 128 octets de poids fort du 8051]]
Pour ce qui est des instructions, le 8051 supporte les opérations de multiplications et de divisions, contrairement aux microcontrôleurs PIC qui se limitaient à l'addition et la soustraction. Une autre particularité est que le processeur incorpore une '''unité de calcul de 1 bit'''. Elle permet de faire des opérations sur des bits, avec 17 instructions possibles au total. L'ALU de 1 bit est reliée à un accumulateur de 1 bit et 32 registres de 1 bit. Elle peut lire des opérandes de 1 bit en mémoire RAM ou sur les ports d'entrée-sortie, pour les portions qui sont bit-adressables.
Le processeur supporte aussi l'adressage indirect dans la SRAM, mais celui-ci fonctionne différemment comparé aux microcontrôleurs PIC. Il n'y a pas deux registres d'adresse dédiés, séparés des autres. À la place, l'adressage indirect est implémenté normalement, en utilisant les registres généraux. Par contre, il y a une contrainte : seuls les deux premiers registres R0 et R1 sont utilisables. En clair, seuls ces deux registres peuvent contenir une adresse, un pointeur. C'est là une différence liée au fait que le 8051 a un banc de registre séparé.
Le 8051 peut communiquer avec une mémoire RAM externe, en plus de la SRAM interne. Pour cela, le processeur du 8051 avait un espace d'adressage séparé pour la RAM externe, capable d'adresser 64 kibioctets. Communiquer avec cet espace d'adressage se faisait avec des instructions d'accès mémoire séparées des autres, pas les LOAD/STORE normaux. Par exemple, l'instruction MOVX lisaient une donnée dans cet espace d'adressage, et la copiait dans l'accumulateur ou la SRAM. Pour envoyer l'adresse à lire/écrire à cette RAM externe, le processeur incorporait un registre d'adresse dédié. Il s'agit du '''registre DPTR''', qui contient une adresse de 16 bits. Le processeur devait copier l'adresse à lire/écrire dedans, puis lancer l'instruction MOVX.
===Le HP Nanoprocessor : un processeur sans ALU===
Un dernier exemple est celui du processeur HP Nanoprocessor, de l'entreprise HP. Il a été commercialisé en 1974, en même temps que les premiers micro-processeurs d'Intel. Tous les processeurs de l'époque étaient des processeurs 8 bits et le HP Nanoprocessor ne faisait pas exception. Ce n'était pas un processeur hautes performances, il était destiné à des applications d'informatique industrielle ou embarquée. D'ailleurs, il utilisait des transistors de type metal-gate, peu performants, là où ses contemporains utilisait des transistors en silicium, plus performants.
Mais une caractéristique qui rend cela encore plus claire est qu'il n'y a pas d'ALU ! En effet, ce processeur est incapable de faire des additions, des soustractions ou autres opérations simples ! Il est cependant capable d'effectuer des incrémentations et décrémentations, des décalages, des opérations logiques comme des ET/OU/NON/XOR et bien d'autres. Il supporte en tout 48 instructions, avec un support limité des modes d'adressage indirects. Les instructions de branchement étaient des instructions SKIP, il n'y avait pas d'instructions de branchement généralistes.
Pour ce qui est des registres, il disposait de 16 registres de 8 bits et d'un accumulateur. Niveau mémoire, il était relié à une mémoire ROM, rien de plus. Il n'avait de RAM supplémentaire qu'on pouvait lui adjoindre, il devait se débrouiller avec seulement ses registres. Et cela ne posait pas de problèmes pour son usage. Seul le mode d'adressage indirect à registre est supporté, il n'y a pas de registres d'indices. Ce mode d'adressage permet de lire des données en mémoire ROM, la ROM pouvant contenir des tableaux de valeurs constantes.
: Il est possible de lui adjoindre de la RAM via les ports d'entrée-sortie, ainsi qu'une ALU, mais RAM et ALU sont traités comme des périphériques avec lesquels on communique, ils ne sont pas intégrés au processeur.
Niveau micro-architecture, il incorporait une unité de calcul logique et un circuit comparateur. Le comparateur était un circuit comparateur série des plus basiques, qui était utilisé pour les instructions de branchement et associées. L'unité de calcul logique gérait des incrémentations/décrémentation, des décalages, les opérations logiques et quelques autres. L'unité de calcul logique était bit-slicée, à savoir conçue en assemblant 8 ALU de 1 bit chacune, enchainées en série. Le tout était combiné à des circuits de ''carry skip''.
[[File:Unité de calcul du HP nanonprocessor.png|centre|vignette|upright=2|Unité de calcul du HP nanoprocessor]]
Son unité de décodage d'instruction était très simple, essentiellement basée sur des portes NOR, grâce à un encodage efficace des instructions machine. Le ''program counter'' fait 11 bits, ce qui permet d'adresser une ROM de 2 kibioctets. Le ''program counter'' était relié à un circuit incrémenteur qui gérait les isntructions SKIP (il pouvait incrémenter le ''program counter'' par pas de 1 ou de 2 en cas de SKIP). Le processeur contient aussi deux registres, qui servent en quelque sorte de pile d'adresse de retour. Un premier registre mémorise l'adresse de retour d'une fonction, l'autre mémorise le ''program counter'' lors d'une interruption, pour savoir où brancher à la fin de l'interruption.
[[File:HP nanoprocessor.png|centre|vignette|upright=2.5|HP nanoprocessor]]
Fait intéressant, le concepteur du processeur a gracieusement donné les masques utilisés pour graver le silicium du processeur au site [https://www.cpushack.com/ CPU Shack]. Les masques en question sont disponibles ici :
* [https://www.cpushack.com/2020/08/20/hp-nanoprocessor-mask-set/ HP NanoProcessor Mask Set]
* [https://www.cpushack.com/2020/08/09/the-forgotten-ones-hp-nanoprocessor/ The Forgotten Ones: HP Nanoprocessor]
Les masques ont été analysés par Ken Shirrif dans cet article de blog :
* [https://www.righto.com/2020/09/hp-nanoprocessor-part-ii-reverse.html HP Nanoprocessor part II: Reverse-engineering the circuits from the masks]
==Les processeurs 8/16 bits à architecture Von Neumann==
L'usage d'une architecture Harvard est une solution pour adresser plus de mémoire avec des CPU 8 bits. Mais plusieurs microprocesseurs commerciaux n'utilisaient pas cette solution. À la place, c'était des architectures Von Neumann, mais qui étaient capables de gérer des adresses de 16 bits. Les données faisaient 8 bits, les registres faisaient 8 bits, mais quelques techniques permettaient de gérer des adresses de 16 bits. Nous parlerons de '''processeurs 8/16 bits''' pour les désigner, et nous allons les étudier à part.
Un point important est que la gestion d'adresses de 16 bits permet d'adresser 64 kibioctets, qui peuvent être remplis avec de la RAM et de la ROM. On a donc le meilleur des mondes : 64 kibioctets de mémoire, mais avec des données de 8 bits et les économies de circuit qui vont avec. L'avantage est que le processeur peut maintenant gérer une vraie pile d'appel, pas seulement une pile d'adresse de retour. Il lui suffit pour cela d'intégrer un pointeur de pile codé sur 16 bits.
===Les modes d'adressage par page des CPU Motorola===
Les processeurs Motorola 8 bits étaient des processeurs 8 bits avec un bus d'adresse de 16 bits. C'était des processeurs à accumulateur incorporant deux registres d'indice, un registre d'état, un pointeur de pile, et un ''program counter''. Tous les registres sont reliés au bus d'adresse, sauf le registre d'état et l’accumulateur. Tous les registres font 8 bits, sauf le ''program counter''. La pile est câblée pour être dans un bloc de 256 octets compris entre l'adresse 1 0000 0000 et l'adresse 1 1111 1111, ce qui fait que son adressage se fait avec un seul octet.
[[File:6502-architecture.svg|centre|vignette|upright=1.5|Architecture simplifiée du 6502.</br> X et Y : registres d'indice ;</br> S : le pointeur de pile ;</br> A : accumulateur ;</br>P : registre d'état.</br>]]
Les processeurs Motorola 8 bits utilisaient une méthode simple pour adresser 64 kibioctets de RAM, avec des registres de 8 bits. Pour cela, ils utilisaient une variante de l'adressage base + décalage. Elle améliore l'adressage absolu, qui intègre l'adresse à lire/écrire dans l'instruction elle-même. L'adresse en question est de 8 bits et n'encode que les 8 bits de poids faible de l'adresse, les 8 bits de poids fort sont dans un '''registre de page''' adressé implicitement. L'adresse finale est obtenue en concaténant ce registre avec l'adresse mémoire intégrée dans l’instruction. Le résultat est que la mémoire était découpée en blocs de 256 consécutifs, chacun pouvant servir de fenêtre de 256 octets. Une page est réservée pour la pile, la seconde, comme dit plus haut.
Formellement, ce mode d'adressage a des ressemblances avec la commutation de banques, une technique qu'on verra dans les chapitres sur l'espace d'adressage et la mémoire virtuelle. Mais ce n'en est pas du tout : le registre de page est utilisé uniquement pour les accès mémoire avec le mode d'adressage base + décalage, mais pas pour les autres accès mémoire, qui gèrent des adresses complètes. Notons que l'usage d'un registre de page dédié fait que celui-ci est adressé implicitement.
Il faut noter que la technique a été utilisée sur des processeurs 16 bits, pour contourner la petite taille des instructions. Un exemple est celui du HP 2100, un processeur 16 bits. Il avait un registre de page de 5 bits et encodait 10 bits d'adresse dans ses instructions. Ses instructions d'accès mémoire disposaient d'un bit qui choisit quel mode d'adressage utiliser. S'il était à 0, l'adressage absolu était utilisé, le registre de page n'était pas utilisé. Mais s'il était à 1, le registre de page était utilisé pour calculer l'adresse.
Une évolution de l'adressage précédent est le '''mode page direct'''. Avec lui, le registre de page est étendu et contient une adresse mémoire complète. L'adresse finale n'est pas obtenue par concaténation, mais en additionnant le registre de page avec l'adresse fournie par adressage absolu + décalage. Un exemple est celui des premiers processeurs Motorola, qui géraient des adresses courtes de 8 bits. L'adresse courte de 8 bits correspondait non pas aux 256 premiers octets de la mémoire, mais à une fenêtre de 256 octets déplaçable en mémoire. La position de la fenêtre de 256 octets était spécifiée par le registre de page de 16 bits, qui précisait l'adresse du début de la fenêtre, celle de sa première donnée.
Il s'agit donc formellement d'adressage base + décalage, à un détail près : il n'y a qu'un seul registre de base. Le fait que ce registre de base soit unique fait qu'il est adressé implicitement, on n'a pas à encoder le numéro/noms de registre dans l'instruction. Le registre de base est utilisé uniquement pour l'adressage absolu, pas pour les autres accès mémoire. S'il y a des ressemblances avec la segmentation, une technique de mémoire virtuelle qu'on abordera dans quelques chapitres, ce n'en est pas vu que le registre de base est utilisé seulement pour un mode d'adressage bien précis.
===Le ''pseudo-aliasing'' des registres des processeurs Intel x86===
Voyons maintenant le cas des anciens processeurs 8 bits d'Intel à savoir l'Intel 4004, 4040, 8008 et 8080. Le Z80, un processeur inspiré des CPU Intel 8 bits, est aussi concerné. Avant de poursuivre, parlons des registres de ces processeurs. Les premiers CPU Intel incorporaient 7 registres de 8 bits nommés A, B, C, D, E, F, H, L, SP. Ils correspondent respectivement à : l'accumulateur A ; six registres nommés B, C, D, E, H et L ; le registre d'état F ; le pointeur de pile SP. Le Z80 ajoute deux registres d'indice X et Y. De plus, le Z80 dispose de registres d'interruption, qui sont en quelque sorte des copies des registres A, B, C, D, E, F, H, L. Le tout est illustré dans le tableau ci-dessous.
{|class="wikitable" style="text-align:center;"
|-
!
! Registres des CPU Intel
! Registres supplémentaires du Z80
|-
! Accumulateur
| A
| A'
|-
! Registre d'état
| F
| F'
|-
! Registres généraux
| B, C, D, E, H, L
| B', C', D', E', H', L'
|-
! Pointeur de pile
| colspan="2" | SP (sauf pour le 8008)
|-
! Registres d'indice
|
| X et Y
|}
Le 8008 incorpore une pile d'appel de 7 adresses, dans le processeur lui-même. Il en est de la même avec le 4004 et le 4040, comme on le verra dans la section sur les processeurs 4 bits. Mais le 8080 et le 8085 ont remplacé le tout par un simple pointeur de pile, afin d'avoir une véritable pile d'appel. Autant c'est impossible d'avoir une pile d'appel avec seulement 256 octets de mémoire, autant on peut se le permettre avec 65 536 adresses.
Pour gérer des adresses de 16 bits, ils auraient pu utiliser des registres d'adresse séparés, mais on préféré un système de '''pseudo-''aliasing'' de registres'''. Formellement, c'est un système qui concatène deux registres 8 bits pour obtenir une adresse de 16 bits. L’appariement a lieu lors de certaines opérations bien précises, qui n'ont de sens que pour les adresses : la lecture/écriture en mémoire, et l'incrémentation.
Il y avait cependant des contraintes quant aux paires de registres possibles, toutes les paires de registres n'étaient pas autorisées. Les CPU concernés sont donc des processeurs hybrides accumulateur-registre généraux. L'accumulateur ne peut pas être appairé, seuls les registres généraux le peuvent. Le Z80 autorise plus de paires que les CPU Intel. Voici les paires de registres qui pouvaient servir d'adresse 16 bits :
* Les CPU 8008 d'Intel autorisait une seule paire formée des registres H et L.
* Les autres processeurs, à savoir le 8080, le 8085 et le Z80, autorisaient : les paires BC, DE et HL.
Le 8008 ne gérait que des opérations sur 8 bits. Mais le 8080 et le 8085 ont ajouté des instructions 16 bits qui agissaient sur des paires de registre, que le Z80 a repris. Une paire de registres est considérée comme un registre unique de 16 bits pour certaines opérations arithmétiques, dont l'incrémentation. Voici la liste des instructions concernées :
* INC et DEC pour l'incrémentation et la décrémentation ;
* DAD : additionne le registre HL avec une autre paire (Hl inclus) ;
* LXI : copie une constante immédiate dans une paire de registres ;
* LHLD : lit 16 depuis la mémoire et l'enregistre dans une paire de registres ;
* SHLD : copie 16 bits depuis une paire de registres et l'enregistre en mémoire ;
* PUSH et POP : empile ou dépilent une paire de registre sur la pile ;
* XTHL : échange la paire HL avec les 16 bits au sommet de la pile d'appel ;
* XCHG : échange le contenu de la paire HL et DE.
Pour résumer, le processeur avait des instructions LOAD, STORE, PUSH et POP adaptées pour gérer des paires de registre. De plus, l'instruction XCHG permettait d’échanger le contenu des paires DE et HL. L'instruction a été étendue sur les processeurs 16 bits pour échanger tous les registres. Mais l'implémentation était alors différente. L'incrémentation sur une paire de 16 bit était très utile, car les adresses sont souvent incrémentées quand on parcours un tableau. Ces instructions nous donnent quelques indices sur ce qu'il y a dans le processeur.
Le système de pseudo-aliasing a un impact sur le banc de registre. Le banc de registre regroupe les registres généraux et le pointeur de pile, mais ne contient pas l'accumulateur. Les contraintes sur les paires de registres possibles ne s'expliquent que d'une seule manière : le banc de registre contient des registres de 16 bits, une paire de registres 8 bits est mémorisée dans un registre unique. Il faut donc faire une différence entre les registres architecturaux de 8 bits, et les registres réels de 16 bits.
Le banc de registre a un port de 8 bits pour les données, qui est fabriqué à partir d'un port 16 bits auquel on a rajouté un multiplexeur pour choisir soit l'octet de poids faible, soit l'octet de poids fort. Le bus de données fait 8 bits, ce qui fait que les instructions LOAD, STORE, PUSH et POP pour paires 16 bits sont réalisées en deux fois : on lit/écrit l'octet de poids faible, puis celui de poids fort. Par contre, le bus d'adresse fait bien 16 bits. Cela suggère que le banc de registre dispose d'un port de 16 bits dédié aux adresses, en plus du port de données 8 bits.
[[File:Architecture d'un CPU 8-16 bits avec un banc de registre double port.png|centre|vignette|upright=2|Architecture d'un CPU 8-16 bits avec un banc de registre double port]]
L'incrémentation d'une paire 16 bits ne coute rien à implémenter, ou presque. En effet, le processeur incorpore un incrémenteur 16 bits pour le ''program counter'', qui est relié au bus d'adresse. L'idée est de rentabiliser cet incrémenteur, en lui permettant d'incrémenter des données/adresses de 16 bits obtenues via pseudo-aliasing. De même, il peut être utilisé pour incrémenter le pointeur de pile, voire un compteur de rafraichissement mémoire (pour rappel, le rafraîchissement mémoire demande de balayer la mémoire d'adresse en adresse et été fait par le CPU à l'époque). Pour cela, il suffit de connecter le ''program counter'', le banc de registre, et l'incrémenteur, via un bus dédié.
[[File:Calcul d'adresse par ALU dédiée avec PC séparé.png|centre|vignette|upright=2|Calcul d'adresse par ALU dédiée avec PC séparé]]
Notez qu'on peut encore simplifier le tout en placant le ''program counter'' dans le banc de registre, ce qui ne gênera pas le travail de l'incrémenteur mais simplifiera le câblage au bus d'adresse. Ce n'était pas systématique, certains processeurs mettaient le ''program counter'' dans le banc de registre, d'autres non.
: Inclure le ''program counter'' dans le banc de registre permet parfois de remplir un vide. Par exemple, sur un processeur avec 12 registres, le banc de registre devrait faire idéalement 16 registres, inclure le ''program counter'' dedans fait monter le tout à 13.
[[File:Architecture d'un CPU 8-16 bits.png|centre|vignette|upright=2|Architecture d'un CPU 8-16 bits]]
Les processeurs Intel 8 bits, à savoir le 8008, le 8080 et le 8085 ; mettaient le ''program counter'' dans le banc de registre. Vous avez donc toutes les armes pour comprendre leur micro-architecture. Par exemple, voici la micro-architecture du processeur 8080. Remarquez le banc de registre, qui contient tous les registres sauf l'accumulateur et le registre. Il a deux ports : un pour les adresses et un pour les données. Notez le dé-multiplexeur sur le port de donnée. Pour le reste, il s'agit d'une architecture à accumulateur hybride des plus classiques.
[[File:Intel 8080 arch.svg|centre|vignette|upright=3|Microarchitecture de l'Intel 8080.]]
Le Z80 est un processeur inspiré du design des processeurs Intel 8 bits, mais avec pas mal d'améliorations. Un point particulier de ce processeur est son banc de registre. Il contient tous les registres du processeur, y compris l'accumulateur et le registre d'état ! Les seuls registres en-dehors du banc de registre sont le ''program counter'' et un compteur de rafraichissement mémoire IR.
Un autre point particulier est que les registres dans le banc de registres avaient une copie séparée accessible uniquement pour les interruptions, via fenêtrage de registres. Et l'accumulateur et le registre d'état étant dans le banc de registre, il y avait deux accumulateurs et deux registres d'état. Les registres A, B, C, D, E et F étaient dupliqués, par le pointeur de pile ni les registres d'indice. Les copies des registres étaient nommées A', B', C', D', E' et F'.
Le Z80 supportait des instructions d'échange de registre en plus des CPU Intel 8 bits. L'instruction EX peut échanger soit le contenu des paires D,E et H,F, soit la paire A,F avec la paire A',F'. L'instruction EXX échange les paires BC, DE, HL avec les paires BC', DE', HL'. En faisant cela, le programmeur pouvait utiliser deux fois plus de registres généraux s'il n'utilisait pas les interruptions. L'échange de paires se fait sans copies de registres, mais simplement en modifiant l'adresse envoyée sur le banc de registre. Pour cela, plusieurs bascules mémorisent des bits qui indiquent si les paires ont été échangées ou non. Il y a une bascule pour les paires DE , HL ; une autre pour les paires A,F et paire A',F', une dernière pour l'instruction EXX. En combinant ces bascules avec les noms de registres envoyés par le séquenceur, on peut échanger les paires de registres.
==Le cas particulier des processeurs 4 bits : le 4004 d'Intel==
L'Intel 4004 était le tout premier micro-processeur. Il s'agissait d'un microprocesseur de 4 bits, basé sur une architecture à accumulateur. Il disposait d'un accumulateur et de 16 registres d'indice, tous de 4 bits. Il faisait des calculs sur des données de 4 bits, appelées des nibbles. Cependant, sur ses 46 instructions machines supportées, 41 agissaient sur des opérandes de 8 bits, les 5 restantes sur des opérandes de 16 bits. Simplement, les calculs se faisaient en deux fois, en échangeant des données entre mémoire RAM et accumulateur.
Le 4004 est un circuit intégré avec peu de broches. Il dispose notamment d'un bus de données/adresse, qui est multiplexé, c’est-à-dire qu'il sert alternativement de bus de données et de bus d'adresse selon les besoins. Le bus de commande mémoire fait 5 bits, dont 4 pour les chips de RAM, un pour la ROM. Les adresses sont codées sur 12 bits, les données sur 4 et les instructions sur 8 bits. L'envoi d'une adresse sur le bus se fait en plusieurs fois, de même que la lecture d'une instruction. Il s'agit là d'une adaptation pour outrepasser les limitations d'un processeur 4 bit.
[[File:Intel 4004 processor pinout.png|centre|vignette|upright=2|Broches de l'Intel 4004. Nous verrons à quoi elles servent plus bas.]]
===L'espace d'adressage de l'Intel 4004===
Les adresses du processeur sont sur 12 bits, ce qui fait 4096 adresses différentes. Elles regroupent à la fois la ROM et la mémoire RAM, vu que l'architecture est une sorte de mélange bizarre entre une architecture Von Neumann et Harvard. Le processeur gère bien deux espaces d'adressage séparés, mais la RAM et la ROM sont reliés au même bus. La sortie CM-ROM du processeur indique si l'adresse envoyée correspond à la RAM ou la ROM. Un circuit de décodage d'adresse active ou désactive la RAM selon la valeur de ce bit, l'inverse pour la ROM, en agissant sur leurs bits Chip Select. Seule la RAM ou la ROM répondent alors à l'adresse.
Pour ce qui est de la RAM, le circuit de décodage d'adresse pouvait gérer au maximum 1024 adresses différentes, chacune contenant un nibble. Pour cela, le CPU 4004 était relié à une ou plusieurs RAM externes, des Intel 4002. Chaque Intel 4002 contenait 64 nibbles de données, plus 16 nibbles de statut qu'on ne détaillera pas ici. Les nibbles de statut étaient accessibles en utilisant des instructions d'entrée-sortie, donc pas avec des lectures/écritures mémoire. Les 64 nibbles de données sont découpés en 4 groupes de 16 nibbles. Le CPU pouvait être relié à maximum 16 Intel 4002, ce qui fait 1024 nibbles de données et 256 nibbles de statut. L'ensemble permet de remplir l'espace d'adressage de 1024 adresses.
===Le registre de page et le pseudo-aliasing des registres===
Sélectionner une adresse mémoire utilisait un mélange entre pseudo-aliasing et registre de page. Pour les données, les 1024 adresses étaient découpées en 4 pages de 256 adresses. Pour la ROM, les 4096 adresses étaient découpées en 16 pages de 256 adresses. Localiser une donnée dans une page ne requiert que 8 bits, 2/4 bits supplémentaires permettent de sélectionner la page voulue. Le registre de page était dans le processeur lui-même, et était relié aux sorties du processeur nommées CM-RAM 0, 1, 2 et 3. Les 4 sorties encodaient un nombre qui permet de sélectionner le numéro de page voulu.
Le registre de page fait 5 bits : un pour distinguer RAM et ROM, 4 bits pour sélectionner la page voulue. L'avantage est que la carte mère gère au maximum 16 chips de RAM, ce qui colle parfaitement avec les 4 utilisés pour sélectionner une page. Un chip de RAM correspond à une page, et chacun est activé ou désactivé suivant la page sélectionnée. Pour cela, il suffit d'ajouter un décodeur sur la carte mère, qui prend les 4 bits du registre de page et fournit les signaux Chip Select aux différents chips de RAM.
Reste alors à utiliser les 8 bits d'adresse à l'intérieur d'un chip de RAM. Le 4004 permettait de concaténer deux registres d'indice de 4 bits pour former une adresse de 8 bits. Les instructions d'accès mémoire pouvaient ainsi préciser une paire de registre d'indice pour préciser quelle adresse lire/écrire. Idem pour les branchements indirects : le processeur supportait une instruction de branchement indirect qui précisait l'adresse dans une paire de registres d'indice. Les registres d'indice sont donc assez mal nommés sur cette architecture, vu qu'ils peuvent servir soit de registre d'indice, soit de demi-registre d'adresse. Il s'agit là du système de pseudo-aliasing des registres, mais appliqué aux registres d'indice.
L'Intel 4004 gérait deux instructions pour gérer les adresses mémoires. La première, l'instruction DCL (''Designate Command Line'') configure le registre de page. Elle prend en entrée un numéro de page et le copie dans le registre de page. L'opérande peut provenir d'un registre d'indice ou de l'accumulateur. La seconde, l'instruction SRC (''Send Register Control'') concatène deux registres d'indice pour obtenir une adresse de 8 bits. Un accès mémoire se fait donc en maximum trois instructions : une qui configure le registre de page si ce n'est pas déjà fait, une instruction SRC pour envoyer l'adresse, et une troisième instruction qui dit s'il faut faire une lecture ou une écriture.
===La microarchitecture de l'Intel 4004===
Il incorporait une pile d'adresse de retour intégrée au processeur. La pile d'adresse acceptait exactement 3 adresses maximum. Elle était regroupée avec le ''program counter'' dans un banc de registre, de 4 registres. Le ''program counter'' et le pointeur de pile faisaient chacun 12 bits, soit trois nibble. Ils étaient incrémentés par un incrémenteur dédié.
SI on omet le registre de page et la pile d'adresse, le 4004 est une architecture à accumulateur des plus classiques, avec un bus interne unique, un banc de registre pour les registres d'indices, un accumulateur relié à une unité de calcul. Les registres d'indice étaient dans un banc de registre séparés, car ils faisaient 4 bits chacun, contrairement au pointeur de pile et le ''program counter''. Un détail important est que les bancs de registres du 4004 étaient implémentés avec de la DRAM, et non des registres usuels fabriqués avec des bascules 1 bit.
[[File:Microarchitecture de l'Intel 4004.png|centre|vignette|upright=2.5|Microarchitecture de l'Intel 4004]]
<noinclude>
{{NavChapitre | book=Fonctionnement d'un ordinateur
| prev=Les architectures à pile et mémoire-mémoire
| prevText=Les architectures à pile et mémoire-mémoire
| next=Les processeurs de traitement du signal
| nextText=Les processeurs de traitement du signal
}}
</noinclude>
8nhnys8h65ps0pjm0jrsx71ihooq8zh
765751
765740
2026-05-02T01:17:53Z
Mewtow
31375
/* Les processeurs 8/16 bits à architecture Harvard */
765751
wikitext
text/x-wiki
Nous avons déjà abordé la notion de processeur 8, 16, 32, 64 bits. Elle désigne la taille des registres généraux, ou de l'accumulateur. De nos jours, les processeurs 32 et 64 bits sont la norme, mais les premiers micro-processeurs étaient des processeurs 4 et 8, avant de passer rapidement au 16 bits. La raison est que leur budget en transistor limité faisait qu'on ne pouvait pas utiliser une ALU trop grande : une ALU 8 bit prend deux fois moins de place et de transistors qu'une ALU 16 bits. Cependant, les processeurs 8 bits avaient de sérieuses limitations qui étaient compensées par diverses solutions. Dans ce chapitre, nous allons faire une revue rapide des processeurs 8 bits et de leurs fonctionnalités.
La principale limitation des CPU 8 bits était l'adressage : des registres de 8 bits limitaient l'espace d'adressage à seulement 256 adresses, soit à peine 256 octets ! Intuitivement, on se dit que 256 octets est purement impraticable, on ne peut rien faire d'intéressant avec seulement 256 de RAM + ROM. Et c'est partiellement vrai. L'adage veut que 16 bits est la taille minimale intéressante, la limite à partir de laquelle on a assez de mémoire RAM/ROM pour coder des applications intéressantes. Mais 256 octets de RAM est largement suffisant sur de nombreux systèmes embarqués simples s'en accommodent : des caisses enregistreuses, des systèmes de régulation de feu de circulation, etc.
Pour les applications demandant plus de mémoire RAM, les CPU de l'époque contournaient la limitation de 256 octets de RAM avec de nombreux stratagèmes. Dans ce qui va suivre, nous allons séparer les CPU 8 bits selon qu'ils utilisent une architecture Harvard ou une architecture Von Neumann. La raison est qu'une architecture Harvard permet en soi de contourner partiellement ce problème d'adressage. Les choses sont plus compliquées avec une architecture Von Neumann.
==Les processeurs 8/16 bits à architecture Harvard ==
La première solution est d'utiliser une architecture Harvard. Le processeur 8 bit a alors deux espaces d'adressage : un pour la RAM, un autre pour la ROM. Et les deux utilisent des adresses de taille différente. La ROM est reliée à un bus d'adresse de 16 bits, alors que la RAM est elle connectée à un bus d'adresse de 8 bits. La RAM est donc limitée à 256 octets, alors que la ROM peut monter jusqu'à 64 kibioctets. Mine de rien, faire ainsi est largement suffisant.
Les processeurs 8 bits intègrent parfois les 256 octets de RAM directement dans le processeur. Vous noterez que 256 octets de RAM est très peu, comparable à ce qu'on trouve dans un banc de registres. Aussi, fusionner banc de registre et 256 octets de SRAM est une optimisation possible. Concrètement, cela veut dire que le processeur n'intégre pas une RAM séparée, mais a un banc de 256 registres de 8 bits. Beaucoup de processeurs en implémentent moins, avec par exemple seulement 64 octets de RAM, ou 32 octets, ou 128 octets.
L'avantage est que cela élimine le bus mémoire de la RAM, ce qui économise beaucoup de broches sur le circuit intégré du CPU. Et c'est ce qui explique que cette solution est beaucoup utilisée sur les microcontrôleurs peu puissants. Les exemples qui vont suivre devraient vous convaincre. Et pour les applications demandant plus de RAM, des optimisations permettent d'adresser plus de 256 octets de RAM. La plus connue est la commutation de banques, mais nous n'avons pas encore abordé celle-ci, et il faudra attendre le chapitre sur l'espace d'adressage pour cela.
Cependant, se limiter à 256 octets de RAM demande des compromis assez forts, pour économiser un maximum d'adresses mémoire. L'usage d'une architecture Harvard est une solution très intéressante, mais on peut aller plus loin en utilisant une architecture Harvard modifiée. Pour rappel, elles permettent de lire des constantes depuis la mémoire ROM. Les constantes manipulées par le programme sont mémorisées en ROM, lues depuis la ROM, au lieu d'être chargées en RAM. Une autre optimisation est d'utiliser un espace d'adressage séparé pour les entrées-sorties, à la place d'entrées-sorties mappées en mémoire qui détournent des adresses. Cependant, de nombreux processeurs 8 bits utilisent les entrées-sorties mappées en mémoire, comme on va le voir plus bas.
Avec ce genre de stratagèmes, 256 octets de RAM est largement suffisant sur de nombreux systèmes, à condition qu'on ait assez de ROM pour coder un programme digne de ce nom. Par exemple, de nombreux systèmes embarqués simples s'en accommodent : des caisses enregistreuses, des systèmes de régulation de feu de circulation, etc. Dans ce qui suit, nous allons voir quelques processeurs 8 bits de ce type. Deux exemples seront des microcontrôleurs très utilisés de nos jours.
===Le Fairchild F8 et la console de jeu Fairchild Channel F===
Un premier exemple est la Fairchild F8 de la défunte entreprise Fairchild Semiconductor. Il incorpore un processeur 8 bits, c’est-à-dire que le processeur fait des calculs sur des entiers de 8 bits maximum, une mémoire RAM de 64 octets, ainsi qu'une mémoire ROM de 1 kibioctet. Les 64 octets de RAM sont certes très peu, mais c'est suffisant pour certaines applications simples, comme les caisses automatiques de l'époque, ou des applications embarquées. Et de toute façon, il est possible d'ajouter de la mémoire RAM supplémentaire si les 64 octets de RAM intégrée ne suffisent pas. Le système était donc modulaire, adaptable selon les besoins, peu cher pour son implémentation minimale sans RAM en plus.
Vu qu'il s'agit d'un des tout premiers ordinateurs, il est sorti à une époque où la technologie était rudimentaire. À cette époque, le processeur était composé de pièces détachées qu'il fallait souder ensemble pour obtenir un processeur fonctionnel. Ce n'est que plus tard qu'est apparu le micro-processeur, qui regroupe un processeur complet dans un seul circuit intégré. Le résultat est que le processeur du Fairchild F8 est coupé en deux, l'unité de calcul et l'unité de contrôle sont placés dans des pièces détachées séparés.
Le microcontrôleur est composé de trois à quatre pièces détachées, certaines étant optionnelles. La première est le '''3850 CPU''', qui regroupe l'unité de calcul et la mémoire RAM intégrée. La seconde est le PSU (''3851 Program Storage Unit''), qui regroupe la mémoire ROM et l'unité de contrôle, ''program counter'' inclut. S'il y a besoin d'utiliser plus de RAM, il faut ajouter un circuit d’interface mémoire, qui est au choix le ''3852 Dynamic Memory Interface'' (DMI) ou le ''3853 Static Memory Interface'', le premier étant connecté à une mémoire de type DRAM, l'autre à une SRAM (nous verrons ce que sont les DRAM et les SRAM dans le prochain chapitre).
[[File:Fairchild F8.png|centre|vignette|upright=2|Fairchild F8]]
Le système minimal est composé d'un PSU et d'un 3850, sans les circuits d'interface mémoire. Le tout donne un système avec un processeur 8 bit, 64 octets de RAM et 1 kibioctet de ROM, les deux mémoires étant intégrées dans le "processeur". Le processeur gérait 4 entrées-sorties, chacune étant reliée avec un bus de 8 bit au processeur. Au passage, en 1977, Mostek a créé un microcontrôleur qui regroupe un PSU et un 3850 : le Mostek 3870. Le système minimal n'avait pas de bus d'adresse, vu que la RAM était intégrée au processeur. C'est les 3852 et 3853 qui ajoutaient un bus d'adresse. Ils ajoutent un bus d'adresse de 16 bits, ce qui permet d'adresser 64 kibioctets de RAM.
[[File:Fairchild-Channel-F.jpg|vignette|un Fairchild Channel F]]
Le Fairchild F8 a été utilisé dans la Fairchild Channel F, une des toute première console de seconde génération, à savoir des consoles qui utilisaient des cartouches de jeu. Avant les consoles de seconde génération, les consoles étaient non-programmables. Elles étaient conçues pour faire tourner un jeu précis, aucun autre, le jeu étant implémenté dans leurs circuits.
La Fairchild Channel F est composé du système minimal, auquel on a ajouté une carte son rudimentaire et 2 kibioctets de mémoire vidéo. La mémoire vidéo sert uniquement pour afficher des images à l'écran : on écrit l'image à afficher dedans, un circuit vidéo se charge de l'afficher à l'écran automatiquement. Le processeur ne fait qu'écrire dans cette RAM vidéo, il ne peut pas en lire le contenu. De la RAM supplémentaire peut cependant être ajoutée dans les cartouches de jeu.
===Les microcontrôleurs PIC===
Les '''microcontrôleurs PIC''' regroupent des microcontrôleurs allant de microcontrôleurs 8 bits aux performances très faibles, à des microcontrôleurs 32 bits bien plus puissants. Les microcontrôleurs PIC sont très utilisés dans l'embarqué ou d'informatique industrielle. Ils sont vendus à des volumes assez impressionnants, plusieurs millions par an. Et si vous avez ou êtes en train de faire des études d'électronique, je parie que vous les avez déjà vus en classe, ou que ce ne saurait tarder. Dans ce qui suit, nous allons nous concentrer sur les microcontrôleurs PIC 8 bits, à savoir les PIC 16, 16 et 18. Les PIC 24, qui sont des microcontrôleurs 16 bits, ne seront pas abordés.
Le processeur incorpore de nombreuses optimisations pour éviter de trop gaspiller d'adresses mémoire. Mais ces optimisations sont partiellement compensées par d'autres choix de conception que nous détaillerons plus bas. Déjà, les microcontrôleurs PIC 8 bits sont une architecture Harvard, comme dit plus haut. Ensuite, le processeur utilise un espace d'adressage séparé pour les entrés-sorties. Les ports d'entrée-sortie et les ''timers'' ne sont donc pas mappés en mémoire RAM, ce qui économise quelques adresses.
La mémoire ROM des PIC va de 1024 instructions à 4096 instructions. En comparaison, la mémoire RAM des microcontrôleurs PIC ne peut pas dépasser 256 adresses, et elle est encore plus petite en pratique sur certains modèles. Pour donner un exemple, le PIC16F84 a une RAM composée de 68 "registres" de 8 bits. Le terme "registres" devrait vous faire tiquer, mais c'est bien le terme utilisé dans la documentation des PIC. Et il faut admettre que la différence entre banc de registre et SRAM intégrée est floue, comme on va tenter de l'expliquer dans les paragraphes suivants.
: Les PIC 18 peuvent adresser plus de 256 octets de RAM en utilisant la commutation de banques, une technique qui sera abordée dans plusieurs chapitres.
[[File:DocPIC16F84 3.png|centre|vignette|upright=3|Espaces d'adressage du PIC16F84.]]
Les PIC disposent de nombreux registres de contrôle, d'un ''program counter'', d'un registre d'état, et d'un pointeur de pile. Un détail très important est que ces registres sont placés dans la mémoire SRAM ! En clair, on peut y accéder en lisant/écrivant à une adresse mémoire bien précise. Sur les modèles 16F, l'espace d'adressage fait 128 octets, dont 32 sont réservés aux registres du processeur, ce qui fait que seules 96 octets sont adressables comme de la RAM. Mais les 128 octets sont un seul et unique SRAM dans le processeur. Ce qui explique qu'il est difficile de séparer banc de registre et RAM principale sur ce processeur : les deux sont fusionnées ! Cela gaspille quelques adresses mémoire, mais permet une implémentation plus simple, avec un banc de registre unique.
Les PIC sont une architecture à accumulateur basique, ce qui permet d'utiliser un banc de registre à un seul port. Ce choix simplifie grandement la conception du processeur. Il faut préciser que l'accumulateur n'est pas mappé en mémoire. Sauf sur les modèles PIC 17, qui mappé l'accumulateur en mémoire RAM !
Leur implémentation de l'accumulateur ajoute une petite subtilité : le résultat d'une opération arithmétique peut être enregistré ailleurs que dans l'accumulateur. Le résultat peut aussi remplacer la seconde opérande, celle lue en mémoire RAM. Dit autrement, le résultat est enregistré dans l'adresse mémoire source. Les instructions de calcul ont le choix : un bit dans leur encodage précise où enregistrer le résultat.
{|
|-
|[[File:DocPIC16F84 4.png|centre|vignette|upright=2|Microarchitecture simplifiée d'un microcontroleur PIC (ici, un 16F84).]]
|[[File:DocPIC16F84 5.png|centre|vignette|upright=2|Microarchitecture simplifiée d'un microcontroleur PIC (ici, un 16F84), avec les branchements directs.]]
|}
La petite taille de la ROM d'un PIC n'est pas une surprise. Les architectures 8 bits sont conçues pour ne pas utiliser beaucoup de transistors et être très simples. Aussi, utiliser une petite ROM est nécessaire. Mais il faut aussi adapter le jeu d'instruction, pour qu'il ait une bonne densité de code. Par exemple, il faut faire en sorte d'avoir des instructions assez courtes. Si les instructions font 16 bits au lieu de 32, on divise par deux le nombre de transistors nécessaire pour la mémoire ROM. La conséquence est que le jeu d’instruction des PIC est adapté à cette contrainte.
Les microcontrôleurs PIC utilisent un jeu d'instruction propriétaire, dont les instructions sont très petites. Les premières versions du jeu d'instruction utilisaient des instructions codées sur 12 bits, dont 5 pour l'adresse mémoire de la seconde opérande. Pour les branchements, 3 bits étaient utilisés pour l'opcode, 9 pour l'adresse de destination. Par la suite, les instructions ont été étendues à 13 bits sur les PIC1670, puis à 14, 15 et 16 bits. Les adresses ont alors été élargies, ce qui permet d'adresser en peu plus de mémoire RAM.
Il est intéressant de regarder comment les PIC font pour obtenir des instructions aussi courtes. Premièrement, le fait d'utiliser une architecture à accumulateur, couplé à une RAM très petite aident grandement. Les architectures à accumulateur ont besoin de préciser un opcode et une adresse mémoire pour chaque instruction, pas besoin de préciser de noms de registres ni le mode d'adressage. La taille des adresses mémoire est censé être un problème pour la densité de code, mais les adresses d'un processeur 8 bits font 8 bits. On peut alors avoir un jeu d'instruction étoffé, en utilisant des instructions 16 bits, qui concatènent un opcode et une adresse mémoire, d'un octet chacun.
Mais d'autres optimisations permettent d'avoir une bonne densité de code. Les PIC ont des branchements pour les appels et retour de fonction. Les PIC incorporent une pile d'appel de retour, qui fait 2 à 8 adresses suivant les modèles. Elle permet d'économiser quelques registres, car la pile d'appel n'est pas mappée dans l'espace d'adressage, elle n'est pas adressable. On économise ainsi 2 à 8 registres, sur 32-256 registres. De plus, cela simplifie l'encodage des instructions d'appel/retour de fonction, qui n'ont pas à préciser où enregistre l'adresse de retour.
Les PIC n'ont pas d'instructions de branchement conditionnels, ils font avec une SKIP instruction et des branchements inconditionnels. Du moins, c'est le principe, car si vous regardez la liste des instructions ci-dessous, vous verrez qu'il n'y a pas d'instruction SKIP. À la place, les instructions SKIP sont fusionnées avec d'autres instructions. Elles sont notamment fusionnées avec les instructions d'incrémentation et de décrémentation. Les PIC supportent une incrémentation normale, une décrémentation normale, une décrémentation fusionnée avec une instruction SKIP, et une incrémentation fusionnée avec une instruction SKIP. Les deux dernières incrémentent/décrémentent l'accumulateur et SKIP l'instruction suivante si le résultat est zéro. Elles permettent de fortement simplifier l'implémentation des boucles qui s'exécutent tant que leur compteur atteint zéro.
Les PIC disposent aussi d'instructions de manipulation de bit, pour tester/masquer un bit dans une opérande, 4 en tout. Il y a en a 4 en tout : mettre à 0, mettre à 1, tester si bit = 1, tester si bit = 0. Les instructions qui testent un bit prennent leur opérande dans l'accumulateur. Elles font le test du bit et décident s'il faut skipper l'instruction suivante ou non. Il y a aussi deux instructions de rotation à gauche et droite, qui tiennent compte de la retenue mémorisée dans le registre d'état. Par contre, il n'y a pas d'instructions de décalages, qui peuvent être émulées avec une rotation suivie d'un ET bit à bit. Mentionnons aussi une instruction pour inverser deux ''nibbles'' dans un octet.
Les modèles haute performance ajoutent des instructions d'addition avec retenue entrante, idem pour la soustraction. De telles instructions sont très utiles pour faire des additions/soustractions sur des opérandes de 16 bits. Le processeur a beau être un CPU 8 bits, il peut être utilisé pour faire des calculs 16 bits, la performance est alors amoindrie, mais ce n'est pas un problème pour les applications d'un tel microcontrôleur.
Les modèles initiaux, comme les PIC 10 et 12, ne supportaient pas les interruptions, mais c'est chose réglé sur les modèles plus récents. Ils ont même des registres séparés pour les interruptions et les programmes normaux. De plus, ils intègrent nativement un ''watchdog timer''.
{|class="wikitable" style="text-align:center"
|+ Jeu d'instruction des dodèles PCI 16
|-
! colspan="5" | Instructions diverses
|-
| colspan="3" | 00 0000 0000 0000 || NOP || Ne fait rien
|-
| colspan="3" | 00 0000 0000 1000 || RETURN || Instruction de retour pour une fonction
|-
| colspan="3" | 00 0000 0000 1001 || NOP || Instruction de retour pour une interruption
|-
| colspan="3" | 00 0000 0110 0011 || SLEEP || Mise en veille
|-
| colspan="3" | 00 0000 0110 0100 || CLRWDT || RESET le ''watchdog timer'', intégré dans le PIC
|-
! colspan="5" | Instructions de manipulation de bit
|-
| 0100 || Position du bit dans l'opérande || Adresse mémoire || BCF || Met le bit à 1
|-
| 0101 || Position du bit dans l'opérande || Adresse mémoire || BSF || Met le bit à 0
|-
| 0110 || Position du bit dans l'opérande || Adresse mémoire || BTFSC || Teste si le bit adressé est à 1
|-
| 0111 || Position du bit dans l'opérande || Adresse mémoire || BTFSS || Teste si le bit adressé est à 0
|-
! colspan="5" | Branchements
|-
| colspan="2" | 100 || Adresse mémoire || CALL || Appel de fonction
|-
| colspan="2" | 100 || Adresse mémoire || GOTO || Branchement inconditionnel
|-
! colspan="5" | Instructions logiques/arithmétiques avec opérande lue en mémoire RAM
|-
| colspan="5" | ''Le bit '''d''' dans l'opcode indique la destination : accumulateur ou adresse mémoire''.
|-
| colspan="2" | 0000001 || Adresse mémoire || MOVWF || Store (accumulateur vers destination)
|-
| colspan="2" | 000001d || Adresse mémoire || MOVWF || Met à zéro la destination (adresse ou registre)
|-
| colspan="2" | 000001d || Adresse mémoire || SUBWF || Soustraction
|-
| colspan="2" | 000010d|| Adresse mémoire || DECF || Décrémentation
|-
| colspan="2" | 000100d|| Adresse mémoire || IORWF || OU bit à bit
|-
| colspan="2" | 000101d|| Adresse mémoire || ANDWF || ET bit à bit
|-
| colspan="2" | 000110d || Adresse mémoire || XORWF || XOR bit à bit
|-
| colspan="2" | 000111d || Adresse mémoire || ADDWF VWF || Addition
|-
| colspan="2" | 001000d || Adresse mémoire || MOVF || LOAD
|-
| colspan="2" | 001001d || Adresse mémoire || COMF || NOT bit à bit
|-
| colspan="2" | 001010d || Adresse mémoire || INCF || Incrémentation
|-
| colspan="2" | 001011d || Adresse mémoire || DECFSZ || Décrémentation, puis instruction SKIP si résultat = 0
|-
| colspan="2" | 001100d || Adresse mémoire || RRF || Rotation à droite avec retenue entrante
|-
| colspan="2" | 001101d || Adresse mémoire || RLF || Rotation à gauche avec retenue entrante
|-
| colspan="2" | 001110d || Adresse mémoire || SWAPF || Echange deux ''niblle'' dans un octet
|-
| colspan="2" | 001111d || Adresse mémoire || INCFSZ || Incrémentation, puis instruction SKIP si résultat = 0
|-
! colspan="5" | Instructions logiques/arithmétiques avec constante immédiate
|-
| colspan="2" | 1100xx || Constante immédiate (8bits) || MOVLW || Copie constante dans accumulateur
|-
| colspan="2" | 1101xx || Constante immédiate (8bits) || RETLW || MOV fusionné avec un retour de fonction
|-
| colspan="2" | 111000 || Constante immédiate (8bits) || IORLW || OU
|-
| colspan="2" | 111001 || Constante immédiate (8bits) || ANDLW || ET
|-
| colspan="2" | 111010 || Constante immédiate (8bits) || XORLW || XOR
|-
| colspan="2" | 11110x || Constante immédiate (8bits) || SUBLW || Soustraction
|-
| colspan="2" | 11111x || Constante immédiate (8bits) || ADDLW || Addition
|}
Les PIC gèrent l'adressage absolu et immédiat, mais pas plus. L'adressage absolu, celui où l'adresse est intégrée dans l'instruction, est très simple à implémenter. Les adresses prennent moins d'un octet, vu que la taille de la RAM est très petite, les adresses sont très courtes, les intégrer dans des instructions elles-mêmes courtes n'est pas un problème. L'adresse est encodée sur 5 à 7 bits, selon le modèle, ce qui permet d'adresser entre 32 et 128 octets.
Les PIC ne supportent pas l'adressage indirect, mais peuvent l'émuler grâce à un '''registre d'adresse''' dédié. Il s'agit du registre FSR, qui mémorise l'adresse à lire/écrire. Il est possible de copier un pointeur dedans, qui provient soit de l'accumulateur, soit de la mémoire SRAM. Dans les deux cas, la donnée adressée est lue ou écrite dans un registre INDR, est un registre d’interfaçage rendu adressable. Le registre FSR est directement connecté sur le bus d'adresse.
Les modèles de base se débrouillent avec un registre FSR et un registre INDR, mais les modèles plus performants ont deux ou trois copies de chaque registre. Les modèles PIC18 ajoutent aussi des instructions LOAD/STORE qui émulent les modes d'adressage à post- ou pré-incrément/décrément, et le mode d'adressage "Base + Indice + Décalage", encore une fois en utilisant les registres FSR et INDR.
Avec tout ce qu'on vient de dire, vous devriez pouvoir comprendre la microarchitecture d'un PIC, qui est résumée dans ce schéma.
[[File:DocPIC16F84 all.png|centre|vignette|upright=2.5|Microarchitecture du PIC16F84.]]
===Les microcontrôleurs Intel 8051/8031===
[[File:Pinagem8031.jpg|vignette|Broches du 8051.]]
Les microcontrôleurs Intel 8051/8031 sont des microcontrôleurs 8 bits, commercialisés par Intel. Elle contient un processeur 8/16 bits, 4 kibioctets de mémoire ROM, une RAM de 128 octets. Niveau entrées-sorties, il contient un port série, ainsi que 4 ports d'un octet chacun sur lesquels il peut lire ou écrire. Il supporte des interruptions, avec un contrôleur d'interruption intégré. Il contient aussi deux ''timers'' de 16 bits chacun, qui déclenchent des interruptions quand ils tombent à zéro ou à une valeur configurable.
Ils ont de nombreuses ressemblances avec les microcontrôleurs PIC. Le processeur du 8051 est une architecture à accumulateur de 8 bits, ses registres sont mappés en mémoire RAM, il a un registre d'adresse dédié à l'adressage indirect et j'en passe. Mais il y a aussi des différences notables. Par exemple, le 8051 n'a pas de pile d'adresse de retour, contrairement aux processeurs PIC. Il fait autrement, à savoir qu'il gère une pile d'appel placée en mémoire RAM,ce qui est très différent. De même, il utilise deux accumulateurs nommés A et B.
Une autre différence est que les registres sont placés dans un banc de registre à part des 128 octets de SRAM. Il y a une SRAM séparée du banc de registre, contrairement à ce qu'on a sur les microcontrôleurs PIC. Par contre, les registres du processeur sont mappés en mémoire RAM, y compris les deux accumulateurs, le registre d'état, le ''program counter'', et bien d'autres. Mais le fait qu'ils soient séparés de la SRAM permet de les mapper dans l'espace d'adressage sans marcher sur les pieds de la SRAM. Vu que le processeur peut adresser 256 octets, mais n'a que 128 octets de SRAM, les registres sont mappés dans les 128 octets restants. Les entrées-sorties aussi sont mappées dans ces 128 octets restants.
L'ensemble utilise une architecture Harvard, contrairement à ce que pourrait faire croire le schéma ci-dessous.
[[File:Arkitektura mikro kontrollerit Intel 8051.png|centre|vignette|upright=2.5|Microcontrôleur 8051]]
Voyons maintenant la ''memory map'' de ce microcontroleur, pour la SRAM. Un point assez original est que 16 octets de la SRAM sont adressables bit par bit, à savoir que chaque bit a sa propre adresse. En tout, cela permet d'adresser 128 bits (16 adresses * 8 bits par octet adressé). L'intervalle bit-adressable va de l'adresse 32 (inclue) à l'adresse 47 (inclue).
Les 32 premières adresses sont réservées à la mémoire SRAM, c'est 32 octets de RAM utilisable à volonté par le programmeur. Les 16 adresses suivantes sont les 16 adresses bit-adressables mentionnées dans le paragraphe précédent. Les 96 octets suivants sont de la mémoire RAM adressable, affectée par défaut à la pile d'appel mais adressable via adressage direct si besoin. Les 128 octets de poids fort sont réservés aux registres du processeur et aux entrée-sorties mappées en mémoire.
[[File:Memory map du 8051.png|centre|vignette|upright=2|Memory map du 8051]]
Les 128 octets au sommet de l'espace d'adressage sont décrits dans le schéma ci-dessous. On voit que les deux accumulateurs sont mappés dedans, de même que le registre d'état PSW, le registre de configuration des interruptions IE (''Interrupt Enable''), et quelques autres. Les ports d'entrée-sortie sont aussi mappés dedans, que ce soit les 4 ports parallèles ou le port série. Les deux ''timers'' sont aussi mappés dedans, ainsi que leurs registres de configuration.
Une partie des octets sont bit-adressables, et cette partie inclus les registres du processeur et les ports d'entrées-sorties. Pour le dire autrement, chaque bit d'un port d'entrée-sortie a sa propre adresse mémoire, qui permet de le sélectionner. Par contre, les registres pour les ''timers'' ne sont pas dedans, sauf pour le troisième ajouté dans des extensions du 8051.
[[File:MFrey SFR MCS-51.svg|centre|vignette|upright=2|Memory map des 128 octets de poids fort du 8051]]
Pour ce qui est des instructions, le 8051 supporte les opérations de multiplications et de divisions, contrairement aux microcontrôleurs PIC qui se limitaient à l'addition et la soustraction. Une autre particularité est que le processeur incorpore une '''unité de calcul de 1 bit'''. Elle permet de faire des opérations sur des bits, avec 17 instructions possibles au total. L'ALU de 1 bit est reliée à un accumulateur de 1 bit et 32 registres de 1 bit. Elle peut lire des opérandes de 1 bit en mémoire RAM ou sur les ports d'entrée-sortie, pour les portions qui sont bit-adressables.
Le processeur supporte aussi l'adressage indirect dans la SRAM, mais celui-ci fonctionne différemment comparé aux microcontrôleurs PIC. Il n'y a pas deux registres d'adresse dédiés, séparés des autres. À la place, l'adressage indirect est implémenté normalement, en utilisant les registres généraux. Par contre, il y a une contrainte : seuls les deux premiers registres R0 et R1 sont utilisables. En clair, seuls ces deux registres peuvent contenir une adresse, un pointeur. C'est là une différence liée au fait que le 8051 a un banc de registre séparé.
Le 8051 peut communiquer avec une mémoire RAM externe, en plus de la SRAM interne. Pour cela, le processeur du 8051 avait un espace d'adressage séparé pour la RAM externe, capable d'adresser 64 kibioctets. Communiquer avec cet espace d'adressage se faisait avec des instructions d'accès mémoire séparées des autres, pas les LOAD/STORE normaux. Par exemple, l'instruction MOVX lisaient une donnée dans cet espace d'adressage, et la copiait dans l'accumulateur ou la SRAM. Pour envoyer l'adresse à lire/écrire à cette RAM externe, le processeur incorporait un registre d'adresse dédié. Il s'agit du '''registre DPTR''', qui contient une adresse de 16 bits. Le processeur devait copier l'adresse à lire/écrire dedans, puis lancer l'instruction MOVX.
===Le HP Nanoprocessor : un processeur sans ALU===
Un dernier exemple est celui du processeur HP Nanoprocessor, de l'entreprise HP. Il a été commercialisé en 1974, en même temps que les premiers micro-processeurs d'Intel. Tous les processeurs de l'époque étaient des processeurs 8 bits et le HP Nanoprocessor ne faisait pas exception. Ce n'était pas un processeur hautes performances, il était destiné à des applications d'informatique industrielle ou embarquée. D'ailleurs, il utilisait des transistors de type metal-gate, peu performants, là où ses contemporains utilisait des transistors en silicium, plus performants.
Mais une caractéristique qui rend cela encore plus claire est qu'il n'y a pas d'ALU ! En effet, ce processeur est incapable de faire des additions, des soustractions ou autres opérations simples ! Il est cependant capable d'effectuer des incrémentations et décrémentations, des décalages, des opérations logiques comme des ET/OU/NON/XOR et bien d'autres. Il supporte en tout 48 instructions, avec un support limité des modes d'adressage indirects. Les instructions de branchement étaient des instructions SKIP, il n'y avait pas d'instructions de branchement généralistes.
Pour ce qui est des registres, il disposait de 16 registres de 8 bits et d'un accumulateur. Niveau mémoire, il était relié à une mémoire ROM, rien de plus. Il n'avait de RAM supplémentaire qu'on pouvait lui adjoindre, il devait se débrouiller avec seulement ses registres. Et cela ne posait pas de problèmes pour son usage. Seul le mode d'adressage indirect à registre est supporté, il n'y a pas de registres d'indices. Ce mode d'adressage permet de lire des données en mémoire ROM, la ROM pouvant contenir des tableaux de valeurs constantes.
: Il est possible de lui adjoindre de la RAM via les ports d'entrée-sortie, ainsi qu'une ALU, mais RAM et ALU sont traités comme des périphériques avec lesquels on communique, ils ne sont pas intégrés au processeur.
Niveau micro-architecture, il incorporait une unité de calcul logique et un circuit comparateur. Le comparateur était un circuit comparateur série des plus basiques, qui était utilisé pour les instructions de branchement et associées. L'unité de calcul logique gérait des incrémentations/décrémentation, des décalages, les opérations logiques et quelques autres. L'unité de calcul logique était bit-slicée, à savoir conçue en assemblant 8 ALU de 1 bit chacune, enchainées en série. Le tout était combiné à des circuits de ''carry skip''.
[[File:Unité de calcul du HP nanonprocessor.png|centre|vignette|upright=2|Unité de calcul du HP nanoprocessor]]
Son unité de décodage d'instruction était très simple, essentiellement basée sur des portes NOR, grâce à un encodage efficace des instructions machine. Le ''program counter'' fait 11 bits, ce qui permet d'adresser une ROM de 2 kibioctets. Le ''program counter'' était relié à un circuit incrémenteur qui gérait les isntructions SKIP (il pouvait incrémenter le ''program counter'' par pas de 1 ou de 2 en cas de SKIP). Le processeur contient aussi deux registres, qui servent en quelque sorte de pile d'adresse de retour. Un premier registre mémorise l'adresse de retour d'une fonction, l'autre mémorise le ''program counter'' lors d'une interruption, pour savoir où brancher à la fin de l'interruption.
[[File:HP nanoprocessor.png|centre|vignette|upright=2.5|HP nanoprocessor]]
Fait intéressant, le concepteur du processeur a gracieusement donné les masques utilisés pour graver le silicium du processeur au site [https://www.cpushack.com/ CPU Shack]. Les masques en question sont disponibles ici :
* [https://www.cpushack.com/2020/08/20/hp-nanoprocessor-mask-set/ HP NanoProcessor Mask Set]
* [https://www.cpushack.com/2020/08/09/the-forgotten-ones-hp-nanoprocessor/ The Forgotten Ones: HP Nanoprocessor]
Les masques ont été analysés par Ken Shirrif dans cet article de blog :
* [https://www.righto.com/2020/09/hp-nanoprocessor-part-ii-reverse.html HP Nanoprocessor part II: Reverse-engineering the circuits from the masks]
==Les processeurs 8/16 bits à architecture Von Neumann==
L'usage d'une architecture Harvard est une solution pour adresser plus de mémoire avec des CPU 8 bits. Mais plusieurs microprocesseurs commerciaux n'utilisaient pas cette solution. À la place, c'était des architectures Von Neumann, mais qui étaient capables de gérer des adresses de 16 bits. Les données faisaient 8 bits, les registres faisaient 8 bits, mais quelques techniques permettaient de gérer des adresses de 16 bits. Nous parlerons de '''processeurs 8/16 bits''' pour les désigner, et nous allons les étudier à part.
Un point important est que la gestion d'adresses de 16 bits permet d'adresser 64 kibioctets, qui peuvent être remplis avec de la RAM et de la ROM. On a donc le meilleur des mondes : 64 kibioctets de mémoire, mais avec des données de 8 bits et les économies de circuit qui vont avec. L'avantage est que le processeur peut maintenant gérer une vraie pile d'appel, pas seulement une pile d'adresse de retour. Il lui suffit pour cela d'intégrer un pointeur de pile codé sur 16 bits.
===Les modes d'adressage par page des CPU Motorola===
Les processeurs Motorola 8 bits étaient des processeurs 8 bits avec un bus d'adresse de 16 bits. C'était des processeurs à accumulateur incorporant deux registres d'indice, un registre d'état, un pointeur de pile, et un ''program counter''. Tous les registres sont reliés au bus d'adresse, sauf le registre d'état et l’accumulateur. Tous les registres font 8 bits, sauf le ''program counter''. La pile est câblée pour être dans un bloc de 256 octets compris entre l'adresse 1 0000 0000 et l'adresse 1 1111 1111, ce qui fait que son adressage se fait avec un seul octet.
[[File:6502-architecture.svg|centre|vignette|upright=1.5|Architecture simplifiée du 6502.</br> X et Y : registres d'indice ;</br> S : le pointeur de pile ;</br> A : accumulateur ;</br>P : registre d'état.</br>]]
Les processeurs Motorola 8 bits utilisaient une méthode simple pour adresser 64 kibioctets de RAM, avec des registres de 8 bits. Pour cela, ils utilisaient une variante de l'adressage base + décalage. Elle améliore l'adressage absolu, qui intègre l'adresse à lire/écrire dans l'instruction elle-même. L'adresse en question est de 8 bits et n'encode que les 8 bits de poids faible de l'adresse, les 8 bits de poids fort sont dans un '''registre de page''' adressé implicitement. L'adresse finale est obtenue en concaténant ce registre avec l'adresse mémoire intégrée dans l’instruction. Le résultat est que la mémoire était découpée en blocs de 256 consécutifs, chacun pouvant servir de fenêtre de 256 octets. Une page est réservée pour la pile, la seconde, comme dit plus haut.
Formellement, ce mode d'adressage a des ressemblances avec la commutation de banques, une technique qu'on verra dans les chapitres sur l'espace d'adressage et la mémoire virtuelle. Mais ce n'en est pas du tout : le registre de page est utilisé uniquement pour les accès mémoire avec le mode d'adressage base + décalage, mais pas pour les autres accès mémoire, qui gèrent des adresses complètes. Notons que l'usage d'un registre de page dédié fait que celui-ci est adressé implicitement.
Il faut noter que la technique a été utilisée sur des processeurs 16 bits, pour contourner la petite taille des instructions. Un exemple est celui du HP 2100, un processeur 16 bits. Il avait un registre de page de 5 bits et encodait 10 bits d'adresse dans ses instructions. Ses instructions d'accès mémoire disposaient d'un bit qui choisit quel mode d'adressage utiliser. S'il était à 0, l'adressage absolu était utilisé, le registre de page n'était pas utilisé. Mais s'il était à 1, le registre de page était utilisé pour calculer l'adresse.
Une évolution de l'adressage précédent est le '''mode page direct'''. Avec lui, le registre de page est étendu et contient une adresse mémoire complète. L'adresse finale n'est pas obtenue par concaténation, mais en additionnant le registre de page avec l'adresse fournie par adressage absolu + décalage. Un exemple est celui des premiers processeurs Motorola, qui géraient des adresses courtes de 8 bits. L'adresse courte de 8 bits correspondait non pas aux 256 premiers octets de la mémoire, mais à une fenêtre de 256 octets déplaçable en mémoire. La position de la fenêtre de 256 octets était spécifiée par le registre de page de 16 bits, qui précisait l'adresse du début de la fenêtre, celle de sa première donnée.
Il s'agit donc formellement d'adressage base + décalage, à un détail près : il n'y a qu'un seul registre de base. Le fait que ce registre de base soit unique fait qu'il est adressé implicitement, on n'a pas à encoder le numéro/noms de registre dans l'instruction. Le registre de base est utilisé uniquement pour l'adressage absolu, pas pour les autres accès mémoire. S'il y a des ressemblances avec la segmentation, une technique de mémoire virtuelle qu'on abordera dans quelques chapitres, ce n'en est pas vu que le registre de base est utilisé seulement pour un mode d'adressage bien précis.
===Le ''pseudo-aliasing'' des registres des processeurs Intel x86===
Voyons maintenant le cas des anciens processeurs 8 bits d'Intel à savoir l'Intel 4004, 4040, 8008 et 8080. Le Z80, un processeur inspiré des CPU Intel 8 bits, est aussi concerné. Avant de poursuivre, parlons des registres de ces processeurs. Les premiers CPU Intel incorporaient 7 registres de 8 bits nommés A, B, C, D, E, F, H, L, SP. Ils correspondent respectivement à : l'accumulateur A ; six registres nommés B, C, D, E, H et L ; le registre d'état F ; le pointeur de pile SP. Le Z80 ajoute deux registres d'indice X et Y. De plus, le Z80 dispose de registres d'interruption, qui sont en quelque sorte des copies des registres A, B, C, D, E, F, H, L. Le tout est illustré dans le tableau ci-dessous.
{|class="wikitable" style="text-align:center;"
|-
!
! Registres des CPU Intel
! Registres supplémentaires du Z80
|-
! Accumulateur
| A
| A'
|-
! Registre d'état
| F
| F'
|-
! Registres généraux
| B, C, D, E, H, L
| B', C', D', E', H', L'
|-
! Pointeur de pile
| colspan="2" | SP (sauf pour le 8008)
|-
! Registres d'indice
|
| X et Y
|}
Le 8008 incorpore une pile d'appel de 7 adresses, dans le processeur lui-même. Il en est de la même avec le 4004 et le 4040, comme on le verra dans la section sur les processeurs 4 bits. Mais le 8080 et le 8085 ont remplacé le tout par un simple pointeur de pile, afin d'avoir une véritable pile d'appel. Autant c'est impossible d'avoir une pile d'appel avec seulement 256 octets de mémoire, autant on peut se le permettre avec 65 536 adresses.
Pour gérer des adresses de 16 bits, ils auraient pu utiliser des registres d'adresse séparés, mais on préféré un système de '''pseudo-''aliasing'' de registres'''. Formellement, c'est un système qui concatène deux registres 8 bits pour obtenir une adresse de 16 bits. L’appariement a lieu lors de certaines opérations bien précises, qui n'ont de sens que pour les adresses : la lecture/écriture en mémoire, et l'incrémentation.
Il y avait cependant des contraintes quant aux paires de registres possibles, toutes les paires de registres n'étaient pas autorisées. Les CPU concernés sont donc des processeurs hybrides accumulateur-registre généraux. L'accumulateur ne peut pas être appairé, seuls les registres généraux le peuvent. Le Z80 autorise plus de paires que les CPU Intel. Voici les paires de registres qui pouvaient servir d'adresse 16 bits :
* Les CPU 8008 d'Intel autorisait une seule paire formée des registres H et L.
* Les autres processeurs, à savoir le 8080, le 8085 et le Z80, autorisaient : les paires BC, DE et HL.
Le 8008 ne gérait que des opérations sur 8 bits. Mais le 8080 et le 8085 ont ajouté des instructions 16 bits qui agissaient sur des paires de registre, que le Z80 a repris. Une paire de registres est considérée comme un registre unique de 16 bits pour certaines opérations arithmétiques, dont l'incrémentation. Voici la liste des instructions concernées :
* INC et DEC pour l'incrémentation et la décrémentation ;
* DAD : additionne le registre HL avec une autre paire (Hl inclus) ;
* LXI : copie une constante immédiate dans une paire de registres ;
* LHLD : lit 16 depuis la mémoire et l'enregistre dans une paire de registres ;
* SHLD : copie 16 bits depuis une paire de registres et l'enregistre en mémoire ;
* PUSH et POP : empile ou dépilent une paire de registre sur la pile ;
* XTHL : échange la paire HL avec les 16 bits au sommet de la pile d'appel ;
* XCHG : échange le contenu de la paire HL et DE.
Pour résumer, le processeur avait des instructions LOAD, STORE, PUSH et POP adaptées pour gérer des paires de registre. De plus, l'instruction XCHG permettait d’échanger le contenu des paires DE et HL. L'instruction a été étendue sur les processeurs 16 bits pour échanger tous les registres. Mais l'implémentation était alors différente. L'incrémentation sur une paire de 16 bit était très utile, car les adresses sont souvent incrémentées quand on parcours un tableau. Ces instructions nous donnent quelques indices sur ce qu'il y a dans le processeur.
Le système de pseudo-aliasing a un impact sur le banc de registre. Le banc de registre regroupe les registres généraux et le pointeur de pile, mais ne contient pas l'accumulateur. Les contraintes sur les paires de registres possibles ne s'expliquent que d'une seule manière : le banc de registre contient des registres de 16 bits, une paire de registres 8 bits est mémorisée dans un registre unique. Il faut donc faire une différence entre les registres architecturaux de 8 bits, et les registres réels de 16 bits.
Le banc de registre a un port de 8 bits pour les données, qui est fabriqué à partir d'un port 16 bits auquel on a rajouté un multiplexeur pour choisir soit l'octet de poids faible, soit l'octet de poids fort. Le bus de données fait 8 bits, ce qui fait que les instructions LOAD, STORE, PUSH et POP pour paires 16 bits sont réalisées en deux fois : on lit/écrit l'octet de poids faible, puis celui de poids fort. Par contre, le bus d'adresse fait bien 16 bits. Cela suggère que le banc de registre dispose d'un port de 16 bits dédié aux adresses, en plus du port de données 8 bits.
[[File:Architecture d'un CPU 8-16 bits avec un banc de registre double port.png|centre|vignette|upright=2|Architecture d'un CPU 8-16 bits avec un banc de registre double port]]
L'incrémentation d'une paire 16 bits ne coute rien à implémenter, ou presque. En effet, le processeur incorpore un incrémenteur 16 bits pour le ''program counter'', qui est relié au bus d'adresse. L'idée est de rentabiliser cet incrémenteur, en lui permettant d'incrémenter des données/adresses de 16 bits obtenues via pseudo-aliasing. De même, il peut être utilisé pour incrémenter le pointeur de pile, voire un compteur de rafraichissement mémoire (pour rappel, le rafraîchissement mémoire demande de balayer la mémoire d'adresse en adresse et été fait par le CPU à l'époque). Pour cela, il suffit de connecter le ''program counter'', le banc de registre, et l'incrémenteur, via un bus dédié.
[[File:Calcul d'adresse par ALU dédiée avec PC séparé.png|centre|vignette|upright=2|Calcul d'adresse par ALU dédiée avec PC séparé]]
Notez qu'on peut encore simplifier le tout en placant le ''program counter'' dans le banc de registre, ce qui ne gênera pas le travail de l'incrémenteur mais simplifiera le câblage au bus d'adresse. Ce n'était pas systématique, certains processeurs mettaient le ''program counter'' dans le banc de registre, d'autres non.
: Inclure le ''program counter'' dans le banc de registre permet parfois de remplir un vide. Par exemple, sur un processeur avec 12 registres, le banc de registre devrait faire idéalement 16 registres, inclure le ''program counter'' dedans fait monter le tout à 13.
[[File:Architecture d'un CPU 8-16 bits.png|centre|vignette|upright=2|Architecture d'un CPU 8-16 bits]]
Les processeurs Intel 8 bits, à savoir le 8008, le 8080 et le 8085 ; mettaient le ''program counter'' dans le banc de registre. Vous avez donc toutes les armes pour comprendre leur micro-architecture. Par exemple, voici la micro-architecture du processeur 8080. Remarquez le banc de registre, qui contient tous les registres sauf l'accumulateur et le registre. Il a deux ports : un pour les adresses et un pour les données. Notez le dé-multiplexeur sur le port de donnée. Pour le reste, il s'agit d'une architecture à accumulateur hybride des plus classiques.
[[File:Intel 8080 arch.svg|centre|vignette|upright=3|Microarchitecture de l'Intel 8080.]]
Le Z80 est un processeur inspiré du design des processeurs Intel 8 bits, mais avec pas mal d'améliorations. Un point particulier de ce processeur est son banc de registre. Il contient tous les registres du processeur, y compris l'accumulateur et le registre d'état ! Les seuls registres en-dehors du banc de registre sont le ''program counter'' et un compteur de rafraichissement mémoire IR.
Un autre point particulier est que les registres dans le banc de registres avaient une copie séparée accessible uniquement pour les interruptions, via fenêtrage de registres. Et l'accumulateur et le registre d'état étant dans le banc de registre, il y avait deux accumulateurs et deux registres d'état. Les registres A, B, C, D, E et F étaient dupliqués, par le pointeur de pile ni les registres d'indice. Les copies des registres étaient nommées A', B', C', D', E' et F'.
Le Z80 supportait des instructions d'échange de registre en plus des CPU Intel 8 bits. L'instruction EX peut échanger soit le contenu des paires D,E et H,F, soit la paire A,F avec la paire A',F'. L'instruction EXX échange les paires BC, DE, HL avec les paires BC', DE', HL'. En faisant cela, le programmeur pouvait utiliser deux fois plus de registres généraux s'il n'utilisait pas les interruptions. L'échange de paires se fait sans copies de registres, mais simplement en modifiant l'adresse envoyée sur le banc de registre. Pour cela, plusieurs bascules mémorisent des bits qui indiquent si les paires ont été échangées ou non. Il y a une bascule pour les paires DE , HL ; une autre pour les paires A,F et paire A',F', une dernière pour l'instruction EXX. En combinant ces bascules avec les noms de registres envoyés par le séquenceur, on peut échanger les paires de registres.
==Le cas particulier des processeurs 4 bits : le 4004 d'Intel==
L'Intel 4004 était le tout premier micro-processeur. Il s'agissait d'un microprocesseur de 4 bits, basé sur une architecture à accumulateur. Il disposait d'un accumulateur et de 16 registres d'indice, tous de 4 bits. Il faisait des calculs sur des données de 4 bits, appelées des nibbles. Cependant, sur ses 46 instructions machines supportées, 41 agissaient sur des opérandes de 8 bits, les 5 restantes sur des opérandes de 16 bits. Simplement, les calculs se faisaient en deux fois, en échangeant des données entre mémoire RAM et accumulateur.
Le 4004 est un circuit intégré avec peu de broches. Il dispose notamment d'un bus de données/adresse, qui est multiplexé, c’est-à-dire qu'il sert alternativement de bus de données et de bus d'adresse selon les besoins. Le bus de commande mémoire fait 5 bits, dont 4 pour les chips de RAM, un pour la ROM. Les adresses sont codées sur 12 bits, les données sur 4 et les instructions sur 8 bits. L'envoi d'une adresse sur le bus se fait en plusieurs fois, de même que la lecture d'une instruction. Il s'agit là d'une adaptation pour outrepasser les limitations d'un processeur 4 bit.
[[File:Intel 4004 processor pinout.png|centre|vignette|upright=2|Broches de l'Intel 4004. Nous verrons à quoi elles servent plus bas.]]
===L'espace d'adressage de l'Intel 4004===
Les adresses du processeur sont sur 12 bits, ce qui fait 4096 adresses différentes. Elles regroupent à la fois la ROM et la mémoire RAM, vu que l'architecture est une sorte de mélange bizarre entre une architecture Von Neumann et Harvard. Le processeur gère bien deux espaces d'adressage séparés, mais la RAM et la ROM sont reliés au même bus. La sortie CM-ROM du processeur indique si l'adresse envoyée correspond à la RAM ou la ROM. Un circuit de décodage d'adresse active ou désactive la RAM selon la valeur de ce bit, l'inverse pour la ROM, en agissant sur leurs bits Chip Select. Seule la RAM ou la ROM répondent alors à l'adresse.
Pour ce qui est de la RAM, le circuit de décodage d'adresse pouvait gérer au maximum 1024 adresses différentes, chacune contenant un nibble. Pour cela, le CPU 4004 était relié à une ou plusieurs RAM externes, des Intel 4002. Chaque Intel 4002 contenait 64 nibbles de données, plus 16 nibbles de statut qu'on ne détaillera pas ici. Les nibbles de statut étaient accessibles en utilisant des instructions d'entrée-sortie, donc pas avec des lectures/écritures mémoire. Les 64 nibbles de données sont découpés en 4 groupes de 16 nibbles. Le CPU pouvait être relié à maximum 16 Intel 4002, ce qui fait 1024 nibbles de données et 256 nibbles de statut. L'ensemble permet de remplir l'espace d'adressage de 1024 adresses.
===Le registre de page et le pseudo-aliasing des registres===
Sélectionner une adresse mémoire utilisait un mélange entre pseudo-aliasing et registre de page. Pour les données, les 1024 adresses étaient découpées en 4 pages de 256 adresses. Pour la ROM, les 4096 adresses étaient découpées en 16 pages de 256 adresses. Localiser une donnée dans une page ne requiert que 8 bits, 2/4 bits supplémentaires permettent de sélectionner la page voulue. Le registre de page était dans le processeur lui-même, et était relié aux sorties du processeur nommées CM-RAM 0, 1, 2 et 3. Les 4 sorties encodaient un nombre qui permet de sélectionner le numéro de page voulu.
Le registre de page fait 5 bits : un pour distinguer RAM et ROM, 4 bits pour sélectionner la page voulue. L'avantage est que la carte mère gère au maximum 16 chips de RAM, ce qui colle parfaitement avec les 4 utilisés pour sélectionner une page. Un chip de RAM correspond à une page, et chacun est activé ou désactivé suivant la page sélectionnée. Pour cela, il suffit d'ajouter un décodeur sur la carte mère, qui prend les 4 bits du registre de page et fournit les signaux Chip Select aux différents chips de RAM.
Reste alors à utiliser les 8 bits d'adresse à l'intérieur d'un chip de RAM. Le 4004 permettait de concaténer deux registres d'indice de 4 bits pour former une adresse de 8 bits. Les instructions d'accès mémoire pouvaient ainsi préciser une paire de registre d'indice pour préciser quelle adresse lire/écrire. Idem pour les branchements indirects : le processeur supportait une instruction de branchement indirect qui précisait l'adresse dans une paire de registres d'indice. Les registres d'indice sont donc assez mal nommés sur cette architecture, vu qu'ils peuvent servir soit de registre d'indice, soit de demi-registre d'adresse. Il s'agit là du système de pseudo-aliasing des registres, mais appliqué aux registres d'indice.
L'Intel 4004 gérait deux instructions pour gérer les adresses mémoires. La première, l'instruction DCL (''Designate Command Line'') configure le registre de page. Elle prend en entrée un numéro de page et le copie dans le registre de page. L'opérande peut provenir d'un registre d'indice ou de l'accumulateur. La seconde, l'instruction SRC (''Send Register Control'') concatène deux registres d'indice pour obtenir une adresse de 8 bits. Un accès mémoire se fait donc en maximum trois instructions : une qui configure le registre de page si ce n'est pas déjà fait, une instruction SRC pour envoyer l'adresse, et une troisième instruction qui dit s'il faut faire une lecture ou une écriture.
===La microarchitecture de l'Intel 4004===
Il incorporait une pile d'adresse de retour intégrée au processeur. La pile d'adresse acceptait exactement 3 adresses maximum. Elle était regroupée avec le ''program counter'' dans un banc de registre, de 4 registres. Le ''program counter'' et le pointeur de pile faisaient chacun 12 bits, soit trois nibble. Ils étaient incrémentés par un incrémenteur dédié.
SI on omet le registre de page et la pile d'adresse, le 4004 est une architecture à accumulateur des plus classiques, avec un bus interne unique, un banc de registre pour les registres d'indices, un accumulateur relié à une unité de calcul. Les registres d'indice étaient dans un banc de registre séparés, car ils faisaient 4 bits chacun, contrairement au pointeur de pile et le ''program counter''. Un détail important est que les bancs de registres du 4004 étaient implémentés avec de la DRAM, et non des registres usuels fabriqués avec des bascules 1 bit.
[[File:Microarchitecture de l'Intel 4004.png|centre|vignette|upright=2.5|Microarchitecture de l'Intel 4004]]
<noinclude>
{{NavChapitre | book=Fonctionnement d'un ordinateur
| prev=Les architectures à pile et mémoire-mémoire
| prevText=Les architectures à pile et mémoire-mémoire
| next=Les processeurs de traitement du signal
| nextText=Les processeurs de traitement du signal
}}
</noinclude>
bpbjck6i9ut5c2eg2q3l1rrphki0848
765752
765751
2026-05-02T01:26:53Z
Mewtow
31375
/* Les microcontrôleurs PIC */
765752
wikitext
text/x-wiki
Nous avons déjà abordé la notion de processeur 8, 16, 32, 64 bits. Elle désigne la taille des registres généraux, ou de l'accumulateur. De nos jours, les processeurs 32 et 64 bits sont la norme, mais les premiers micro-processeurs étaient des processeurs 4 et 8, avant de passer rapidement au 16 bits. La raison est que leur budget en transistor limité faisait qu'on ne pouvait pas utiliser une ALU trop grande : une ALU 8 bit prend deux fois moins de place et de transistors qu'une ALU 16 bits. Cependant, les processeurs 8 bits avaient de sérieuses limitations qui étaient compensées par diverses solutions. Dans ce chapitre, nous allons faire une revue rapide des processeurs 8 bits et de leurs fonctionnalités.
La principale limitation des CPU 8 bits était l'adressage : des registres de 8 bits limitaient l'espace d'adressage à seulement 256 adresses, soit à peine 256 octets ! Intuitivement, on se dit que 256 octets est purement impraticable, on ne peut rien faire d'intéressant avec seulement 256 de RAM + ROM. Et c'est partiellement vrai. L'adage veut que 16 bits est la taille minimale intéressante, la limite à partir de laquelle on a assez de mémoire RAM/ROM pour coder des applications intéressantes. Mais 256 octets de RAM est largement suffisant sur de nombreux systèmes embarqués simples s'en accommodent : des caisses enregistreuses, des systèmes de régulation de feu de circulation, etc.
Pour les applications demandant plus de mémoire RAM, les CPU de l'époque contournaient la limitation de 256 octets de RAM avec de nombreux stratagèmes. Dans ce qui va suivre, nous allons séparer les CPU 8 bits selon qu'ils utilisent une architecture Harvard ou une architecture Von Neumann. La raison est qu'une architecture Harvard permet en soi de contourner partiellement ce problème d'adressage. Les choses sont plus compliquées avec une architecture Von Neumann.
==Les processeurs 8/16 bits à architecture Harvard ==
La première solution est d'utiliser une architecture Harvard. Le processeur 8 bit a alors deux espaces d'adressage : un pour la RAM, un autre pour la ROM. Et les deux utilisent des adresses de taille différente. La ROM est reliée à un bus d'adresse de 16 bits, alors que la RAM est elle connectée à un bus d'adresse de 8 bits. La RAM est donc limitée à 256 octets, alors que la ROM peut monter jusqu'à 64 kibioctets. Mine de rien, faire ainsi est largement suffisant.
Les processeurs 8 bits intègrent parfois les 256 octets de RAM directement dans le processeur. Vous noterez que 256 octets de RAM est très peu, comparable à ce qu'on trouve dans un banc de registres. Aussi, fusionner banc de registre et 256 octets de SRAM est une optimisation possible. Concrètement, cela veut dire que le processeur n'intégre pas une RAM séparée, mais a un banc de 256 registres de 8 bits. Beaucoup de processeurs en implémentent moins, avec par exemple seulement 64 octets de RAM, ou 32 octets, ou 128 octets.
L'avantage est que cela élimine le bus mémoire de la RAM, ce qui économise beaucoup de broches sur le circuit intégré du CPU. Et c'est ce qui explique que cette solution est beaucoup utilisée sur les microcontrôleurs peu puissants. Les exemples qui vont suivre devraient vous convaincre. Et pour les applications demandant plus de RAM, des optimisations permettent d'adresser plus de 256 octets de RAM. La plus connue est la commutation de banques, mais nous n'avons pas encore abordé celle-ci, et il faudra attendre le chapitre sur l'espace d'adressage pour cela.
Cependant, se limiter à 256 octets de RAM demande des compromis assez forts, pour économiser un maximum d'adresses mémoire. L'usage d'une architecture Harvard est une solution très intéressante, mais on peut aller plus loin en utilisant une architecture Harvard modifiée. Pour rappel, elles permettent de lire des constantes depuis la mémoire ROM. Les constantes manipulées par le programme sont mémorisées en ROM, lues depuis la ROM, au lieu d'être chargées en RAM. Une autre optimisation est d'utiliser un espace d'adressage séparé pour les entrées-sorties, à la place d'entrées-sorties mappées en mémoire qui détournent des adresses. Cependant, de nombreux processeurs 8 bits utilisent les entrées-sorties mappées en mémoire, comme on va le voir plus bas.
Avec ce genre de stratagèmes, 256 octets de RAM est largement suffisant sur de nombreux systèmes, à condition qu'on ait assez de ROM pour coder un programme digne de ce nom. Par exemple, de nombreux systèmes embarqués simples s'en accommodent : des caisses enregistreuses, des systèmes de régulation de feu de circulation, etc. Dans ce qui suit, nous allons voir quelques processeurs 8 bits de ce type. Deux exemples seront des microcontrôleurs très utilisés de nos jours.
===Le Fairchild F8 et la console de jeu Fairchild Channel F===
Un premier exemple est la Fairchild F8 de la défunte entreprise Fairchild Semiconductor. Il incorpore un processeur 8 bits, c’est-à-dire que le processeur fait des calculs sur des entiers de 8 bits maximum, une mémoire RAM de 64 octets, ainsi qu'une mémoire ROM de 1 kibioctet. Les 64 octets de RAM sont certes très peu, mais c'est suffisant pour certaines applications simples, comme les caisses automatiques de l'époque, ou des applications embarquées. Et de toute façon, il est possible d'ajouter de la mémoire RAM supplémentaire si les 64 octets de RAM intégrée ne suffisent pas. Le système était donc modulaire, adaptable selon les besoins, peu cher pour son implémentation minimale sans RAM en plus.
Vu qu'il s'agit d'un des tout premiers ordinateurs, il est sorti à une époque où la technologie était rudimentaire. À cette époque, le processeur était composé de pièces détachées qu'il fallait souder ensemble pour obtenir un processeur fonctionnel. Ce n'est que plus tard qu'est apparu le micro-processeur, qui regroupe un processeur complet dans un seul circuit intégré. Le résultat est que le processeur du Fairchild F8 est coupé en deux, l'unité de calcul et l'unité de contrôle sont placés dans des pièces détachées séparés.
Le microcontrôleur est composé de trois à quatre pièces détachées, certaines étant optionnelles. La première est le '''3850 CPU''', qui regroupe l'unité de calcul et la mémoire RAM intégrée. La seconde est le PSU (''3851 Program Storage Unit''), qui regroupe la mémoire ROM et l'unité de contrôle, ''program counter'' inclut. S'il y a besoin d'utiliser plus de RAM, il faut ajouter un circuit d’interface mémoire, qui est au choix le ''3852 Dynamic Memory Interface'' (DMI) ou le ''3853 Static Memory Interface'', le premier étant connecté à une mémoire de type DRAM, l'autre à une SRAM (nous verrons ce que sont les DRAM et les SRAM dans le prochain chapitre).
[[File:Fairchild F8.png|centre|vignette|upright=2|Fairchild F8]]
Le système minimal est composé d'un PSU et d'un 3850, sans les circuits d'interface mémoire. Le tout donne un système avec un processeur 8 bit, 64 octets de RAM et 1 kibioctet de ROM, les deux mémoires étant intégrées dans le "processeur". Le processeur gérait 4 entrées-sorties, chacune étant reliée avec un bus de 8 bit au processeur. Au passage, en 1977, Mostek a créé un microcontrôleur qui regroupe un PSU et un 3850 : le Mostek 3870. Le système minimal n'avait pas de bus d'adresse, vu que la RAM était intégrée au processeur. C'est les 3852 et 3853 qui ajoutaient un bus d'adresse. Ils ajoutent un bus d'adresse de 16 bits, ce qui permet d'adresser 64 kibioctets de RAM.
[[File:Fairchild-Channel-F.jpg|vignette|un Fairchild Channel F]]
Le Fairchild F8 a été utilisé dans la Fairchild Channel F, une des toute première console de seconde génération, à savoir des consoles qui utilisaient des cartouches de jeu. Avant les consoles de seconde génération, les consoles étaient non-programmables. Elles étaient conçues pour faire tourner un jeu précis, aucun autre, le jeu étant implémenté dans leurs circuits.
La Fairchild Channel F est composé du système minimal, auquel on a ajouté une carte son rudimentaire et 2 kibioctets de mémoire vidéo. La mémoire vidéo sert uniquement pour afficher des images à l'écran : on écrit l'image à afficher dedans, un circuit vidéo se charge de l'afficher à l'écran automatiquement. Le processeur ne fait qu'écrire dans cette RAM vidéo, il ne peut pas en lire le contenu. De la RAM supplémentaire peut cependant être ajoutée dans les cartouches de jeu.
===Les microcontrôleurs PIC===
Les '''microcontrôleurs PIC''' regroupent des microcontrôleurs allant de microcontrôleurs 8 bits aux performances très faibles, à des microcontrôleurs 32 bits bien plus puissants. Les microcontrôleurs PIC sont très utilisés dans l'embarqué ou d'informatique industrielle. Ils sont vendus à des volumes assez impressionnants, plusieurs millions par an. Et si vous avez ou êtes en train de faire des études d'électronique, je parie que vous les avez déjà vus en classe, ou que ce ne saurait tarder. Dans ce qui suit, nous allons nous concentrer sur les microcontrôleurs PIC 8 bits, à savoir les PIC 16, 16 et 18. Les PIC 24, qui sont des microcontrôleurs 16 bits, ne seront pas abordés.
La mémoire ROM des PIC va de 1024 instructions à 4096 instructions. En comparaison, la mémoire RAM des microcontrôleurs PIC ne peut pas dépasser 256 adresses, et elle est encore plus petite en pratique sur certains modèles. Pour donner un exemple, le PIC16F84 a une RAM composée de 68 "registres" de 8 bits. Le terme "registres" devrait vous faire comprendre que les 256 octets de RAM sont en réalité un banc de registre de 256 registres d'un octet chacun. Vu que la RAM et le banc de registre sont fusionnés, il n'y a pas de différences entre nom/numéro de registre et adresse mémoire. Les registres sont donc adressables, on y accède en lisant/écrivant à une adresse mémoire bien précise.
Ce banc de registre contient des registres généraux, mais aussi des registres pour communiquer avec les ports d'entrée-sortie, des registres de contrôle, le ''program counter'', le registre d'état, et le pointeur de pile. Pour donner un exemple, sur les modèles 16F, l'espace d'adressage fait 128 octets, dont 32 sont réservés aux registres du processeur, ce qui fait que seuls 96 octets sont adressables comme de la RAM. Cela gaspille quelques adresses mémoire, mais permet une implémentation plus simple, avec un banc de registre unique.
: Les PIC 18 peuvent adresser plus de 256 octets de RAM en utilisant la commutation de banques, une technique qui sera abordée dans plusieurs chapitres.
[[File:DocPIC16F84 3.png|centre|vignette|upright=3|Espaces d'adressage du PIC16F84.]]
Les PIC sont une architecture à accumulateur basique, ce qui permet d'utiliser un banc de registre à un seul port. Ce choix simplifie grandement la conception du processeur. Il faut préciser que l'accumulateur n'est pas mappé en mémoire. Sauf sur les modèles PIC 17, qui mappé l'accumulateur en mémoire RAM !
Leur implémentation de l'accumulateur ajoute une petite subtilité : le résultat d'une opération arithmétique peut être enregistré ailleurs que dans l'accumulateur. Le résultat peut aussi remplacer la seconde opérande, celle lue en mémoire RAM. Dit autrement, le résultat est enregistré dans l'adresse mémoire source. Les instructions de calcul ont le choix : un bit dans leur encodage précise où enregistrer le résultat.
{|
|-
|[[File:DocPIC16F84 4.png|centre|vignette|upright=2|Microarchitecture simplifiée d'un microcontroleur PIC (ici, un 16F84).]]
|[[File:DocPIC16F84 5.png|centre|vignette|upright=2|Microarchitecture simplifiée d'un microcontroleur PIC (ici, un 16F84), avec les branchements directs.]]
|}
La petite taille de la ROM d'un PIC n'est pas une surprise. Les architectures 8 bits sont conçues pour ne pas utiliser beaucoup de transistors et être très simples. Aussi, utiliser une petite ROM est nécessaire. Mais il faut aussi adapter le jeu d'instruction, pour qu'il ait une bonne densité de code. Par exemple, il faut faire en sorte d'avoir des instructions assez courtes. Si les instructions font 16 bits au lieu de 32, on divise par deux le nombre de transistors nécessaire pour la mémoire ROM. La conséquence est que le jeu d’instruction des PIC est adapté à cette contrainte.
Les microcontrôleurs PIC utilisent un jeu d'instruction propriétaire, dont les instructions sont très petites. Les premières versions du jeu d'instruction utilisaient des instructions codées sur 12 bits, dont 5 pour l'adresse mémoire de la seconde opérande. Pour les branchements, 3 bits étaient utilisés pour l'opcode, 9 pour l'adresse de destination. Par la suite, les instructions ont été étendues à 13 bits sur les PIC1670, puis à 14, 15 et 16 bits. Les adresses ont alors été élargies, ce qui permet d'adresser en peu plus de mémoire RAM.
Il est intéressant de regarder comment les PIC font pour obtenir des instructions aussi courtes. Premièrement, le fait d'utiliser une architecture à accumulateur, couplé à une RAM très petite aident grandement. Les architectures à accumulateur ont besoin de préciser un opcode et une adresse mémoire pour chaque instruction, pas besoin de préciser de noms de registres ni le mode d'adressage. La taille des adresses mémoire est censé être un problème pour la densité de code, mais les adresses d'un processeur 8 bits font 8 bits. On peut alors avoir un jeu d'instruction étoffé, en utilisant des instructions 16 bits, qui concatènent un opcode et une adresse mémoire, d'un octet chacun.
Mais d'autres optimisations permettent d'avoir une bonne densité de code. Les PIC ont des branchements pour les appels et retour de fonction. Les PIC incorporent une pile d'appel de retour, qui fait 2 à 8 adresses suivant les modèles. Elle permet d'économiser quelques registres, car la pile d'appel n'est pas mappée dans l'espace d'adressage, elle n'est pas adressable. On économise ainsi 2 à 8 registres, sur 32-256 registres. De plus, cela simplifie l'encodage des instructions d'appel/retour de fonction, qui n'ont pas à préciser où enregistre l'adresse de retour.
Les PIC n'ont pas d'instructions de branchement conditionnels, ils font avec une SKIP instruction et des branchements inconditionnels. Du moins, c'est le principe, car si vous regardez la liste des instructions ci-dessous, vous verrez qu'il n'y a pas d'instruction SKIP. À la place, les instructions SKIP sont fusionnées avec d'autres instructions. Elles sont notamment fusionnées avec les instructions d'incrémentation et de décrémentation. Les PIC supportent une incrémentation normale, une décrémentation normale, une décrémentation fusionnée avec une instruction SKIP, et une incrémentation fusionnée avec une instruction SKIP. Les deux dernières incrémentent/décrémentent l'accumulateur et SKIP l'instruction suivante si le résultat est zéro. Elles permettent de fortement simplifier l'implémentation des boucles qui s'exécutent tant que leur compteur atteint zéro.
Les PIC disposent aussi d'instructions de manipulation de bit, pour tester/masquer un bit dans une opérande, 4 en tout. Il y a en a 4 en tout : mettre à 0, mettre à 1, tester si bit = 1, tester si bit = 0. Les instructions qui testent un bit prennent leur opérande dans l'accumulateur. Elles font le test du bit et décident s'il faut skipper l'instruction suivante ou non. Il y a aussi deux instructions de rotation à gauche et droite, qui tiennent compte de la retenue mémorisée dans le registre d'état. Par contre, il n'y a pas d'instructions de décalages, qui peuvent être émulées avec une rotation suivie d'un ET bit à bit. Mentionnons aussi une instruction pour inverser deux ''nibbles'' dans un octet.
Les modèles haute performance ajoutent des instructions d'addition avec retenue entrante, idem pour la soustraction. De telles instructions sont très utiles pour faire des additions/soustractions sur des opérandes de 16 bits. Le processeur a beau être un CPU 8 bits, il peut être utilisé pour faire des calculs 16 bits, la performance est alors amoindrie, mais ce n'est pas un problème pour les applications d'un tel microcontrôleur.
Les modèles initiaux, comme les PIC 10 et 12, ne supportaient pas les interruptions, mais c'est chose réglé sur les modèles plus récents. Ils ont même des registres séparés pour les interruptions et les programmes normaux. De plus, ils intègrent nativement un ''watchdog timer''.
{|class="wikitable" style="text-align:center"
|+ Jeu d'instruction des dodèles PCI 16
|-
! colspan="5" | Instructions diverses
|-
| colspan="3" | 00 0000 0000 0000 || NOP || Ne fait rien
|-
| colspan="3" | 00 0000 0000 1000 || RETURN || Instruction de retour pour une fonction
|-
| colspan="3" | 00 0000 0000 1001 || NOP || Instruction de retour pour une interruption
|-
| colspan="3" | 00 0000 0110 0011 || SLEEP || Mise en veille
|-
| colspan="3" | 00 0000 0110 0100 || CLRWDT || RESET le ''watchdog timer'', intégré dans le PIC
|-
! colspan="5" | Instructions de manipulation de bit
|-
| 0100 || Position du bit dans l'opérande || Adresse mémoire || BCF || Met le bit à 1
|-
| 0101 || Position du bit dans l'opérande || Adresse mémoire || BSF || Met le bit à 0
|-
| 0110 || Position du bit dans l'opérande || Adresse mémoire || BTFSC || Teste si le bit adressé est à 1
|-
| 0111 || Position du bit dans l'opérande || Adresse mémoire || BTFSS || Teste si le bit adressé est à 0
|-
! colspan="5" | Branchements
|-
| colspan="2" | 100 || Adresse mémoire || CALL || Appel de fonction
|-
| colspan="2" | 100 || Adresse mémoire || GOTO || Branchement inconditionnel
|-
! colspan="5" | Instructions logiques/arithmétiques avec opérande lue en mémoire RAM
|-
| colspan="5" | ''Le bit '''d''' dans l'opcode indique la destination : accumulateur ou adresse mémoire''.
|-
| colspan="2" | 0000001 || Adresse mémoire || MOVWF || Store (accumulateur vers destination)
|-
| colspan="2" | 000001d || Adresse mémoire || MOVWF || Met à zéro la destination (adresse ou registre)
|-
| colspan="2" | 000001d || Adresse mémoire || SUBWF || Soustraction
|-
| colspan="2" | 000010d|| Adresse mémoire || DECF || Décrémentation
|-
| colspan="2" | 000100d|| Adresse mémoire || IORWF || OU bit à bit
|-
| colspan="2" | 000101d|| Adresse mémoire || ANDWF || ET bit à bit
|-
| colspan="2" | 000110d || Adresse mémoire || XORWF || XOR bit à bit
|-
| colspan="2" | 000111d || Adresse mémoire || ADDWF VWF || Addition
|-
| colspan="2" | 001000d || Adresse mémoire || MOVF || LOAD
|-
| colspan="2" | 001001d || Adresse mémoire || COMF || NOT bit à bit
|-
| colspan="2" | 001010d || Adresse mémoire || INCF || Incrémentation
|-
| colspan="2" | 001011d || Adresse mémoire || DECFSZ || Décrémentation, puis instruction SKIP si résultat = 0
|-
| colspan="2" | 001100d || Adresse mémoire || RRF || Rotation à droite avec retenue entrante
|-
| colspan="2" | 001101d || Adresse mémoire || RLF || Rotation à gauche avec retenue entrante
|-
| colspan="2" | 001110d || Adresse mémoire || SWAPF || Echange deux ''niblle'' dans un octet
|-
| colspan="2" | 001111d || Adresse mémoire || INCFSZ || Incrémentation, puis instruction SKIP si résultat = 0
|-
! colspan="5" | Instructions logiques/arithmétiques avec constante immédiate
|-
| colspan="2" | 1100xx || Constante immédiate (8bits) || MOVLW || Copie constante dans accumulateur
|-
| colspan="2" | 1101xx || Constante immédiate (8bits) || RETLW || MOV fusionné avec un retour de fonction
|-
| colspan="2" | 111000 || Constante immédiate (8bits) || IORLW || OU
|-
| colspan="2" | 111001 || Constante immédiate (8bits) || ANDLW || ET
|-
| colspan="2" | 111010 || Constante immédiate (8bits) || XORLW || XOR
|-
| colspan="2" | 11110x || Constante immédiate (8bits) || SUBLW || Soustraction
|-
| colspan="2" | 11111x || Constante immédiate (8bits) || ADDLW || Addition
|}
Les PIC gèrent l'adressage absolu et immédiat, mais pas plus. L'adressage absolu, celui où l'adresse est intégrée dans l'instruction, est très simple à implémenter. Les adresses prennent moins d'un octet, vu que la taille de la RAM est très petite, les adresses sont très courtes, les intégrer dans des instructions elles-mêmes courtes n'est pas un problème. L'adresse est encodée sur 5 à 7 bits, selon le modèle, ce qui permet d'adresser entre 32 et 128 octets.
Les PIC ne supportent pas l'adressage indirect, mais peuvent l'émuler grâce à un '''registre d'adresse''' dédié. Il s'agit du registre FSR, qui mémorise l'adresse à lire/écrire. Il est possible de copier un pointeur dedans, qui provient soit de l'accumulateur, soit de la mémoire SRAM. Dans les deux cas, la donnée adressée est lue ou écrite dans un registre INDR, est un registre d’interfaçage rendu adressable. Le registre FSR est directement connecté sur le bus d'adresse.
Les modèles de base se débrouillent avec un registre FSR et un registre INDR, mais les modèles plus performants ont deux ou trois copies de chaque registre. Les modèles PIC18 ajoutent aussi des instructions LOAD/STORE qui émulent les modes d'adressage à post- ou pré-incrément/décrément, et le mode d'adressage "Base + Indice + Décalage", encore une fois en utilisant les registres FSR et INDR.
Avec tout ce qu'on vient de dire, vous devriez pouvoir comprendre la microarchitecture d'un PIC, qui est résumée dans ce schéma.
[[File:DocPIC16F84 all.png|centre|vignette|upright=2.5|Microarchitecture du PIC16F84.]]
===Les microcontrôleurs Intel 8051/8031===
[[File:Pinagem8031.jpg|vignette|Broches du 8051.]]
Les microcontrôleurs Intel 8051/8031 sont des microcontrôleurs 8 bits, commercialisés par Intel. Elle contient un processeur 8/16 bits, 4 kibioctets de mémoire ROM, une RAM de 128 octets. Niveau entrées-sorties, il contient un port série, ainsi que 4 ports d'un octet chacun sur lesquels il peut lire ou écrire. Il supporte des interruptions, avec un contrôleur d'interruption intégré. Il contient aussi deux ''timers'' de 16 bits chacun, qui déclenchent des interruptions quand ils tombent à zéro ou à une valeur configurable.
Ils ont de nombreuses ressemblances avec les microcontrôleurs PIC. Le processeur du 8051 est une architecture à accumulateur de 8 bits, ses registres sont mappés en mémoire RAM, il a un registre d'adresse dédié à l'adressage indirect et j'en passe. Mais il y a aussi des différences notables. Par exemple, le 8051 n'a pas de pile d'adresse de retour, contrairement aux processeurs PIC. Il fait autrement, à savoir qu'il gère une pile d'appel placée en mémoire RAM,ce qui est très différent. De même, il utilise deux accumulateurs nommés A et B.
Une autre différence est que les registres sont placés dans un banc de registre à part des 128 octets de SRAM. Il y a une SRAM séparée du banc de registre, contrairement à ce qu'on a sur les microcontrôleurs PIC. Par contre, les registres du processeur sont mappés en mémoire RAM, y compris les deux accumulateurs, le registre d'état, le ''program counter'', et bien d'autres. Mais le fait qu'ils soient séparés de la SRAM permet de les mapper dans l'espace d'adressage sans marcher sur les pieds de la SRAM. Vu que le processeur peut adresser 256 octets, mais n'a que 128 octets de SRAM, les registres sont mappés dans les 128 octets restants. Les entrées-sorties aussi sont mappées dans ces 128 octets restants.
L'ensemble utilise une architecture Harvard, contrairement à ce que pourrait faire croire le schéma ci-dessous.
[[File:Arkitektura mikro kontrollerit Intel 8051.png|centre|vignette|upright=2.5|Microcontrôleur 8051]]
Voyons maintenant la ''memory map'' de ce microcontroleur, pour la SRAM. Un point assez original est que 16 octets de la SRAM sont adressables bit par bit, à savoir que chaque bit a sa propre adresse. En tout, cela permet d'adresser 128 bits (16 adresses * 8 bits par octet adressé). L'intervalle bit-adressable va de l'adresse 32 (inclue) à l'adresse 47 (inclue).
Les 32 premières adresses sont réservées à la mémoire SRAM, c'est 32 octets de RAM utilisable à volonté par le programmeur. Les 16 adresses suivantes sont les 16 adresses bit-adressables mentionnées dans le paragraphe précédent. Les 96 octets suivants sont de la mémoire RAM adressable, affectée par défaut à la pile d'appel mais adressable via adressage direct si besoin. Les 128 octets de poids fort sont réservés aux registres du processeur et aux entrée-sorties mappées en mémoire.
[[File:Memory map du 8051.png|centre|vignette|upright=2|Memory map du 8051]]
Les 128 octets au sommet de l'espace d'adressage sont décrits dans le schéma ci-dessous. On voit que les deux accumulateurs sont mappés dedans, de même que le registre d'état PSW, le registre de configuration des interruptions IE (''Interrupt Enable''), et quelques autres. Les ports d'entrée-sortie sont aussi mappés dedans, que ce soit les 4 ports parallèles ou le port série. Les deux ''timers'' sont aussi mappés dedans, ainsi que leurs registres de configuration.
Une partie des octets sont bit-adressables, et cette partie inclus les registres du processeur et les ports d'entrées-sorties. Pour le dire autrement, chaque bit d'un port d'entrée-sortie a sa propre adresse mémoire, qui permet de le sélectionner. Par contre, les registres pour les ''timers'' ne sont pas dedans, sauf pour le troisième ajouté dans des extensions du 8051.
[[File:MFrey SFR MCS-51.svg|centre|vignette|upright=2|Memory map des 128 octets de poids fort du 8051]]
Pour ce qui est des instructions, le 8051 supporte les opérations de multiplications et de divisions, contrairement aux microcontrôleurs PIC qui se limitaient à l'addition et la soustraction. Une autre particularité est que le processeur incorpore une '''unité de calcul de 1 bit'''. Elle permet de faire des opérations sur des bits, avec 17 instructions possibles au total. L'ALU de 1 bit est reliée à un accumulateur de 1 bit et 32 registres de 1 bit. Elle peut lire des opérandes de 1 bit en mémoire RAM ou sur les ports d'entrée-sortie, pour les portions qui sont bit-adressables.
Le processeur supporte aussi l'adressage indirect dans la SRAM, mais celui-ci fonctionne différemment comparé aux microcontrôleurs PIC. Il n'y a pas deux registres d'adresse dédiés, séparés des autres. À la place, l'adressage indirect est implémenté normalement, en utilisant les registres généraux. Par contre, il y a une contrainte : seuls les deux premiers registres R0 et R1 sont utilisables. En clair, seuls ces deux registres peuvent contenir une adresse, un pointeur. C'est là une différence liée au fait que le 8051 a un banc de registre séparé.
Le 8051 peut communiquer avec une mémoire RAM externe, en plus de la SRAM interne. Pour cela, le processeur du 8051 avait un espace d'adressage séparé pour la RAM externe, capable d'adresser 64 kibioctets. Communiquer avec cet espace d'adressage se faisait avec des instructions d'accès mémoire séparées des autres, pas les LOAD/STORE normaux. Par exemple, l'instruction MOVX lisaient une donnée dans cet espace d'adressage, et la copiait dans l'accumulateur ou la SRAM. Pour envoyer l'adresse à lire/écrire à cette RAM externe, le processeur incorporait un registre d'adresse dédié. Il s'agit du '''registre DPTR''', qui contient une adresse de 16 bits. Le processeur devait copier l'adresse à lire/écrire dedans, puis lancer l'instruction MOVX.
===Le HP Nanoprocessor : un processeur sans ALU===
Un dernier exemple est celui du processeur HP Nanoprocessor, de l'entreprise HP. Il a été commercialisé en 1974, en même temps que les premiers micro-processeurs d'Intel. Tous les processeurs de l'époque étaient des processeurs 8 bits et le HP Nanoprocessor ne faisait pas exception. Ce n'était pas un processeur hautes performances, il était destiné à des applications d'informatique industrielle ou embarquée. D'ailleurs, il utilisait des transistors de type metal-gate, peu performants, là où ses contemporains utilisait des transistors en silicium, plus performants.
Mais une caractéristique qui rend cela encore plus claire est qu'il n'y a pas d'ALU ! En effet, ce processeur est incapable de faire des additions, des soustractions ou autres opérations simples ! Il est cependant capable d'effectuer des incrémentations et décrémentations, des décalages, des opérations logiques comme des ET/OU/NON/XOR et bien d'autres. Il supporte en tout 48 instructions, avec un support limité des modes d'adressage indirects. Les instructions de branchement étaient des instructions SKIP, il n'y avait pas d'instructions de branchement généralistes.
Pour ce qui est des registres, il disposait de 16 registres de 8 bits et d'un accumulateur. Niveau mémoire, il était relié à une mémoire ROM, rien de plus. Il n'avait de RAM supplémentaire qu'on pouvait lui adjoindre, il devait se débrouiller avec seulement ses registres. Et cela ne posait pas de problèmes pour son usage. Seul le mode d'adressage indirect à registre est supporté, il n'y a pas de registres d'indices. Ce mode d'adressage permet de lire des données en mémoire ROM, la ROM pouvant contenir des tableaux de valeurs constantes.
: Il est possible de lui adjoindre de la RAM via les ports d'entrée-sortie, ainsi qu'une ALU, mais RAM et ALU sont traités comme des périphériques avec lesquels on communique, ils ne sont pas intégrés au processeur.
Niveau micro-architecture, il incorporait une unité de calcul logique et un circuit comparateur. Le comparateur était un circuit comparateur série des plus basiques, qui était utilisé pour les instructions de branchement et associées. L'unité de calcul logique gérait des incrémentations/décrémentation, des décalages, les opérations logiques et quelques autres. L'unité de calcul logique était bit-slicée, à savoir conçue en assemblant 8 ALU de 1 bit chacune, enchainées en série. Le tout était combiné à des circuits de ''carry skip''.
[[File:Unité de calcul du HP nanonprocessor.png|centre|vignette|upright=2|Unité de calcul du HP nanoprocessor]]
Son unité de décodage d'instruction était très simple, essentiellement basée sur des portes NOR, grâce à un encodage efficace des instructions machine. Le ''program counter'' fait 11 bits, ce qui permet d'adresser une ROM de 2 kibioctets. Le ''program counter'' était relié à un circuit incrémenteur qui gérait les isntructions SKIP (il pouvait incrémenter le ''program counter'' par pas de 1 ou de 2 en cas de SKIP). Le processeur contient aussi deux registres, qui servent en quelque sorte de pile d'adresse de retour. Un premier registre mémorise l'adresse de retour d'une fonction, l'autre mémorise le ''program counter'' lors d'une interruption, pour savoir où brancher à la fin de l'interruption.
[[File:HP nanoprocessor.png|centre|vignette|upright=2.5|HP nanoprocessor]]
Fait intéressant, le concepteur du processeur a gracieusement donné les masques utilisés pour graver le silicium du processeur au site [https://www.cpushack.com/ CPU Shack]. Les masques en question sont disponibles ici :
* [https://www.cpushack.com/2020/08/20/hp-nanoprocessor-mask-set/ HP NanoProcessor Mask Set]
* [https://www.cpushack.com/2020/08/09/the-forgotten-ones-hp-nanoprocessor/ The Forgotten Ones: HP Nanoprocessor]
Les masques ont été analysés par Ken Shirrif dans cet article de blog :
* [https://www.righto.com/2020/09/hp-nanoprocessor-part-ii-reverse.html HP Nanoprocessor part II: Reverse-engineering the circuits from the masks]
==Les processeurs 8/16 bits à architecture Von Neumann==
L'usage d'une architecture Harvard est une solution pour adresser plus de mémoire avec des CPU 8 bits. Mais plusieurs microprocesseurs commerciaux n'utilisaient pas cette solution. À la place, c'était des architectures Von Neumann, mais qui étaient capables de gérer des adresses de 16 bits. Les données faisaient 8 bits, les registres faisaient 8 bits, mais quelques techniques permettaient de gérer des adresses de 16 bits. Nous parlerons de '''processeurs 8/16 bits''' pour les désigner, et nous allons les étudier à part.
Un point important est que la gestion d'adresses de 16 bits permet d'adresser 64 kibioctets, qui peuvent être remplis avec de la RAM et de la ROM. On a donc le meilleur des mondes : 64 kibioctets de mémoire, mais avec des données de 8 bits et les économies de circuit qui vont avec. L'avantage est que le processeur peut maintenant gérer une vraie pile d'appel, pas seulement une pile d'adresse de retour. Il lui suffit pour cela d'intégrer un pointeur de pile codé sur 16 bits.
===Les modes d'adressage par page des CPU Motorola===
Les processeurs Motorola 8 bits étaient des processeurs 8 bits avec un bus d'adresse de 16 bits. C'était des processeurs à accumulateur incorporant deux registres d'indice, un registre d'état, un pointeur de pile, et un ''program counter''. Tous les registres sont reliés au bus d'adresse, sauf le registre d'état et l’accumulateur. Tous les registres font 8 bits, sauf le ''program counter''. La pile est câblée pour être dans un bloc de 256 octets compris entre l'adresse 1 0000 0000 et l'adresse 1 1111 1111, ce qui fait que son adressage se fait avec un seul octet.
[[File:6502-architecture.svg|centre|vignette|upright=1.5|Architecture simplifiée du 6502.</br> X et Y : registres d'indice ;</br> S : le pointeur de pile ;</br> A : accumulateur ;</br>P : registre d'état.</br>]]
Les processeurs Motorola 8 bits utilisaient une méthode simple pour adresser 64 kibioctets de RAM, avec des registres de 8 bits. Pour cela, ils utilisaient une variante de l'adressage base + décalage. Elle améliore l'adressage absolu, qui intègre l'adresse à lire/écrire dans l'instruction elle-même. L'adresse en question est de 8 bits et n'encode que les 8 bits de poids faible de l'adresse, les 8 bits de poids fort sont dans un '''registre de page''' adressé implicitement. L'adresse finale est obtenue en concaténant ce registre avec l'adresse mémoire intégrée dans l’instruction. Le résultat est que la mémoire était découpée en blocs de 256 consécutifs, chacun pouvant servir de fenêtre de 256 octets. Une page est réservée pour la pile, la seconde, comme dit plus haut.
Formellement, ce mode d'adressage a des ressemblances avec la commutation de banques, une technique qu'on verra dans les chapitres sur l'espace d'adressage et la mémoire virtuelle. Mais ce n'en est pas du tout : le registre de page est utilisé uniquement pour les accès mémoire avec le mode d'adressage base + décalage, mais pas pour les autres accès mémoire, qui gèrent des adresses complètes. Notons que l'usage d'un registre de page dédié fait que celui-ci est adressé implicitement.
Il faut noter que la technique a été utilisée sur des processeurs 16 bits, pour contourner la petite taille des instructions. Un exemple est celui du HP 2100, un processeur 16 bits. Il avait un registre de page de 5 bits et encodait 10 bits d'adresse dans ses instructions. Ses instructions d'accès mémoire disposaient d'un bit qui choisit quel mode d'adressage utiliser. S'il était à 0, l'adressage absolu était utilisé, le registre de page n'était pas utilisé. Mais s'il était à 1, le registre de page était utilisé pour calculer l'adresse.
Une évolution de l'adressage précédent est le '''mode page direct'''. Avec lui, le registre de page est étendu et contient une adresse mémoire complète. L'adresse finale n'est pas obtenue par concaténation, mais en additionnant le registre de page avec l'adresse fournie par adressage absolu + décalage. Un exemple est celui des premiers processeurs Motorola, qui géraient des adresses courtes de 8 bits. L'adresse courte de 8 bits correspondait non pas aux 256 premiers octets de la mémoire, mais à une fenêtre de 256 octets déplaçable en mémoire. La position de la fenêtre de 256 octets était spécifiée par le registre de page de 16 bits, qui précisait l'adresse du début de la fenêtre, celle de sa première donnée.
Il s'agit donc formellement d'adressage base + décalage, à un détail près : il n'y a qu'un seul registre de base. Le fait que ce registre de base soit unique fait qu'il est adressé implicitement, on n'a pas à encoder le numéro/noms de registre dans l'instruction. Le registre de base est utilisé uniquement pour l'adressage absolu, pas pour les autres accès mémoire. S'il y a des ressemblances avec la segmentation, une technique de mémoire virtuelle qu'on abordera dans quelques chapitres, ce n'en est pas vu que le registre de base est utilisé seulement pour un mode d'adressage bien précis.
===Le ''pseudo-aliasing'' des registres des processeurs Intel x86===
Voyons maintenant le cas des anciens processeurs 8 bits d'Intel à savoir l'Intel 4004, 4040, 8008 et 8080. Le Z80, un processeur inspiré des CPU Intel 8 bits, est aussi concerné. Avant de poursuivre, parlons des registres de ces processeurs. Les premiers CPU Intel incorporaient 7 registres de 8 bits nommés A, B, C, D, E, F, H, L, SP. Ils correspondent respectivement à : l'accumulateur A ; six registres nommés B, C, D, E, H et L ; le registre d'état F ; le pointeur de pile SP. Le Z80 ajoute deux registres d'indice X et Y. De plus, le Z80 dispose de registres d'interruption, qui sont en quelque sorte des copies des registres A, B, C, D, E, F, H, L. Le tout est illustré dans le tableau ci-dessous.
{|class="wikitable" style="text-align:center;"
|-
!
! Registres des CPU Intel
! Registres supplémentaires du Z80
|-
! Accumulateur
| A
| A'
|-
! Registre d'état
| F
| F'
|-
! Registres généraux
| B, C, D, E, H, L
| B', C', D', E', H', L'
|-
! Pointeur de pile
| colspan="2" | SP (sauf pour le 8008)
|-
! Registres d'indice
|
| X et Y
|}
Le 8008 incorpore une pile d'appel de 7 adresses, dans le processeur lui-même. Il en est de la même avec le 4004 et le 4040, comme on le verra dans la section sur les processeurs 4 bits. Mais le 8080 et le 8085 ont remplacé le tout par un simple pointeur de pile, afin d'avoir une véritable pile d'appel. Autant c'est impossible d'avoir une pile d'appel avec seulement 256 octets de mémoire, autant on peut se le permettre avec 65 536 adresses.
Pour gérer des adresses de 16 bits, ils auraient pu utiliser des registres d'adresse séparés, mais on préféré un système de '''pseudo-''aliasing'' de registres'''. Formellement, c'est un système qui concatène deux registres 8 bits pour obtenir une adresse de 16 bits. L’appariement a lieu lors de certaines opérations bien précises, qui n'ont de sens que pour les adresses : la lecture/écriture en mémoire, et l'incrémentation.
Il y avait cependant des contraintes quant aux paires de registres possibles, toutes les paires de registres n'étaient pas autorisées. Les CPU concernés sont donc des processeurs hybrides accumulateur-registre généraux. L'accumulateur ne peut pas être appairé, seuls les registres généraux le peuvent. Le Z80 autorise plus de paires que les CPU Intel. Voici les paires de registres qui pouvaient servir d'adresse 16 bits :
* Les CPU 8008 d'Intel autorisait une seule paire formée des registres H et L.
* Les autres processeurs, à savoir le 8080, le 8085 et le Z80, autorisaient : les paires BC, DE et HL.
Le 8008 ne gérait que des opérations sur 8 bits. Mais le 8080 et le 8085 ont ajouté des instructions 16 bits qui agissaient sur des paires de registre, que le Z80 a repris. Une paire de registres est considérée comme un registre unique de 16 bits pour certaines opérations arithmétiques, dont l'incrémentation. Voici la liste des instructions concernées :
* INC et DEC pour l'incrémentation et la décrémentation ;
* DAD : additionne le registre HL avec une autre paire (Hl inclus) ;
* LXI : copie une constante immédiate dans une paire de registres ;
* LHLD : lit 16 depuis la mémoire et l'enregistre dans une paire de registres ;
* SHLD : copie 16 bits depuis une paire de registres et l'enregistre en mémoire ;
* PUSH et POP : empile ou dépilent une paire de registre sur la pile ;
* XTHL : échange la paire HL avec les 16 bits au sommet de la pile d'appel ;
* XCHG : échange le contenu de la paire HL et DE.
Pour résumer, le processeur avait des instructions LOAD, STORE, PUSH et POP adaptées pour gérer des paires de registre. De plus, l'instruction XCHG permettait d’échanger le contenu des paires DE et HL. L'instruction a été étendue sur les processeurs 16 bits pour échanger tous les registres. Mais l'implémentation était alors différente. L'incrémentation sur une paire de 16 bit était très utile, car les adresses sont souvent incrémentées quand on parcours un tableau. Ces instructions nous donnent quelques indices sur ce qu'il y a dans le processeur.
Le système de pseudo-aliasing a un impact sur le banc de registre. Le banc de registre regroupe les registres généraux et le pointeur de pile, mais ne contient pas l'accumulateur. Les contraintes sur les paires de registres possibles ne s'expliquent que d'une seule manière : le banc de registre contient des registres de 16 bits, une paire de registres 8 bits est mémorisée dans un registre unique. Il faut donc faire une différence entre les registres architecturaux de 8 bits, et les registres réels de 16 bits.
Le banc de registre a un port de 8 bits pour les données, qui est fabriqué à partir d'un port 16 bits auquel on a rajouté un multiplexeur pour choisir soit l'octet de poids faible, soit l'octet de poids fort. Le bus de données fait 8 bits, ce qui fait que les instructions LOAD, STORE, PUSH et POP pour paires 16 bits sont réalisées en deux fois : on lit/écrit l'octet de poids faible, puis celui de poids fort. Par contre, le bus d'adresse fait bien 16 bits. Cela suggère que le banc de registre dispose d'un port de 16 bits dédié aux adresses, en plus du port de données 8 bits.
[[File:Architecture d'un CPU 8-16 bits avec un banc de registre double port.png|centre|vignette|upright=2|Architecture d'un CPU 8-16 bits avec un banc de registre double port]]
L'incrémentation d'une paire 16 bits ne coute rien à implémenter, ou presque. En effet, le processeur incorpore un incrémenteur 16 bits pour le ''program counter'', qui est relié au bus d'adresse. L'idée est de rentabiliser cet incrémenteur, en lui permettant d'incrémenter des données/adresses de 16 bits obtenues via pseudo-aliasing. De même, il peut être utilisé pour incrémenter le pointeur de pile, voire un compteur de rafraichissement mémoire (pour rappel, le rafraîchissement mémoire demande de balayer la mémoire d'adresse en adresse et été fait par le CPU à l'époque). Pour cela, il suffit de connecter le ''program counter'', le banc de registre, et l'incrémenteur, via un bus dédié.
[[File:Calcul d'adresse par ALU dédiée avec PC séparé.png|centre|vignette|upright=2|Calcul d'adresse par ALU dédiée avec PC séparé]]
Notez qu'on peut encore simplifier le tout en placant le ''program counter'' dans le banc de registre, ce qui ne gênera pas le travail de l'incrémenteur mais simplifiera le câblage au bus d'adresse. Ce n'était pas systématique, certains processeurs mettaient le ''program counter'' dans le banc de registre, d'autres non.
: Inclure le ''program counter'' dans le banc de registre permet parfois de remplir un vide. Par exemple, sur un processeur avec 12 registres, le banc de registre devrait faire idéalement 16 registres, inclure le ''program counter'' dedans fait monter le tout à 13.
[[File:Architecture d'un CPU 8-16 bits.png|centre|vignette|upright=2|Architecture d'un CPU 8-16 bits]]
Les processeurs Intel 8 bits, à savoir le 8008, le 8080 et le 8085 ; mettaient le ''program counter'' dans le banc de registre. Vous avez donc toutes les armes pour comprendre leur micro-architecture. Par exemple, voici la micro-architecture du processeur 8080. Remarquez le banc de registre, qui contient tous les registres sauf l'accumulateur et le registre. Il a deux ports : un pour les adresses et un pour les données. Notez le dé-multiplexeur sur le port de donnée. Pour le reste, il s'agit d'une architecture à accumulateur hybride des plus classiques.
[[File:Intel 8080 arch.svg|centre|vignette|upright=3|Microarchitecture de l'Intel 8080.]]
Le Z80 est un processeur inspiré du design des processeurs Intel 8 bits, mais avec pas mal d'améliorations. Un point particulier de ce processeur est son banc de registre. Il contient tous les registres du processeur, y compris l'accumulateur et le registre d'état ! Les seuls registres en-dehors du banc de registre sont le ''program counter'' et un compteur de rafraichissement mémoire IR.
Un autre point particulier est que les registres dans le banc de registres avaient une copie séparée accessible uniquement pour les interruptions, via fenêtrage de registres. Et l'accumulateur et le registre d'état étant dans le banc de registre, il y avait deux accumulateurs et deux registres d'état. Les registres A, B, C, D, E et F étaient dupliqués, par le pointeur de pile ni les registres d'indice. Les copies des registres étaient nommées A', B', C', D', E' et F'.
Le Z80 supportait des instructions d'échange de registre en plus des CPU Intel 8 bits. L'instruction EX peut échanger soit le contenu des paires D,E et H,F, soit la paire A,F avec la paire A',F'. L'instruction EXX échange les paires BC, DE, HL avec les paires BC', DE', HL'. En faisant cela, le programmeur pouvait utiliser deux fois plus de registres généraux s'il n'utilisait pas les interruptions. L'échange de paires se fait sans copies de registres, mais simplement en modifiant l'adresse envoyée sur le banc de registre. Pour cela, plusieurs bascules mémorisent des bits qui indiquent si les paires ont été échangées ou non. Il y a une bascule pour les paires DE , HL ; une autre pour les paires A,F et paire A',F', une dernière pour l'instruction EXX. En combinant ces bascules avec les noms de registres envoyés par le séquenceur, on peut échanger les paires de registres.
==Le cas particulier des processeurs 4 bits : le 4004 d'Intel==
L'Intel 4004 était le tout premier micro-processeur. Il s'agissait d'un microprocesseur de 4 bits, basé sur une architecture à accumulateur. Il disposait d'un accumulateur et de 16 registres d'indice, tous de 4 bits. Il faisait des calculs sur des données de 4 bits, appelées des nibbles. Cependant, sur ses 46 instructions machines supportées, 41 agissaient sur des opérandes de 8 bits, les 5 restantes sur des opérandes de 16 bits. Simplement, les calculs se faisaient en deux fois, en échangeant des données entre mémoire RAM et accumulateur.
Le 4004 est un circuit intégré avec peu de broches. Il dispose notamment d'un bus de données/adresse, qui est multiplexé, c’est-à-dire qu'il sert alternativement de bus de données et de bus d'adresse selon les besoins. Le bus de commande mémoire fait 5 bits, dont 4 pour les chips de RAM, un pour la ROM. Les adresses sont codées sur 12 bits, les données sur 4 et les instructions sur 8 bits. L'envoi d'une adresse sur le bus se fait en plusieurs fois, de même que la lecture d'une instruction. Il s'agit là d'une adaptation pour outrepasser les limitations d'un processeur 4 bit.
[[File:Intel 4004 processor pinout.png|centre|vignette|upright=2|Broches de l'Intel 4004. Nous verrons à quoi elles servent plus bas.]]
===L'espace d'adressage de l'Intel 4004===
Les adresses du processeur sont sur 12 bits, ce qui fait 4096 adresses différentes. Elles regroupent à la fois la ROM et la mémoire RAM, vu que l'architecture est une sorte de mélange bizarre entre une architecture Von Neumann et Harvard. Le processeur gère bien deux espaces d'adressage séparés, mais la RAM et la ROM sont reliés au même bus. La sortie CM-ROM du processeur indique si l'adresse envoyée correspond à la RAM ou la ROM. Un circuit de décodage d'adresse active ou désactive la RAM selon la valeur de ce bit, l'inverse pour la ROM, en agissant sur leurs bits Chip Select. Seule la RAM ou la ROM répondent alors à l'adresse.
Pour ce qui est de la RAM, le circuit de décodage d'adresse pouvait gérer au maximum 1024 adresses différentes, chacune contenant un nibble. Pour cela, le CPU 4004 était relié à une ou plusieurs RAM externes, des Intel 4002. Chaque Intel 4002 contenait 64 nibbles de données, plus 16 nibbles de statut qu'on ne détaillera pas ici. Les nibbles de statut étaient accessibles en utilisant des instructions d'entrée-sortie, donc pas avec des lectures/écritures mémoire. Les 64 nibbles de données sont découpés en 4 groupes de 16 nibbles. Le CPU pouvait être relié à maximum 16 Intel 4002, ce qui fait 1024 nibbles de données et 256 nibbles de statut. L'ensemble permet de remplir l'espace d'adressage de 1024 adresses.
===Le registre de page et le pseudo-aliasing des registres===
Sélectionner une adresse mémoire utilisait un mélange entre pseudo-aliasing et registre de page. Pour les données, les 1024 adresses étaient découpées en 4 pages de 256 adresses. Pour la ROM, les 4096 adresses étaient découpées en 16 pages de 256 adresses. Localiser une donnée dans une page ne requiert que 8 bits, 2/4 bits supplémentaires permettent de sélectionner la page voulue. Le registre de page était dans le processeur lui-même, et était relié aux sorties du processeur nommées CM-RAM 0, 1, 2 et 3. Les 4 sorties encodaient un nombre qui permet de sélectionner le numéro de page voulu.
Le registre de page fait 5 bits : un pour distinguer RAM et ROM, 4 bits pour sélectionner la page voulue. L'avantage est que la carte mère gère au maximum 16 chips de RAM, ce qui colle parfaitement avec les 4 utilisés pour sélectionner une page. Un chip de RAM correspond à une page, et chacun est activé ou désactivé suivant la page sélectionnée. Pour cela, il suffit d'ajouter un décodeur sur la carte mère, qui prend les 4 bits du registre de page et fournit les signaux Chip Select aux différents chips de RAM.
Reste alors à utiliser les 8 bits d'adresse à l'intérieur d'un chip de RAM. Le 4004 permettait de concaténer deux registres d'indice de 4 bits pour former une adresse de 8 bits. Les instructions d'accès mémoire pouvaient ainsi préciser une paire de registre d'indice pour préciser quelle adresse lire/écrire. Idem pour les branchements indirects : le processeur supportait une instruction de branchement indirect qui précisait l'adresse dans une paire de registres d'indice. Les registres d'indice sont donc assez mal nommés sur cette architecture, vu qu'ils peuvent servir soit de registre d'indice, soit de demi-registre d'adresse. Il s'agit là du système de pseudo-aliasing des registres, mais appliqué aux registres d'indice.
L'Intel 4004 gérait deux instructions pour gérer les adresses mémoires. La première, l'instruction DCL (''Designate Command Line'') configure le registre de page. Elle prend en entrée un numéro de page et le copie dans le registre de page. L'opérande peut provenir d'un registre d'indice ou de l'accumulateur. La seconde, l'instruction SRC (''Send Register Control'') concatène deux registres d'indice pour obtenir une adresse de 8 bits. Un accès mémoire se fait donc en maximum trois instructions : une qui configure le registre de page si ce n'est pas déjà fait, une instruction SRC pour envoyer l'adresse, et une troisième instruction qui dit s'il faut faire une lecture ou une écriture.
===La microarchitecture de l'Intel 4004===
Il incorporait une pile d'adresse de retour intégrée au processeur. La pile d'adresse acceptait exactement 3 adresses maximum. Elle était regroupée avec le ''program counter'' dans un banc de registre, de 4 registres. Le ''program counter'' et le pointeur de pile faisaient chacun 12 bits, soit trois nibble. Ils étaient incrémentés par un incrémenteur dédié.
SI on omet le registre de page et la pile d'adresse, le 4004 est une architecture à accumulateur des plus classiques, avec un bus interne unique, un banc de registre pour les registres d'indices, un accumulateur relié à une unité de calcul. Les registres d'indice étaient dans un banc de registre séparés, car ils faisaient 4 bits chacun, contrairement au pointeur de pile et le ''program counter''. Un détail important est que les bancs de registres du 4004 étaient implémentés avec de la DRAM, et non des registres usuels fabriqués avec des bascules 1 bit.
[[File:Microarchitecture de l'Intel 4004.png|centre|vignette|upright=2.5|Microarchitecture de l'Intel 4004]]
<noinclude>
{{NavChapitre | book=Fonctionnement d'un ordinateur
| prev=Les architectures à pile et mémoire-mémoire
| prevText=Les architectures à pile et mémoire-mémoire
| next=Les processeurs de traitement du signal
| nextText=Les processeurs de traitement du signal
}}
</noinclude>
bsq4onbjnsbgpqfa35r9tt5c938lhgt
765753
765752
2026-05-02T01:31:10Z
Mewtow
31375
/* Les microcontrôleurs PIC */
765753
wikitext
text/x-wiki
Nous avons déjà abordé la notion de processeur 8, 16, 32, 64 bits. Elle désigne la taille des registres généraux, ou de l'accumulateur. De nos jours, les processeurs 32 et 64 bits sont la norme, mais les premiers micro-processeurs étaient des processeurs 4 et 8, avant de passer rapidement au 16 bits. La raison est que leur budget en transistor limité faisait qu'on ne pouvait pas utiliser une ALU trop grande : une ALU 8 bit prend deux fois moins de place et de transistors qu'une ALU 16 bits. Cependant, les processeurs 8 bits avaient de sérieuses limitations qui étaient compensées par diverses solutions. Dans ce chapitre, nous allons faire une revue rapide des processeurs 8 bits et de leurs fonctionnalités.
La principale limitation des CPU 8 bits était l'adressage : des registres de 8 bits limitaient l'espace d'adressage à seulement 256 adresses, soit à peine 256 octets ! Intuitivement, on se dit que 256 octets est purement impraticable, on ne peut rien faire d'intéressant avec seulement 256 de RAM + ROM. Et c'est partiellement vrai. L'adage veut que 16 bits est la taille minimale intéressante, la limite à partir de laquelle on a assez de mémoire RAM/ROM pour coder des applications intéressantes. Mais 256 octets de RAM est largement suffisant sur de nombreux systèmes embarqués simples s'en accommodent : des caisses enregistreuses, des systèmes de régulation de feu de circulation, etc.
Pour les applications demandant plus de mémoire RAM, les CPU de l'époque contournaient la limitation de 256 octets de RAM avec de nombreux stratagèmes. Dans ce qui va suivre, nous allons séparer les CPU 8 bits selon qu'ils utilisent une architecture Harvard ou une architecture Von Neumann. La raison est qu'une architecture Harvard permet en soi de contourner partiellement ce problème d'adressage. Les choses sont plus compliquées avec une architecture Von Neumann.
==Les processeurs 8/16 bits à architecture Harvard ==
La première solution est d'utiliser une architecture Harvard. Le processeur 8 bit a alors deux espaces d'adressage : un pour la RAM, un autre pour la ROM. Et les deux utilisent des adresses de taille différente. La ROM est reliée à un bus d'adresse de 16 bits, alors que la RAM est elle connectée à un bus d'adresse de 8 bits. La RAM est donc limitée à 256 octets, alors que la ROM peut monter jusqu'à 64 kibioctets. Mine de rien, faire ainsi est largement suffisant.
Les processeurs 8 bits intègrent parfois les 256 octets de RAM directement dans le processeur. Vous noterez que 256 octets de RAM est très peu, comparable à ce qu'on trouve dans un banc de registres. Aussi, fusionner banc de registre et 256 octets de SRAM est une optimisation possible. Concrètement, cela veut dire que le processeur n'intégre pas une RAM séparée, mais a un banc de 256 registres de 8 bits. Beaucoup de processeurs en implémentent moins, avec par exemple seulement 64 octets de RAM, ou 32 octets, ou 128 octets.
L'avantage est que cela élimine le bus mémoire de la RAM, ce qui économise beaucoup de broches sur le circuit intégré du CPU. Et c'est ce qui explique que cette solution est beaucoup utilisée sur les microcontrôleurs peu puissants. Les exemples qui vont suivre devraient vous convaincre. Et pour les applications demandant plus de RAM, des optimisations permettent d'adresser plus de 256 octets de RAM. La plus connue est la commutation de banques, mais nous n'avons pas encore abordé celle-ci, et il faudra attendre le chapitre sur l'espace d'adressage pour cela.
Cependant, se limiter à 256 octets de RAM demande des compromis assez forts, pour économiser un maximum d'adresses mémoire. L'usage d'une architecture Harvard est une solution très intéressante, mais on peut aller plus loin en utilisant une architecture Harvard modifiée. Pour rappel, elles permettent de lire des constantes depuis la mémoire ROM. Les constantes manipulées par le programme sont mémorisées en ROM, lues depuis la ROM, au lieu d'être chargées en RAM. Une autre optimisation est d'utiliser un espace d'adressage séparé pour les entrées-sorties, à la place d'entrées-sorties mappées en mémoire qui détournent des adresses. Cependant, de nombreux processeurs 8 bits utilisent les entrées-sorties mappées en mémoire, comme on va le voir plus bas.
Avec ce genre de stratagèmes, 256 octets de RAM est largement suffisant sur de nombreux systèmes, à condition qu'on ait assez de ROM pour coder un programme digne de ce nom. Par exemple, de nombreux systèmes embarqués simples s'en accommodent : des caisses enregistreuses, des systèmes de régulation de feu de circulation, etc. Dans ce qui suit, nous allons voir quelques processeurs 8 bits de ce type. Deux exemples seront des microcontrôleurs très utilisés de nos jours.
===Le Fairchild F8 et la console de jeu Fairchild Channel F===
Un premier exemple est la Fairchild F8 de la défunte entreprise Fairchild Semiconductor. Il incorpore un processeur 8 bits, c’est-à-dire que le processeur fait des calculs sur des entiers de 8 bits maximum, une mémoire RAM de 64 octets, ainsi qu'une mémoire ROM de 1 kibioctet. Les 64 octets de RAM sont certes très peu, mais c'est suffisant pour certaines applications simples, comme les caisses automatiques de l'époque, ou des applications embarquées. Et de toute façon, il est possible d'ajouter de la mémoire RAM supplémentaire si les 64 octets de RAM intégrée ne suffisent pas. Le système était donc modulaire, adaptable selon les besoins, peu cher pour son implémentation minimale sans RAM en plus.
Vu qu'il s'agit d'un des tout premiers ordinateurs, il est sorti à une époque où la technologie était rudimentaire. À cette époque, le processeur était composé de pièces détachées qu'il fallait souder ensemble pour obtenir un processeur fonctionnel. Ce n'est que plus tard qu'est apparu le micro-processeur, qui regroupe un processeur complet dans un seul circuit intégré. Le résultat est que le processeur du Fairchild F8 est coupé en deux, l'unité de calcul et l'unité de contrôle sont placés dans des pièces détachées séparés.
Le microcontrôleur est composé de trois à quatre pièces détachées, certaines étant optionnelles. La première est le '''3850 CPU''', qui regroupe l'unité de calcul et la mémoire RAM intégrée. La seconde est le PSU (''3851 Program Storage Unit''), qui regroupe la mémoire ROM et l'unité de contrôle, ''program counter'' inclut. S'il y a besoin d'utiliser plus de RAM, il faut ajouter un circuit d’interface mémoire, qui est au choix le ''3852 Dynamic Memory Interface'' (DMI) ou le ''3853 Static Memory Interface'', le premier étant connecté à une mémoire de type DRAM, l'autre à une SRAM (nous verrons ce que sont les DRAM et les SRAM dans le prochain chapitre).
[[File:Fairchild F8.png|centre|vignette|upright=2|Fairchild F8]]
Le système minimal est composé d'un PSU et d'un 3850, sans les circuits d'interface mémoire. Le tout donne un système avec un processeur 8 bit, 64 octets de RAM et 1 kibioctet de ROM, les deux mémoires étant intégrées dans le "processeur". Le processeur gérait 4 entrées-sorties, chacune étant reliée avec un bus de 8 bit au processeur. Au passage, en 1977, Mostek a créé un microcontrôleur qui regroupe un PSU et un 3850 : le Mostek 3870. Le système minimal n'avait pas de bus d'adresse, vu que la RAM était intégrée au processeur. C'est les 3852 et 3853 qui ajoutaient un bus d'adresse. Ils ajoutent un bus d'adresse de 16 bits, ce qui permet d'adresser 64 kibioctets de RAM.
[[File:Fairchild-Channel-F.jpg|vignette|un Fairchild Channel F]]
Le Fairchild F8 a été utilisé dans la Fairchild Channel F, une des toute première console de seconde génération, à savoir des consoles qui utilisaient des cartouches de jeu. Avant les consoles de seconde génération, les consoles étaient non-programmables. Elles étaient conçues pour faire tourner un jeu précis, aucun autre, le jeu étant implémenté dans leurs circuits.
La Fairchild Channel F est composé du système minimal, auquel on a ajouté une carte son rudimentaire et 2 kibioctets de mémoire vidéo. La mémoire vidéo sert uniquement pour afficher des images à l'écran : on écrit l'image à afficher dedans, un circuit vidéo se charge de l'afficher à l'écran automatiquement. Le processeur ne fait qu'écrire dans cette RAM vidéo, il ne peut pas en lire le contenu. De la RAM supplémentaire peut cependant être ajoutée dans les cartouches de jeu.
===Les microcontrôleurs PIC===
Les '''microcontrôleurs PIC''' regroupent des microcontrôleurs allant de microcontrôleurs 8 bits aux performances très faibles, à des microcontrôleurs 32 bits bien plus puissants. Les microcontrôleurs PIC sont très utilisés dans l'embarqué ou d'informatique industrielle. Ils sont vendus à des volumes assez impressionnants, plusieurs millions par an. Et si vous avez ou êtes en train de faire des études d'électronique, je parie que vous les avez déjà vus en classe, ou que ce ne saurait tarder. Dans ce qui suit, nous allons nous concentrer sur les microcontrôleurs PIC 8 bits, à savoir les PIC 16, 16 et 18. Les PIC 24, qui sont des microcontrôleurs 16 bits, ne seront pas abordés.
La mémoire ROM des PIC va de 1024 instructions à 4096 instructions. En comparaison, la mémoire RAM des microcontrôleurs PIC ne peut pas dépasser 256 adresses, et elle est encore plus petite en pratique sur certains modèles. Pour donner un exemple, le PIC16F84 a une RAM composée de 68 "registres" de 8 bits. Le terme "registres" devrait vous faire comprendre que les 256 octets de RAM sont en réalité un banc de registre de 256 registres d'un octet chacun. Vu que la RAM et le banc de registre sont fusionnés, il n'y a pas de différences entre nom/numéro de registre et adresse mémoire. Les registres sont donc adressables, on y accède en lisant/écrivant à une adresse mémoire bien précise.
Ce banc de registre contient des registres généraux, mais aussi des registres pour communiquer avec les ports d'entrée-sortie, des registres de contrôle, le ''program counter'', le registre d'état, et le pointeur de pile. Pour donner un exemple, sur les modèles 16F, l'espace d'adressage fait 128 octets, dont 32 sont réservés aux registres du processeur, ce qui fait que seuls 96 octets sont adressables comme de la RAM. Cela gaspille quelques adresses mémoire, mais permet une implémentation plus simple, avec une petite économie de registres et donc de transistors.
: Les PIC 18 peuvent adresser plus de 256 octets de RAM en utilisant la commutation de banques, une technique qui sera abordée dans plusieurs chapitres.
[[File:DocPIC16F84 3.png|centre|vignette|upright=3|Espaces d'adressage du PIC16F84.]]
Les PIC sont une architecture à accumulateur, ce qui permet d'utiliser un banc de registre à un seul port et simplifie grandement la conception du processeur. Il faut préciser que l'accumulateur n'est pas mappé en mémoire, sauf sur les modèles PIC 17, qui mappé l'accumulateur en mémoire RAM ! Leur implémentation de l'accumulateur ajoute une petite subtilité : le résultat d'une opération arithmétique peut être enregistré ailleurs que dans l'accumulateur. Le résultat peut aussi remplacer la seconde opérande, celle lue en mémoire RAM. Dit autrement, le résultat est enregistré dans l'adresse mémoire source. Les instructions de calcul ont le choix : un bit dans leur encodage précise où enregistrer le résultat.
{|
|-
|[[File:DocPIC16F84 4.png|centre|vignette|upright=2|Microarchitecture simplifiée d'un microcontroleur PIC (ici, un 16F84).]]
|[[File:DocPIC16F84 5.png|centre|vignette|upright=2|Microarchitecture simplifiée d'un microcontroleur PIC (ici, un 16F84), avec les branchements directs.]]
|}
La petite taille de la ROM d'un PIC n'est pas une surprise, car les architectures 8 bits sont conçues pour ne pas utiliser beaucoup de transistors et être très simples. Mais il faut adapter le jeu d'instruction, pour qu'il ait une bonne densité de code. Par exemple, il faut faire en sorte d'avoir des instructions assez courtes. Si les instructions font 16 bits au lieu de 32, on divise par deux le nombre de transistors nécessaire pour la mémoire ROM. Et le jeu d’instruction des PIC est adapté à cette contrainte.
Les microcontrôleurs PIC utilisent un jeu d'instruction propriétaire, dont les instructions sont très petites. Les premières versions du jeu d'instruction utilisaient des instructions codées sur 12 bits, dont 5 pour l'adresse mémoire de la seconde opérande. Pour les branchements, 3 bits étaient utilisés pour l'opcode, 9 pour l'adresse de destination. Par la suite, les instructions ont été étendues à 13 bits sur les PIC1670, puis à 14, 15 et 16 bits. Les adresses ont alors été élargies, ce qui permet d'adresser en peu plus de mémoire RAM.
Il est intéressant de regarder comment les PIC font pour obtenir des instructions aussi courtes. Premièrement, le fait d'utiliser une architecture à accumulateur, couplé à une RAM très petite aident grandement. Les architectures à accumulateur ont besoin de préciser un opcode et une adresse mémoire pour chaque instruction, pas besoin de préciser de noms de registres ni le mode d'adressage. La taille des adresses mémoire est censé être un problème pour la densité de code, mais les adresses d'un processeur 8 bits font 8 bits. On peut alors avoir un jeu d'instruction étoffé, en utilisant des instructions 16 bits, qui concatènent un opcode et une adresse mémoire, d'un octet chacun.
Mais d'autres optimisations permettent d'avoir une bonne densité de code. Les PIC ont des branchements pour les appels et retour de fonction. Les PIC incorporent une pile d'appel de retour, qui fait 2 à 8 adresses suivant les modèles. Elle permet d'économiser quelques registres, car la pile d'appel n'est pas mappée dans l'espace d'adressage, elle n'est pas adressable. On économise ainsi 2 à 8 registres, sur 32-256 registres. De plus, cela simplifie l'encodage des instructions d'appel/retour de fonction, qui n'ont pas à préciser où enregistre l'adresse de retour.
Les PIC n'ont pas d'instructions de branchement conditionnels, ils font avec une SKIP instruction et des branchements inconditionnels. Du moins, c'est le principe, car si vous regardez la liste des instructions ci-dessous, vous verrez qu'il n'y a pas d'instruction SKIP. À la place, les instructions SKIP sont fusionnées avec d'autres instructions. Elles sont notamment fusionnées avec les instructions d'incrémentation et de décrémentation. Les PIC supportent une incrémentation normale, une décrémentation normale, une décrémentation fusionnée avec une instruction SKIP, et une incrémentation fusionnée avec une instruction SKIP. Les deux dernières incrémentent/décrémentent l'accumulateur et SKIP l'instruction suivante si le résultat est zéro. Elles permettent de fortement simplifier l'implémentation des boucles qui s'exécutent tant que leur compteur atteint zéro.
Les PIC disposent d'instructions de manipulation de bit, pour tester/masquer un bit dans une opérande. Il y a en a 4 en tout : mettre à 0, mettre à 1, tester si bit = 1, tester si bit = 0. Les instructions qui testent un bit font le test et décident s'il faut skipper l'instruction suivante ou non. Il y a aussi deux instructions de rotation à gauche et droite, qui tiennent compte de la retenue mémorisée dans le registre d'état. Les instructions de décalages sont émulées avec une rotation suivie d'un ET bit à bit. Mentionnons aussi une instruction pour inverser deux ''nibbles'' dans un octet. De telles instructions sont très utiles pour manipuler les ports I/O.
Les modèles haute performance ajoutent des instructions d'addition avec retenue entrante, idem pour la soustraction. De telles instructions sont très utiles pour faire des additions/soustractions sur des opérandes de 16 bits. Le processeur a beau être un CPU 8 bits, il peut être utilisé pour faire des calculs 16 bits, la performance est alors amoindrie, mais ce n'est pas un problème pour les applications d'un tel microcontrôleur.
Les modèles initiaux, comme les PIC 10 et 12, ne supportaient pas les interruptions, mais c'est chose réglé sur les modèles plus récents. Ils ont même des registres séparés pour les interruptions et les programmes normaux. De plus, ils intègrent nativement un ''watchdog timer''.
{|class="wikitable" style="text-align:center"
|+ Jeu d'instruction des dodèles PCI 16
|-
! colspan="5" | Instructions diverses
|-
| colspan="3" | 00 0000 0000 0000 || NOP || Ne fait rien
|-
| colspan="3" | 00 0000 0000 1000 || RETURN || Instruction de retour pour une fonction
|-
| colspan="3" | 00 0000 0000 1001 || NOP || Instruction de retour pour une interruption
|-
| colspan="3" | 00 0000 0110 0011 || SLEEP || Mise en veille
|-
| colspan="3" | 00 0000 0110 0100 || CLRWDT || RESET le ''watchdog timer'', intégré dans le PIC
|-
! colspan="5" | Instructions de manipulation de bit
|-
| 0100 || Position du bit dans l'opérande || Adresse mémoire || BCF || Met le bit à 1
|-
| 0101 || Position du bit dans l'opérande || Adresse mémoire || BSF || Met le bit à 0
|-
| 0110 || Position du bit dans l'opérande || Adresse mémoire || BTFSC || Teste si le bit adressé est à 1
|-
| 0111 || Position du bit dans l'opérande || Adresse mémoire || BTFSS || Teste si le bit adressé est à 0
|-
! colspan="5" | Branchements
|-
| colspan="2" | 100 || Adresse mémoire || CALL || Appel de fonction
|-
| colspan="2" | 100 || Adresse mémoire || GOTO || Branchement inconditionnel
|-
! colspan="5" | Instructions logiques/arithmétiques avec opérande lue en mémoire RAM
|-
| colspan="5" | ''Le bit '''d''' dans l'opcode indique la destination : accumulateur ou adresse mémoire''.
|-
| colspan="2" | 0000001 || Adresse mémoire || MOVWF || Store (accumulateur vers destination)
|-
| colspan="2" | 000001d || Adresse mémoire || MOVWF || Met à zéro la destination (adresse ou registre)
|-
| colspan="2" | 000001d || Adresse mémoire || SUBWF || Soustraction
|-
| colspan="2" | 000010d|| Adresse mémoire || DECF || Décrémentation
|-
| colspan="2" | 000100d|| Adresse mémoire || IORWF || OU bit à bit
|-
| colspan="2" | 000101d|| Adresse mémoire || ANDWF || ET bit à bit
|-
| colspan="2" | 000110d || Adresse mémoire || XORWF || XOR bit à bit
|-
| colspan="2" | 000111d || Adresse mémoire || ADDWF VWF || Addition
|-
| colspan="2" | 001000d || Adresse mémoire || MOVF || LOAD
|-
| colspan="2" | 001001d || Adresse mémoire || COMF || NOT bit à bit
|-
| colspan="2" | 001010d || Adresse mémoire || INCF || Incrémentation
|-
| colspan="2" | 001011d || Adresse mémoire || DECFSZ || Décrémentation, puis instruction SKIP si résultat = 0
|-
| colspan="2" | 001100d || Adresse mémoire || RRF || Rotation à droite avec retenue entrante
|-
| colspan="2" | 001101d || Adresse mémoire || RLF || Rotation à gauche avec retenue entrante
|-
| colspan="2" | 001110d || Adresse mémoire || SWAPF || Echange deux ''niblle'' dans un octet
|-
| colspan="2" | 001111d || Adresse mémoire || INCFSZ || Incrémentation, puis instruction SKIP si résultat = 0
|-
! colspan="5" | Instructions logiques/arithmétiques avec constante immédiate
|-
| colspan="2" | 1100xx || Constante immédiate (8bits) || MOVLW || Copie constante dans accumulateur
|-
| colspan="2" | 1101xx || Constante immédiate (8bits) || RETLW || MOV fusionné avec un retour de fonction
|-
| colspan="2" | 111000 || Constante immédiate (8bits) || IORLW || OU
|-
| colspan="2" | 111001 || Constante immédiate (8bits) || ANDLW || ET
|-
| colspan="2" | 111010 || Constante immédiate (8bits) || XORLW || XOR
|-
| colspan="2" | 11110x || Constante immédiate (8bits) || SUBLW || Soustraction
|-
| colspan="2" | 11111x || Constante immédiate (8bits) || ADDLW || Addition
|}
Les PIC gèrent l'adressage absolu et immédiat, mais pas plus. L'adressage absolu, celui où l'adresse est intégrée dans l'instruction, est très simple à implémenter. Les adresses prennent moins d'un octet, vu que la taille de la RAM est très petite, les adresses sont très courtes, les intégrer dans des instructions elles-mêmes courtes n'est pas un problème. L'adresse est encodée sur 5 à 7 bits, selon le modèle, ce qui permet d'adresser entre 32 et 128 octets.
Les PIC ne supportent pas l'adressage indirect, mais peuvent l'émuler grâce à un '''registre d'adresse''' dédié. Il s'agit du registre FSR, qui mémorise l'adresse à lire/écrire. Il est possible de copier un pointeur dedans, qui provient soit de l'accumulateur, soit de la mémoire SRAM. Dans les deux cas, la donnée adressée est lue ou écrite dans un registre INDR, est un registre d’interfaçage rendu adressable. Le registre FSR est directement connecté sur le bus d'adresse.
Les modèles de base se débrouillent avec un registre FSR et un registre INDR, mais les modèles plus performants ont deux ou trois copies de chaque registre. Les modèles PIC18 ajoutent aussi des instructions LOAD/STORE qui émulent les modes d'adressage à post- ou pré-incrément/décrément, et le mode d'adressage "Base + Indice + Décalage", encore une fois en utilisant les registres FSR et INDR.
Avec tout ce qu'on vient de dire, vous devriez pouvoir comprendre la microarchitecture d'un PIC, qui est résumée dans ce schéma.
[[File:DocPIC16F84 all.png|centre|vignette|upright=2.5|Microarchitecture du PIC16F84.]]
===Les microcontrôleurs Intel 8051/8031===
[[File:Pinagem8031.jpg|vignette|Broches du 8051.]]
Les microcontrôleurs Intel 8051/8031 sont des microcontrôleurs 8 bits, commercialisés par Intel. Elle contient un processeur 8/16 bits, 4 kibioctets de mémoire ROM, une RAM de 128 octets. Niveau entrées-sorties, il contient un port série, ainsi que 4 ports d'un octet chacun sur lesquels il peut lire ou écrire. Il supporte des interruptions, avec un contrôleur d'interruption intégré. Il contient aussi deux ''timers'' de 16 bits chacun, qui déclenchent des interruptions quand ils tombent à zéro ou à une valeur configurable.
Ils ont de nombreuses ressemblances avec les microcontrôleurs PIC. Le processeur du 8051 est une architecture à accumulateur de 8 bits, ses registres sont mappés en mémoire RAM, il a un registre d'adresse dédié à l'adressage indirect et j'en passe. Mais il y a aussi des différences notables. Par exemple, le 8051 n'a pas de pile d'adresse de retour, contrairement aux processeurs PIC. Il fait autrement, à savoir qu'il gère une pile d'appel placée en mémoire RAM,ce qui est très différent. De même, il utilise deux accumulateurs nommés A et B.
Une autre différence est que les registres sont placés dans un banc de registre à part des 128 octets de SRAM. Il y a une SRAM séparée du banc de registre, contrairement à ce qu'on a sur les microcontrôleurs PIC. Par contre, les registres du processeur sont mappés en mémoire RAM, y compris les deux accumulateurs, le registre d'état, le ''program counter'', et bien d'autres. Mais le fait qu'ils soient séparés de la SRAM permet de les mapper dans l'espace d'adressage sans marcher sur les pieds de la SRAM. Vu que le processeur peut adresser 256 octets, mais n'a que 128 octets de SRAM, les registres sont mappés dans les 128 octets restants. Les entrées-sorties aussi sont mappées dans ces 128 octets restants.
L'ensemble utilise une architecture Harvard, contrairement à ce que pourrait faire croire le schéma ci-dessous.
[[File:Arkitektura mikro kontrollerit Intel 8051.png|centre|vignette|upright=2.5|Microcontrôleur 8051]]
Voyons maintenant la ''memory map'' de ce microcontroleur, pour la SRAM. Un point assez original est que 16 octets de la SRAM sont adressables bit par bit, à savoir que chaque bit a sa propre adresse. En tout, cela permet d'adresser 128 bits (16 adresses * 8 bits par octet adressé). L'intervalle bit-adressable va de l'adresse 32 (inclue) à l'adresse 47 (inclue).
Les 32 premières adresses sont réservées à la mémoire SRAM, c'est 32 octets de RAM utilisable à volonté par le programmeur. Les 16 adresses suivantes sont les 16 adresses bit-adressables mentionnées dans le paragraphe précédent. Les 96 octets suivants sont de la mémoire RAM adressable, affectée par défaut à la pile d'appel mais adressable via adressage direct si besoin. Les 128 octets de poids fort sont réservés aux registres du processeur et aux entrée-sorties mappées en mémoire.
[[File:Memory map du 8051.png|centre|vignette|upright=2|Memory map du 8051]]
Les 128 octets au sommet de l'espace d'adressage sont décrits dans le schéma ci-dessous. On voit que les deux accumulateurs sont mappés dedans, de même que le registre d'état PSW, le registre de configuration des interruptions IE (''Interrupt Enable''), et quelques autres. Les ports d'entrée-sortie sont aussi mappés dedans, que ce soit les 4 ports parallèles ou le port série. Les deux ''timers'' sont aussi mappés dedans, ainsi que leurs registres de configuration.
Une partie des octets sont bit-adressables, et cette partie inclus les registres du processeur et les ports d'entrées-sorties. Pour le dire autrement, chaque bit d'un port d'entrée-sortie a sa propre adresse mémoire, qui permet de le sélectionner. Par contre, les registres pour les ''timers'' ne sont pas dedans, sauf pour le troisième ajouté dans des extensions du 8051.
[[File:MFrey SFR MCS-51.svg|centre|vignette|upright=2|Memory map des 128 octets de poids fort du 8051]]
Pour ce qui est des instructions, le 8051 supporte les opérations de multiplications et de divisions, contrairement aux microcontrôleurs PIC qui se limitaient à l'addition et la soustraction. Une autre particularité est que le processeur incorpore une '''unité de calcul de 1 bit'''. Elle permet de faire des opérations sur des bits, avec 17 instructions possibles au total. L'ALU de 1 bit est reliée à un accumulateur de 1 bit et 32 registres de 1 bit. Elle peut lire des opérandes de 1 bit en mémoire RAM ou sur les ports d'entrée-sortie, pour les portions qui sont bit-adressables.
Le processeur supporte aussi l'adressage indirect dans la SRAM, mais celui-ci fonctionne différemment comparé aux microcontrôleurs PIC. Il n'y a pas deux registres d'adresse dédiés, séparés des autres. À la place, l'adressage indirect est implémenté normalement, en utilisant les registres généraux. Par contre, il y a une contrainte : seuls les deux premiers registres R0 et R1 sont utilisables. En clair, seuls ces deux registres peuvent contenir une adresse, un pointeur. C'est là une différence liée au fait que le 8051 a un banc de registre séparé.
Le 8051 peut communiquer avec une mémoire RAM externe, en plus de la SRAM interne. Pour cela, le processeur du 8051 avait un espace d'adressage séparé pour la RAM externe, capable d'adresser 64 kibioctets. Communiquer avec cet espace d'adressage se faisait avec des instructions d'accès mémoire séparées des autres, pas les LOAD/STORE normaux. Par exemple, l'instruction MOVX lisaient une donnée dans cet espace d'adressage, et la copiait dans l'accumulateur ou la SRAM. Pour envoyer l'adresse à lire/écrire à cette RAM externe, le processeur incorporait un registre d'adresse dédié. Il s'agit du '''registre DPTR''', qui contient une adresse de 16 bits. Le processeur devait copier l'adresse à lire/écrire dedans, puis lancer l'instruction MOVX.
===Le HP Nanoprocessor : un processeur sans ALU===
Un dernier exemple est celui du processeur HP Nanoprocessor, de l'entreprise HP. Il a été commercialisé en 1974, en même temps que les premiers micro-processeurs d'Intel. Tous les processeurs de l'époque étaient des processeurs 8 bits et le HP Nanoprocessor ne faisait pas exception. Ce n'était pas un processeur hautes performances, il était destiné à des applications d'informatique industrielle ou embarquée. D'ailleurs, il utilisait des transistors de type metal-gate, peu performants, là où ses contemporains utilisait des transistors en silicium, plus performants.
Mais une caractéristique qui rend cela encore plus claire est qu'il n'y a pas d'ALU ! En effet, ce processeur est incapable de faire des additions, des soustractions ou autres opérations simples ! Il est cependant capable d'effectuer des incrémentations et décrémentations, des décalages, des opérations logiques comme des ET/OU/NON/XOR et bien d'autres. Il supporte en tout 48 instructions, avec un support limité des modes d'adressage indirects. Les instructions de branchement étaient des instructions SKIP, il n'y avait pas d'instructions de branchement généralistes.
Pour ce qui est des registres, il disposait de 16 registres de 8 bits et d'un accumulateur. Niveau mémoire, il était relié à une mémoire ROM, rien de plus. Il n'avait de RAM supplémentaire qu'on pouvait lui adjoindre, il devait se débrouiller avec seulement ses registres. Et cela ne posait pas de problèmes pour son usage. Seul le mode d'adressage indirect à registre est supporté, il n'y a pas de registres d'indices. Ce mode d'adressage permet de lire des données en mémoire ROM, la ROM pouvant contenir des tableaux de valeurs constantes.
: Il est possible de lui adjoindre de la RAM via les ports d'entrée-sortie, ainsi qu'une ALU, mais RAM et ALU sont traités comme des périphériques avec lesquels on communique, ils ne sont pas intégrés au processeur.
Niveau micro-architecture, il incorporait une unité de calcul logique et un circuit comparateur. Le comparateur était un circuit comparateur série des plus basiques, qui était utilisé pour les instructions de branchement et associées. L'unité de calcul logique gérait des incrémentations/décrémentation, des décalages, les opérations logiques et quelques autres. L'unité de calcul logique était bit-slicée, à savoir conçue en assemblant 8 ALU de 1 bit chacune, enchainées en série. Le tout était combiné à des circuits de ''carry skip''.
[[File:Unité de calcul du HP nanonprocessor.png|centre|vignette|upright=2|Unité de calcul du HP nanoprocessor]]
Son unité de décodage d'instruction était très simple, essentiellement basée sur des portes NOR, grâce à un encodage efficace des instructions machine. Le ''program counter'' fait 11 bits, ce qui permet d'adresser une ROM de 2 kibioctets. Le ''program counter'' était relié à un circuit incrémenteur qui gérait les isntructions SKIP (il pouvait incrémenter le ''program counter'' par pas de 1 ou de 2 en cas de SKIP). Le processeur contient aussi deux registres, qui servent en quelque sorte de pile d'adresse de retour. Un premier registre mémorise l'adresse de retour d'une fonction, l'autre mémorise le ''program counter'' lors d'une interruption, pour savoir où brancher à la fin de l'interruption.
[[File:HP nanoprocessor.png|centre|vignette|upright=2.5|HP nanoprocessor]]
Fait intéressant, le concepteur du processeur a gracieusement donné les masques utilisés pour graver le silicium du processeur au site [https://www.cpushack.com/ CPU Shack]. Les masques en question sont disponibles ici :
* [https://www.cpushack.com/2020/08/20/hp-nanoprocessor-mask-set/ HP NanoProcessor Mask Set]
* [https://www.cpushack.com/2020/08/09/the-forgotten-ones-hp-nanoprocessor/ The Forgotten Ones: HP Nanoprocessor]
Les masques ont été analysés par Ken Shirrif dans cet article de blog :
* [https://www.righto.com/2020/09/hp-nanoprocessor-part-ii-reverse.html HP Nanoprocessor part II: Reverse-engineering the circuits from the masks]
==Les processeurs 8/16 bits à architecture Von Neumann==
L'usage d'une architecture Harvard est une solution pour adresser plus de mémoire avec des CPU 8 bits. Mais plusieurs microprocesseurs commerciaux n'utilisaient pas cette solution. À la place, c'était des architectures Von Neumann, mais qui étaient capables de gérer des adresses de 16 bits. Les données faisaient 8 bits, les registres faisaient 8 bits, mais quelques techniques permettaient de gérer des adresses de 16 bits. Nous parlerons de '''processeurs 8/16 bits''' pour les désigner, et nous allons les étudier à part.
Un point important est que la gestion d'adresses de 16 bits permet d'adresser 64 kibioctets, qui peuvent être remplis avec de la RAM et de la ROM. On a donc le meilleur des mondes : 64 kibioctets de mémoire, mais avec des données de 8 bits et les économies de circuit qui vont avec. L'avantage est que le processeur peut maintenant gérer une vraie pile d'appel, pas seulement une pile d'adresse de retour. Il lui suffit pour cela d'intégrer un pointeur de pile codé sur 16 bits.
===Les modes d'adressage par page des CPU Motorola===
Les processeurs Motorola 8 bits étaient des processeurs 8 bits avec un bus d'adresse de 16 bits. C'était des processeurs à accumulateur incorporant deux registres d'indice, un registre d'état, un pointeur de pile, et un ''program counter''. Tous les registres sont reliés au bus d'adresse, sauf le registre d'état et l’accumulateur. Tous les registres font 8 bits, sauf le ''program counter''. La pile est câblée pour être dans un bloc de 256 octets compris entre l'adresse 1 0000 0000 et l'adresse 1 1111 1111, ce qui fait que son adressage se fait avec un seul octet.
[[File:6502-architecture.svg|centre|vignette|upright=1.5|Architecture simplifiée du 6502.</br> X et Y : registres d'indice ;</br> S : le pointeur de pile ;</br> A : accumulateur ;</br>P : registre d'état.</br>]]
Les processeurs Motorola 8 bits utilisaient une méthode simple pour adresser 64 kibioctets de RAM, avec des registres de 8 bits. Pour cela, ils utilisaient une variante de l'adressage base + décalage. Elle améliore l'adressage absolu, qui intègre l'adresse à lire/écrire dans l'instruction elle-même. L'adresse en question est de 8 bits et n'encode que les 8 bits de poids faible de l'adresse, les 8 bits de poids fort sont dans un '''registre de page''' adressé implicitement. L'adresse finale est obtenue en concaténant ce registre avec l'adresse mémoire intégrée dans l’instruction. Le résultat est que la mémoire était découpée en blocs de 256 consécutifs, chacun pouvant servir de fenêtre de 256 octets. Une page est réservée pour la pile, la seconde, comme dit plus haut.
Formellement, ce mode d'adressage a des ressemblances avec la commutation de banques, une technique qu'on verra dans les chapitres sur l'espace d'adressage et la mémoire virtuelle. Mais ce n'en est pas du tout : le registre de page est utilisé uniquement pour les accès mémoire avec le mode d'adressage base + décalage, mais pas pour les autres accès mémoire, qui gèrent des adresses complètes. Notons que l'usage d'un registre de page dédié fait que celui-ci est adressé implicitement.
Il faut noter que la technique a été utilisée sur des processeurs 16 bits, pour contourner la petite taille des instructions. Un exemple est celui du HP 2100, un processeur 16 bits. Il avait un registre de page de 5 bits et encodait 10 bits d'adresse dans ses instructions. Ses instructions d'accès mémoire disposaient d'un bit qui choisit quel mode d'adressage utiliser. S'il était à 0, l'adressage absolu était utilisé, le registre de page n'était pas utilisé. Mais s'il était à 1, le registre de page était utilisé pour calculer l'adresse.
Une évolution de l'adressage précédent est le '''mode page direct'''. Avec lui, le registre de page est étendu et contient une adresse mémoire complète. L'adresse finale n'est pas obtenue par concaténation, mais en additionnant le registre de page avec l'adresse fournie par adressage absolu + décalage. Un exemple est celui des premiers processeurs Motorola, qui géraient des adresses courtes de 8 bits. L'adresse courte de 8 bits correspondait non pas aux 256 premiers octets de la mémoire, mais à une fenêtre de 256 octets déplaçable en mémoire. La position de la fenêtre de 256 octets était spécifiée par le registre de page de 16 bits, qui précisait l'adresse du début de la fenêtre, celle de sa première donnée.
Il s'agit donc formellement d'adressage base + décalage, à un détail près : il n'y a qu'un seul registre de base. Le fait que ce registre de base soit unique fait qu'il est adressé implicitement, on n'a pas à encoder le numéro/noms de registre dans l'instruction. Le registre de base est utilisé uniquement pour l'adressage absolu, pas pour les autres accès mémoire. S'il y a des ressemblances avec la segmentation, une technique de mémoire virtuelle qu'on abordera dans quelques chapitres, ce n'en est pas vu que le registre de base est utilisé seulement pour un mode d'adressage bien précis.
===Le ''pseudo-aliasing'' des registres des processeurs Intel x86===
Voyons maintenant le cas des anciens processeurs 8 bits d'Intel à savoir l'Intel 4004, 4040, 8008 et 8080. Le Z80, un processeur inspiré des CPU Intel 8 bits, est aussi concerné. Avant de poursuivre, parlons des registres de ces processeurs. Les premiers CPU Intel incorporaient 7 registres de 8 bits nommés A, B, C, D, E, F, H, L, SP. Ils correspondent respectivement à : l'accumulateur A ; six registres nommés B, C, D, E, H et L ; le registre d'état F ; le pointeur de pile SP. Le Z80 ajoute deux registres d'indice X et Y. De plus, le Z80 dispose de registres d'interruption, qui sont en quelque sorte des copies des registres A, B, C, D, E, F, H, L. Le tout est illustré dans le tableau ci-dessous.
{|class="wikitable" style="text-align:center;"
|-
!
! Registres des CPU Intel
! Registres supplémentaires du Z80
|-
! Accumulateur
| A
| A'
|-
! Registre d'état
| F
| F'
|-
! Registres généraux
| B, C, D, E, H, L
| B', C', D', E', H', L'
|-
! Pointeur de pile
| colspan="2" | SP (sauf pour le 8008)
|-
! Registres d'indice
|
| X et Y
|}
Le 8008 incorpore une pile d'appel de 7 adresses, dans le processeur lui-même. Il en est de la même avec le 4004 et le 4040, comme on le verra dans la section sur les processeurs 4 bits. Mais le 8080 et le 8085 ont remplacé le tout par un simple pointeur de pile, afin d'avoir une véritable pile d'appel. Autant c'est impossible d'avoir une pile d'appel avec seulement 256 octets de mémoire, autant on peut se le permettre avec 65 536 adresses.
Pour gérer des adresses de 16 bits, ils auraient pu utiliser des registres d'adresse séparés, mais on préféré un système de '''pseudo-''aliasing'' de registres'''. Formellement, c'est un système qui concatène deux registres 8 bits pour obtenir une adresse de 16 bits. L’appariement a lieu lors de certaines opérations bien précises, qui n'ont de sens que pour les adresses : la lecture/écriture en mémoire, et l'incrémentation.
Il y avait cependant des contraintes quant aux paires de registres possibles, toutes les paires de registres n'étaient pas autorisées. Les CPU concernés sont donc des processeurs hybrides accumulateur-registre généraux. L'accumulateur ne peut pas être appairé, seuls les registres généraux le peuvent. Le Z80 autorise plus de paires que les CPU Intel. Voici les paires de registres qui pouvaient servir d'adresse 16 bits :
* Les CPU 8008 d'Intel autorisait une seule paire formée des registres H et L.
* Les autres processeurs, à savoir le 8080, le 8085 et le Z80, autorisaient : les paires BC, DE et HL.
Le 8008 ne gérait que des opérations sur 8 bits. Mais le 8080 et le 8085 ont ajouté des instructions 16 bits qui agissaient sur des paires de registre, que le Z80 a repris. Une paire de registres est considérée comme un registre unique de 16 bits pour certaines opérations arithmétiques, dont l'incrémentation. Voici la liste des instructions concernées :
* INC et DEC pour l'incrémentation et la décrémentation ;
* DAD : additionne le registre HL avec une autre paire (Hl inclus) ;
* LXI : copie une constante immédiate dans une paire de registres ;
* LHLD : lit 16 depuis la mémoire et l'enregistre dans une paire de registres ;
* SHLD : copie 16 bits depuis une paire de registres et l'enregistre en mémoire ;
* PUSH et POP : empile ou dépilent une paire de registre sur la pile ;
* XTHL : échange la paire HL avec les 16 bits au sommet de la pile d'appel ;
* XCHG : échange le contenu de la paire HL et DE.
Pour résumer, le processeur avait des instructions LOAD, STORE, PUSH et POP adaptées pour gérer des paires de registre. De plus, l'instruction XCHG permettait d’échanger le contenu des paires DE et HL. L'instruction a été étendue sur les processeurs 16 bits pour échanger tous les registres. Mais l'implémentation était alors différente. L'incrémentation sur une paire de 16 bit était très utile, car les adresses sont souvent incrémentées quand on parcours un tableau. Ces instructions nous donnent quelques indices sur ce qu'il y a dans le processeur.
Le système de pseudo-aliasing a un impact sur le banc de registre. Le banc de registre regroupe les registres généraux et le pointeur de pile, mais ne contient pas l'accumulateur. Les contraintes sur les paires de registres possibles ne s'expliquent que d'une seule manière : le banc de registre contient des registres de 16 bits, une paire de registres 8 bits est mémorisée dans un registre unique. Il faut donc faire une différence entre les registres architecturaux de 8 bits, et les registres réels de 16 bits.
Le banc de registre a un port de 8 bits pour les données, qui est fabriqué à partir d'un port 16 bits auquel on a rajouté un multiplexeur pour choisir soit l'octet de poids faible, soit l'octet de poids fort. Le bus de données fait 8 bits, ce qui fait que les instructions LOAD, STORE, PUSH et POP pour paires 16 bits sont réalisées en deux fois : on lit/écrit l'octet de poids faible, puis celui de poids fort. Par contre, le bus d'adresse fait bien 16 bits. Cela suggère que le banc de registre dispose d'un port de 16 bits dédié aux adresses, en plus du port de données 8 bits.
[[File:Architecture d'un CPU 8-16 bits avec un banc de registre double port.png|centre|vignette|upright=2|Architecture d'un CPU 8-16 bits avec un banc de registre double port]]
L'incrémentation d'une paire 16 bits ne coute rien à implémenter, ou presque. En effet, le processeur incorpore un incrémenteur 16 bits pour le ''program counter'', qui est relié au bus d'adresse. L'idée est de rentabiliser cet incrémenteur, en lui permettant d'incrémenter des données/adresses de 16 bits obtenues via pseudo-aliasing. De même, il peut être utilisé pour incrémenter le pointeur de pile, voire un compteur de rafraichissement mémoire (pour rappel, le rafraîchissement mémoire demande de balayer la mémoire d'adresse en adresse et été fait par le CPU à l'époque). Pour cela, il suffit de connecter le ''program counter'', le banc de registre, et l'incrémenteur, via un bus dédié.
[[File:Calcul d'adresse par ALU dédiée avec PC séparé.png|centre|vignette|upright=2|Calcul d'adresse par ALU dédiée avec PC séparé]]
Notez qu'on peut encore simplifier le tout en placant le ''program counter'' dans le banc de registre, ce qui ne gênera pas le travail de l'incrémenteur mais simplifiera le câblage au bus d'adresse. Ce n'était pas systématique, certains processeurs mettaient le ''program counter'' dans le banc de registre, d'autres non.
: Inclure le ''program counter'' dans le banc de registre permet parfois de remplir un vide. Par exemple, sur un processeur avec 12 registres, le banc de registre devrait faire idéalement 16 registres, inclure le ''program counter'' dedans fait monter le tout à 13.
[[File:Architecture d'un CPU 8-16 bits.png|centre|vignette|upright=2|Architecture d'un CPU 8-16 bits]]
Les processeurs Intel 8 bits, à savoir le 8008, le 8080 et le 8085 ; mettaient le ''program counter'' dans le banc de registre. Vous avez donc toutes les armes pour comprendre leur micro-architecture. Par exemple, voici la micro-architecture du processeur 8080. Remarquez le banc de registre, qui contient tous les registres sauf l'accumulateur et le registre. Il a deux ports : un pour les adresses et un pour les données. Notez le dé-multiplexeur sur le port de donnée. Pour le reste, il s'agit d'une architecture à accumulateur hybride des plus classiques.
[[File:Intel 8080 arch.svg|centre|vignette|upright=3|Microarchitecture de l'Intel 8080.]]
Le Z80 est un processeur inspiré du design des processeurs Intel 8 bits, mais avec pas mal d'améliorations. Un point particulier de ce processeur est son banc de registre. Il contient tous les registres du processeur, y compris l'accumulateur et le registre d'état ! Les seuls registres en-dehors du banc de registre sont le ''program counter'' et un compteur de rafraichissement mémoire IR.
Un autre point particulier est que les registres dans le banc de registres avaient une copie séparée accessible uniquement pour les interruptions, via fenêtrage de registres. Et l'accumulateur et le registre d'état étant dans le banc de registre, il y avait deux accumulateurs et deux registres d'état. Les registres A, B, C, D, E et F étaient dupliqués, par le pointeur de pile ni les registres d'indice. Les copies des registres étaient nommées A', B', C', D', E' et F'.
Le Z80 supportait des instructions d'échange de registre en plus des CPU Intel 8 bits. L'instruction EX peut échanger soit le contenu des paires D,E et H,F, soit la paire A,F avec la paire A',F'. L'instruction EXX échange les paires BC, DE, HL avec les paires BC', DE', HL'. En faisant cela, le programmeur pouvait utiliser deux fois plus de registres généraux s'il n'utilisait pas les interruptions. L'échange de paires se fait sans copies de registres, mais simplement en modifiant l'adresse envoyée sur le banc de registre. Pour cela, plusieurs bascules mémorisent des bits qui indiquent si les paires ont été échangées ou non. Il y a une bascule pour les paires DE , HL ; une autre pour les paires A,F et paire A',F', une dernière pour l'instruction EXX. En combinant ces bascules avec les noms de registres envoyés par le séquenceur, on peut échanger les paires de registres.
==Le cas particulier des processeurs 4 bits : le 4004 d'Intel==
L'Intel 4004 était le tout premier micro-processeur. Il s'agissait d'un microprocesseur de 4 bits, basé sur une architecture à accumulateur. Il disposait d'un accumulateur et de 16 registres d'indice, tous de 4 bits. Il faisait des calculs sur des données de 4 bits, appelées des nibbles. Cependant, sur ses 46 instructions machines supportées, 41 agissaient sur des opérandes de 8 bits, les 5 restantes sur des opérandes de 16 bits. Simplement, les calculs se faisaient en deux fois, en échangeant des données entre mémoire RAM et accumulateur.
Le 4004 est un circuit intégré avec peu de broches. Il dispose notamment d'un bus de données/adresse, qui est multiplexé, c’est-à-dire qu'il sert alternativement de bus de données et de bus d'adresse selon les besoins. Le bus de commande mémoire fait 5 bits, dont 4 pour les chips de RAM, un pour la ROM. Les adresses sont codées sur 12 bits, les données sur 4 et les instructions sur 8 bits. L'envoi d'une adresse sur le bus se fait en plusieurs fois, de même que la lecture d'une instruction. Il s'agit là d'une adaptation pour outrepasser les limitations d'un processeur 4 bit.
[[File:Intel 4004 processor pinout.png|centre|vignette|upright=2|Broches de l'Intel 4004. Nous verrons à quoi elles servent plus bas.]]
===L'espace d'adressage de l'Intel 4004===
Les adresses du processeur sont sur 12 bits, ce qui fait 4096 adresses différentes. Elles regroupent à la fois la ROM et la mémoire RAM, vu que l'architecture est une sorte de mélange bizarre entre une architecture Von Neumann et Harvard. Le processeur gère bien deux espaces d'adressage séparés, mais la RAM et la ROM sont reliés au même bus. La sortie CM-ROM du processeur indique si l'adresse envoyée correspond à la RAM ou la ROM. Un circuit de décodage d'adresse active ou désactive la RAM selon la valeur de ce bit, l'inverse pour la ROM, en agissant sur leurs bits Chip Select. Seule la RAM ou la ROM répondent alors à l'adresse.
Pour ce qui est de la RAM, le circuit de décodage d'adresse pouvait gérer au maximum 1024 adresses différentes, chacune contenant un nibble. Pour cela, le CPU 4004 était relié à une ou plusieurs RAM externes, des Intel 4002. Chaque Intel 4002 contenait 64 nibbles de données, plus 16 nibbles de statut qu'on ne détaillera pas ici. Les nibbles de statut étaient accessibles en utilisant des instructions d'entrée-sortie, donc pas avec des lectures/écritures mémoire. Les 64 nibbles de données sont découpés en 4 groupes de 16 nibbles. Le CPU pouvait être relié à maximum 16 Intel 4002, ce qui fait 1024 nibbles de données et 256 nibbles de statut. L'ensemble permet de remplir l'espace d'adressage de 1024 adresses.
===Le registre de page et le pseudo-aliasing des registres===
Sélectionner une adresse mémoire utilisait un mélange entre pseudo-aliasing et registre de page. Pour les données, les 1024 adresses étaient découpées en 4 pages de 256 adresses. Pour la ROM, les 4096 adresses étaient découpées en 16 pages de 256 adresses. Localiser une donnée dans une page ne requiert que 8 bits, 2/4 bits supplémentaires permettent de sélectionner la page voulue. Le registre de page était dans le processeur lui-même, et était relié aux sorties du processeur nommées CM-RAM 0, 1, 2 et 3. Les 4 sorties encodaient un nombre qui permet de sélectionner le numéro de page voulu.
Le registre de page fait 5 bits : un pour distinguer RAM et ROM, 4 bits pour sélectionner la page voulue. L'avantage est que la carte mère gère au maximum 16 chips de RAM, ce qui colle parfaitement avec les 4 utilisés pour sélectionner une page. Un chip de RAM correspond à une page, et chacun est activé ou désactivé suivant la page sélectionnée. Pour cela, il suffit d'ajouter un décodeur sur la carte mère, qui prend les 4 bits du registre de page et fournit les signaux Chip Select aux différents chips de RAM.
Reste alors à utiliser les 8 bits d'adresse à l'intérieur d'un chip de RAM. Le 4004 permettait de concaténer deux registres d'indice de 4 bits pour former une adresse de 8 bits. Les instructions d'accès mémoire pouvaient ainsi préciser une paire de registre d'indice pour préciser quelle adresse lire/écrire. Idem pour les branchements indirects : le processeur supportait une instruction de branchement indirect qui précisait l'adresse dans une paire de registres d'indice. Les registres d'indice sont donc assez mal nommés sur cette architecture, vu qu'ils peuvent servir soit de registre d'indice, soit de demi-registre d'adresse. Il s'agit là du système de pseudo-aliasing des registres, mais appliqué aux registres d'indice.
L'Intel 4004 gérait deux instructions pour gérer les adresses mémoires. La première, l'instruction DCL (''Designate Command Line'') configure le registre de page. Elle prend en entrée un numéro de page et le copie dans le registre de page. L'opérande peut provenir d'un registre d'indice ou de l'accumulateur. La seconde, l'instruction SRC (''Send Register Control'') concatène deux registres d'indice pour obtenir une adresse de 8 bits. Un accès mémoire se fait donc en maximum trois instructions : une qui configure le registre de page si ce n'est pas déjà fait, une instruction SRC pour envoyer l'adresse, et une troisième instruction qui dit s'il faut faire une lecture ou une écriture.
===La microarchitecture de l'Intel 4004===
Il incorporait une pile d'adresse de retour intégrée au processeur. La pile d'adresse acceptait exactement 3 adresses maximum. Elle était regroupée avec le ''program counter'' dans un banc de registre, de 4 registres. Le ''program counter'' et le pointeur de pile faisaient chacun 12 bits, soit trois nibble. Ils étaient incrémentés par un incrémenteur dédié.
SI on omet le registre de page et la pile d'adresse, le 4004 est une architecture à accumulateur des plus classiques, avec un bus interne unique, un banc de registre pour les registres d'indices, un accumulateur relié à une unité de calcul. Les registres d'indice étaient dans un banc de registre séparés, car ils faisaient 4 bits chacun, contrairement au pointeur de pile et le ''program counter''. Un détail important est que les bancs de registres du 4004 étaient implémentés avec de la DRAM, et non des registres usuels fabriqués avec des bascules 1 bit.
[[File:Microarchitecture de l'Intel 4004.png|centre|vignette|upright=2.5|Microarchitecture de l'Intel 4004]]
<noinclude>
{{NavChapitre | book=Fonctionnement d'un ordinateur
| prev=Les architectures à pile et mémoire-mémoire
| prevText=Les architectures à pile et mémoire-mémoire
| next=Les processeurs de traitement du signal
| nextText=Les processeurs de traitement du signal
}}
</noinclude>
eoa1lkyqausixrc3c2np9nhihnvbqe0
765754
765753
2026-05-02T01:31:33Z
Mewtow
31375
/* Les microcontrôleurs Intel 8051/8031 */
765754
wikitext
text/x-wiki
Nous avons déjà abordé la notion de processeur 8, 16, 32, 64 bits. Elle désigne la taille des registres généraux, ou de l'accumulateur. De nos jours, les processeurs 32 et 64 bits sont la norme, mais les premiers micro-processeurs étaient des processeurs 4 et 8, avant de passer rapidement au 16 bits. La raison est que leur budget en transistor limité faisait qu'on ne pouvait pas utiliser une ALU trop grande : une ALU 8 bit prend deux fois moins de place et de transistors qu'une ALU 16 bits. Cependant, les processeurs 8 bits avaient de sérieuses limitations qui étaient compensées par diverses solutions. Dans ce chapitre, nous allons faire une revue rapide des processeurs 8 bits et de leurs fonctionnalités.
La principale limitation des CPU 8 bits était l'adressage : des registres de 8 bits limitaient l'espace d'adressage à seulement 256 adresses, soit à peine 256 octets ! Intuitivement, on se dit que 256 octets est purement impraticable, on ne peut rien faire d'intéressant avec seulement 256 de RAM + ROM. Et c'est partiellement vrai. L'adage veut que 16 bits est la taille minimale intéressante, la limite à partir de laquelle on a assez de mémoire RAM/ROM pour coder des applications intéressantes. Mais 256 octets de RAM est largement suffisant sur de nombreux systèmes embarqués simples s'en accommodent : des caisses enregistreuses, des systèmes de régulation de feu de circulation, etc.
Pour les applications demandant plus de mémoire RAM, les CPU de l'époque contournaient la limitation de 256 octets de RAM avec de nombreux stratagèmes. Dans ce qui va suivre, nous allons séparer les CPU 8 bits selon qu'ils utilisent une architecture Harvard ou une architecture Von Neumann. La raison est qu'une architecture Harvard permet en soi de contourner partiellement ce problème d'adressage. Les choses sont plus compliquées avec une architecture Von Neumann.
==Les processeurs 8/16 bits à architecture Harvard ==
La première solution est d'utiliser une architecture Harvard. Le processeur 8 bit a alors deux espaces d'adressage : un pour la RAM, un autre pour la ROM. Et les deux utilisent des adresses de taille différente. La ROM est reliée à un bus d'adresse de 16 bits, alors que la RAM est elle connectée à un bus d'adresse de 8 bits. La RAM est donc limitée à 256 octets, alors que la ROM peut monter jusqu'à 64 kibioctets. Mine de rien, faire ainsi est largement suffisant.
Les processeurs 8 bits intègrent parfois les 256 octets de RAM directement dans le processeur. Vous noterez que 256 octets de RAM est très peu, comparable à ce qu'on trouve dans un banc de registres. Aussi, fusionner banc de registre et 256 octets de SRAM est une optimisation possible. Concrètement, cela veut dire que le processeur n'intégre pas une RAM séparée, mais a un banc de 256 registres de 8 bits. Beaucoup de processeurs en implémentent moins, avec par exemple seulement 64 octets de RAM, ou 32 octets, ou 128 octets.
L'avantage est que cela élimine le bus mémoire de la RAM, ce qui économise beaucoup de broches sur le circuit intégré du CPU. Et c'est ce qui explique que cette solution est beaucoup utilisée sur les microcontrôleurs peu puissants. Les exemples qui vont suivre devraient vous convaincre. Et pour les applications demandant plus de RAM, des optimisations permettent d'adresser plus de 256 octets de RAM. La plus connue est la commutation de banques, mais nous n'avons pas encore abordé celle-ci, et il faudra attendre le chapitre sur l'espace d'adressage pour cela.
Cependant, se limiter à 256 octets de RAM demande des compromis assez forts, pour économiser un maximum d'adresses mémoire. L'usage d'une architecture Harvard est une solution très intéressante, mais on peut aller plus loin en utilisant une architecture Harvard modifiée. Pour rappel, elles permettent de lire des constantes depuis la mémoire ROM. Les constantes manipulées par le programme sont mémorisées en ROM, lues depuis la ROM, au lieu d'être chargées en RAM. Une autre optimisation est d'utiliser un espace d'adressage séparé pour les entrées-sorties, à la place d'entrées-sorties mappées en mémoire qui détournent des adresses. Cependant, de nombreux processeurs 8 bits utilisent les entrées-sorties mappées en mémoire, comme on va le voir plus bas.
Avec ce genre de stratagèmes, 256 octets de RAM est largement suffisant sur de nombreux systèmes, à condition qu'on ait assez de ROM pour coder un programme digne de ce nom. Par exemple, de nombreux systèmes embarqués simples s'en accommodent : des caisses enregistreuses, des systèmes de régulation de feu de circulation, etc. Dans ce qui suit, nous allons voir quelques processeurs 8 bits de ce type. Deux exemples seront des microcontrôleurs très utilisés de nos jours.
===Le Fairchild F8 et la console de jeu Fairchild Channel F===
Un premier exemple est la Fairchild F8 de la défunte entreprise Fairchild Semiconductor. Il incorpore un processeur 8 bits, c’est-à-dire que le processeur fait des calculs sur des entiers de 8 bits maximum, une mémoire RAM de 64 octets, ainsi qu'une mémoire ROM de 1 kibioctet. Les 64 octets de RAM sont certes très peu, mais c'est suffisant pour certaines applications simples, comme les caisses automatiques de l'époque, ou des applications embarquées. Et de toute façon, il est possible d'ajouter de la mémoire RAM supplémentaire si les 64 octets de RAM intégrée ne suffisent pas. Le système était donc modulaire, adaptable selon les besoins, peu cher pour son implémentation minimale sans RAM en plus.
Vu qu'il s'agit d'un des tout premiers ordinateurs, il est sorti à une époque où la technologie était rudimentaire. À cette époque, le processeur était composé de pièces détachées qu'il fallait souder ensemble pour obtenir un processeur fonctionnel. Ce n'est que plus tard qu'est apparu le micro-processeur, qui regroupe un processeur complet dans un seul circuit intégré. Le résultat est que le processeur du Fairchild F8 est coupé en deux, l'unité de calcul et l'unité de contrôle sont placés dans des pièces détachées séparés.
Le microcontrôleur est composé de trois à quatre pièces détachées, certaines étant optionnelles. La première est le '''3850 CPU''', qui regroupe l'unité de calcul et la mémoire RAM intégrée. La seconde est le PSU (''3851 Program Storage Unit''), qui regroupe la mémoire ROM et l'unité de contrôle, ''program counter'' inclut. S'il y a besoin d'utiliser plus de RAM, il faut ajouter un circuit d’interface mémoire, qui est au choix le ''3852 Dynamic Memory Interface'' (DMI) ou le ''3853 Static Memory Interface'', le premier étant connecté à une mémoire de type DRAM, l'autre à une SRAM (nous verrons ce que sont les DRAM et les SRAM dans le prochain chapitre).
[[File:Fairchild F8.png|centre|vignette|upright=2|Fairchild F8]]
Le système minimal est composé d'un PSU et d'un 3850, sans les circuits d'interface mémoire. Le tout donne un système avec un processeur 8 bit, 64 octets de RAM et 1 kibioctet de ROM, les deux mémoires étant intégrées dans le "processeur". Le processeur gérait 4 entrées-sorties, chacune étant reliée avec un bus de 8 bit au processeur. Au passage, en 1977, Mostek a créé un microcontrôleur qui regroupe un PSU et un 3850 : le Mostek 3870. Le système minimal n'avait pas de bus d'adresse, vu que la RAM était intégrée au processeur. C'est les 3852 et 3853 qui ajoutaient un bus d'adresse. Ils ajoutent un bus d'adresse de 16 bits, ce qui permet d'adresser 64 kibioctets de RAM.
[[File:Fairchild-Channel-F.jpg|vignette|un Fairchild Channel F]]
Le Fairchild F8 a été utilisé dans la Fairchild Channel F, une des toute première console de seconde génération, à savoir des consoles qui utilisaient des cartouches de jeu. Avant les consoles de seconde génération, les consoles étaient non-programmables. Elles étaient conçues pour faire tourner un jeu précis, aucun autre, le jeu étant implémenté dans leurs circuits.
La Fairchild Channel F est composé du système minimal, auquel on a ajouté une carte son rudimentaire et 2 kibioctets de mémoire vidéo. La mémoire vidéo sert uniquement pour afficher des images à l'écran : on écrit l'image à afficher dedans, un circuit vidéo se charge de l'afficher à l'écran automatiquement. Le processeur ne fait qu'écrire dans cette RAM vidéo, il ne peut pas en lire le contenu. De la RAM supplémentaire peut cependant être ajoutée dans les cartouches de jeu.
===Les microcontrôleurs PIC===
Les '''microcontrôleurs PIC''' regroupent des microcontrôleurs allant de microcontrôleurs 8 bits aux performances très faibles, à des microcontrôleurs 32 bits bien plus puissants. Les microcontrôleurs PIC sont très utilisés dans l'embarqué ou d'informatique industrielle. Ils sont vendus à des volumes assez impressionnants, plusieurs millions par an. Et si vous avez ou êtes en train de faire des études d'électronique, je parie que vous les avez déjà vus en classe, ou que ce ne saurait tarder. Dans ce qui suit, nous allons nous concentrer sur les microcontrôleurs PIC 8 bits, à savoir les PIC 16, 16 et 18. Les PIC 24, qui sont des microcontrôleurs 16 bits, ne seront pas abordés.
La mémoire ROM des PIC va de 1024 instructions à 4096 instructions. En comparaison, la mémoire RAM des microcontrôleurs PIC ne peut pas dépasser 256 adresses, et elle est encore plus petite en pratique sur certains modèles. Pour donner un exemple, le PIC16F84 a une RAM composée de 68 "registres" de 8 bits. Le terme "registres" devrait vous faire comprendre que les 256 octets de RAM sont en réalité un banc de registre de 256 registres d'un octet chacun. Vu que la RAM et le banc de registre sont fusionnés, il n'y a pas de différences entre nom/numéro de registre et adresse mémoire. Les registres sont donc adressables, on y accède en lisant/écrivant à une adresse mémoire bien précise.
Ce banc de registre contient des registres généraux, mais aussi des registres pour communiquer avec les ports d'entrée-sortie, des registres de contrôle, le ''program counter'', le registre d'état, et le pointeur de pile. Pour donner un exemple, sur les modèles 16F, l'espace d'adressage fait 128 octets, dont 32 sont réservés aux registres du processeur, ce qui fait que seuls 96 octets sont adressables comme de la RAM. Cela gaspille quelques adresses mémoire, mais permet une implémentation plus simple, avec une petite économie de registres et donc de transistors.
: Les PIC 18 peuvent adresser plus de 256 octets de RAM en utilisant la commutation de banques, une technique qui sera abordée dans plusieurs chapitres.
[[File:DocPIC16F84 3.png|centre|vignette|upright=3|Espaces d'adressage du PIC16F84.]]
Les PIC sont une architecture à accumulateur, ce qui permet d'utiliser un banc de registre à un seul port et simplifie grandement la conception du processeur. Il faut préciser que l'accumulateur n'est pas mappé en mémoire, sauf sur les modèles PIC 17, qui mappé l'accumulateur en mémoire RAM ! Leur implémentation de l'accumulateur ajoute une petite subtilité : le résultat d'une opération arithmétique peut être enregistré ailleurs que dans l'accumulateur. Le résultat peut aussi remplacer la seconde opérande, celle lue en mémoire RAM. Dit autrement, le résultat est enregistré dans l'adresse mémoire source. Les instructions de calcul ont le choix : un bit dans leur encodage précise où enregistrer le résultat.
{|
|-
|[[File:DocPIC16F84 4.png|centre|vignette|upright=2|Microarchitecture simplifiée d'un microcontroleur PIC (ici, un 16F84).]]
|[[File:DocPIC16F84 5.png|centre|vignette|upright=2|Microarchitecture simplifiée d'un microcontroleur PIC (ici, un 16F84), avec les branchements directs.]]
|}
La petite taille de la ROM d'un PIC n'est pas une surprise, car les architectures 8 bits sont conçues pour ne pas utiliser beaucoup de transistors et être très simples. Mais il faut adapter le jeu d'instruction, pour qu'il ait une bonne densité de code. Par exemple, il faut faire en sorte d'avoir des instructions assez courtes. Si les instructions font 16 bits au lieu de 32, on divise par deux le nombre de transistors nécessaire pour la mémoire ROM. Et le jeu d’instruction des PIC est adapté à cette contrainte.
Les microcontrôleurs PIC utilisent un jeu d'instruction propriétaire, dont les instructions sont très petites. Les premières versions du jeu d'instruction utilisaient des instructions codées sur 12 bits, dont 5 pour l'adresse mémoire de la seconde opérande. Pour les branchements, 3 bits étaient utilisés pour l'opcode, 9 pour l'adresse de destination. Par la suite, les instructions ont été étendues à 13 bits sur les PIC1670, puis à 14, 15 et 16 bits. Les adresses ont alors été élargies, ce qui permet d'adresser en peu plus de mémoire RAM.
Il est intéressant de regarder comment les PIC font pour obtenir des instructions aussi courtes. Premièrement, le fait d'utiliser une architecture à accumulateur, couplé à une RAM très petite aident grandement. Les architectures à accumulateur ont besoin de préciser un opcode et une adresse mémoire pour chaque instruction, pas besoin de préciser de noms de registres ni le mode d'adressage. La taille des adresses mémoire est censé être un problème pour la densité de code, mais les adresses d'un processeur 8 bits font 8 bits. On peut alors avoir un jeu d'instruction étoffé, en utilisant des instructions 16 bits, qui concatènent un opcode et une adresse mémoire, d'un octet chacun.
Mais d'autres optimisations permettent d'avoir une bonne densité de code. Les PIC ont des branchements pour les appels et retour de fonction. Les PIC incorporent une pile d'appel de retour, qui fait 2 à 8 adresses suivant les modèles. Elle permet d'économiser quelques registres, car la pile d'appel n'est pas mappée dans l'espace d'adressage, elle n'est pas adressable. On économise ainsi 2 à 8 registres, sur 32-256 registres. De plus, cela simplifie l'encodage des instructions d'appel/retour de fonction, qui n'ont pas à préciser où enregistre l'adresse de retour.
Les PIC n'ont pas d'instructions de branchement conditionnels, ils font avec une SKIP instruction et des branchements inconditionnels. Du moins, c'est le principe, car si vous regardez la liste des instructions ci-dessous, vous verrez qu'il n'y a pas d'instruction SKIP. À la place, les instructions SKIP sont fusionnées avec d'autres instructions. Elles sont notamment fusionnées avec les instructions d'incrémentation et de décrémentation. Les PIC supportent une incrémentation normale, une décrémentation normale, une décrémentation fusionnée avec une instruction SKIP, et une incrémentation fusionnée avec une instruction SKIP. Les deux dernières incrémentent/décrémentent l'accumulateur et SKIP l'instruction suivante si le résultat est zéro. Elles permettent de fortement simplifier l'implémentation des boucles qui s'exécutent tant que leur compteur atteint zéro.
Les PIC disposent d'instructions de manipulation de bit, pour tester/masquer un bit dans une opérande. Il y a en a 4 en tout : mettre à 0, mettre à 1, tester si bit = 1, tester si bit = 0. Les instructions qui testent un bit font le test et décident s'il faut skipper l'instruction suivante ou non. Il y a aussi deux instructions de rotation à gauche et droite, qui tiennent compte de la retenue mémorisée dans le registre d'état. Les instructions de décalages sont émulées avec une rotation suivie d'un ET bit à bit. Mentionnons aussi une instruction pour inverser deux ''nibbles'' dans un octet. De telles instructions sont très utiles pour manipuler les ports I/O.
Les modèles haute performance ajoutent des instructions d'addition avec retenue entrante, idem pour la soustraction. De telles instructions sont très utiles pour faire des additions/soustractions sur des opérandes de 16 bits. Le processeur a beau être un CPU 8 bits, il peut être utilisé pour faire des calculs 16 bits, la performance est alors amoindrie, mais ce n'est pas un problème pour les applications d'un tel microcontrôleur.
Les modèles initiaux, comme les PIC 10 et 12, ne supportaient pas les interruptions, mais c'est chose réglé sur les modèles plus récents. Ils ont même des registres séparés pour les interruptions et les programmes normaux. De plus, ils intègrent nativement un ''watchdog timer''.
{|class="wikitable" style="text-align:center"
|+ Jeu d'instruction des dodèles PCI 16
|-
! colspan="5" | Instructions diverses
|-
| colspan="3" | 00 0000 0000 0000 || NOP || Ne fait rien
|-
| colspan="3" | 00 0000 0000 1000 || RETURN || Instruction de retour pour une fonction
|-
| colspan="3" | 00 0000 0000 1001 || NOP || Instruction de retour pour une interruption
|-
| colspan="3" | 00 0000 0110 0011 || SLEEP || Mise en veille
|-
| colspan="3" | 00 0000 0110 0100 || CLRWDT || RESET le ''watchdog timer'', intégré dans le PIC
|-
! colspan="5" | Instructions de manipulation de bit
|-
| 0100 || Position du bit dans l'opérande || Adresse mémoire || BCF || Met le bit à 1
|-
| 0101 || Position du bit dans l'opérande || Adresse mémoire || BSF || Met le bit à 0
|-
| 0110 || Position du bit dans l'opérande || Adresse mémoire || BTFSC || Teste si le bit adressé est à 1
|-
| 0111 || Position du bit dans l'opérande || Adresse mémoire || BTFSS || Teste si le bit adressé est à 0
|-
! colspan="5" | Branchements
|-
| colspan="2" | 100 || Adresse mémoire || CALL || Appel de fonction
|-
| colspan="2" | 100 || Adresse mémoire || GOTO || Branchement inconditionnel
|-
! colspan="5" | Instructions logiques/arithmétiques avec opérande lue en mémoire RAM
|-
| colspan="5" | ''Le bit '''d''' dans l'opcode indique la destination : accumulateur ou adresse mémoire''.
|-
| colspan="2" | 0000001 || Adresse mémoire || MOVWF || Store (accumulateur vers destination)
|-
| colspan="2" | 000001d || Adresse mémoire || MOVWF || Met à zéro la destination (adresse ou registre)
|-
| colspan="2" | 000001d || Adresse mémoire || SUBWF || Soustraction
|-
| colspan="2" | 000010d|| Adresse mémoire || DECF || Décrémentation
|-
| colspan="2" | 000100d|| Adresse mémoire || IORWF || OU bit à bit
|-
| colspan="2" | 000101d|| Adresse mémoire || ANDWF || ET bit à bit
|-
| colspan="2" | 000110d || Adresse mémoire || XORWF || XOR bit à bit
|-
| colspan="2" | 000111d || Adresse mémoire || ADDWF VWF || Addition
|-
| colspan="2" | 001000d || Adresse mémoire || MOVF || LOAD
|-
| colspan="2" | 001001d || Adresse mémoire || COMF || NOT bit à bit
|-
| colspan="2" | 001010d || Adresse mémoire || INCF || Incrémentation
|-
| colspan="2" | 001011d || Adresse mémoire || DECFSZ || Décrémentation, puis instruction SKIP si résultat = 0
|-
| colspan="2" | 001100d || Adresse mémoire || RRF || Rotation à droite avec retenue entrante
|-
| colspan="2" | 001101d || Adresse mémoire || RLF || Rotation à gauche avec retenue entrante
|-
| colspan="2" | 001110d || Adresse mémoire || SWAPF || Echange deux ''niblle'' dans un octet
|-
| colspan="2" | 001111d || Adresse mémoire || INCFSZ || Incrémentation, puis instruction SKIP si résultat = 0
|-
! colspan="5" | Instructions logiques/arithmétiques avec constante immédiate
|-
| colspan="2" | 1100xx || Constante immédiate (8bits) || MOVLW || Copie constante dans accumulateur
|-
| colspan="2" | 1101xx || Constante immédiate (8bits) || RETLW || MOV fusionné avec un retour de fonction
|-
| colspan="2" | 111000 || Constante immédiate (8bits) || IORLW || OU
|-
| colspan="2" | 111001 || Constante immédiate (8bits) || ANDLW || ET
|-
| colspan="2" | 111010 || Constante immédiate (8bits) || XORLW || XOR
|-
| colspan="2" | 11110x || Constante immédiate (8bits) || SUBLW || Soustraction
|-
| colspan="2" | 11111x || Constante immédiate (8bits) || ADDLW || Addition
|}
Les PIC gèrent l'adressage absolu et immédiat, mais pas plus. L'adressage absolu, celui où l'adresse est intégrée dans l'instruction, est très simple à implémenter. Les adresses prennent moins d'un octet, vu que la taille de la RAM est très petite, les adresses sont très courtes, les intégrer dans des instructions elles-mêmes courtes n'est pas un problème. L'adresse est encodée sur 5 à 7 bits, selon le modèle, ce qui permet d'adresser entre 32 et 128 octets.
Les PIC ne supportent pas l'adressage indirect, mais peuvent l'émuler grâce à un '''registre d'adresse''' dédié. Il s'agit du registre FSR, qui mémorise l'adresse à lire/écrire. Il est possible de copier un pointeur dedans, qui provient soit de l'accumulateur, soit de la mémoire SRAM. Dans les deux cas, la donnée adressée est lue ou écrite dans un registre INDR, est un registre d’interfaçage rendu adressable. Le registre FSR est directement connecté sur le bus d'adresse.
Les modèles de base se débrouillent avec un registre FSR et un registre INDR, mais les modèles plus performants ont deux ou trois copies de chaque registre. Les modèles PIC18 ajoutent aussi des instructions LOAD/STORE qui émulent les modes d'adressage à post- ou pré-incrément/décrément, et le mode d'adressage "Base + Indice + Décalage", encore une fois en utilisant les registres FSR et INDR.
Avec tout ce qu'on vient de dire, vous devriez pouvoir comprendre la microarchitecture d'un PIC, qui est résumée dans ce schéma.
[[File:DocPIC16F84 all.png|centre|vignette|upright=2.5|Microarchitecture du PIC16F84.]]
===Les microcontrôleurs Intel 8051/8031===
[[File:Pinagem8031.jpg|vignette|Broches du 8051.]]
Les microcontrôleurs Intel 8051/8031 sont des microcontrôleurs 8 bits, commercialisés par Intel. Elle contient un processeur 8/16 bits, 4 kibioctets de mémoire ROM, une RAM de 128 octets. Niveau entrées-sorties, il contient un port série, ainsi que 4 ports d'un octet chacun sur lesquels il peut lire ou écrire. Il supporte des interruptions, avec un contrôleur d'interruption intégré. Il contient aussi deux ''timers'' de 16 bits chacun, qui déclenchent des interruptions quand ils tombent à zéro ou à une valeur configurable.
Ils ont de nombreuses ressemblances avec les microcontrôleurs PIC. Le processeur du 8051 est une architecture à accumulateur de 8 bits, ses registres sont mappés en mémoire RAM, il a un registre d'adresse dédié à l'adressage indirect et j'en passe. Mais il y a aussi des différences notables. Par exemple, le 8051 n'a pas de pile d'adresse de retour, contrairement aux processeurs PIC. Il fait autrement, à savoir qu'il gère une pile d'appel placée en mémoire RAM,ce qui est très différent. De même, il utilise deux accumulateurs nommés A et B.
Une autre différence est que les registres sont placés dans un banc de registre à part des 128 octets de SRAM. Il y a une SRAM séparée du banc de registre, contrairement à ce qu'on a sur les microcontrôleurs PIC. Par contre, les registres du processeur sont mappés en mémoire RAM, y compris les deux accumulateurs, le registre d'état, le ''program counter'', et bien d'autres. Mais le fait qu'ils soient séparés de la SRAM permet de les mapper dans l'espace d'adressage sans marcher sur les pieds de la SRAM. Vu que le processeur peut adresser 256 octets, mais n'a que 128 octets de SRAM, les registres sont mappés dans les 128 octets restants. Les entrées-sorties aussi sont mappées dans ces 128 octets restants.
L'ensemble utilise une architecture Harvard, contrairement à ce que pourrait faire croire le schéma ci-dessous.
[[File:Arkitektura mikro kontrollerit Intel 8051.png|centre|vignette|upright=2.5|Microcontrôleur 8051]]
Voyons maintenant la ''memory map'' de ce microcontroleur, pour la SRAM. Un point assez original est que 16 octets de la SRAM sont adressables bit par bit, à savoir que chaque bit a sa propre adresse. En tout, cela permet d'adresser 128 bits (16 adresses * 8 bits par octet adressé). L'intervalle bit-adressable va de l'adresse 32 (inclue) à l'adresse 47 (inclue).
Les 32 premières adresses sont réservées à la mémoire SRAM, c'est 32 octets de RAM utilisable à volonté par le programmeur. Les 16 adresses suivantes sont les 16 adresses bit-adressables mentionnées dans le paragraphe précédent. Les 96 octets suivants sont de la mémoire RAM adressable, affectée par défaut à la pile d'appel mais adressable via adressage direct si besoin. Les 128 octets de poids fort sont réservés aux registres du processeur et aux entrée-sorties mappées en mémoire.
[[File:Memory map du 8051.png|centre|vignette|upright=2|Memory map du 8051]]
Les 128 octets au sommet de l'espace d'adressage sont décrits dans le schéma ci-dessous. On voit que les deux accumulateurs sont mappés dedans, de même que le registre d'état PSW, le registre de configuration des interruptions IE (''Interrupt Enable''), et quelques autres. Les ports d'entrée-sortie sont aussi mappés dedans, que ce soit les 4 ports parallèles ou le port série. Les deux ''timers'' sont aussi mappés dedans, ainsi que leurs registres de configuration.
Une partie des octets sont bit-adressables, et cette partie inclus les registres du processeur et les ports I/O. Pour le dire autrement, chaque bit d'un port I/O a sa propre adresse mémoire, qui permet de le sélectionner. Par contre, les registres pour les ''timers'' ne sont pas dedans, sauf pour le troisième ajouté dans des extensions du 8051.
[[File:MFrey SFR MCS-51.svg|centre|vignette|upright=2|Memory map des 128 octets de poids fort du 8051]]
Pour ce qui est des instructions, le 8051 supporte les opérations de multiplications et de divisions, contrairement aux microcontrôleurs PIC qui se limitaient à l'addition et la soustraction. Une autre particularité est que le processeur incorpore une '''unité de calcul de 1 bit'''. Elle permet de faire des opérations sur des bits, avec 17 instructions possibles au total. L'ALU de 1 bit est reliée à un accumulateur de 1 bit et 32 registres de 1 bit. Elle peut lire des opérandes de 1 bit en mémoire RAM ou sur les ports d'entrée-sortie, pour les portions qui sont bit-adressables.
Le processeur supporte aussi l'adressage indirect dans la SRAM, mais celui-ci fonctionne différemment comparé aux microcontrôleurs PIC. Il n'y a pas deux registres d'adresse dédiés, séparés des autres. À la place, l'adressage indirect est implémenté normalement, en utilisant les registres généraux. Par contre, il y a une contrainte : seuls les deux premiers registres R0 et R1 sont utilisables. En clair, seuls ces deux registres peuvent contenir une adresse, un pointeur. C'est là une différence liée au fait que le 8051 a un banc de registre séparé.
Le 8051 peut communiquer avec une mémoire RAM externe, en plus de la SRAM interne. Pour cela, le processeur du 8051 avait un espace d'adressage séparé pour la RAM externe, capable d'adresser 64 kibioctets. Communiquer avec cet espace d'adressage se faisait avec des instructions d'accès mémoire séparées des autres, pas les LOAD/STORE normaux. Par exemple, l'instruction MOVX lisaient une donnée dans cet espace d'adressage, et la copiait dans l'accumulateur ou la SRAM. Pour envoyer l'adresse à lire/écrire à cette RAM externe, le processeur incorporait un registre d'adresse dédié. Il s'agit du '''registre DPTR''', qui contient une adresse de 16 bits. Le processeur devait copier l'adresse à lire/écrire dedans, puis lancer l'instruction MOVX.
===Le HP Nanoprocessor : un processeur sans ALU===
Un dernier exemple est celui du processeur HP Nanoprocessor, de l'entreprise HP. Il a été commercialisé en 1974, en même temps que les premiers micro-processeurs d'Intel. Tous les processeurs de l'époque étaient des processeurs 8 bits et le HP Nanoprocessor ne faisait pas exception. Ce n'était pas un processeur hautes performances, il était destiné à des applications d'informatique industrielle ou embarquée. D'ailleurs, il utilisait des transistors de type metal-gate, peu performants, là où ses contemporains utilisait des transistors en silicium, plus performants.
Mais une caractéristique qui rend cela encore plus claire est qu'il n'y a pas d'ALU ! En effet, ce processeur est incapable de faire des additions, des soustractions ou autres opérations simples ! Il est cependant capable d'effectuer des incrémentations et décrémentations, des décalages, des opérations logiques comme des ET/OU/NON/XOR et bien d'autres. Il supporte en tout 48 instructions, avec un support limité des modes d'adressage indirects. Les instructions de branchement étaient des instructions SKIP, il n'y avait pas d'instructions de branchement généralistes.
Pour ce qui est des registres, il disposait de 16 registres de 8 bits et d'un accumulateur. Niveau mémoire, il était relié à une mémoire ROM, rien de plus. Il n'avait de RAM supplémentaire qu'on pouvait lui adjoindre, il devait se débrouiller avec seulement ses registres. Et cela ne posait pas de problèmes pour son usage. Seul le mode d'adressage indirect à registre est supporté, il n'y a pas de registres d'indices. Ce mode d'adressage permet de lire des données en mémoire ROM, la ROM pouvant contenir des tableaux de valeurs constantes.
: Il est possible de lui adjoindre de la RAM via les ports d'entrée-sortie, ainsi qu'une ALU, mais RAM et ALU sont traités comme des périphériques avec lesquels on communique, ils ne sont pas intégrés au processeur.
Niveau micro-architecture, il incorporait une unité de calcul logique et un circuit comparateur. Le comparateur était un circuit comparateur série des plus basiques, qui était utilisé pour les instructions de branchement et associées. L'unité de calcul logique gérait des incrémentations/décrémentation, des décalages, les opérations logiques et quelques autres. L'unité de calcul logique était bit-slicée, à savoir conçue en assemblant 8 ALU de 1 bit chacune, enchainées en série. Le tout était combiné à des circuits de ''carry skip''.
[[File:Unité de calcul du HP nanonprocessor.png|centre|vignette|upright=2|Unité de calcul du HP nanoprocessor]]
Son unité de décodage d'instruction était très simple, essentiellement basée sur des portes NOR, grâce à un encodage efficace des instructions machine. Le ''program counter'' fait 11 bits, ce qui permet d'adresser une ROM de 2 kibioctets. Le ''program counter'' était relié à un circuit incrémenteur qui gérait les isntructions SKIP (il pouvait incrémenter le ''program counter'' par pas de 1 ou de 2 en cas de SKIP). Le processeur contient aussi deux registres, qui servent en quelque sorte de pile d'adresse de retour. Un premier registre mémorise l'adresse de retour d'une fonction, l'autre mémorise le ''program counter'' lors d'une interruption, pour savoir où brancher à la fin de l'interruption.
[[File:HP nanoprocessor.png|centre|vignette|upright=2.5|HP nanoprocessor]]
Fait intéressant, le concepteur du processeur a gracieusement donné les masques utilisés pour graver le silicium du processeur au site [https://www.cpushack.com/ CPU Shack]. Les masques en question sont disponibles ici :
* [https://www.cpushack.com/2020/08/20/hp-nanoprocessor-mask-set/ HP NanoProcessor Mask Set]
* [https://www.cpushack.com/2020/08/09/the-forgotten-ones-hp-nanoprocessor/ The Forgotten Ones: HP Nanoprocessor]
Les masques ont été analysés par Ken Shirrif dans cet article de blog :
* [https://www.righto.com/2020/09/hp-nanoprocessor-part-ii-reverse.html HP Nanoprocessor part II: Reverse-engineering the circuits from the masks]
==Les processeurs 8/16 bits à architecture Von Neumann==
L'usage d'une architecture Harvard est une solution pour adresser plus de mémoire avec des CPU 8 bits. Mais plusieurs microprocesseurs commerciaux n'utilisaient pas cette solution. À la place, c'était des architectures Von Neumann, mais qui étaient capables de gérer des adresses de 16 bits. Les données faisaient 8 bits, les registres faisaient 8 bits, mais quelques techniques permettaient de gérer des adresses de 16 bits. Nous parlerons de '''processeurs 8/16 bits''' pour les désigner, et nous allons les étudier à part.
Un point important est que la gestion d'adresses de 16 bits permet d'adresser 64 kibioctets, qui peuvent être remplis avec de la RAM et de la ROM. On a donc le meilleur des mondes : 64 kibioctets de mémoire, mais avec des données de 8 bits et les économies de circuit qui vont avec. L'avantage est que le processeur peut maintenant gérer une vraie pile d'appel, pas seulement une pile d'adresse de retour. Il lui suffit pour cela d'intégrer un pointeur de pile codé sur 16 bits.
===Les modes d'adressage par page des CPU Motorola===
Les processeurs Motorola 8 bits étaient des processeurs 8 bits avec un bus d'adresse de 16 bits. C'était des processeurs à accumulateur incorporant deux registres d'indice, un registre d'état, un pointeur de pile, et un ''program counter''. Tous les registres sont reliés au bus d'adresse, sauf le registre d'état et l’accumulateur. Tous les registres font 8 bits, sauf le ''program counter''. La pile est câblée pour être dans un bloc de 256 octets compris entre l'adresse 1 0000 0000 et l'adresse 1 1111 1111, ce qui fait que son adressage se fait avec un seul octet.
[[File:6502-architecture.svg|centre|vignette|upright=1.5|Architecture simplifiée du 6502.</br> X et Y : registres d'indice ;</br> S : le pointeur de pile ;</br> A : accumulateur ;</br>P : registre d'état.</br>]]
Les processeurs Motorola 8 bits utilisaient une méthode simple pour adresser 64 kibioctets de RAM, avec des registres de 8 bits. Pour cela, ils utilisaient une variante de l'adressage base + décalage. Elle améliore l'adressage absolu, qui intègre l'adresse à lire/écrire dans l'instruction elle-même. L'adresse en question est de 8 bits et n'encode que les 8 bits de poids faible de l'adresse, les 8 bits de poids fort sont dans un '''registre de page''' adressé implicitement. L'adresse finale est obtenue en concaténant ce registre avec l'adresse mémoire intégrée dans l’instruction. Le résultat est que la mémoire était découpée en blocs de 256 consécutifs, chacun pouvant servir de fenêtre de 256 octets. Une page est réservée pour la pile, la seconde, comme dit plus haut.
Formellement, ce mode d'adressage a des ressemblances avec la commutation de banques, une technique qu'on verra dans les chapitres sur l'espace d'adressage et la mémoire virtuelle. Mais ce n'en est pas du tout : le registre de page est utilisé uniquement pour les accès mémoire avec le mode d'adressage base + décalage, mais pas pour les autres accès mémoire, qui gèrent des adresses complètes. Notons que l'usage d'un registre de page dédié fait que celui-ci est adressé implicitement.
Il faut noter que la technique a été utilisée sur des processeurs 16 bits, pour contourner la petite taille des instructions. Un exemple est celui du HP 2100, un processeur 16 bits. Il avait un registre de page de 5 bits et encodait 10 bits d'adresse dans ses instructions. Ses instructions d'accès mémoire disposaient d'un bit qui choisit quel mode d'adressage utiliser. S'il était à 0, l'adressage absolu était utilisé, le registre de page n'était pas utilisé. Mais s'il était à 1, le registre de page était utilisé pour calculer l'adresse.
Une évolution de l'adressage précédent est le '''mode page direct'''. Avec lui, le registre de page est étendu et contient une adresse mémoire complète. L'adresse finale n'est pas obtenue par concaténation, mais en additionnant le registre de page avec l'adresse fournie par adressage absolu + décalage. Un exemple est celui des premiers processeurs Motorola, qui géraient des adresses courtes de 8 bits. L'adresse courte de 8 bits correspondait non pas aux 256 premiers octets de la mémoire, mais à une fenêtre de 256 octets déplaçable en mémoire. La position de la fenêtre de 256 octets était spécifiée par le registre de page de 16 bits, qui précisait l'adresse du début de la fenêtre, celle de sa première donnée.
Il s'agit donc formellement d'adressage base + décalage, à un détail près : il n'y a qu'un seul registre de base. Le fait que ce registre de base soit unique fait qu'il est adressé implicitement, on n'a pas à encoder le numéro/noms de registre dans l'instruction. Le registre de base est utilisé uniquement pour l'adressage absolu, pas pour les autres accès mémoire. S'il y a des ressemblances avec la segmentation, une technique de mémoire virtuelle qu'on abordera dans quelques chapitres, ce n'en est pas vu que le registre de base est utilisé seulement pour un mode d'adressage bien précis.
===Le ''pseudo-aliasing'' des registres des processeurs Intel x86===
Voyons maintenant le cas des anciens processeurs 8 bits d'Intel à savoir l'Intel 4004, 4040, 8008 et 8080. Le Z80, un processeur inspiré des CPU Intel 8 bits, est aussi concerné. Avant de poursuivre, parlons des registres de ces processeurs. Les premiers CPU Intel incorporaient 7 registres de 8 bits nommés A, B, C, D, E, F, H, L, SP. Ils correspondent respectivement à : l'accumulateur A ; six registres nommés B, C, D, E, H et L ; le registre d'état F ; le pointeur de pile SP. Le Z80 ajoute deux registres d'indice X et Y. De plus, le Z80 dispose de registres d'interruption, qui sont en quelque sorte des copies des registres A, B, C, D, E, F, H, L. Le tout est illustré dans le tableau ci-dessous.
{|class="wikitable" style="text-align:center;"
|-
!
! Registres des CPU Intel
! Registres supplémentaires du Z80
|-
! Accumulateur
| A
| A'
|-
! Registre d'état
| F
| F'
|-
! Registres généraux
| B, C, D, E, H, L
| B', C', D', E', H', L'
|-
! Pointeur de pile
| colspan="2" | SP (sauf pour le 8008)
|-
! Registres d'indice
|
| X et Y
|}
Le 8008 incorpore une pile d'appel de 7 adresses, dans le processeur lui-même. Il en est de la même avec le 4004 et le 4040, comme on le verra dans la section sur les processeurs 4 bits. Mais le 8080 et le 8085 ont remplacé le tout par un simple pointeur de pile, afin d'avoir une véritable pile d'appel. Autant c'est impossible d'avoir une pile d'appel avec seulement 256 octets de mémoire, autant on peut se le permettre avec 65 536 adresses.
Pour gérer des adresses de 16 bits, ils auraient pu utiliser des registres d'adresse séparés, mais on préféré un système de '''pseudo-''aliasing'' de registres'''. Formellement, c'est un système qui concatène deux registres 8 bits pour obtenir une adresse de 16 bits. L’appariement a lieu lors de certaines opérations bien précises, qui n'ont de sens que pour les adresses : la lecture/écriture en mémoire, et l'incrémentation.
Il y avait cependant des contraintes quant aux paires de registres possibles, toutes les paires de registres n'étaient pas autorisées. Les CPU concernés sont donc des processeurs hybrides accumulateur-registre généraux. L'accumulateur ne peut pas être appairé, seuls les registres généraux le peuvent. Le Z80 autorise plus de paires que les CPU Intel. Voici les paires de registres qui pouvaient servir d'adresse 16 bits :
* Les CPU 8008 d'Intel autorisait une seule paire formée des registres H et L.
* Les autres processeurs, à savoir le 8080, le 8085 et le Z80, autorisaient : les paires BC, DE et HL.
Le 8008 ne gérait que des opérations sur 8 bits. Mais le 8080 et le 8085 ont ajouté des instructions 16 bits qui agissaient sur des paires de registre, que le Z80 a repris. Une paire de registres est considérée comme un registre unique de 16 bits pour certaines opérations arithmétiques, dont l'incrémentation. Voici la liste des instructions concernées :
* INC et DEC pour l'incrémentation et la décrémentation ;
* DAD : additionne le registre HL avec une autre paire (Hl inclus) ;
* LXI : copie une constante immédiate dans une paire de registres ;
* LHLD : lit 16 depuis la mémoire et l'enregistre dans une paire de registres ;
* SHLD : copie 16 bits depuis une paire de registres et l'enregistre en mémoire ;
* PUSH et POP : empile ou dépilent une paire de registre sur la pile ;
* XTHL : échange la paire HL avec les 16 bits au sommet de la pile d'appel ;
* XCHG : échange le contenu de la paire HL et DE.
Pour résumer, le processeur avait des instructions LOAD, STORE, PUSH et POP adaptées pour gérer des paires de registre. De plus, l'instruction XCHG permettait d’échanger le contenu des paires DE et HL. L'instruction a été étendue sur les processeurs 16 bits pour échanger tous les registres. Mais l'implémentation était alors différente. L'incrémentation sur une paire de 16 bit était très utile, car les adresses sont souvent incrémentées quand on parcours un tableau. Ces instructions nous donnent quelques indices sur ce qu'il y a dans le processeur.
Le système de pseudo-aliasing a un impact sur le banc de registre. Le banc de registre regroupe les registres généraux et le pointeur de pile, mais ne contient pas l'accumulateur. Les contraintes sur les paires de registres possibles ne s'expliquent que d'une seule manière : le banc de registre contient des registres de 16 bits, une paire de registres 8 bits est mémorisée dans un registre unique. Il faut donc faire une différence entre les registres architecturaux de 8 bits, et les registres réels de 16 bits.
Le banc de registre a un port de 8 bits pour les données, qui est fabriqué à partir d'un port 16 bits auquel on a rajouté un multiplexeur pour choisir soit l'octet de poids faible, soit l'octet de poids fort. Le bus de données fait 8 bits, ce qui fait que les instructions LOAD, STORE, PUSH et POP pour paires 16 bits sont réalisées en deux fois : on lit/écrit l'octet de poids faible, puis celui de poids fort. Par contre, le bus d'adresse fait bien 16 bits. Cela suggère que le banc de registre dispose d'un port de 16 bits dédié aux adresses, en plus du port de données 8 bits.
[[File:Architecture d'un CPU 8-16 bits avec un banc de registre double port.png|centre|vignette|upright=2|Architecture d'un CPU 8-16 bits avec un banc de registre double port]]
L'incrémentation d'une paire 16 bits ne coute rien à implémenter, ou presque. En effet, le processeur incorpore un incrémenteur 16 bits pour le ''program counter'', qui est relié au bus d'adresse. L'idée est de rentabiliser cet incrémenteur, en lui permettant d'incrémenter des données/adresses de 16 bits obtenues via pseudo-aliasing. De même, il peut être utilisé pour incrémenter le pointeur de pile, voire un compteur de rafraichissement mémoire (pour rappel, le rafraîchissement mémoire demande de balayer la mémoire d'adresse en adresse et été fait par le CPU à l'époque). Pour cela, il suffit de connecter le ''program counter'', le banc de registre, et l'incrémenteur, via un bus dédié.
[[File:Calcul d'adresse par ALU dédiée avec PC séparé.png|centre|vignette|upright=2|Calcul d'adresse par ALU dédiée avec PC séparé]]
Notez qu'on peut encore simplifier le tout en placant le ''program counter'' dans le banc de registre, ce qui ne gênera pas le travail de l'incrémenteur mais simplifiera le câblage au bus d'adresse. Ce n'était pas systématique, certains processeurs mettaient le ''program counter'' dans le banc de registre, d'autres non.
: Inclure le ''program counter'' dans le banc de registre permet parfois de remplir un vide. Par exemple, sur un processeur avec 12 registres, le banc de registre devrait faire idéalement 16 registres, inclure le ''program counter'' dedans fait monter le tout à 13.
[[File:Architecture d'un CPU 8-16 bits.png|centre|vignette|upright=2|Architecture d'un CPU 8-16 bits]]
Les processeurs Intel 8 bits, à savoir le 8008, le 8080 et le 8085 ; mettaient le ''program counter'' dans le banc de registre. Vous avez donc toutes les armes pour comprendre leur micro-architecture. Par exemple, voici la micro-architecture du processeur 8080. Remarquez le banc de registre, qui contient tous les registres sauf l'accumulateur et le registre. Il a deux ports : un pour les adresses et un pour les données. Notez le dé-multiplexeur sur le port de donnée. Pour le reste, il s'agit d'une architecture à accumulateur hybride des plus classiques.
[[File:Intel 8080 arch.svg|centre|vignette|upright=3|Microarchitecture de l'Intel 8080.]]
Le Z80 est un processeur inspiré du design des processeurs Intel 8 bits, mais avec pas mal d'améliorations. Un point particulier de ce processeur est son banc de registre. Il contient tous les registres du processeur, y compris l'accumulateur et le registre d'état ! Les seuls registres en-dehors du banc de registre sont le ''program counter'' et un compteur de rafraichissement mémoire IR.
Un autre point particulier est que les registres dans le banc de registres avaient une copie séparée accessible uniquement pour les interruptions, via fenêtrage de registres. Et l'accumulateur et le registre d'état étant dans le banc de registre, il y avait deux accumulateurs et deux registres d'état. Les registres A, B, C, D, E et F étaient dupliqués, par le pointeur de pile ni les registres d'indice. Les copies des registres étaient nommées A', B', C', D', E' et F'.
Le Z80 supportait des instructions d'échange de registre en plus des CPU Intel 8 bits. L'instruction EX peut échanger soit le contenu des paires D,E et H,F, soit la paire A,F avec la paire A',F'. L'instruction EXX échange les paires BC, DE, HL avec les paires BC', DE', HL'. En faisant cela, le programmeur pouvait utiliser deux fois plus de registres généraux s'il n'utilisait pas les interruptions. L'échange de paires se fait sans copies de registres, mais simplement en modifiant l'adresse envoyée sur le banc de registre. Pour cela, plusieurs bascules mémorisent des bits qui indiquent si les paires ont été échangées ou non. Il y a une bascule pour les paires DE , HL ; une autre pour les paires A,F et paire A',F', une dernière pour l'instruction EXX. En combinant ces bascules avec les noms de registres envoyés par le séquenceur, on peut échanger les paires de registres.
==Le cas particulier des processeurs 4 bits : le 4004 d'Intel==
L'Intel 4004 était le tout premier micro-processeur. Il s'agissait d'un microprocesseur de 4 bits, basé sur une architecture à accumulateur. Il disposait d'un accumulateur et de 16 registres d'indice, tous de 4 bits. Il faisait des calculs sur des données de 4 bits, appelées des nibbles. Cependant, sur ses 46 instructions machines supportées, 41 agissaient sur des opérandes de 8 bits, les 5 restantes sur des opérandes de 16 bits. Simplement, les calculs se faisaient en deux fois, en échangeant des données entre mémoire RAM et accumulateur.
Le 4004 est un circuit intégré avec peu de broches. Il dispose notamment d'un bus de données/adresse, qui est multiplexé, c’est-à-dire qu'il sert alternativement de bus de données et de bus d'adresse selon les besoins. Le bus de commande mémoire fait 5 bits, dont 4 pour les chips de RAM, un pour la ROM. Les adresses sont codées sur 12 bits, les données sur 4 et les instructions sur 8 bits. L'envoi d'une adresse sur le bus se fait en plusieurs fois, de même que la lecture d'une instruction. Il s'agit là d'une adaptation pour outrepasser les limitations d'un processeur 4 bit.
[[File:Intel 4004 processor pinout.png|centre|vignette|upright=2|Broches de l'Intel 4004. Nous verrons à quoi elles servent plus bas.]]
===L'espace d'adressage de l'Intel 4004===
Les adresses du processeur sont sur 12 bits, ce qui fait 4096 adresses différentes. Elles regroupent à la fois la ROM et la mémoire RAM, vu que l'architecture est une sorte de mélange bizarre entre une architecture Von Neumann et Harvard. Le processeur gère bien deux espaces d'adressage séparés, mais la RAM et la ROM sont reliés au même bus. La sortie CM-ROM du processeur indique si l'adresse envoyée correspond à la RAM ou la ROM. Un circuit de décodage d'adresse active ou désactive la RAM selon la valeur de ce bit, l'inverse pour la ROM, en agissant sur leurs bits Chip Select. Seule la RAM ou la ROM répondent alors à l'adresse.
Pour ce qui est de la RAM, le circuit de décodage d'adresse pouvait gérer au maximum 1024 adresses différentes, chacune contenant un nibble. Pour cela, le CPU 4004 était relié à une ou plusieurs RAM externes, des Intel 4002. Chaque Intel 4002 contenait 64 nibbles de données, plus 16 nibbles de statut qu'on ne détaillera pas ici. Les nibbles de statut étaient accessibles en utilisant des instructions d'entrée-sortie, donc pas avec des lectures/écritures mémoire. Les 64 nibbles de données sont découpés en 4 groupes de 16 nibbles. Le CPU pouvait être relié à maximum 16 Intel 4002, ce qui fait 1024 nibbles de données et 256 nibbles de statut. L'ensemble permet de remplir l'espace d'adressage de 1024 adresses.
===Le registre de page et le pseudo-aliasing des registres===
Sélectionner une adresse mémoire utilisait un mélange entre pseudo-aliasing et registre de page. Pour les données, les 1024 adresses étaient découpées en 4 pages de 256 adresses. Pour la ROM, les 4096 adresses étaient découpées en 16 pages de 256 adresses. Localiser une donnée dans une page ne requiert que 8 bits, 2/4 bits supplémentaires permettent de sélectionner la page voulue. Le registre de page était dans le processeur lui-même, et était relié aux sorties du processeur nommées CM-RAM 0, 1, 2 et 3. Les 4 sorties encodaient un nombre qui permet de sélectionner le numéro de page voulu.
Le registre de page fait 5 bits : un pour distinguer RAM et ROM, 4 bits pour sélectionner la page voulue. L'avantage est que la carte mère gère au maximum 16 chips de RAM, ce qui colle parfaitement avec les 4 utilisés pour sélectionner une page. Un chip de RAM correspond à une page, et chacun est activé ou désactivé suivant la page sélectionnée. Pour cela, il suffit d'ajouter un décodeur sur la carte mère, qui prend les 4 bits du registre de page et fournit les signaux Chip Select aux différents chips de RAM.
Reste alors à utiliser les 8 bits d'adresse à l'intérieur d'un chip de RAM. Le 4004 permettait de concaténer deux registres d'indice de 4 bits pour former une adresse de 8 bits. Les instructions d'accès mémoire pouvaient ainsi préciser une paire de registre d'indice pour préciser quelle adresse lire/écrire. Idem pour les branchements indirects : le processeur supportait une instruction de branchement indirect qui précisait l'adresse dans une paire de registres d'indice. Les registres d'indice sont donc assez mal nommés sur cette architecture, vu qu'ils peuvent servir soit de registre d'indice, soit de demi-registre d'adresse. Il s'agit là du système de pseudo-aliasing des registres, mais appliqué aux registres d'indice.
L'Intel 4004 gérait deux instructions pour gérer les adresses mémoires. La première, l'instruction DCL (''Designate Command Line'') configure le registre de page. Elle prend en entrée un numéro de page et le copie dans le registre de page. L'opérande peut provenir d'un registre d'indice ou de l'accumulateur. La seconde, l'instruction SRC (''Send Register Control'') concatène deux registres d'indice pour obtenir une adresse de 8 bits. Un accès mémoire se fait donc en maximum trois instructions : une qui configure le registre de page si ce n'est pas déjà fait, une instruction SRC pour envoyer l'adresse, et une troisième instruction qui dit s'il faut faire une lecture ou une écriture.
===La microarchitecture de l'Intel 4004===
Il incorporait une pile d'adresse de retour intégrée au processeur. La pile d'adresse acceptait exactement 3 adresses maximum. Elle était regroupée avec le ''program counter'' dans un banc de registre, de 4 registres. Le ''program counter'' et le pointeur de pile faisaient chacun 12 bits, soit trois nibble. Ils étaient incrémentés par un incrémenteur dédié.
SI on omet le registre de page et la pile d'adresse, le 4004 est une architecture à accumulateur des plus classiques, avec un bus interne unique, un banc de registre pour les registres d'indices, un accumulateur relié à une unité de calcul. Les registres d'indice étaient dans un banc de registre séparés, car ils faisaient 4 bits chacun, contrairement au pointeur de pile et le ''program counter''. Un détail important est que les bancs de registres du 4004 étaient implémentés avec de la DRAM, et non des registres usuels fabriqués avec des bascules 1 bit.
[[File:Microarchitecture de l'Intel 4004.png|centre|vignette|upright=2.5|Microarchitecture de l'Intel 4004]]
<noinclude>
{{NavChapitre | book=Fonctionnement d'un ordinateur
| prev=Les architectures à pile et mémoire-mémoire
| prevText=Les architectures à pile et mémoire-mémoire
| next=Les processeurs de traitement du signal
| nextText=Les processeurs de traitement du signal
}}
</noinclude>
0v8wy0vo1hf8odot3n4kh7hd4aclwax
765755
765754
2026-05-02T01:32:18Z
Mewtow
31375
/* Les microcontrôleurs Intel 8051/8031 */
765755
wikitext
text/x-wiki
Nous avons déjà abordé la notion de processeur 8, 16, 32, 64 bits. Elle désigne la taille des registres généraux, ou de l'accumulateur. De nos jours, les processeurs 32 et 64 bits sont la norme, mais les premiers micro-processeurs étaient des processeurs 4 et 8, avant de passer rapidement au 16 bits. La raison est que leur budget en transistor limité faisait qu'on ne pouvait pas utiliser une ALU trop grande : une ALU 8 bit prend deux fois moins de place et de transistors qu'une ALU 16 bits. Cependant, les processeurs 8 bits avaient de sérieuses limitations qui étaient compensées par diverses solutions. Dans ce chapitre, nous allons faire une revue rapide des processeurs 8 bits et de leurs fonctionnalités.
La principale limitation des CPU 8 bits était l'adressage : des registres de 8 bits limitaient l'espace d'adressage à seulement 256 adresses, soit à peine 256 octets ! Intuitivement, on se dit que 256 octets est purement impraticable, on ne peut rien faire d'intéressant avec seulement 256 de RAM + ROM. Et c'est partiellement vrai. L'adage veut que 16 bits est la taille minimale intéressante, la limite à partir de laquelle on a assez de mémoire RAM/ROM pour coder des applications intéressantes. Mais 256 octets de RAM est largement suffisant sur de nombreux systèmes embarqués simples s'en accommodent : des caisses enregistreuses, des systèmes de régulation de feu de circulation, etc.
Pour les applications demandant plus de mémoire RAM, les CPU de l'époque contournaient la limitation de 256 octets de RAM avec de nombreux stratagèmes. Dans ce qui va suivre, nous allons séparer les CPU 8 bits selon qu'ils utilisent une architecture Harvard ou une architecture Von Neumann. La raison est qu'une architecture Harvard permet en soi de contourner partiellement ce problème d'adressage. Les choses sont plus compliquées avec une architecture Von Neumann.
==Les processeurs 8/16 bits à architecture Harvard ==
La première solution est d'utiliser une architecture Harvard. Le processeur 8 bit a alors deux espaces d'adressage : un pour la RAM, un autre pour la ROM. Et les deux utilisent des adresses de taille différente. La ROM est reliée à un bus d'adresse de 16 bits, alors que la RAM est elle connectée à un bus d'adresse de 8 bits. La RAM est donc limitée à 256 octets, alors que la ROM peut monter jusqu'à 64 kibioctets. Mine de rien, faire ainsi est largement suffisant.
Les processeurs 8 bits intègrent parfois les 256 octets de RAM directement dans le processeur. Vous noterez que 256 octets de RAM est très peu, comparable à ce qu'on trouve dans un banc de registres. Aussi, fusionner banc de registre et 256 octets de SRAM est une optimisation possible. Concrètement, cela veut dire que le processeur n'intégre pas une RAM séparée, mais a un banc de 256 registres de 8 bits. Beaucoup de processeurs en implémentent moins, avec par exemple seulement 64 octets de RAM, ou 32 octets, ou 128 octets.
L'avantage est que cela élimine le bus mémoire de la RAM, ce qui économise beaucoup de broches sur le circuit intégré du CPU. Et c'est ce qui explique que cette solution est beaucoup utilisée sur les microcontrôleurs peu puissants. Les exemples qui vont suivre devraient vous convaincre. Et pour les applications demandant plus de RAM, des optimisations permettent d'adresser plus de 256 octets de RAM. La plus connue est la commutation de banques, mais nous n'avons pas encore abordé celle-ci, et il faudra attendre le chapitre sur l'espace d'adressage pour cela.
Cependant, se limiter à 256 octets de RAM demande des compromis assez forts, pour économiser un maximum d'adresses mémoire. L'usage d'une architecture Harvard est une solution très intéressante, mais on peut aller plus loin en utilisant une architecture Harvard modifiée. Pour rappel, elles permettent de lire des constantes depuis la mémoire ROM. Les constantes manipulées par le programme sont mémorisées en ROM, lues depuis la ROM, au lieu d'être chargées en RAM. Une autre optimisation est d'utiliser un espace d'adressage séparé pour les entrées-sorties, à la place d'entrées-sorties mappées en mémoire qui détournent des adresses. Cependant, de nombreux processeurs 8 bits utilisent les entrées-sorties mappées en mémoire, comme on va le voir plus bas.
Avec ce genre de stratagèmes, 256 octets de RAM est largement suffisant sur de nombreux systèmes, à condition qu'on ait assez de ROM pour coder un programme digne de ce nom. Par exemple, de nombreux systèmes embarqués simples s'en accommodent : des caisses enregistreuses, des systèmes de régulation de feu de circulation, etc. Dans ce qui suit, nous allons voir quelques processeurs 8 bits de ce type. Deux exemples seront des microcontrôleurs très utilisés de nos jours.
===Le Fairchild F8 et la console de jeu Fairchild Channel F===
Un premier exemple est la Fairchild F8 de la défunte entreprise Fairchild Semiconductor. Il incorpore un processeur 8 bits, c’est-à-dire que le processeur fait des calculs sur des entiers de 8 bits maximum, une mémoire RAM de 64 octets, ainsi qu'une mémoire ROM de 1 kibioctet. Les 64 octets de RAM sont certes très peu, mais c'est suffisant pour certaines applications simples, comme les caisses automatiques de l'époque, ou des applications embarquées. Et de toute façon, il est possible d'ajouter de la mémoire RAM supplémentaire si les 64 octets de RAM intégrée ne suffisent pas. Le système était donc modulaire, adaptable selon les besoins, peu cher pour son implémentation minimale sans RAM en plus.
Vu qu'il s'agit d'un des tout premiers ordinateurs, il est sorti à une époque où la technologie était rudimentaire. À cette époque, le processeur était composé de pièces détachées qu'il fallait souder ensemble pour obtenir un processeur fonctionnel. Ce n'est que plus tard qu'est apparu le micro-processeur, qui regroupe un processeur complet dans un seul circuit intégré. Le résultat est que le processeur du Fairchild F8 est coupé en deux, l'unité de calcul et l'unité de contrôle sont placés dans des pièces détachées séparés.
Le microcontrôleur est composé de trois à quatre pièces détachées, certaines étant optionnelles. La première est le '''3850 CPU''', qui regroupe l'unité de calcul et la mémoire RAM intégrée. La seconde est le PSU (''3851 Program Storage Unit''), qui regroupe la mémoire ROM et l'unité de contrôle, ''program counter'' inclut. S'il y a besoin d'utiliser plus de RAM, il faut ajouter un circuit d’interface mémoire, qui est au choix le ''3852 Dynamic Memory Interface'' (DMI) ou le ''3853 Static Memory Interface'', le premier étant connecté à une mémoire de type DRAM, l'autre à une SRAM (nous verrons ce que sont les DRAM et les SRAM dans le prochain chapitre).
[[File:Fairchild F8.png|centre|vignette|upright=2|Fairchild F8]]
Le système minimal est composé d'un PSU et d'un 3850, sans les circuits d'interface mémoire. Le tout donne un système avec un processeur 8 bit, 64 octets de RAM et 1 kibioctet de ROM, les deux mémoires étant intégrées dans le "processeur". Le processeur gérait 4 entrées-sorties, chacune étant reliée avec un bus de 8 bit au processeur. Au passage, en 1977, Mostek a créé un microcontrôleur qui regroupe un PSU et un 3850 : le Mostek 3870. Le système minimal n'avait pas de bus d'adresse, vu que la RAM était intégrée au processeur. C'est les 3852 et 3853 qui ajoutaient un bus d'adresse. Ils ajoutent un bus d'adresse de 16 bits, ce qui permet d'adresser 64 kibioctets de RAM.
[[File:Fairchild-Channel-F.jpg|vignette|un Fairchild Channel F]]
Le Fairchild F8 a été utilisé dans la Fairchild Channel F, une des toute première console de seconde génération, à savoir des consoles qui utilisaient des cartouches de jeu. Avant les consoles de seconde génération, les consoles étaient non-programmables. Elles étaient conçues pour faire tourner un jeu précis, aucun autre, le jeu étant implémenté dans leurs circuits.
La Fairchild Channel F est composé du système minimal, auquel on a ajouté une carte son rudimentaire et 2 kibioctets de mémoire vidéo. La mémoire vidéo sert uniquement pour afficher des images à l'écran : on écrit l'image à afficher dedans, un circuit vidéo se charge de l'afficher à l'écran automatiquement. Le processeur ne fait qu'écrire dans cette RAM vidéo, il ne peut pas en lire le contenu. De la RAM supplémentaire peut cependant être ajoutée dans les cartouches de jeu.
===Les microcontrôleurs PIC===
Les '''microcontrôleurs PIC''' regroupent des microcontrôleurs allant de microcontrôleurs 8 bits aux performances très faibles, à des microcontrôleurs 32 bits bien plus puissants. Les microcontrôleurs PIC sont très utilisés dans l'embarqué ou d'informatique industrielle. Ils sont vendus à des volumes assez impressionnants, plusieurs millions par an. Et si vous avez ou êtes en train de faire des études d'électronique, je parie que vous les avez déjà vus en classe, ou que ce ne saurait tarder. Dans ce qui suit, nous allons nous concentrer sur les microcontrôleurs PIC 8 bits, à savoir les PIC 16, 16 et 18. Les PIC 24, qui sont des microcontrôleurs 16 bits, ne seront pas abordés.
La mémoire ROM des PIC va de 1024 instructions à 4096 instructions. En comparaison, la mémoire RAM des microcontrôleurs PIC ne peut pas dépasser 256 adresses, et elle est encore plus petite en pratique sur certains modèles. Pour donner un exemple, le PIC16F84 a une RAM composée de 68 "registres" de 8 bits. Le terme "registres" devrait vous faire comprendre que les 256 octets de RAM sont en réalité un banc de registre de 256 registres d'un octet chacun. Vu que la RAM et le banc de registre sont fusionnés, il n'y a pas de différences entre nom/numéro de registre et adresse mémoire. Les registres sont donc adressables, on y accède en lisant/écrivant à une adresse mémoire bien précise.
Ce banc de registre contient des registres généraux, mais aussi des registres pour communiquer avec les ports d'entrée-sortie, des registres de contrôle, le ''program counter'', le registre d'état, et le pointeur de pile. Pour donner un exemple, sur les modèles 16F, l'espace d'adressage fait 128 octets, dont 32 sont réservés aux registres du processeur, ce qui fait que seuls 96 octets sont adressables comme de la RAM. Cela gaspille quelques adresses mémoire, mais permet une implémentation plus simple, avec une petite économie de registres et donc de transistors.
: Les PIC 18 peuvent adresser plus de 256 octets de RAM en utilisant la commutation de banques, une technique qui sera abordée dans plusieurs chapitres.
[[File:DocPIC16F84 3.png|centre|vignette|upright=3|Espaces d'adressage du PIC16F84.]]
Les PIC sont une architecture à accumulateur, ce qui permet d'utiliser un banc de registre à un seul port et simplifie grandement la conception du processeur. Il faut préciser que l'accumulateur n'est pas mappé en mémoire, sauf sur les modèles PIC 17, qui mappé l'accumulateur en mémoire RAM ! Leur implémentation de l'accumulateur ajoute une petite subtilité : le résultat d'une opération arithmétique peut être enregistré ailleurs que dans l'accumulateur. Le résultat peut aussi remplacer la seconde opérande, celle lue en mémoire RAM. Dit autrement, le résultat est enregistré dans l'adresse mémoire source. Les instructions de calcul ont le choix : un bit dans leur encodage précise où enregistrer le résultat.
{|
|-
|[[File:DocPIC16F84 4.png|centre|vignette|upright=2|Microarchitecture simplifiée d'un microcontroleur PIC (ici, un 16F84).]]
|[[File:DocPIC16F84 5.png|centre|vignette|upright=2|Microarchitecture simplifiée d'un microcontroleur PIC (ici, un 16F84), avec les branchements directs.]]
|}
La petite taille de la ROM d'un PIC n'est pas une surprise, car les architectures 8 bits sont conçues pour ne pas utiliser beaucoup de transistors et être très simples. Mais il faut adapter le jeu d'instruction, pour qu'il ait une bonne densité de code. Par exemple, il faut faire en sorte d'avoir des instructions assez courtes. Si les instructions font 16 bits au lieu de 32, on divise par deux le nombre de transistors nécessaire pour la mémoire ROM. Et le jeu d’instruction des PIC est adapté à cette contrainte.
Les microcontrôleurs PIC utilisent un jeu d'instruction propriétaire, dont les instructions sont très petites. Les premières versions du jeu d'instruction utilisaient des instructions codées sur 12 bits, dont 5 pour l'adresse mémoire de la seconde opérande. Pour les branchements, 3 bits étaient utilisés pour l'opcode, 9 pour l'adresse de destination. Par la suite, les instructions ont été étendues à 13 bits sur les PIC1670, puis à 14, 15 et 16 bits. Les adresses ont alors été élargies, ce qui permet d'adresser en peu plus de mémoire RAM.
Il est intéressant de regarder comment les PIC font pour obtenir des instructions aussi courtes. Premièrement, le fait d'utiliser une architecture à accumulateur, couplé à une RAM très petite aident grandement. Les architectures à accumulateur ont besoin de préciser un opcode et une adresse mémoire pour chaque instruction, pas besoin de préciser de noms de registres ni le mode d'adressage. La taille des adresses mémoire est censé être un problème pour la densité de code, mais les adresses d'un processeur 8 bits font 8 bits. On peut alors avoir un jeu d'instruction étoffé, en utilisant des instructions 16 bits, qui concatènent un opcode et une adresse mémoire, d'un octet chacun.
Mais d'autres optimisations permettent d'avoir une bonne densité de code. Les PIC ont des branchements pour les appels et retour de fonction. Les PIC incorporent une pile d'appel de retour, qui fait 2 à 8 adresses suivant les modèles. Elle permet d'économiser quelques registres, car la pile d'appel n'est pas mappée dans l'espace d'adressage, elle n'est pas adressable. On économise ainsi 2 à 8 registres, sur 32-256 registres. De plus, cela simplifie l'encodage des instructions d'appel/retour de fonction, qui n'ont pas à préciser où enregistre l'adresse de retour.
Les PIC n'ont pas d'instructions de branchement conditionnels, ils font avec une SKIP instruction et des branchements inconditionnels. Du moins, c'est le principe, car si vous regardez la liste des instructions ci-dessous, vous verrez qu'il n'y a pas d'instruction SKIP. À la place, les instructions SKIP sont fusionnées avec d'autres instructions. Elles sont notamment fusionnées avec les instructions d'incrémentation et de décrémentation. Les PIC supportent une incrémentation normale, une décrémentation normale, une décrémentation fusionnée avec une instruction SKIP, et une incrémentation fusionnée avec une instruction SKIP. Les deux dernières incrémentent/décrémentent l'accumulateur et SKIP l'instruction suivante si le résultat est zéro. Elles permettent de fortement simplifier l'implémentation des boucles qui s'exécutent tant que leur compteur atteint zéro.
Les PIC disposent d'instructions de manipulation de bit, pour tester/masquer un bit dans une opérande. Il y a en a 4 en tout : mettre à 0, mettre à 1, tester si bit = 1, tester si bit = 0. Les instructions qui testent un bit font le test et décident s'il faut skipper l'instruction suivante ou non. Il y a aussi deux instructions de rotation à gauche et droite, qui tiennent compte de la retenue mémorisée dans le registre d'état. Les instructions de décalages sont émulées avec une rotation suivie d'un ET bit à bit. Mentionnons aussi une instruction pour inverser deux ''nibbles'' dans un octet. De telles instructions sont très utiles pour manipuler les ports I/O.
Les modèles haute performance ajoutent des instructions d'addition avec retenue entrante, idem pour la soustraction. De telles instructions sont très utiles pour faire des additions/soustractions sur des opérandes de 16 bits. Le processeur a beau être un CPU 8 bits, il peut être utilisé pour faire des calculs 16 bits, la performance est alors amoindrie, mais ce n'est pas un problème pour les applications d'un tel microcontrôleur.
Les modèles initiaux, comme les PIC 10 et 12, ne supportaient pas les interruptions, mais c'est chose réglé sur les modèles plus récents. Ils ont même des registres séparés pour les interruptions et les programmes normaux. De plus, ils intègrent nativement un ''watchdog timer''.
{|class="wikitable" style="text-align:center"
|+ Jeu d'instruction des dodèles PCI 16
|-
! colspan="5" | Instructions diverses
|-
| colspan="3" | 00 0000 0000 0000 || NOP || Ne fait rien
|-
| colspan="3" | 00 0000 0000 1000 || RETURN || Instruction de retour pour une fonction
|-
| colspan="3" | 00 0000 0000 1001 || NOP || Instruction de retour pour une interruption
|-
| colspan="3" | 00 0000 0110 0011 || SLEEP || Mise en veille
|-
| colspan="3" | 00 0000 0110 0100 || CLRWDT || RESET le ''watchdog timer'', intégré dans le PIC
|-
! colspan="5" | Instructions de manipulation de bit
|-
| 0100 || Position du bit dans l'opérande || Adresse mémoire || BCF || Met le bit à 1
|-
| 0101 || Position du bit dans l'opérande || Adresse mémoire || BSF || Met le bit à 0
|-
| 0110 || Position du bit dans l'opérande || Adresse mémoire || BTFSC || Teste si le bit adressé est à 1
|-
| 0111 || Position du bit dans l'opérande || Adresse mémoire || BTFSS || Teste si le bit adressé est à 0
|-
! colspan="5" | Branchements
|-
| colspan="2" | 100 || Adresse mémoire || CALL || Appel de fonction
|-
| colspan="2" | 100 || Adresse mémoire || GOTO || Branchement inconditionnel
|-
! colspan="5" | Instructions logiques/arithmétiques avec opérande lue en mémoire RAM
|-
| colspan="5" | ''Le bit '''d''' dans l'opcode indique la destination : accumulateur ou adresse mémoire''.
|-
| colspan="2" | 0000001 || Adresse mémoire || MOVWF || Store (accumulateur vers destination)
|-
| colspan="2" | 000001d || Adresse mémoire || MOVWF || Met à zéro la destination (adresse ou registre)
|-
| colspan="2" | 000001d || Adresse mémoire || SUBWF || Soustraction
|-
| colspan="2" | 000010d|| Adresse mémoire || DECF || Décrémentation
|-
| colspan="2" | 000100d|| Adresse mémoire || IORWF || OU bit à bit
|-
| colspan="2" | 000101d|| Adresse mémoire || ANDWF || ET bit à bit
|-
| colspan="2" | 000110d || Adresse mémoire || XORWF || XOR bit à bit
|-
| colspan="2" | 000111d || Adresse mémoire || ADDWF VWF || Addition
|-
| colspan="2" | 001000d || Adresse mémoire || MOVF || LOAD
|-
| colspan="2" | 001001d || Adresse mémoire || COMF || NOT bit à bit
|-
| colspan="2" | 001010d || Adresse mémoire || INCF || Incrémentation
|-
| colspan="2" | 001011d || Adresse mémoire || DECFSZ || Décrémentation, puis instruction SKIP si résultat = 0
|-
| colspan="2" | 001100d || Adresse mémoire || RRF || Rotation à droite avec retenue entrante
|-
| colspan="2" | 001101d || Adresse mémoire || RLF || Rotation à gauche avec retenue entrante
|-
| colspan="2" | 001110d || Adresse mémoire || SWAPF || Echange deux ''niblle'' dans un octet
|-
| colspan="2" | 001111d || Adresse mémoire || INCFSZ || Incrémentation, puis instruction SKIP si résultat = 0
|-
! colspan="5" | Instructions logiques/arithmétiques avec constante immédiate
|-
| colspan="2" | 1100xx || Constante immédiate (8bits) || MOVLW || Copie constante dans accumulateur
|-
| colspan="2" | 1101xx || Constante immédiate (8bits) || RETLW || MOV fusionné avec un retour de fonction
|-
| colspan="2" | 111000 || Constante immédiate (8bits) || IORLW || OU
|-
| colspan="2" | 111001 || Constante immédiate (8bits) || ANDLW || ET
|-
| colspan="2" | 111010 || Constante immédiate (8bits) || XORLW || XOR
|-
| colspan="2" | 11110x || Constante immédiate (8bits) || SUBLW || Soustraction
|-
| colspan="2" | 11111x || Constante immédiate (8bits) || ADDLW || Addition
|}
Les PIC gèrent l'adressage absolu et immédiat, mais pas plus. L'adressage absolu, celui où l'adresse est intégrée dans l'instruction, est très simple à implémenter. Les adresses prennent moins d'un octet, vu que la taille de la RAM est très petite, les adresses sont très courtes, les intégrer dans des instructions elles-mêmes courtes n'est pas un problème. L'adresse est encodée sur 5 à 7 bits, selon le modèle, ce qui permet d'adresser entre 32 et 128 octets.
Les PIC ne supportent pas l'adressage indirect, mais peuvent l'émuler grâce à un '''registre d'adresse''' dédié. Il s'agit du registre FSR, qui mémorise l'adresse à lire/écrire. Il est possible de copier un pointeur dedans, qui provient soit de l'accumulateur, soit de la mémoire SRAM. Dans les deux cas, la donnée adressée est lue ou écrite dans un registre INDR, est un registre d’interfaçage rendu adressable. Le registre FSR est directement connecté sur le bus d'adresse.
Les modèles de base se débrouillent avec un registre FSR et un registre INDR, mais les modèles plus performants ont deux ou trois copies de chaque registre. Les modèles PIC18 ajoutent aussi des instructions LOAD/STORE qui émulent les modes d'adressage à post- ou pré-incrément/décrément, et le mode d'adressage "Base + Indice + Décalage", encore une fois en utilisant les registres FSR et INDR.
Avec tout ce qu'on vient de dire, vous devriez pouvoir comprendre la microarchitecture d'un PIC, qui est résumée dans ce schéma.
[[File:DocPIC16F84 all.png|centre|vignette|upright=2.5|Microarchitecture du PIC16F84.]]
===Les microcontrôleurs Intel 8051/8031===
[[File:Pinagem8031.jpg|vignette|Broches du 8051.]]
Les microcontrôleurs Intel 8051/8031 sont des microcontrôleurs 8 bits, commercialisés par Intel. Elle contient un processeur 8/16 bits, 4 kibioctets de mémoire ROM, une RAM de 128 octets. Niveau entrées-sorties, il contient un port série, ainsi que 4 ports d'un octet chacun sur lesquels il peut lire ou écrire. Il supporte des interruptions, avec un contrôleur d'interruption intégré. Il contient aussi deux ''timers'' de 16 bits chacun, qui déclenchent des interruptions quand ils tombent à zéro ou à une valeur configurable.
Ils ont de nombreuses ressemblances avec les microcontrôleurs PIC. Le processeur du 8051 est une architecture à accumulateur de 8 bits, ses registres sont mappés en mémoire RAM, il a un registre d'adresse dédié à l'adressage indirect et j'en passe. Mais il y a aussi des différences notables. Par exemple, le 8051 n'a pas de pile d'adresse de retour, contrairement aux processeurs PIC. Il fait autrement, à savoir qu'il gère une pile d'appel placée en mémoire RAM,ce qui est très différent. De même, il utilise deux accumulateurs nommés A et B.
Une autre différence est que les registres sont placés dans un banc de registre à part des 128 octets de SRAM. Il y a une SRAM séparée du banc de registre, contrairement à ce qu'on a sur les microcontrôleurs PIC. Par contre, les registres du processeur sont mappés en mémoire RAM, y compris les deux accumulateurs, le registre d'état, le ''program counter'', et bien d'autres. Mais le fait qu'ils soient séparés de la SRAM permet de les mapper dans l'espace d'adressage sans marcher sur les pieds de la SRAM. Vu que le processeur peut adresser 256 octets, mais n'a que 128 octets de SRAM, les registres sont mappés dans les 128 octets restants. Les entrées-sorties aussi sont mappées dans ces 128 octets restants.
L'ensemble utilise une architecture Harvard, contrairement à ce que pourrait faire croire le schéma ci-dessous.
[[File:Arkitektura mikro kontrollerit Intel 8051.png|centre|vignette|upright=2.5|Microcontrôleur 8051]]
Voyons maintenant la ''memory map'' de ce microcontroleur, pour la SRAM. Un point assez original est que 16 octets de la SRAM sont adressables bit par bit, à savoir que chaque bit a sa propre adresse. En tout, cela permet d'adresser 128 bits (16 adresses * 8 bits par octet adressé). L'intervalle bit-adressable va de l'adresse 32 (inclue) à l'adresse 47 (inclue).
Les 32 premières adresses sont réservées à la mémoire SRAM, c'est 32 octets de RAM utilisable à volonté par le programmeur. Les 16 adresses suivantes sont les 16 adresses bit-adressables mentionnées dans le paragraphe précédent. Les 96 octets suivants sont de la mémoire RAM adressable, affectée par défaut à la pile d'appel mais adressable via adressage direct si besoin. Les 128 octets de poids fort sont réservés aux registres du processeur et aux entrée-sorties mappées en mémoire.
[[File:Memory map du 8051.png|centre|vignette|upright=2|Memory map du 8051]]
Les 128 octets au sommet de l'espace d'adressage sont décrits dans le schéma ci-dessous. On voit que les deux accumulateurs sont mappés dedans, de même que le registre d'état PSW, le registre de configuration des interruptions IE (''Interrupt Enable''), et quelques autres. Les ports I/O sont aussi mappés dedans, que ce soit les 4 ports parallèles ou le port série. Les deux ''timers'' sont aussi mappés dedans, ainsi que leurs registres de configuration.
Une partie des octets sont bit-adressables, et cette partie inclus les registres du processeur et les ports I/O. Pour le dire autrement, chaque bit d'un port I/O a sa propre adresse mémoire, qui permet de le sélectionner. Par contre, les registres pour les ''timers'' ne sont pas dedans, sauf pour le troisième ajouté dans des extensions du 8051.
[[File:MFrey SFR MCS-51.svg|centre|vignette|upright=2|Memory map des 128 octets de poids fort du 8051]]
Pour ce qui est des instructions, le 8051 supporte les opérations de multiplications et de divisions, contrairement aux microcontrôleurs PIC qui se limitaient à l'addition et la soustraction. Une autre particularité est que le processeur incorpore une '''unité de calcul de 1 bit'''. Elle permet de faire des opérations sur des bits, avec 17 instructions possibles au total. L'ALU de 1 bit est reliée à un accumulateur de 1 bit et 32 registres de 1 bit. Elle peut lire des opérandes de 1 bit en mémoire RAM ou sur les ports I/O, pour les portions qui sont bit-adressables.
Le processeur supporte aussi l'adressage indirect dans la SRAM, mais celui-ci fonctionne différemment comparé aux microcontrôleurs PIC. Il n'y a pas deux registres d'adresse dédiés, séparés des autres. À la place, l'adressage indirect est implémenté normalement, en utilisant les registres généraux. Par contre, il y a une contrainte : seuls les deux premiers registres R0 et R1 sont utilisables. En clair, seuls ces deux registres peuvent contenir une adresse, un pointeur. C'est là une différence liée au fait que le 8051 a un banc de registre séparé.
Le 8051 peut communiquer avec une mémoire RAM externe, en plus de la SRAM interne. Pour cela, le processeur du 8051 avait un espace d'adressage séparé pour la RAM externe, capable d'adresser 64 kibioctets. Communiquer avec cet espace d'adressage se faisait avec des instructions d'accès mémoire séparées des autres, pas les LOAD/STORE normaux. Par exemple, l'instruction MOVX lisaient une donnée dans cet espace d'adressage, et la copiait dans l'accumulateur ou la SRAM. Pour envoyer l'adresse à lire/écrire à cette RAM externe, le processeur incorporait un registre d'adresse dédié. Il s'agit du '''registre DPTR''', qui contient une adresse de 16 bits. Le processeur devait copier l'adresse à lire/écrire dedans, puis lancer l'instruction MOVX.
===Le HP Nanoprocessor : un processeur sans ALU===
Un dernier exemple est celui du processeur HP Nanoprocessor, de l'entreprise HP. Il a été commercialisé en 1974, en même temps que les premiers micro-processeurs d'Intel. Tous les processeurs de l'époque étaient des processeurs 8 bits et le HP Nanoprocessor ne faisait pas exception. Ce n'était pas un processeur hautes performances, il était destiné à des applications d'informatique industrielle ou embarquée. D'ailleurs, il utilisait des transistors de type metal-gate, peu performants, là où ses contemporains utilisait des transistors en silicium, plus performants.
Mais une caractéristique qui rend cela encore plus claire est qu'il n'y a pas d'ALU ! En effet, ce processeur est incapable de faire des additions, des soustractions ou autres opérations simples ! Il est cependant capable d'effectuer des incrémentations et décrémentations, des décalages, des opérations logiques comme des ET/OU/NON/XOR et bien d'autres. Il supporte en tout 48 instructions, avec un support limité des modes d'adressage indirects. Les instructions de branchement étaient des instructions SKIP, il n'y avait pas d'instructions de branchement généralistes.
Pour ce qui est des registres, il disposait de 16 registres de 8 bits et d'un accumulateur. Niveau mémoire, il était relié à une mémoire ROM, rien de plus. Il n'avait de RAM supplémentaire qu'on pouvait lui adjoindre, il devait se débrouiller avec seulement ses registres. Et cela ne posait pas de problèmes pour son usage. Seul le mode d'adressage indirect à registre est supporté, il n'y a pas de registres d'indices. Ce mode d'adressage permet de lire des données en mémoire ROM, la ROM pouvant contenir des tableaux de valeurs constantes.
: Il est possible de lui adjoindre de la RAM via les ports d'entrée-sortie, ainsi qu'une ALU, mais RAM et ALU sont traités comme des périphériques avec lesquels on communique, ils ne sont pas intégrés au processeur.
Niveau micro-architecture, il incorporait une unité de calcul logique et un circuit comparateur. Le comparateur était un circuit comparateur série des plus basiques, qui était utilisé pour les instructions de branchement et associées. L'unité de calcul logique gérait des incrémentations/décrémentation, des décalages, les opérations logiques et quelques autres. L'unité de calcul logique était bit-slicée, à savoir conçue en assemblant 8 ALU de 1 bit chacune, enchainées en série. Le tout était combiné à des circuits de ''carry skip''.
[[File:Unité de calcul du HP nanonprocessor.png|centre|vignette|upright=2|Unité de calcul du HP nanoprocessor]]
Son unité de décodage d'instruction était très simple, essentiellement basée sur des portes NOR, grâce à un encodage efficace des instructions machine. Le ''program counter'' fait 11 bits, ce qui permet d'adresser une ROM de 2 kibioctets. Le ''program counter'' était relié à un circuit incrémenteur qui gérait les isntructions SKIP (il pouvait incrémenter le ''program counter'' par pas de 1 ou de 2 en cas de SKIP). Le processeur contient aussi deux registres, qui servent en quelque sorte de pile d'adresse de retour. Un premier registre mémorise l'adresse de retour d'une fonction, l'autre mémorise le ''program counter'' lors d'une interruption, pour savoir où brancher à la fin de l'interruption.
[[File:HP nanoprocessor.png|centre|vignette|upright=2.5|HP nanoprocessor]]
Fait intéressant, le concepteur du processeur a gracieusement donné les masques utilisés pour graver le silicium du processeur au site [https://www.cpushack.com/ CPU Shack]. Les masques en question sont disponibles ici :
* [https://www.cpushack.com/2020/08/20/hp-nanoprocessor-mask-set/ HP NanoProcessor Mask Set]
* [https://www.cpushack.com/2020/08/09/the-forgotten-ones-hp-nanoprocessor/ The Forgotten Ones: HP Nanoprocessor]
Les masques ont été analysés par Ken Shirrif dans cet article de blog :
* [https://www.righto.com/2020/09/hp-nanoprocessor-part-ii-reverse.html HP Nanoprocessor part II: Reverse-engineering the circuits from the masks]
==Les processeurs 8/16 bits à architecture Von Neumann==
L'usage d'une architecture Harvard est une solution pour adresser plus de mémoire avec des CPU 8 bits. Mais plusieurs microprocesseurs commerciaux n'utilisaient pas cette solution. À la place, c'était des architectures Von Neumann, mais qui étaient capables de gérer des adresses de 16 bits. Les données faisaient 8 bits, les registres faisaient 8 bits, mais quelques techniques permettaient de gérer des adresses de 16 bits. Nous parlerons de '''processeurs 8/16 bits''' pour les désigner, et nous allons les étudier à part.
Un point important est que la gestion d'adresses de 16 bits permet d'adresser 64 kibioctets, qui peuvent être remplis avec de la RAM et de la ROM. On a donc le meilleur des mondes : 64 kibioctets de mémoire, mais avec des données de 8 bits et les économies de circuit qui vont avec. L'avantage est que le processeur peut maintenant gérer une vraie pile d'appel, pas seulement une pile d'adresse de retour. Il lui suffit pour cela d'intégrer un pointeur de pile codé sur 16 bits.
===Les modes d'adressage par page des CPU Motorola===
Les processeurs Motorola 8 bits étaient des processeurs 8 bits avec un bus d'adresse de 16 bits. C'était des processeurs à accumulateur incorporant deux registres d'indice, un registre d'état, un pointeur de pile, et un ''program counter''. Tous les registres sont reliés au bus d'adresse, sauf le registre d'état et l’accumulateur. Tous les registres font 8 bits, sauf le ''program counter''. La pile est câblée pour être dans un bloc de 256 octets compris entre l'adresse 1 0000 0000 et l'adresse 1 1111 1111, ce qui fait que son adressage se fait avec un seul octet.
[[File:6502-architecture.svg|centre|vignette|upright=1.5|Architecture simplifiée du 6502.</br> X et Y : registres d'indice ;</br> S : le pointeur de pile ;</br> A : accumulateur ;</br>P : registre d'état.</br>]]
Les processeurs Motorola 8 bits utilisaient une méthode simple pour adresser 64 kibioctets de RAM, avec des registres de 8 bits. Pour cela, ils utilisaient une variante de l'adressage base + décalage. Elle améliore l'adressage absolu, qui intègre l'adresse à lire/écrire dans l'instruction elle-même. L'adresse en question est de 8 bits et n'encode que les 8 bits de poids faible de l'adresse, les 8 bits de poids fort sont dans un '''registre de page''' adressé implicitement. L'adresse finale est obtenue en concaténant ce registre avec l'adresse mémoire intégrée dans l’instruction. Le résultat est que la mémoire était découpée en blocs de 256 consécutifs, chacun pouvant servir de fenêtre de 256 octets. Une page est réservée pour la pile, la seconde, comme dit plus haut.
Formellement, ce mode d'adressage a des ressemblances avec la commutation de banques, une technique qu'on verra dans les chapitres sur l'espace d'adressage et la mémoire virtuelle. Mais ce n'en est pas du tout : le registre de page est utilisé uniquement pour les accès mémoire avec le mode d'adressage base + décalage, mais pas pour les autres accès mémoire, qui gèrent des adresses complètes. Notons que l'usage d'un registre de page dédié fait que celui-ci est adressé implicitement.
Il faut noter que la technique a été utilisée sur des processeurs 16 bits, pour contourner la petite taille des instructions. Un exemple est celui du HP 2100, un processeur 16 bits. Il avait un registre de page de 5 bits et encodait 10 bits d'adresse dans ses instructions. Ses instructions d'accès mémoire disposaient d'un bit qui choisit quel mode d'adressage utiliser. S'il était à 0, l'adressage absolu était utilisé, le registre de page n'était pas utilisé. Mais s'il était à 1, le registre de page était utilisé pour calculer l'adresse.
Une évolution de l'adressage précédent est le '''mode page direct'''. Avec lui, le registre de page est étendu et contient une adresse mémoire complète. L'adresse finale n'est pas obtenue par concaténation, mais en additionnant le registre de page avec l'adresse fournie par adressage absolu + décalage. Un exemple est celui des premiers processeurs Motorola, qui géraient des adresses courtes de 8 bits. L'adresse courte de 8 bits correspondait non pas aux 256 premiers octets de la mémoire, mais à une fenêtre de 256 octets déplaçable en mémoire. La position de la fenêtre de 256 octets était spécifiée par le registre de page de 16 bits, qui précisait l'adresse du début de la fenêtre, celle de sa première donnée.
Il s'agit donc formellement d'adressage base + décalage, à un détail près : il n'y a qu'un seul registre de base. Le fait que ce registre de base soit unique fait qu'il est adressé implicitement, on n'a pas à encoder le numéro/noms de registre dans l'instruction. Le registre de base est utilisé uniquement pour l'adressage absolu, pas pour les autres accès mémoire. S'il y a des ressemblances avec la segmentation, une technique de mémoire virtuelle qu'on abordera dans quelques chapitres, ce n'en est pas vu que le registre de base est utilisé seulement pour un mode d'adressage bien précis.
===Le ''pseudo-aliasing'' des registres des processeurs Intel x86===
Voyons maintenant le cas des anciens processeurs 8 bits d'Intel à savoir l'Intel 4004, 4040, 8008 et 8080. Le Z80, un processeur inspiré des CPU Intel 8 bits, est aussi concerné. Avant de poursuivre, parlons des registres de ces processeurs. Les premiers CPU Intel incorporaient 7 registres de 8 bits nommés A, B, C, D, E, F, H, L, SP. Ils correspondent respectivement à : l'accumulateur A ; six registres nommés B, C, D, E, H et L ; le registre d'état F ; le pointeur de pile SP. Le Z80 ajoute deux registres d'indice X et Y. De plus, le Z80 dispose de registres d'interruption, qui sont en quelque sorte des copies des registres A, B, C, D, E, F, H, L. Le tout est illustré dans le tableau ci-dessous.
{|class="wikitable" style="text-align:center;"
|-
!
! Registres des CPU Intel
! Registres supplémentaires du Z80
|-
! Accumulateur
| A
| A'
|-
! Registre d'état
| F
| F'
|-
! Registres généraux
| B, C, D, E, H, L
| B', C', D', E', H', L'
|-
! Pointeur de pile
| colspan="2" | SP (sauf pour le 8008)
|-
! Registres d'indice
|
| X et Y
|}
Le 8008 incorpore une pile d'appel de 7 adresses, dans le processeur lui-même. Il en est de la même avec le 4004 et le 4040, comme on le verra dans la section sur les processeurs 4 bits. Mais le 8080 et le 8085 ont remplacé le tout par un simple pointeur de pile, afin d'avoir une véritable pile d'appel. Autant c'est impossible d'avoir une pile d'appel avec seulement 256 octets de mémoire, autant on peut se le permettre avec 65 536 adresses.
Pour gérer des adresses de 16 bits, ils auraient pu utiliser des registres d'adresse séparés, mais on préféré un système de '''pseudo-''aliasing'' de registres'''. Formellement, c'est un système qui concatène deux registres 8 bits pour obtenir une adresse de 16 bits. L’appariement a lieu lors de certaines opérations bien précises, qui n'ont de sens que pour les adresses : la lecture/écriture en mémoire, et l'incrémentation.
Il y avait cependant des contraintes quant aux paires de registres possibles, toutes les paires de registres n'étaient pas autorisées. Les CPU concernés sont donc des processeurs hybrides accumulateur-registre généraux. L'accumulateur ne peut pas être appairé, seuls les registres généraux le peuvent. Le Z80 autorise plus de paires que les CPU Intel. Voici les paires de registres qui pouvaient servir d'adresse 16 bits :
* Les CPU 8008 d'Intel autorisait une seule paire formée des registres H et L.
* Les autres processeurs, à savoir le 8080, le 8085 et le Z80, autorisaient : les paires BC, DE et HL.
Le 8008 ne gérait que des opérations sur 8 bits. Mais le 8080 et le 8085 ont ajouté des instructions 16 bits qui agissaient sur des paires de registre, que le Z80 a repris. Une paire de registres est considérée comme un registre unique de 16 bits pour certaines opérations arithmétiques, dont l'incrémentation. Voici la liste des instructions concernées :
* INC et DEC pour l'incrémentation et la décrémentation ;
* DAD : additionne le registre HL avec une autre paire (Hl inclus) ;
* LXI : copie une constante immédiate dans une paire de registres ;
* LHLD : lit 16 depuis la mémoire et l'enregistre dans une paire de registres ;
* SHLD : copie 16 bits depuis une paire de registres et l'enregistre en mémoire ;
* PUSH et POP : empile ou dépilent une paire de registre sur la pile ;
* XTHL : échange la paire HL avec les 16 bits au sommet de la pile d'appel ;
* XCHG : échange le contenu de la paire HL et DE.
Pour résumer, le processeur avait des instructions LOAD, STORE, PUSH et POP adaptées pour gérer des paires de registre. De plus, l'instruction XCHG permettait d’échanger le contenu des paires DE et HL. L'instruction a été étendue sur les processeurs 16 bits pour échanger tous les registres. Mais l'implémentation était alors différente. L'incrémentation sur une paire de 16 bit était très utile, car les adresses sont souvent incrémentées quand on parcours un tableau. Ces instructions nous donnent quelques indices sur ce qu'il y a dans le processeur.
Le système de pseudo-aliasing a un impact sur le banc de registre. Le banc de registre regroupe les registres généraux et le pointeur de pile, mais ne contient pas l'accumulateur. Les contraintes sur les paires de registres possibles ne s'expliquent que d'une seule manière : le banc de registre contient des registres de 16 bits, une paire de registres 8 bits est mémorisée dans un registre unique. Il faut donc faire une différence entre les registres architecturaux de 8 bits, et les registres réels de 16 bits.
Le banc de registre a un port de 8 bits pour les données, qui est fabriqué à partir d'un port 16 bits auquel on a rajouté un multiplexeur pour choisir soit l'octet de poids faible, soit l'octet de poids fort. Le bus de données fait 8 bits, ce qui fait que les instructions LOAD, STORE, PUSH et POP pour paires 16 bits sont réalisées en deux fois : on lit/écrit l'octet de poids faible, puis celui de poids fort. Par contre, le bus d'adresse fait bien 16 bits. Cela suggère que le banc de registre dispose d'un port de 16 bits dédié aux adresses, en plus du port de données 8 bits.
[[File:Architecture d'un CPU 8-16 bits avec un banc de registre double port.png|centre|vignette|upright=2|Architecture d'un CPU 8-16 bits avec un banc de registre double port]]
L'incrémentation d'une paire 16 bits ne coute rien à implémenter, ou presque. En effet, le processeur incorpore un incrémenteur 16 bits pour le ''program counter'', qui est relié au bus d'adresse. L'idée est de rentabiliser cet incrémenteur, en lui permettant d'incrémenter des données/adresses de 16 bits obtenues via pseudo-aliasing. De même, il peut être utilisé pour incrémenter le pointeur de pile, voire un compteur de rafraichissement mémoire (pour rappel, le rafraîchissement mémoire demande de balayer la mémoire d'adresse en adresse et été fait par le CPU à l'époque). Pour cela, il suffit de connecter le ''program counter'', le banc de registre, et l'incrémenteur, via un bus dédié.
[[File:Calcul d'adresse par ALU dédiée avec PC séparé.png|centre|vignette|upright=2|Calcul d'adresse par ALU dédiée avec PC séparé]]
Notez qu'on peut encore simplifier le tout en placant le ''program counter'' dans le banc de registre, ce qui ne gênera pas le travail de l'incrémenteur mais simplifiera le câblage au bus d'adresse. Ce n'était pas systématique, certains processeurs mettaient le ''program counter'' dans le banc de registre, d'autres non.
: Inclure le ''program counter'' dans le banc de registre permet parfois de remplir un vide. Par exemple, sur un processeur avec 12 registres, le banc de registre devrait faire idéalement 16 registres, inclure le ''program counter'' dedans fait monter le tout à 13.
[[File:Architecture d'un CPU 8-16 bits.png|centre|vignette|upright=2|Architecture d'un CPU 8-16 bits]]
Les processeurs Intel 8 bits, à savoir le 8008, le 8080 et le 8085 ; mettaient le ''program counter'' dans le banc de registre. Vous avez donc toutes les armes pour comprendre leur micro-architecture. Par exemple, voici la micro-architecture du processeur 8080. Remarquez le banc de registre, qui contient tous les registres sauf l'accumulateur et le registre. Il a deux ports : un pour les adresses et un pour les données. Notez le dé-multiplexeur sur le port de donnée. Pour le reste, il s'agit d'une architecture à accumulateur hybride des plus classiques.
[[File:Intel 8080 arch.svg|centre|vignette|upright=3|Microarchitecture de l'Intel 8080.]]
Le Z80 est un processeur inspiré du design des processeurs Intel 8 bits, mais avec pas mal d'améliorations. Un point particulier de ce processeur est son banc de registre. Il contient tous les registres du processeur, y compris l'accumulateur et le registre d'état ! Les seuls registres en-dehors du banc de registre sont le ''program counter'' et un compteur de rafraichissement mémoire IR.
Un autre point particulier est que les registres dans le banc de registres avaient une copie séparée accessible uniquement pour les interruptions, via fenêtrage de registres. Et l'accumulateur et le registre d'état étant dans le banc de registre, il y avait deux accumulateurs et deux registres d'état. Les registres A, B, C, D, E et F étaient dupliqués, par le pointeur de pile ni les registres d'indice. Les copies des registres étaient nommées A', B', C', D', E' et F'.
Le Z80 supportait des instructions d'échange de registre en plus des CPU Intel 8 bits. L'instruction EX peut échanger soit le contenu des paires D,E et H,F, soit la paire A,F avec la paire A',F'. L'instruction EXX échange les paires BC, DE, HL avec les paires BC', DE', HL'. En faisant cela, le programmeur pouvait utiliser deux fois plus de registres généraux s'il n'utilisait pas les interruptions. L'échange de paires se fait sans copies de registres, mais simplement en modifiant l'adresse envoyée sur le banc de registre. Pour cela, plusieurs bascules mémorisent des bits qui indiquent si les paires ont été échangées ou non. Il y a une bascule pour les paires DE , HL ; une autre pour les paires A,F et paire A',F', une dernière pour l'instruction EXX. En combinant ces bascules avec les noms de registres envoyés par le séquenceur, on peut échanger les paires de registres.
==Le cas particulier des processeurs 4 bits : le 4004 d'Intel==
L'Intel 4004 était le tout premier micro-processeur. Il s'agissait d'un microprocesseur de 4 bits, basé sur une architecture à accumulateur. Il disposait d'un accumulateur et de 16 registres d'indice, tous de 4 bits. Il faisait des calculs sur des données de 4 bits, appelées des nibbles. Cependant, sur ses 46 instructions machines supportées, 41 agissaient sur des opérandes de 8 bits, les 5 restantes sur des opérandes de 16 bits. Simplement, les calculs se faisaient en deux fois, en échangeant des données entre mémoire RAM et accumulateur.
Le 4004 est un circuit intégré avec peu de broches. Il dispose notamment d'un bus de données/adresse, qui est multiplexé, c’est-à-dire qu'il sert alternativement de bus de données et de bus d'adresse selon les besoins. Le bus de commande mémoire fait 5 bits, dont 4 pour les chips de RAM, un pour la ROM. Les adresses sont codées sur 12 bits, les données sur 4 et les instructions sur 8 bits. L'envoi d'une adresse sur le bus se fait en plusieurs fois, de même que la lecture d'une instruction. Il s'agit là d'une adaptation pour outrepasser les limitations d'un processeur 4 bit.
[[File:Intel 4004 processor pinout.png|centre|vignette|upright=2|Broches de l'Intel 4004. Nous verrons à quoi elles servent plus bas.]]
===L'espace d'adressage de l'Intel 4004===
Les adresses du processeur sont sur 12 bits, ce qui fait 4096 adresses différentes. Elles regroupent à la fois la ROM et la mémoire RAM, vu que l'architecture est une sorte de mélange bizarre entre une architecture Von Neumann et Harvard. Le processeur gère bien deux espaces d'adressage séparés, mais la RAM et la ROM sont reliés au même bus. La sortie CM-ROM du processeur indique si l'adresse envoyée correspond à la RAM ou la ROM. Un circuit de décodage d'adresse active ou désactive la RAM selon la valeur de ce bit, l'inverse pour la ROM, en agissant sur leurs bits Chip Select. Seule la RAM ou la ROM répondent alors à l'adresse.
Pour ce qui est de la RAM, le circuit de décodage d'adresse pouvait gérer au maximum 1024 adresses différentes, chacune contenant un nibble. Pour cela, le CPU 4004 était relié à une ou plusieurs RAM externes, des Intel 4002. Chaque Intel 4002 contenait 64 nibbles de données, plus 16 nibbles de statut qu'on ne détaillera pas ici. Les nibbles de statut étaient accessibles en utilisant des instructions d'entrée-sortie, donc pas avec des lectures/écritures mémoire. Les 64 nibbles de données sont découpés en 4 groupes de 16 nibbles. Le CPU pouvait être relié à maximum 16 Intel 4002, ce qui fait 1024 nibbles de données et 256 nibbles de statut. L'ensemble permet de remplir l'espace d'adressage de 1024 adresses.
===Le registre de page et le pseudo-aliasing des registres===
Sélectionner une adresse mémoire utilisait un mélange entre pseudo-aliasing et registre de page. Pour les données, les 1024 adresses étaient découpées en 4 pages de 256 adresses. Pour la ROM, les 4096 adresses étaient découpées en 16 pages de 256 adresses. Localiser une donnée dans une page ne requiert que 8 bits, 2/4 bits supplémentaires permettent de sélectionner la page voulue. Le registre de page était dans le processeur lui-même, et était relié aux sorties du processeur nommées CM-RAM 0, 1, 2 et 3. Les 4 sorties encodaient un nombre qui permet de sélectionner le numéro de page voulu.
Le registre de page fait 5 bits : un pour distinguer RAM et ROM, 4 bits pour sélectionner la page voulue. L'avantage est que la carte mère gère au maximum 16 chips de RAM, ce qui colle parfaitement avec les 4 utilisés pour sélectionner une page. Un chip de RAM correspond à une page, et chacun est activé ou désactivé suivant la page sélectionnée. Pour cela, il suffit d'ajouter un décodeur sur la carte mère, qui prend les 4 bits du registre de page et fournit les signaux Chip Select aux différents chips de RAM.
Reste alors à utiliser les 8 bits d'adresse à l'intérieur d'un chip de RAM. Le 4004 permettait de concaténer deux registres d'indice de 4 bits pour former une adresse de 8 bits. Les instructions d'accès mémoire pouvaient ainsi préciser une paire de registre d'indice pour préciser quelle adresse lire/écrire. Idem pour les branchements indirects : le processeur supportait une instruction de branchement indirect qui précisait l'adresse dans une paire de registres d'indice. Les registres d'indice sont donc assez mal nommés sur cette architecture, vu qu'ils peuvent servir soit de registre d'indice, soit de demi-registre d'adresse. Il s'agit là du système de pseudo-aliasing des registres, mais appliqué aux registres d'indice.
L'Intel 4004 gérait deux instructions pour gérer les adresses mémoires. La première, l'instruction DCL (''Designate Command Line'') configure le registre de page. Elle prend en entrée un numéro de page et le copie dans le registre de page. L'opérande peut provenir d'un registre d'indice ou de l'accumulateur. La seconde, l'instruction SRC (''Send Register Control'') concatène deux registres d'indice pour obtenir une adresse de 8 bits. Un accès mémoire se fait donc en maximum trois instructions : une qui configure le registre de page si ce n'est pas déjà fait, une instruction SRC pour envoyer l'adresse, et une troisième instruction qui dit s'il faut faire une lecture ou une écriture.
===La microarchitecture de l'Intel 4004===
Il incorporait une pile d'adresse de retour intégrée au processeur. La pile d'adresse acceptait exactement 3 adresses maximum. Elle était regroupée avec le ''program counter'' dans un banc de registre, de 4 registres. Le ''program counter'' et le pointeur de pile faisaient chacun 12 bits, soit trois nibble. Ils étaient incrémentés par un incrémenteur dédié.
SI on omet le registre de page et la pile d'adresse, le 4004 est une architecture à accumulateur des plus classiques, avec un bus interne unique, un banc de registre pour les registres d'indices, un accumulateur relié à une unité de calcul. Les registres d'indice étaient dans un banc de registre séparés, car ils faisaient 4 bits chacun, contrairement au pointeur de pile et le ''program counter''. Un détail important est que les bancs de registres du 4004 étaient implémentés avec de la DRAM, et non des registres usuels fabriqués avec des bascules 1 bit.
[[File:Microarchitecture de l'Intel 4004.png|centre|vignette|upright=2.5|Microarchitecture de l'Intel 4004]]
<noinclude>
{{NavChapitre | book=Fonctionnement d'un ordinateur
| prev=Les architectures à pile et mémoire-mémoire
| prevText=Les architectures à pile et mémoire-mémoire
| next=Les processeurs de traitement du signal
| nextText=Les processeurs de traitement du signal
}}
</noinclude>
p7vkpom3m1k6imx47kvc1z0ydxpqia4
765756
765755
2026-05-02T01:39:59Z
Mewtow
31375
/* Les microcontrôleurs Intel 8051/8031 */
765756
wikitext
text/x-wiki
Nous avons déjà abordé la notion de processeur 8, 16, 32, 64 bits. Elle désigne la taille des registres généraux, ou de l'accumulateur. De nos jours, les processeurs 32 et 64 bits sont la norme, mais les premiers micro-processeurs étaient des processeurs 4 et 8, avant de passer rapidement au 16 bits. La raison est que leur budget en transistor limité faisait qu'on ne pouvait pas utiliser une ALU trop grande : une ALU 8 bit prend deux fois moins de place et de transistors qu'une ALU 16 bits. Cependant, les processeurs 8 bits avaient de sérieuses limitations qui étaient compensées par diverses solutions. Dans ce chapitre, nous allons faire une revue rapide des processeurs 8 bits et de leurs fonctionnalités.
La principale limitation des CPU 8 bits était l'adressage : des registres de 8 bits limitaient l'espace d'adressage à seulement 256 adresses, soit à peine 256 octets ! Intuitivement, on se dit que 256 octets est purement impraticable, on ne peut rien faire d'intéressant avec seulement 256 de RAM + ROM. Et c'est partiellement vrai. L'adage veut que 16 bits est la taille minimale intéressante, la limite à partir de laquelle on a assez de mémoire RAM/ROM pour coder des applications intéressantes. Mais 256 octets de RAM est largement suffisant sur de nombreux systèmes embarqués simples s'en accommodent : des caisses enregistreuses, des systèmes de régulation de feu de circulation, etc.
Pour les applications demandant plus de mémoire RAM, les CPU de l'époque contournaient la limitation de 256 octets de RAM avec de nombreux stratagèmes. Dans ce qui va suivre, nous allons séparer les CPU 8 bits selon qu'ils utilisent une architecture Harvard ou une architecture Von Neumann. La raison est qu'une architecture Harvard permet en soi de contourner partiellement ce problème d'adressage. Les choses sont plus compliquées avec une architecture Von Neumann.
==Les processeurs 8/16 bits à architecture Harvard ==
La première solution est d'utiliser une architecture Harvard. Le processeur 8 bit a alors deux espaces d'adressage : un pour la RAM, un autre pour la ROM. Et les deux utilisent des adresses de taille différente. La ROM est reliée à un bus d'adresse de 16 bits, alors que la RAM est elle connectée à un bus d'adresse de 8 bits. La RAM est donc limitée à 256 octets, alors que la ROM peut monter jusqu'à 64 kibioctets. Mine de rien, faire ainsi est largement suffisant.
Les processeurs 8 bits intègrent parfois les 256 octets de RAM directement dans le processeur. Vous noterez que 256 octets de RAM est très peu, comparable à ce qu'on trouve dans un banc de registres. Aussi, fusionner banc de registre et 256 octets de SRAM est une optimisation possible. Concrètement, cela veut dire que le processeur n'intégre pas une RAM séparée, mais a un banc de 256 registres de 8 bits. Beaucoup de processeurs en implémentent moins, avec par exemple seulement 64 octets de RAM, ou 32 octets, ou 128 octets.
L'avantage est que cela élimine le bus mémoire de la RAM, ce qui économise beaucoup de broches sur le circuit intégré du CPU. Et c'est ce qui explique que cette solution est beaucoup utilisée sur les microcontrôleurs peu puissants. Les exemples qui vont suivre devraient vous convaincre. Et pour les applications demandant plus de RAM, des optimisations permettent d'adresser plus de 256 octets de RAM. La plus connue est la commutation de banques, mais nous n'avons pas encore abordé celle-ci, et il faudra attendre le chapitre sur l'espace d'adressage pour cela.
Cependant, se limiter à 256 octets de RAM demande des compromis assez forts, pour économiser un maximum d'adresses mémoire. L'usage d'une architecture Harvard est une solution très intéressante, mais on peut aller plus loin en utilisant une architecture Harvard modifiée. Pour rappel, elles permettent de lire des constantes depuis la mémoire ROM. Les constantes manipulées par le programme sont mémorisées en ROM, lues depuis la ROM, au lieu d'être chargées en RAM. Une autre optimisation est d'utiliser un espace d'adressage séparé pour les entrées-sorties, à la place d'entrées-sorties mappées en mémoire qui détournent des adresses. Cependant, de nombreux processeurs 8 bits utilisent les entrées-sorties mappées en mémoire, comme on va le voir plus bas.
Avec ce genre de stratagèmes, 256 octets de RAM est largement suffisant sur de nombreux systèmes, à condition qu'on ait assez de ROM pour coder un programme digne de ce nom. Par exemple, de nombreux systèmes embarqués simples s'en accommodent : des caisses enregistreuses, des systèmes de régulation de feu de circulation, etc. Dans ce qui suit, nous allons voir quelques processeurs 8 bits de ce type. Deux exemples seront des microcontrôleurs très utilisés de nos jours.
===Le Fairchild F8 et la console de jeu Fairchild Channel F===
Un premier exemple est la Fairchild F8 de la défunte entreprise Fairchild Semiconductor. Il incorpore un processeur 8 bits, c’est-à-dire que le processeur fait des calculs sur des entiers de 8 bits maximum, une mémoire RAM de 64 octets, ainsi qu'une mémoire ROM de 1 kibioctet. Les 64 octets de RAM sont certes très peu, mais c'est suffisant pour certaines applications simples, comme les caisses automatiques de l'époque, ou des applications embarquées. Et de toute façon, il est possible d'ajouter de la mémoire RAM supplémentaire si les 64 octets de RAM intégrée ne suffisent pas. Le système était donc modulaire, adaptable selon les besoins, peu cher pour son implémentation minimale sans RAM en plus.
Vu qu'il s'agit d'un des tout premiers ordinateurs, il est sorti à une époque où la technologie était rudimentaire. À cette époque, le processeur était composé de pièces détachées qu'il fallait souder ensemble pour obtenir un processeur fonctionnel. Ce n'est que plus tard qu'est apparu le micro-processeur, qui regroupe un processeur complet dans un seul circuit intégré. Le résultat est que le processeur du Fairchild F8 est coupé en deux, l'unité de calcul et l'unité de contrôle sont placés dans des pièces détachées séparés.
Le microcontrôleur est composé de trois à quatre pièces détachées, certaines étant optionnelles. La première est le '''3850 CPU''', qui regroupe l'unité de calcul et la mémoire RAM intégrée. La seconde est le PSU (''3851 Program Storage Unit''), qui regroupe la mémoire ROM et l'unité de contrôle, ''program counter'' inclut. S'il y a besoin d'utiliser plus de RAM, il faut ajouter un circuit d’interface mémoire, qui est au choix le ''3852 Dynamic Memory Interface'' (DMI) ou le ''3853 Static Memory Interface'', le premier étant connecté à une mémoire de type DRAM, l'autre à une SRAM (nous verrons ce que sont les DRAM et les SRAM dans le prochain chapitre).
[[File:Fairchild F8.png|centre|vignette|upright=2|Fairchild F8]]
Le système minimal est composé d'un PSU et d'un 3850, sans les circuits d'interface mémoire. Le tout donne un système avec un processeur 8 bit, 64 octets de RAM et 1 kibioctet de ROM, les deux mémoires étant intégrées dans le "processeur". Le processeur gérait 4 entrées-sorties, chacune étant reliée avec un bus de 8 bit au processeur. Au passage, en 1977, Mostek a créé un microcontrôleur qui regroupe un PSU et un 3850 : le Mostek 3870. Le système minimal n'avait pas de bus d'adresse, vu que la RAM était intégrée au processeur. C'est les 3852 et 3853 qui ajoutaient un bus d'adresse. Ils ajoutent un bus d'adresse de 16 bits, ce qui permet d'adresser 64 kibioctets de RAM.
[[File:Fairchild-Channel-F.jpg|vignette|un Fairchild Channel F]]
Le Fairchild F8 a été utilisé dans la Fairchild Channel F, une des toute première console de seconde génération, à savoir des consoles qui utilisaient des cartouches de jeu. Avant les consoles de seconde génération, les consoles étaient non-programmables. Elles étaient conçues pour faire tourner un jeu précis, aucun autre, le jeu étant implémenté dans leurs circuits.
La Fairchild Channel F est composé du système minimal, auquel on a ajouté une carte son rudimentaire et 2 kibioctets de mémoire vidéo. La mémoire vidéo sert uniquement pour afficher des images à l'écran : on écrit l'image à afficher dedans, un circuit vidéo se charge de l'afficher à l'écran automatiquement. Le processeur ne fait qu'écrire dans cette RAM vidéo, il ne peut pas en lire le contenu. De la RAM supplémentaire peut cependant être ajoutée dans les cartouches de jeu.
===Les microcontrôleurs PIC===
Les '''microcontrôleurs PIC''' regroupent des microcontrôleurs allant de microcontrôleurs 8 bits aux performances très faibles, à des microcontrôleurs 32 bits bien plus puissants. Les microcontrôleurs PIC sont très utilisés dans l'embarqué ou d'informatique industrielle. Ils sont vendus à des volumes assez impressionnants, plusieurs millions par an. Et si vous avez ou êtes en train de faire des études d'électronique, je parie que vous les avez déjà vus en classe, ou que ce ne saurait tarder. Dans ce qui suit, nous allons nous concentrer sur les microcontrôleurs PIC 8 bits, à savoir les PIC 16, 16 et 18. Les PIC 24, qui sont des microcontrôleurs 16 bits, ne seront pas abordés.
La mémoire ROM des PIC va de 1024 instructions à 4096 instructions. En comparaison, la mémoire RAM des microcontrôleurs PIC ne peut pas dépasser 256 adresses, et elle est encore plus petite en pratique sur certains modèles. Pour donner un exemple, le PIC16F84 a une RAM composée de 68 "registres" de 8 bits. Le terme "registres" devrait vous faire comprendre que les 256 octets de RAM sont en réalité un banc de registre de 256 registres d'un octet chacun. Vu que la RAM et le banc de registre sont fusionnés, il n'y a pas de différences entre nom/numéro de registre et adresse mémoire. Les registres sont donc adressables, on y accède en lisant/écrivant à une adresse mémoire bien précise.
Ce banc de registre contient des registres généraux, mais aussi des registres pour communiquer avec les ports d'entrée-sortie, des registres de contrôle, le ''program counter'', le registre d'état, et le pointeur de pile. Pour donner un exemple, sur les modèles 16F, l'espace d'adressage fait 128 octets, dont 32 sont réservés aux registres du processeur, ce qui fait que seuls 96 octets sont adressables comme de la RAM. Cela gaspille quelques adresses mémoire, mais permet une implémentation plus simple, avec une petite économie de registres et donc de transistors.
: Les PIC 18 peuvent adresser plus de 256 octets de RAM en utilisant la commutation de banques, une technique qui sera abordée dans plusieurs chapitres.
[[File:DocPIC16F84 3.png|centre|vignette|upright=3|Espaces d'adressage du PIC16F84.]]
Les PIC sont une architecture à accumulateur, ce qui permet d'utiliser un banc de registre à un seul port et simplifie grandement la conception du processeur. Il faut préciser que l'accumulateur n'est pas mappé en mémoire, sauf sur les modèles PIC 17, qui mappé l'accumulateur en mémoire RAM ! Leur implémentation de l'accumulateur ajoute une petite subtilité : le résultat d'une opération arithmétique peut être enregistré ailleurs que dans l'accumulateur. Le résultat peut aussi remplacer la seconde opérande, celle lue en mémoire RAM. Dit autrement, le résultat est enregistré dans l'adresse mémoire source. Les instructions de calcul ont le choix : un bit dans leur encodage précise où enregistrer le résultat.
{|
|-
|[[File:DocPIC16F84 4.png|centre|vignette|upright=2|Microarchitecture simplifiée d'un microcontroleur PIC (ici, un 16F84).]]
|[[File:DocPIC16F84 5.png|centre|vignette|upright=2|Microarchitecture simplifiée d'un microcontroleur PIC (ici, un 16F84), avec les branchements directs.]]
|}
La petite taille de la ROM d'un PIC n'est pas une surprise, car les architectures 8 bits sont conçues pour ne pas utiliser beaucoup de transistors et être très simples. Mais il faut adapter le jeu d'instruction, pour qu'il ait une bonne densité de code. Par exemple, il faut faire en sorte d'avoir des instructions assez courtes. Si les instructions font 16 bits au lieu de 32, on divise par deux le nombre de transistors nécessaire pour la mémoire ROM. Et le jeu d’instruction des PIC est adapté à cette contrainte.
Les microcontrôleurs PIC utilisent un jeu d'instruction propriétaire, dont les instructions sont très petites. Les premières versions du jeu d'instruction utilisaient des instructions codées sur 12 bits, dont 5 pour l'adresse mémoire de la seconde opérande. Pour les branchements, 3 bits étaient utilisés pour l'opcode, 9 pour l'adresse de destination. Par la suite, les instructions ont été étendues à 13 bits sur les PIC1670, puis à 14, 15 et 16 bits. Les adresses ont alors été élargies, ce qui permet d'adresser en peu plus de mémoire RAM.
Il est intéressant de regarder comment les PIC font pour obtenir des instructions aussi courtes. Premièrement, le fait d'utiliser une architecture à accumulateur, couplé à une RAM très petite aident grandement. Les architectures à accumulateur ont besoin de préciser un opcode et une adresse mémoire pour chaque instruction, pas besoin de préciser de noms de registres ni le mode d'adressage. La taille des adresses mémoire est censé être un problème pour la densité de code, mais les adresses d'un processeur 8 bits font 8 bits. On peut alors avoir un jeu d'instruction étoffé, en utilisant des instructions 16 bits, qui concatènent un opcode et une adresse mémoire, d'un octet chacun.
Mais d'autres optimisations permettent d'avoir une bonne densité de code. Les PIC ont des branchements pour les appels et retour de fonction. Les PIC incorporent une pile d'appel de retour, qui fait 2 à 8 adresses suivant les modèles. Elle permet d'économiser quelques registres, car la pile d'appel n'est pas mappée dans l'espace d'adressage, elle n'est pas adressable. On économise ainsi 2 à 8 registres, sur 32-256 registres. De plus, cela simplifie l'encodage des instructions d'appel/retour de fonction, qui n'ont pas à préciser où enregistre l'adresse de retour.
Les PIC n'ont pas d'instructions de branchement conditionnels, ils font avec une SKIP instruction et des branchements inconditionnels. Du moins, c'est le principe, car si vous regardez la liste des instructions ci-dessous, vous verrez qu'il n'y a pas d'instruction SKIP. À la place, les instructions SKIP sont fusionnées avec d'autres instructions. Elles sont notamment fusionnées avec les instructions d'incrémentation et de décrémentation. Les PIC supportent une incrémentation normale, une décrémentation normale, une décrémentation fusionnée avec une instruction SKIP, et une incrémentation fusionnée avec une instruction SKIP. Les deux dernières incrémentent/décrémentent l'accumulateur et SKIP l'instruction suivante si le résultat est zéro. Elles permettent de fortement simplifier l'implémentation des boucles qui s'exécutent tant que leur compteur atteint zéro.
Les PIC disposent d'instructions de manipulation de bit, pour tester/masquer un bit dans une opérande. Il y a en a 4 en tout : mettre à 0, mettre à 1, tester si bit = 1, tester si bit = 0. Les instructions qui testent un bit font le test et décident s'il faut skipper l'instruction suivante ou non. Il y a aussi deux instructions de rotation à gauche et droite, qui tiennent compte de la retenue mémorisée dans le registre d'état. Les instructions de décalages sont émulées avec une rotation suivie d'un ET bit à bit. Mentionnons aussi une instruction pour inverser deux ''nibbles'' dans un octet. De telles instructions sont très utiles pour manipuler les ports I/O.
Les modèles haute performance ajoutent des instructions d'addition avec retenue entrante, idem pour la soustraction. De telles instructions sont très utiles pour faire des additions/soustractions sur des opérandes de 16 bits. Le processeur a beau être un CPU 8 bits, il peut être utilisé pour faire des calculs 16 bits, la performance est alors amoindrie, mais ce n'est pas un problème pour les applications d'un tel microcontrôleur.
Les modèles initiaux, comme les PIC 10 et 12, ne supportaient pas les interruptions, mais c'est chose réglé sur les modèles plus récents. Ils ont même des registres séparés pour les interruptions et les programmes normaux. De plus, ils intègrent nativement un ''watchdog timer''.
{|class="wikitable" style="text-align:center"
|+ Jeu d'instruction des dodèles PCI 16
|-
! colspan="5" | Instructions diverses
|-
| colspan="3" | 00 0000 0000 0000 || NOP || Ne fait rien
|-
| colspan="3" | 00 0000 0000 1000 || RETURN || Instruction de retour pour une fonction
|-
| colspan="3" | 00 0000 0000 1001 || NOP || Instruction de retour pour une interruption
|-
| colspan="3" | 00 0000 0110 0011 || SLEEP || Mise en veille
|-
| colspan="3" | 00 0000 0110 0100 || CLRWDT || RESET le ''watchdog timer'', intégré dans le PIC
|-
! colspan="5" | Instructions de manipulation de bit
|-
| 0100 || Position du bit dans l'opérande || Adresse mémoire || BCF || Met le bit à 1
|-
| 0101 || Position du bit dans l'opérande || Adresse mémoire || BSF || Met le bit à 0
|-
| 0110 || Position du bit dans l'opérande || Adresse mémoire || BTFSC || Teste si le bit adressé est à 1
|-
| 0111 || Position du bit dans l'opérande || Adresse mémoire || BTFSS || Teste si le bit adressé est à 0
|-
! colspan="5" | Branchements
|-
| colspan="2" | 100 || Adresse mémoire || CALL || Appel de fonction
|-
| colspan="2" | 100 || Adresse mémoire || GOTO || Branchement inconditionnel
|-
! colspan="5" | Instructions logiques/arithmétiques avec opérande lue en mémoire RAM
|-
| colspan="5" | ''Le bit '''d''' dans l'opcode indique la destination : accumulateur ou adresse mémoire''.
|-
| colspan="2" | 0000001 || Adresse mémoire || MOVWF || Store (accumulateur vers destination)
|-
| colspan="2" | 000001d || Adresse mémoire || MOVWF || Met à zéro la destination (adresse ou registre)
|-
| colspan="2" | 000001d || Adresse mémoire || SUBWF || Soustraction
|-
| colspan="2" | 000010d|| Adresse mémoire || DECF || Décrémentation
|-
| colspan="2" | 000100d|| Adresse mémoire || IORWF || OU bit à bit
|-
| colspan="2" | 000101d|| Adresse mémoire || ANDWF || ET bit à bit
|-
| colspan="2" | 000110d || Adresse mémoire || XORWF || XOR bit à bit
|-
| colspan="2" | 000111d || Adresse mémoire || ADDWF VWF || Addition
|-
| colspan="2" | 001000d || Adresse mémoire || MOVF || LOAD
|-
| colspan="2" | 001001d || Adresse mémoire || COMF || NOT bit à bit
|-
| colspan="2" | 001010d || Adresse mémoire || INCF || Incrémentation
|-
| colspan="2" | 001011d || Adresse mémoire || DECFSZ || Décrémentation, puis instruction SKIP si résultat = 0
|-
| colspan="2" | 001100d || Adresse mémoire || RRF || Rotation à droite avec retenue entrante
|-
| colspan="2" | 001101d || Adresse mémoire || RLF || Rotation à gauche avec retenue entrante
|-
| colspan="2" | 001110d || Adresse mémoire || SWAPF || Echange deux ''niblle'' dans un octet
|-
| colspan="2" | 001111d || Adresse mémoire || INCFSZ || Incrémentation, puis instruction SKIP si résultat = 0
|-
! colspan="5" | Instructions logiques/arithmétiques avec constante immédiate
|-
| colspan="2" | 1100xx || Constante immédiate (8bits) || MOVLW || Copie constante dans accumulateur
|-
| colspan="2" | 1101xx || Constante immédiate (8bits) || RETLW || MOV fusionné avec un retour de fonction
|-
| colspan="2" | 111000 || Constante immédiate (8bits) || IORLW || OU
|-
| colspan="2" | 111001 || Constante immédiate (8bits) || ANDLW || ET
|-
| colspan="2" | 111010 || Constante immédiate (8bits) || XORLW || XOR
|-
| colspan="2" | 11110x || Constante immédiate (8bits) || SUBLW || Soustraction
|-
| colspan="2" | 11111x || Constante immédiate (8bits) || ADDLW || Addition
|}
Les PIC gèrent l'adressage absolu et immédiat, mais pas plus. L'adressage absolu, celui où l'adresse est intégrée dans l'instruction, est très simple à implémenter. Les adresses prennent moins d'un octet, vu que la taille de la RAM est très petite, les adresses sont très courtes, les intégrer dans des instructions elles-mêmes courtes n'est pas un problème. L'adresse est encodée sur 5 à 7 bits, selon le modèle, ce qui permet d'adresser entre 32 et 128 octets.
Les PIC ne supportent pas l'adressage indirect, mais peuvent l'émuler grâce à un '''registre d'adresse''' dédié. Il s'agit du registre FSR, qui mémorise l'adresse à lire/écrire. Il est possible de copier un pointeur dedans, qui provient soit de l'accumulateur, soit de la mémoire SRAM. Dans les deux cas, la donnée adressée est lue ou écrite dans un registre INDR, est un registre d’interfaçage rendu adressable. Le registre FSR est directement connecté sur le bus d'adresse.
Les modèles de base se débrouillent avec un registre FSR et un registre INDR, mais les modèles plus performants ont deux ou trois copies de chaque registre. Les modèles PIC18 ajoutent aussi des instructions LOAD/STORE qui émulent les modes d'adressage à post- ou pré-incrément/décrément, et le mode d'adressage "Base + Indice + Décalage", encore une fois en utilisant les registres FSR et INDR.
Avec tout ce qu'on vient de dire, vous devriez pouvoir comprendre la microarchitecture d'un PIC, qui est résumée dans ce schéma.
[[File:DocPIC16F84 all.png|centre|vignette|upright=2.5|Microarchitecture du PIC16F84.]]
===Les microcontrôleurs Intel 8051/8031===
[[File:Pinagem8031.jpg|vignette|Broches du 8051.]]
Les microcontrôleurs Intel 8051/8031 sont des microcontrôleurs 8 bits, commercialisés par Intel. Ils contiennent un processeur 8/16 bits, 4 kibioctets de mémoire ROM et une RAM de 128 octets. Niveau entrées-sorties, il contient un port série, ainsi que 4 ports d'un octet chacun sur lesquels il peut lire ou écrire. Il supporte des interruptions, avec un contrôleur d'interruption intégré. Il contient aussi deux ''timers'' de 16 bits chacun, qui déclenchent des interruptions quand ils tombent à zéro ou à une valeur configurable.
Ils ont de nombreuses ressemblances avec les microcontrôleurs PIC, mais aussi des différences notables. Par exemple, le 8051 n'a pas de pile d'adresse de retour, contrairement aux processeurs PIC. Il fait autrement, à savoir qu'il gère une pile d'appel placée en mémoire RAM,ce qui est très différent. De même, il utilise deux accumulateurs nommés A et B, le second étant surtout utilisé pour les multiplications. Car oui, le 8051 supporte les multiplications et divisions, ce qui est une autre différence avec les processeurs PIC.
Une autre différence est que les registres sont placés dans un banc de registre à part des 128 octets de SRAM. Il y a une SRAM séparée du banc de registre, contrairement à ce qu'on a sur les microcontrôleurs PIC. Par contre, les registres du processeur sont mappés en mémoire RAM, y compris les deux accumulateurs, le registre d'état, le ''program counter'', et bien d'autres. Mais le fait qu'ils soient séparés de la SRAM permet de les mapper dans l'espace d'adressage sans marcher sur les pieds de la SRAM. Vu que le processeur peut adresser 256 octets, mais n'a que 128 octets de SRAM, les registres sont mappés dans les 128 octets restants. Les entrées-sorties aussi sont mappées dans ces 128 octets restants.
L'ensemble utilise une architecture Harvard, contrairement à ce que pourrait faire croire le schéma ci-dessous.
[[File:Arkitektura mikro kontrollerit Intel 8051.png|centre|vignette|upright=2.5|Microcontrôleur 8051]]
Un détail original est que 16 octets de la SRAM sont bit-adressables, à savoir que chaque bit a sa propre adresse. En tout, cela permet d'adresser 128 bits (16 adresses * 8 bits par octet adressé). L'intervalle bit-adressable va de l'adresse 32 (inclue) à l'adresse 47 (inclue).
Les 32 premières adresses sont réservées à la mémoire SRAM, c'est 32 octets de RAM utilisable à volonté par le programmeur. Les 16 adresses suivantes sont les 16 adresses bit-adressables mentionnées dans le paragraphe précédent. Les 96 octets suivants sont de la mémoire RAM adressable, affectée par défaut à la pile d'appel mais adressable via adressage direct/indirect si besoin. Les 128 octets de poids fort sont réservés aux registres du processeur et aux entrées-sorties mappées en mémoire.
[[File:Memory map du 8051.png|centre|vignette|upright=2|Memory map du 8051]]
Les 128 octets au sommet de l'espace d'adressage sont décrits dans le schéma ci-dessous. On voit que les deux accumulateurs sont mappés dedans, de même que le registre d'état PSW, le registre de configuration des interruptions IE (''Interrupt Enable''), et quelques autres. Les ports I/O sont aussi mappés dedans, que ce soit les 4 ports parallèles ou le port série. Les deux ''timers'' sont aussi mappés dedans, ainsi que leurs registres de configuration.
Une partie des octets sont bit-adressables, et cette partie inclus les registres du processeur et les ports I/O. Pour le dire autrement, chaque bit d'un port I/O a sa propre adresse mémoire, qui permet de le sélectionner. Par contre, les registres pour les ''timers'' ne sont pas dedans, sauf pour le troisième ajouté dans des extensions du 8051.
[[File:MFrey SFR MCS-51.svg|centre|vignette|upright=2|Memory map des 128 octets de poids fort du 8051]]
Une particularité est que le processeur incorpore une '''unité de calcul de 1 bit'''. Elle permet de faire des opérations sur des bits, avec 17 instructions possibles au total. L'ALU de 1 bit est reliée à un accumulateur de 1 bit et 32 registres de 1 bit. Elle peut lire des opérandes de 1 bit en mémoire RAM ou sur les ports I/O, pour les portions qui sont bit-adressables.
Le processeur supporte aussi l'adressage indirect dans la SRAM, mais celui-ci fonctionne différemment comparé aux microcontrôleurs PIC. Il n'y a pas deux registres d'adresse dédiés, séparés des autres. À la place, l'adressage indirect est implémenté normalement, en utilisant les registres généraux. Par contre, il y a une contrainte : seuls les deux premiers registres R0 et R1 sont utilisables. En clair, seuls ces deux registres peuvent contenir une adresse, un pointeur. C'est là une différence liée au fait que le 8051 a un banc de registre séparé.
Le 8051 peut communiquer avec une mémoire RAM externe, en plus de la SRAM interne. Pour cela, le processeur du 8051 avait un espace d'adressage séparé pour la RAM externe, capable d'adresser 64 kibioctets. Communiquer avec cet espace d'adressage se faisait avec des instructions d'accès mémoire séparées des autres, pas les LOAD/STORE normaux. Par exemple, l'instruction MOVX lisaient une donnée dans cet espace d'adressage, et la copiait dans l'accumulateur ou la SRAM. Pour envoyer l'adresse à lire/écrire à cette RAM externe, le processeur incorporait un registre d'adresse dédié. Il s'agit du '''registre DPTR''', qui contient une adresse de 16 bits. Le processeur devait copier l'adresse à lire/écrire dedans, puis lancer l'instruction MOVX.
===Le HP Nanoprocessor : un processeur sans ALU===
Un dernier exemple est celui du processeur HP Nanoprocessor, de l'entreprise HP. Il a été commercialisé en 1974, en même temps que les premiers micro-processeurs d'Intel. Tous les processeurs de l'époque étaient des processeurs 8 bits et le HP Nanoprocessor ne faisait pas exception. Ce n'était pas un processeur hautes performances, il était destiné à des applications d'informatique industrielle ou embarquée. D'ailleurs, il utilisait des transistors de type metal-gate, peu performants, là où ses contemporains utilisait des transistors en silicium, plus performants.
Mais une caractéristique qui rend cela encore plus claire est qu'il n'y a pas d'ALU ! En effet, ce processeur est incapable de faire des additions, des soustractions ou autres opérations simples ! Il est cependant capable d'effectuer des incrémentations et décrémentations, des décalages, des opérations logiques comme des ET/OU/NON/XOR et bien d'autres. Il supporte en tout 48 instructions, avec un support limité des modes d'adressage indirects. Les instructions de branchement étaient des instructions SKIP, il n'y avait pas d'instructions de branchement généralistes.
Pour ce qui est des registres, il disposait de 16 registres de 8 bits et d'un accumulateur. Niveau mémoire, il était relié à une mémoire ROM, rien de plus. Il n'avait de RAM supplémentaire qu'on pouvait lui adjoindre, il devait se débrouiller avec seulement ses registres. Et cela ne posait pas de problèmes pour son usage. Seul le mode d'adressage indirect à registre est supporté, il n'y a pas de registres d'indices. Ce mode d'adressage permet de lire des données en mémoire ROM, la ROM pouvant contenir des tableaux de valeurs constantes.
: Il est possible de lui adjoindre de la RAM via les ports d'entrée-sortie, ainsi qu'une ALU, mais RAM et ALU sont traités comme des périphériques avec lesquels on communique, ils ne sont pas intégrés au processeur.
Niveau micro-architecture, il incorporait une unité de calcul logique et un circuit comparateur. Le comparateur était un circuit comparateur série des plus basiques, qui était utilisé pour les instructions de branchement et associées. L'unité de calcul logique gérait des incrémentations/décrémentation, des décalages, les opérations logiques et quelques autres. L'unité de calcul logique était bit-slicée, à savoir conçue en assemblant 8 ALU de 1 bit chacune, enchainées en série. Le tout était combiné à des circuits de ''carry skip''.
[[File:Unité de calcul du HP nanonprocessor.png|centre|vignette|upright=2|Unité de calcul du HP nanoprocessor]]
Son unité de décodage d'instruction était très simple, essentiellement basée sur des portes NOR, grâce à un encodage efficace des instructions machine. Le ''program counter'' fait 11 bits, ce qui permet d'adresser une ROM de 2 kibioctets. Le ''program counter'' était relié à un circuit incrémenteur qui gérait les isntructions SKIP (il pouvait incrémenter le ''program counter'' par pas de 1 ou de 2 en cas de SKIP). Le processeur contient aussi deux registres, qui servent en quelque sorte de pile d'adresse de retour. Un premier registre mémorise l'adresse de retour d'une fonction, l'autre mémorise le ''program counter'' lors d'une interruption, pour savoir où brancher à la fin de l'interruption.
[[File:HP nanoprocessor.png|centre|vignette|upright=2.5|HP nanoprocessor]]
Fait intéressant, le concepteur du processeur a gracieusement donné les masques utilisés pour graver le silicium du processeur au site [https://www.cpushack.com/ CPU Shack]. Les masques en question sont disponibles ici :
* [https://www.cpushack.com/2020/08/20/hp-nanoprocessor-mask-set/ HP NanoProcessor Mask Set]
* [https://www.cpushack.com/2020/08/09/the-forgotten-ones-hp-nanoprocessor/ The Forgotten Ones: HP Nanoprocessor]
Les masques ont été analysés par Ken Shirrif dans cet article de blog :
* [https://www.righto.com/2020/09/hp-nanoprocessor-part-ii-reverse.html HP Nanoprocessor part II: Reverse-engineering the circuits from the masks]
==Les processeurs 8/16 bits à architecture Von Neumann==
L'usage d'une architecture Harvard est une solution pour adresser plus de mémoire avec des CPU 8 bits. Mais plusieurs microprocesseurs commerciaux n'utilisaient pas cette solution. À la place, c'était des architectures Von Neumann, mais qui étaient capables de gérer des adresses de 16 bits. Les données faisaient 8 bits, les registres faisaient 8 bits, mais quelques techniques permettaient de gérer des adresses de 16 bits. Nous parlerons de '''processeurs 8/16 bits''' pour les désigner, et nous allons les étudier à part.
Un point important est que la gestion d'adresses de 16 bits permet d'adresser 64 kibioctets, qui peuvent être remplis avec de la RAM et de la ROM. On a donc le meilleur des mondes : 64 kibioctets de mémoire, mais avec des données de 8 bits et les économies de circuit qui vont avec. L'avantage est que le processeur peut maintenant gérer une vraie pile d'appel, pas seulement une pile d'adresse de retour. Il lui suffit pour cela d'intégrer un pointeur de pile codé sur 16 bits.
===Les modes d'adressage par page des CPU Motorola===
Les processeurs Motorola 8 bits étaient des processeurs 8 bits avec un bus d'adresse de 16 bits. C'était des processeurs à accumulateur incorporant deux registres d'indice, un registre d'état, un pointeur de pile, et un ''program counter''. Tous les registres sont reliés au bus d'adresse, sauf le registre d'état et l’accumulateur. Tous les registres font 8 bits, sauf le ''program counter''. La pile est câblée pour être dans un bloc de 256 octets compris entre l'adresse 1 0000 0000 et l'adresse 1 1111 1111, ce qui fait que son adressage se fait avec un seul octet.
[[File:6502-architecture.svg|centre|vignette|upright=1.5|Architecture simplifiée du 6502.</br> X et Y : registres d'indice ;</br> S : le pointeur de pile ;</br> A : accumulateur ;</br>P : registre d'état.</br>]]
Les processeurs Motorola 8 bits utilisaient une méthode simple pour adresser 64 kibioctets de RAM, avec des registres de 8 bits. Pour cela, ils utilisaient une variante de l'adressage base + décalage. Elle améliore l'adressage absolu, qui intègre l'adresse à lire/écrire dans l'instruction elle-même. L'adresse en question est de 8 bits et n'encode que les 8 bits de poids faible de l'adresse, les 8 bits de poids fort sont dans un '''registre de page''' adressé implicitement. L'adresse finale est obtenue en concaténant ce registre avec l'adresse mémoire intégrée dans l’instruction. Le résultat est que la mémoire était découpée en blocs de 256 consécutifs, chacun pouvant servir de fenêtre de 256 octets. Une page est réservée pour la pile, la seconde, comme dit plus haut.
Formellement, ce mode d'adressage a des ressemblances avec la commutation de banques, une technique qu'on verra dans les chapitres sur l'espace d'adressage et la mémoire virtuelle. Mais ce n'en est pas du tout : le registre de page est utilisé uniquement pour les accès mémoire avec le mode d'adressage base + décalage, mais pas pour les autres accès mémoire, qui gèrent des adresses complètes. Notons que l'usage d'un registre de page dédié fait que celui-ci est adressé implicitement.
Il faut noter que la technique a été utilisée sur des processeurs 16 bits, pour contourner la petite taille des instructions. Un exemple est celui du HP 2100, un processeur 16 bits. Il avait un registre de page de 5 bits et encodait 10 bits d'adresse dans ses instructions. Ses instructions d'accès mémoire disposaient d'un bit qui choisit quel mode d'adressage utiliser. S'il était à 0, l'adressage absolu était utilisé, le registre de page n'était pas utilisé. Mais s'il était à 1, le registre de page était utilisé pour calculer l'adresse.
Une évolution de l'adressage précédent est le '''mode page direct'''. Avec lui, le registre de page est étendu et contient une adresse mémoire complète. L'adresse finale n'est pas obtenue par concaténation, mais en additionnant le registre de page avec l'adresse fournie par adressage absolu + décalage. Un exemple est celui des premiers processeurs Motorola, qui géraient des adresses courtes de 8 bits. L'adresse courte de 8 bits correspondait non pas aux 256 premiers octets de la mémoire, mais à une fenêtre de 256 octets déplaçable en mémoire. La position de la fenêtre de 256 octets était spécifiée par le registre de page de 16 bits, qui précisait l'adresse du début de la fenêtre, celle de sa première donnée.
Il s'agit donc formellement d'adressage base + décalage, à un détail près : il n'y a qu'un seul registre de base. Le fait que ce registre de base soit unique fait qu'il est adressé implicitement, on n'a pas à encoder le numéro/noms de registre dans l'instruction. Le registre de base est utilisé uniquement pour l'adressage absolu, pas pour les autres accès mémoire. S'il y a des ressemblances avec la segmentation, une technique de mémoire virtuelle qu'on abordera dans quelques chapitres, ce n'en est pas vu que le registre de base est utilisé seulement pour un mode d'adressage bien précis.
===Le ''pseudo-aliasing'' des registres des processeurs Intel x86===
Voyons maintenant le cas des anciens processeurs 8 bits d'Intel à savoir l'Intel 4004, 4040, 8008 et 8080. Le Z80, un processeur inspiré des CPU Intel 8 bits, est aussi concerné. Avant de poursuivre, parlons des registres de ces processeurs. Les premiers CPU Intel incorporaient 7 registres de 8 bits nommés A, B, C, D, E, F, H, L, SP. Ils correspondent respectivement à : l'accumulateur A ; six registres nommés B, C, D, E, H et L ; le registre d'état F ; le pointeur de pile SP. Le Z80 ajoute deux registres d'indice X et Y. De plus, le Z80 dispose de registres d'interruption, qui sont en quelque sorte des copies des registres A, B, C, D, E, F, H, L. Le tout est illustré dans le tableau ci-dessous.
{|class="wikitable" style="text-align:center;"
|-
!
! Registres des CPU Intel
! Registres supplémentaires du Z80
|-
! Accumulateur
| A
| A'
|-
! Registre d'état
| F
| F'
|-
! Registres généraux
| B, C, D, E, H, L
| B', C', D', E', H', L'
|-
! Pointeur de pile
| colspan="2" | SP (sauf pour le 8008)
|-
! Registres d'indice
|
| X et Y
|}
Le 8008 incorpore une pile d'appel de 7 adresses, dans le processeur lui-même. Il en est de la même avec le 4004 et le 4040, comme on le verra dans la section sur les processeurs 4 bits. Mais le 8080 et le 8085 ont remplacé le tout par un simple pointeur de pile, afin d'avoir une véritable pile d'appel. Autant c'est impossible d'avoir une pile d'appel avec seulement 256 octets de mémoire, autant on peut se le permettre avec 65 536 adresses.
Pour gérer des adresses de 16 bits, ils auraient pu utiliser des registres d'adresse séparés, mais on préféré un système de '''pseudo-''aliasing'' de registres'''. Formellement, c'est un système qui concatène deux registres 8 bits pour obtenir une adresse de 16 bits. L’appariement a lieu lors de certaines opérations bien précises, qui n'ont de sens que pour les adresses : la lecture/écriture en mémoire, et l'incrémentation.
Il y avait cependant des contraintes quant aux paires de registres possibles, toutes les paires de registres n'étaient pas autorisées. Les CPU concernés sont donc des processeurs hybrides accumulateur-registre généraux. L'accumulateur ne peut pas être appairé, seuls les registres généraux le peuvent. Le Z80 autorise plus de paires que les CPU Intel. Voici les paires de registres qui pouvaient servir d'adresse 16 bits :
* Les CPU 8008 d'Intel autorisait une seule paire formée des registres H et L.
* Les autres processeurs, à savoir le 8080, le 8085 et le Z80, autorisaient : les paires BC, DE et HL.
Le 8008 ne gérait que des opérations sur 8 bits. Mais le 8080 et le 8085 ont ajouté des instructions 16 bits qui agissaient sur des paires de registre, que le Z80 a repris. Une paire de registres est considérée comme un registre unique de 16 bits pour certaines opérations arithmétiques, dont l'incrémentation. Voici la liste des instructions concernées :
* INC et DEC pour l'incrémentation et la décrémentation ;
* DAD : additionne le registre HL avec une autre paire (Hl inclus) ;
* LXI : copie une constante immédiate dans une paire de registres ;
* LHLD : lit 16 depuis la mémoire et l'enregistre dans une paire de registres ;
* SHLD : copie 16 bits depuis une paire de registres et l'enregistre en mémoire ;
* PUSH et POP : empile ou dépilent une paire de registre sur la pile ;
* XTHL : échange la paire HL avec les 16 bits au sommet de la pile d'appel ;
* XCHG : échange le contenu de la paire HL et DE.
Pour résumer, le processeur avait des instructions LOAD, STORE, PUSH et POP adaptées pour gérer des paires de registre. De plus, l'instruction XCHG permettait d’échanger le contenu des paires DE et HL. L'instruction a été étendue sur les processeurs 16 bits pour échanger tous les registres. Mais l'implémentation était alors différente. L'incrémentation sur une paire de 16 bit était très utile, car les adresses sont souvent incrémentées quand on parcours un tableau. Ces instructions nous donnent quelques indices sur ce qu'il y a dans le processeur.
Le système de pseudo-aliasing a un impact sur le banc de registre. Le banc de registre regroupe les registres généraux et le pointeur de pile, mais ne contient pas l'accumulateur. Les contraintes sur les paires de registres possibles ne s'expliquent que d'une seule manière : le banc de registre contient des registres de 16 bits, une paire de registres 8 bits est mémorisée dans un registre unique. Il faut donc faire une différence entre les registres architecturaux de 8 bits, et les registres réels de 16 bits.
Le banc de registre a un port de 8 bits pour les données, qui est fabriqué à partir d'un port 16 bits auquel on a rajouté un multiplexeur pour choisir soit l'octet de poids faible, soit l'octet de poids fort. Le bus de données fait 8 bits, ce qui fait que les instructions LOAD, STORE, PUSH et POP pour paires 16 bits sont réalisées en deux fois : on lit/écrit l'octet de poids faible, puis celui de poids fort. Par contre, le bus d'adresse fait bien 16 bits. Cela suggère que le banc de registre dispose d'un port de 16 bits dédié aux adresses, en plus du port de données 8 bits.
[[File:Architecture d'un CPU 8-16 bits avec un banc de registre double port.png|centre|vignette|upright=2|Architecture d'un CPU 8-16 bits avec un banc de registre double port]]
L'incrémentation d'une paire 16 bits ne coute rien à implémenter, ou presque. En effet, le processeur incorpore un incrémenteur 16 bits pour le ''program counter'', qui est relié au bus d'adresse. L'idée est de rentabiliser cet incrémenteur, en lui permettant d'incrémenter des données/adresses de 16 bits obtenues via pseudo-aliasing. De même, il peut être utilisé pour incrémenter le pointeur de pile, voire un compteur de rafraichissement mémoire (pour rappel, le rafraîchissement mémoire demande de balayer la mémoire d'adresse en adresse et été fait par le CPU à l'époque). Pour cela, il suffit de connecter le ''program counter'', le banc de registre, et l'incrémenteur, via un bus dédié.
[[File:Calcul d'adresse par ALU dédiée avec PC séparé.png|centre|vignette|upright=2|Calcul d'adresse par ALU dédiée avec PC séparé]]
Notez qu'on peut encore simplifier le tout en placant le ''program counter'' dans le banc de registre, ce qui ne gênera pas le travail de l'incrémenteur mais simplifiera le câblage au bus d'adresse. Ce n'était pas systématique, certains processeurs mettaient le ''program counter'' dans le banc de registre, d'autres non.
: Inclure le ''program counter'' dans le banc de registre permet parfois de remplir un vide. Par exemple, sur un processeur avec 12 registres, le banc de registre devrait faire idéalement 16 registres, inclure le ''program counter'' dedans fait monter le tout à 13.
[[File:Architecture d'un CPU 8-16 bits.png|centre|vignette|upright=2|Architecture d'un CPU 8-16 bits]]
Les processeurs Intel 8 bits, à savoir le 8008, le 8080 et le 8085 ; mettaient le ''program counter'' dans le banc de registre. Vous avez donc toutes les armes pour comprendre leur micro-architecture. Par exemple, voici la micro-architecture du processeur 8080. Remarquez le banc de registre, qui contient tous les registres sauf l'accumulateur et le registre. Il a deux ports : un pour les adresses et un pour les données. Notez le dé-multiplexeur sur le port de donnée. Pour le reste, il s'agit d'une architecture à accumulateur hybride des plus classiques.
[[File:Intel 8080 arch.svg|centre|vignette|upright=3|Microarchitecture de l'Intel 8080.]]
Le Z80 est un processeur inspiré du design des processeurs Intel 8 bits, mais avec pas mal d'améliorations. Un point particulier de ce processeur est son banc de registre. Il contient tous les registres du processeur, y compris l'accumulateur et le registre d'état ! Les seuls registres en-dehors du banc de registre sont le ''program counter'' et un compteur de rafraichissement mémoire IR.
Un autre point particulier est que les registres dans le banc de registres avaient une copie séparée accessible uniquement pour les interruptions, via fenêtrage de registres. Et l'accumulateur et le registre d'état étant dans le banc de registre, il y avait deux accumulateurs et deux registres d'état. Les registres A, B, C, D, E et F étaient dupliqués, par le pointeur de pile ni les registres d'indice. Les copies des registres étaient nommées A', B', C', D', E' et F'.
Le Z80 supportait des instructions d'échange de registre en plus des CPU Intel 8 bits. L'instruction EX peut échanger soit le contenu des paires D,E et H,F, soit la paire A,F avec la paire A',F'. L'instruction EXX échange les paires BC, DE, HL avec les paires BC', DE', HL'. En faisant cela, le programmeur pouvait utiliser deux fois plus de registres généraux s'il n'utilisait pas les interruptions. L'échange de paires se fait sans copies de registres, mais simplement en modifiant l'adresse envoyée sur le banc de registre. Pour cela, plusieurs bascules mémorisent des bits qui indiquent si les paires ont été échangées ou non. Il y a une bascule pour les paires DE , HL ; une autre pour les paires A,F et paire A',F', une dernière pour l'instruction EXX. En combinant ces bascules avec les noms de registres envoyés par le séquenceur, on peut échanger les paires de registres.
==Le cas particulier des processeurs 4 bits : le 4004 d'Intel==
L'Intel 4004 était le tout premier micro-processeur. Il s'agissait d'un microprocesseur de 4 bits, basé sur une architecture à accumulateur. Il disposait d'un accumulateur et de 16 registres d'indice, tous de 4 bits. Il faisait des calculs sur des données de 4 bits, appelées des nibbles. Cependant, sur ses 46 instructions machines supportées, 41 agissaient sur des opérandes de 8 bits, les 5 restantes sur des opérandes de 16 bits. Simplement, les calculs se faisaient en deux fois, en échangeant des données entre mémoire RAM et accumulateur.
Le 4004 est un circuit intégré avec peu de broches. Il dispose notamment d'un bus de données/adresse, qui est multiplexé, c’est-à-dire qu'il sert alternativement de bus de données et de bus d'adresse selon les besoins. Le bus de commande mémoire fait 5 bits, dont 4 pour les chips de RAM, un pour la ROM. Les adresses sont codées sur 12 bits, les données sur 4 et les instructions sur 8 bits. L'envoi d'une adresse sur le bus se fait en plusieurs fois, de même que la lecture d'une instruction. Il s'agit là d'une adaptation pour outrepasser les limitations d'un processeur 4 bit.
[[File:Intel 4004 processor pinout.png|centre|vignette|upright=2|Broches de l'Intel 4004. Nous verrons à quoi elles servent plus bas.]]
===L'espace d'adressage de l'Intel 4004===
Les adresses du processeur sont sur 12 bits, ce qui fait 4096 adresses différentes. Elles regroupent à la fois la ROM et la mémoire RAM, vu que l'architecture est une sorte de mélange bizarre entre une architecture Von Neumann et Harvard. Le processeur gère bien deux espaces d'adressage séparés, mais la RAM et la ROM sont reliés au même bus. La sortie CM-ROM du processeur indique si l'adresse envoyée correspond à la RAM ou la ROM. Un circuit de décodage d'adresse active ou désactive la RAM selon la valeur de ce bit, l'inverse pour la ROM, en agissant sur leurs bits Chip Select. Seule la RAM ou la ROM répondent alors à l'adresse.
Pour ce qui est de la RAM, le circuit de décodage d'adresse pouvait gérer au maximum 1024 adresses différentes, chacune contenant un nibble. Pour cela, le CPU 4004 était relié à une ou plusieurs RAM externes, des Intel 4002. Chaque Intel 4002 contenait 64 nibbles de données, plus 16 nibbles de statut qu'on ne détaillera pas ici. Les nibbles de statut étaient accessibles en utilisant des instructions d'entrée-sortie, donc pas avec des lectures/écritures mémoire. Les 64 nibbles de données sont découpés en 4 groupes de 16 nibbles. Le CPU pouvait être relié à maximum 16 Intel 4002, ce qui fait 1024 nibbles de données et 256 nibbles de statut. L'ensemble permet de remplir l'espace d'adressage de 1024 adresses.
===Le registre de page et le pseudo-aliasing des registres===
Sélectionner une adresse mémoire utilisait un mélange entre pseudo-aliasing et registre de page. Pour les données, les 1024 adresses étaient découpées en 4 pages de 256 adresses. Pour la ROM, les 4096 adresses étaient découpées en 16 pages de 256 adresses. Localiser une donnée dans une page ne requiert que 8 bits, 2/4 bits supplémentaires permettent de sélectionner la page voulue. Le registre de page était dans le processeur lui-même, et était relié aux sorties du processeur nommées CM-RAM 0, 1, 2 et 3. Les 4 sorties encodaient un nombre qui permet de sélectionner le numéro de page voulu.
Le registre de page fait 5 bits : un pour distinguer RAM et ROM, 4 bits pour sélectionner la page voulue. L'avantage est que la carte mère gère au maximum 16 chips de RAM, ce qui colle parfaitement avec les 4 utilisés pour sélectionner une page. Un chip de RAM correspond à une page, et chacun est activé ou désactivé suivant la page sélectionnée. Pour cela, il suffit d'ajouter un décodeur sur la carte mère, qui prend les 4 bits du registre de page et fournit les signaux Chip Select aux différents chips de RAM.
Reste alors à utiliser les 8 bits d'adresse à l'intérieur d'un chip de RAM. Le 4004 permettait de concaténer deux registres d'indice de 4 bits pour former une adresse de 8 bits. Les instructions d'accès mémoire pouvaient ainsi préciser une paire de registre d'indice pour préciser quelle adresse lire/écrire. Idem pour les branchements indirects : le processeur supportait une instruction de branchement indirect qui précisait l'adresse dans une paire de registres d'indice. Les registres d'indice sont donc assez mal nommés sur cette architecture, vu qu'ils peuvent servir soit de registre d'indice, soit de demi-registre d'adresse. Il s'agit là du système de pseudo-aliasing des registres, mais appliqué aux registres d'indice.
L'Intel 4004 gérait deux instructions pour gérer les adresses mémoires. La première, l'instruction DCL (''Designate Command Line'') configure le registre de page. Elle prend en entrée un numéro de page et le copie dans le registre de page. L'opérande peut provenir d'un registre d'indice ou de l'accumulateur. La seconde, l'instruction SRC (''Send Register Control'') concatène deux registres d'indice pour obtenir une adresse de 8 bits. Un accès mémoire se fait donc en maximum trois instructions : une qui configure le registre de page si ce n'est pas déjà fait, une instruction SRC pour envoyer l'adresse, et une troisième instruction qui dit s'il faut faire une lecture ou une écriture.
===La microarchitecture de l'Intel 4004===
Il incorporait une pile d'adresse de retour intégrée au processeur. La pile d'adresse acceptait exactement 3 adresses maximum. Elle était regroupée avec le ''program counter'' dans un banc de registre, de 4 registres. Le ''program counter'' et le pointeur de pile faisaient chacun 12 bits, soit trois nibble. Ils étaient incrémentés par un incrémenteur dédié.
SI on omet le registre de page et la pile d'adresse, le 4004 est une architecture à accumulateur des plus classiques, avec un bus interne unique, un banc de registre pour les registres d'indices, un accumulateur relié à une unité de calcul. Les registres d'indice étaient dans un banc de registre séparés, car ils faisaient 4 bits chacun, contrairement au pointeur de pile et le ''program counter''. Un détail important est que les bancs de registres du 4004 étaient implémentés avec de la DRAM, et non des registres usuels fabriqués avec des bascules 1 bit.
[[File:Microarchitecture de l'Intel 4004.png|centre|vignette|upright=2.5|Microarchitecture de l'Intel 4004]]
<noinclude>
{{NavChapitre | book=Fonctionnement d'un ordinateur
| prev=Les architectures à pile et mémoire-mémoire
| prevText=Les architectures à pile et mémoire-mémoire
| next=Les processeurs de traitement du signal
| nextText=Les processeurs de traitement du signal
}}
</noinclude>
sytkv7aiwcgjl8bqfmv6e18chbcr00j
Fonctionnement d'un ordinateur/Les architectures à accumulateur
0
82386
765681
763756
2026-05-01T14:00:45Z
Mewtow
31375
765681
wikitext
text/x-wiki
Les architectures que nous avons vu précédemment dans ce cours disposent de registres pour les données, en plus du pointeur de pile, d'un ''program counter'', et de quelques autres. Elles sont appelées des '''architectures à registres''', terme qui trahit bien le fait qu'elles ont des registres généraux ou spécialisés pour stocker temporairement des données. Et si on leur a donné un nom, c'est parce qu'il existe des architectures qui ne sont pas dans cette catégorie. Il en existe plusieurs types, mais ce chapitre va se concentrer sur les '''architectures à accumulateur'''.
[[File:Isaccumulator.png|vignette|Architecture à accumulateur.]]
Les architectures à accumulateur sont centrées autour d'un registre architectural appelé l''''accumulateur'''. Il est utilisé pour toutes les opérations arithmétiques dyadiques, où il sert à la fois de source et de destination. Toutes les instructions dyadiques sont de type ''load-op'' : une opérande est lue depuis l'accumulateur, le second opérande est lu depuis la mémoire RAM, le résultat de l'instruction est automatiquement mémorisé dans l'accumulateur. Les instructions monadiques peuvent utiliser un opérande dans l'accumulateur, ou dans la mémoire RAM, les deux sont théoriquement possibles.
La conséquence est que le nombre d'accès mémoire est drastiquement diminué : de 3 par instructions sur une architecture mémoire-mémoire, on passe à seulement un avec un accumulateur. Les opérations dyadiques ont besoin d'un seul accès mémoire pour lire la seconde opérande, les opérations monadique en font aussi un seul pour lire leur unique opérande.
{|class="wikitable"
|-
! Classe d'architecture
! Nombre d'accès mémoire par opération dyadique
|-
|-
! Architecture à accumulateur
| Un accès mémoire par instruction, pour lire la seconde opérande
|-
! Architecture à registres
| Zéro si les opérandes sont dans les registres, un pour les opérations ''load-op'', LOAD et STORE.
|}
Les architectures à accumulateur ont été les premières à apparaitre, bien avant les architectures à registre. Les tout premiers ''mainframes'', au tout début de l'informatique, étaient des architectures à accumulateur. Elles ont perduré avant que des ''mainframes'' utilisant des registres généraux les remplacent progressivement. Pour ce qui est de l'informatique grand public, les premiers microprocesseurs n'étaient pas exactement des architectures à accumulateur, les choses étaient assez variées. Les architectures à accumulateur sont aujourd'hui peu utilisées, sauf dans l'informatique embarquée/industrielle, et pour les processeurs de traitement de signal. Dans l'embarqué, les microcontrôleurs de faible puissance sont souvent dans ce cas, l'exemple type étant celui des microcontrôleurs PIC.
==Le jeu d'instruction des architectures à accumulateur sans registres d'indice==
L'accumulateur est adressé grâce au mode d'adressage implicite, de même que le résultat de l'opération. Par contre, les autres opérandes sont localisés avec d'autres modes d'adressage, et lues en mémoire RAM. Le résultat ainsi qu'un des opérandes sont adressés de façon implicite car dans l'accumulateur, seule la seconde opérande étant adressée directement. Grâce à l'accumulateur, une instruction ne fait qu'un seul accès mémoire maximum, ce qui rend le processeur très facile à implémenter.
===Les registres des anciennes architectures à accumulateur===
[[File:IBM 701console.jpg|vignette|IBM 701, console extérieure.]]
Les architectures à accumulateur étaient communes dans les années 50-60. A l'époque, les ordinateurs étaient des ''mainframes'', à savoir des ordinateurs gigantesques, qui occupaient une pièce de bâtiment complète dans le pire des cas, une armoire entière dans le meilleur. Les ordinateurs de l'époque étaient surtout utilisés pour du calcul scientifique ou des tâches d’ingénierie demandant beaucoup de calcul, rarement pour de la comptabilité ou des tâches administratives. En conséquence, ils devaient gérer des nombres entiers, mais ne supportaient pas de texte, ni de nombres encodés en BCD. De tels processeurs utilisaient l'adressage par mot, et non par byte, vu que ce dernier est surtout utile pour adresser des caractères de texte.
Les nombres flottants n'étaient pas encore apparus. A la place, les ordinateurs de l'époque géraient des nombres entiers de grande taille, de 30 bits ou plus. En conséquence, l'accumulateur faisait facilement 30 à 60 bits. Par exemple, les ordinateurs de la Série scientifique IBM 700/7000 géraient des entiers de 36 bits, l’accumulateur faisait 38 bits : 36 bits plus deux bits pour les débordements.
Historiquement, les premières architectures à accumulateur ne contenaient aucun autre registre que l'accumulateur. Ce n'est que dans les années 60 que de nombreuses architectures à accumulateur ont ajouté un second '''registre pour les multiplication/divisions'''. Un exemple est celui de l'IBM 701, qui incorporait un registre accumulateur de 38 bits et un registre multiplieur de 36 bits. Le registre mémorise le multiplieur lors d'une opération de multiplication. Il mémorise donc un opérande, pas le résultat. Il peut aussi décaler le multiplieur vers la droite/gauche, ce qui est utile pour exécuter la multiplication. C'est ce qui est fait sur l'IBM 7094.
Une autre possibilité est que ce registre mémorise une partie du résultat de l'opération. Pour rappel, le résultat d'une multiplication/division est codé sur deux fois de bits que ses opérandes. Par exemple, multipliez deux opérandes de 30 bits, vous obtiendrez un résultat de 60 bits. Les 30 bits de poids faible du résultat vont dans l'accumulateur, les 30 bits de poids fort vont dans ce second registre.
Les architectures à accumulateur parfois un '''registre pour le pointeur de pile''', utilisé pour gérer les fonctions/procédures. Les architectures à accumulateurs supportaient une pile d'adresse de retour, souvent une pile d'appel. Mais pour cela, il fallait mémoriser le pointeur de pile dans le processeur, ce qui demandait un registre dédié.
===L'adressage indirect avec l'accumulateur===
Les instructions LOAD et STORE existent bel et bien sur les architectures à accumulateur, mais n'ont pas les mêmes modes d'adressages. L'instruction LOAD copie une donnée de la RAM vers l'accumulateur, l'instruction STORE copie l'accumulateur dans une adresse. Les deux instructions n'ont pas besoin d'adresser l'accumulateur, qui est adressé de manière implicite, juste de préciser l'adresse à lire/écrire.
Les architectures à accumulateur supportaient souvent le mode d'adressage indirect mémoire. Un exemple est celui des ordinateurs Data General Nova, qui sont des architectures à accumulateur et qui supportaient ce mode d'adressage. Les deux instructions LOAD et STORE existaient en deux versions, distinguées par un bit d'indirection. Si ce bit est à 0 dans l'opcode, alors l'instruction utilise le mode d'adressage absolu normal : l'adresse intégrée dans l'instruction est celle de la donnée. Mais s'il est à 1, alors l'adresse intégrée dans l'instruction est celle du pointeur.
Cependant, la présence de l'accumulateur permettait d'utiliser l'adressage indirect à registre, pour gérer les pointeurs. Pour rappel, avec le mode d'adressage indirect à registre, l'adresse à lire/écrire est dans un registre. Ici, l'adresse à lire/écrire est prise dans l'accumulateur, seul registre disponible pour. L'adressage indirect est plus simple à implémenter pour l'instruction LOAD, car elle prend un seul opérande : l'adresse à lire. L'adresse à lire est placée dans l'accumulateur, la donnée lue est elle aussi chargée dans l'accumulateur. Pour l'instruction STORE, il faut fournir deux opérandes, l'adresse et la donnée à écrire, ce qui peut poser problème. Mais au pire, il est toujours possible d'utiliser l'adressage absolu ou indirect mémoire : l'adresse est dans l'instruction, la donnée à écrire dans l'accumulateur.
===L'encodage des instructions===
Sur une architecture à accumulateur l'encodage d'une instruction dyadique est assez simple, vu que l'accumulateur est adressé implicitement. La seconde opérande est localisée soit par une adresse mémoire (adressage absolu), soit est une constante (adressage immédiat). L'adresse mémoire est généralement assez longue, plus que l'opcode.
{|class="wikitable"
|+ Encodage d'une instruction dyadique
|-
! rowspan="2" | Opcode
| Adresse mémoire (adressage absolu)
|-
| Constante (adressage immédiat)
|}
L'encodage d'une instruction monadique est similaire. Si l'opérande est lue depuis la mémoire RAM, alors l'instruction est encodée comme une instruction dyadique. Il en est de même pour les instructions qui copient une constante dans l'accumulateur. Par contre, si l'opérande est dans l'accumulateur, alors il y a juste besoin d'encoder l'opcode. La majorité des instructions a besoin de préciser une adresse, rares sont celles qui s'en passent. Au vu de cet encodage, les architectures à accumulateur sont qualifiées d''''architectures à une adresse''' par abus de langage.
Il est intéressant de contraster leur encodage avec les architectures à registres. Les architectures à registre doivent encoder deux opérandes en plus de l'opcode, avec éventuellement où enregistrer le résultat sur les architectures 3-adresses. Par contre, les opérandes sont généralement des noms de registre, ce qui prend moins de place qu'une adresse mémoire. A la rigueur, les instructions avec une constante immédiate prennent un peu plus de place, car elles doivent encoder un nom de registre en plus de la constante et de l'opcode. Les instructions ''load-op'' des processeurs CISC sont un peu dans le même cas, sauf qu'il faut remplacer la constante par une adresse, qui a généralement la même taille. Les instructions sont donc en moyenne plus courte sur les processeurs à registre, du fait de la présence de registres.
==La micro-architecture des architectures à accumulateur sans registres d'indice==
L'organisation interne d'une architecture à accumulateur est très différente de celle des processeurs à registre. Elle est plus ou moins la même pour tous ces processeurs, le point important étant que le chemin de données se résume à une ALU, un registre accumulateur et le bus de données. L'ALU est reliée au registre accumulateur, ainsi qu'au bus de données pour lire la seconde opérande, comme illustré ci-dessous.
[[File:Accumulator.png|centre|vignette|upright=2|Accumulateur.]]
===L'unité de calcul et l'accumulateur===
Pour simplifier l'implémentation, le résultat est mémorisé dans un registre en sortie de l'unité de calcul. La raison est qu'on ne veut pas altérer l'accumulateur tant que le résultat final n'est pas totalement calculé. Rappelons que l'ALU ne fournit pas un résultat d'un seul bloc, mais que certains bits arrivent avant les autres, typiquement les bits de poids faible. Si le résultat était écrit dans l'accumulateur directement, il écraserait des bits de l’opérande en cours d'utilisation, ce qui fausserait le résultat.
[[File:Accumulateur avec registre de sortie.png|centre|vignette|upright=2|Accumulateur avec registre de sortie]]
Une autre solution utilisait un registre entre l'accumulateur et l'unité de calcul, appelé l’'''''accumulator latch'''''. Il remplace le registre en sortie de l'ALU, dans le sens où il permet d'écrire dans l'accumulateur sans effacer l'opérande, pendant que l’opération est en cours dans l'ALU. L'accumulateur est copié dans l’''accumulator latch'', avant que l'ALU démarre ses calculs. L'opérande est donc maintenue même si on commence à écrire le résultat dans l'accumulateur.
Sur le 8085 d'Intel, l’''accumulator latch'' peut être initialisé avec une constante prédéfinie, ce qui permet d'implémenter certaines instructions très facilement. Par exemple, il peut être initialisé à 0, ce qui permet d'implémenter les instructions MOV et INC (incrémentation). Un MOV est équivalent à faire un OU entre le registre lu et 0. Une instruction INC initialise l'entrée de retenue de l'unité de calcul à 1, puis ajoute 0. La décrémentation est implémentée de la même manière, sauf que l’''accumulator latch'' est initialisé à -2 pour compenser l'entrée de retenue à 1. De plus, pour supporter les conversion de décimal à BCD, l’''accumulator latch'' peut être initialisé avec les constantes 0x00, 0x06, 0x60, or 0x66. L'''accumulator latch'' est relié à divers fils de commande provenant de l'unité de contrôle, qui décide quelle valeur d'initialisation utiliser en fonction de l'instruction décodée.
[[File:Accumulator latch.png|centre|vignette|upright=2|Accumulator latch]]
[[File:Chemin de données à un seul bus.png|vignette|Chemin de données à un seul bus]]
De même, la seconde opérande, celle lue sur le bus de données, est mémorisée dans un registre en amont de l'ALU. C'était notamment très utile si le processeur utilisait une ALU plus courte que les opérandes, avec par exemple une ALU 4 bits pour un CPU 8 bits. Les anciens processeurs à accumulateur de type ''mainframe'' utilisaient des opérandes de grande taille, du genre 36 ou 48 bits, ce qui avait des conséquences sur l'unité de calcul utilisée, ainsi que sur la communication avec la mémoire. Il arrivait que de tels processeurs utilisaient des ALU sérielles, ou du moins octet-sérielles, plutôt qu'une véritable ALU 36 bits. Nous verrons aussi que c'est très utile sur les processeurs à accumulateur avec un bus interne unique, dans la suite du chapitre.
===La micro-architecture des architectures à accumulateur avec instructions LOAD/STORE===
Nous venons de voir comment est implémenté l'unité de calcul et l'accumulateur, et comment le tout est relié au bus de données. Mais cela ne permet que d'avoir un processeur à accumulateur rudimentaire, qui ne gére que des instructions arithmétiques et logiques. Il faut aussi gérer le cas des opérations LOAD/STORE et des modes d'adressages associés, mais c'est le séquenceur qui s'en occupe. Avec l'adressage absolu, les instructions LOAD et STORE ne font que connecter l'accumulateur au bus de données. L'instruction STORE nécessite de connecter l'accumulateur au bus de données, de manière à ce que le transfert des données se fasse de l'accumulateur vers le bus de données. L'instruction LOAD s'implémente de la même manière, sauf que le sens de transfert est inversé.
Cependant, il existe une optimisation qui permet d'implémenter l'instruction LOAD sans ajouter de circuits. Pour cela, il suffit que l'unité de calcul gére les opérations ''pass through'', à savoir des opérations qui se contentent de recopier un opérande sur la sortie. Ici, l'idée est de recopier l'opérande provenant du bus de données.
[[File:Architecture à accumulateur, microarchitecture.png|centre|vignette|upright=2|Architecture à accumulateur, microarchitecture]]
Pour gérer nativement l'adressage indirect à registre, il suffit de connecter l'accumulateur au bus d'adresse. Le plus simple est d'ajouter un multiplexeur, comme illustré ci-dessous. La donnée lue est copiée dans l'accumulateur, ce qui fait qu'il vaut mieux utiliser un registre d’interfaçage, l'accumulateur n'étant pas utilisable à la fois pour le bus d'adresse et de données.
[[File:Adressage indirect sur une architecture à accumulateur.png|centre|vignette|upright=2|Adressage indirect sur une architecture à accumulateur]]
Pour finir, voyons comment le pointeur de pile et le ''program counter'' sont implémentés. Les architectures à accumulateur ont souvent des adresses de taille différente des données, ce qui fait qu'il vaut mieux utiliser un circuit incrémenteur dédié pour incrémenter le ''program counter'', plutôt que de l'incrémenter via l'unité de calcul. Les architectures à accumulateur ont parfois un pointeur de pile, qui gère une pile d'adresse de retour, pas une vraie pile d'appel. Aussi, le pointeur de pile est censé être incrémenté et décrémenté, pas plus. Pas d'addition ou de soustraction pour gérer des cadres de pile. Là encore, c'est la solution de l'incrémenteur séparé qui est retenue. Pour économiser des transistors, il n'y a qu'un seul incrémenteur partagé pour les deux.
==Les architectures à accumulateur à registres d'indice==
Les architectures à accumulateur décrites dans la section précédente sont capables de faire de l'adressage indirect, mais n'incluent pas les modes d'adressage base + indice et absolus indicés, qui prennent une adresse et y ajoute un indice. Il s'agit des toutes premières architectures à accumulateur, comme les premiers ordinateurs IBM ou le fameux PDP-8. Mais par la suite, les processeurs à accumulateurs ont inclus un support des modes d'adressages indicés, grâce à des '''registres d'indice'''.
===Les registres d'indice===
Les registres d'indice stockent des indices de tableaux. Ils permettaient de supporter deux modes d'adressage :
* Le '''mode d'adressage absolu indicé''' où une adresse fixe est additionnée à un indice variable. L'adresse fixe est intégrée dans l'instruction (adressage absolu), l'indice est dans un registre d'indice.
* Le '''mode d'adressage base + indice''', où l'adresse est dans l'accumulateur et l'indice dans le registre d'indice.
Les processeurs à accumulateur supportaient souvent des variantes des modes d'adressage précédents, où le registre d'indice était automatiquement incrémenté ou décrémenté à chaque utilisation.
Au départ, ces processeurs n'utilisaient qu'un seul registre d'indice qui se comportait comme un second accumulateur spécialisé dans les calculs d'adresses mémoire. Le processeur supportait de nouvelles instructions qui utilisaient ce registre d'indice de façon implicite. Mais avec le temps, les processeurs finirent par incorporer plusieurs de ces registres. Les instructions de lecture ou d'écriture devaient alors préciser quel registre d'indice utiliser, en précisant un nom de registre d'indice, un numéro de registre d'indice.
Il faut préciser que les registres d'indice ont une taille bien plus petite que l'accumulateur. Ils mémorisent des indices codés sur 16 bits ou moins, alors que l'accumulateur faisait typiquement 36 à 48 bits, parfois plus. La taille classique sur les anciens ''mainframes'' était de 15 bits, parfois moins. Il n'était pas rare de tomber sur des registres d'indice de 8 ou 9 bits. Leur petite taille rendait leur implémentation matérielle peu couteuse. Et c'est ce qui explique qu'ils étaient préférés à l'usage d'un second accumulateur.
Un exemple est le cas du processeur Motorola 6809, un processeur à accumulateur qui contient deux registres d'indices nommés X et Y. L'accumulateur est noté D et fait 16 bits, il peut être parfois géré comme deux accumulateurs séparés A et B de 8 bits chacun. Il contenait aussi deux pointeurs de pile, l'un pour les programmes, l'autre pour le système d'exploitation, ainsi qu'un ''program counter''. Le registre de page était utilisé pour l'adressage absolu, comme vu dans le chapitre sur les modes d'adressage.
[[File:6809 Internal Registers.svg|centre|vignette|upright=2|6809 Internal Registers]]
Les processeurs IBM avaient autrefois plusieurs registres d'indice. Par exemple, l'IBM 704 avait trois registres d'indice de 15 bits. Leur contenu était soustrait de l'adresse absolue. Une instruction pouvait utiliser plusieurs registres d'indice pour adresser son opérande. Toute instruction utilisait trois bits pour sélectionner les registres d'indice utilisés. Fait assez original, lorsque plusieurs registres d'indice sont sélectionnés, le processeur n'additionne pas les trois registres à l'adresse de base. À la place, il fait un OU bit à bit entre les registres d'indice sélectionnés, et additionne le résultat à l'adresse.
Les processeurs IBM à accumulateur ont fait ça sur toute la gamme IBM 700/7000, pour des raisons de compatibilité. Les processeurs suivants avaient 7 registres d'indices, mais conservaient les trois bits pour adresser les registres d'indices. Ils pouvaient fonctionner dans deux modes. Le premier mode est plus intuitif : les trois bits précisent un registre d'indice parmi les 7, qui est additionné avec l'adresse absolue. La valeur zéro indique qu'aucun registre d'indice n'est utilisé, ce qui explique qu'il y a 7 registres d'indice et non 8. Un second mode, compatible avec l'IBM 704, fait un OU logique entre les registres d'indice sélectionnés. Seuls les trois premiers registres d'indices peuvent être sélectionnés dans ce mode. Il y a deux instructions pour changer de mode : une pour passer en mode compatible, l'autre pour le quitter pour l'autre mode.
Quelques rares processeurs à registres généraux ont utilisés des registres d'indice, en plus des registres généraux. Ce qui fait l'association que nous avons faite entre registres d'indice et architectures à accumulateur est imparfait, bien que solide sur le principe. Un exemple d'architecture de ce type sont les architectures de la série UNIVAC 1100/2200. Ils disposaient de 128 registres, qui étaient mappés en mémoire à partir de l'adresse mémoire 0, la majorité étant inaccessibles par le programmeur. Ils regroupaient 12 registres accumulateurs, 11 registres d'indice et 4 registres hybrides qui pouvaient servir soit de registre d'indice, soit de registres accumulateurs.
===La micro-architecture des architectures à accumulateur avec registres d'indice===
La présence de registres d'indice modifie grandement l'implémentation du processeur. En effet, il faut rajouter un banc de registre pour les registres d'indice. Le banc de registre est monoport, car on a besoin de lire ou d'écrire un indice à la fois. Et il faut aussi potentiellement rajouter de quoi faire les calculs d'adresse. Deux solutions sont possibles : une ALU dédiée aux calculs d'adresse, une seule ALU pour toutes les opérations.
Dans le premier cas, il y a une ALU séparée associée aux registres d'indice. L'ALU et les registres d'indice sont placés en sortie du séquenceur, en-dehors du chemin de données, la sortie de l'ALU est directement connectée au bus d'adresse. L'unité de calcul d'adresse peut être utilisée pour incrémenter le ''program counter''. Un défaut de cette approche est qu'elle ne gère pas l'adresse indirect à registre.
[[File:Chemin de données sans support des pointeurs, avec adressage absolu indicé.png|centre|vignette|upright=2|Chemin de données sans support des pointeurs, avec adressage absolu indicé]]
Une autre option utilise un bus interne, qui interconnecte tout le chemin de données. Dans sa version la plus simple, il est relié à l'accumulateur, l'unité de calcul, le banc de registre d'indice et le bus de données. Avec cette solution, l'ALU est utilisé à la fois pour calculer les adresses et pour les instructions de calcul. En reliant le bus interne au bus d'adresse à travers un multiplexeur, on gère naturellement les adressages indirects.
[[File:Architecture à accumulateur avec registres associés.png|centre|vignette|upright=2.5|Architecture à accumulateur avec registres associés]]
Il faut noter que sur les architectures Von Neumann, le séquenceur est relié à ce bus interne. En effet, charger une instruction demande de passer par le bus mémoire, donc par l’intermédiaire de ce bus internet. Le ''program counter'' est envoyé sur ce bus pour lire l'instruction, puis l'instruction lue est recopiée dans le registre d'instruction. Le chargement d'une instruction est donc géré comme une lecture des plus classiques. De plus, cela permet d'incrémenter le ''program counter'' au niveau de l'unité de calcul entière. Le ''program counter'' est envoyé sur le bus interne, incrémenté par l'ALU, puis le résultat est recopié dans le ''program counter'' via le bus interne.
[[File:Architecture à accumulateur avec bus unique de type Von Neumann.png|centre|vignette|upright=2|Architecture à accumulateur avec bus unique de type Von Neumann]]
==Les processeurs bi-accumulateurs : le Motorola 6800==
Le Motorola 6800 était un processeur 8 bits qui gérait des adresses de 16 bits. Il contenait deux accumulateurs nommés A et B, de 8 bits chacun. Il disposait aussi d'un registre d'indice, d'un pointeur de pile et d'un ''program counter'', tous les trois de 16 bits. Le registre d'état regroupait 6 bits, qu'on ne détaillera pas ici.
[[File:MC6800 Processor Diagram.png|centre|vignette|upright=2|Interface et registres du MC6800.]]
La présence des deux accumulateurs impactait surtout les instructions dyadiques. Les instructions monadiques avaient juste à préciser où se trouvait l'opérande : soit en RAM, soit dans le premier accumulateur, soit dans le second. Pour les opérations dyadiques, la gestion était totalement différente. En théorie, le premier opérande est dans un accumulateur, soit A, soit B. La seconde opérande vient soit de l'autre accumulateur, soit de la mémoire RAM. Et selon les instructions, tout variait.
Pour l'addition, il y avait trois instructions. Les deux premières additionnaient un opérande provenant de la mémoire avec un accumulateur. L'instruction ADDA sélectionnait le premier accumulateur, l'instruction ADDB sélectionnait le second accumulateur. Mais une troisième instruction, l’instruction ABA, permettait d'additionner le contenu des deux accumulateurs.
Pour les autres opérations, il n'était pas possible d'utiliser les deux accumulateurs en même temps. La seule possibilité était de faire une opération entre un accumulateur et un opérande venant de la mémoire. Toutes les instructions étaient en double, avec une copie par accumulateur. Par exemple, l'instruction ANDA faisait un ET entre l’accumulateur A et l'opérande mémoire, l'instruction ANDB faisait pareil avec l'accumulateur B.
==Les architectures hybrides registres-accumulateur==
Il a existé quelques architectures qui étaient des hybrides entre architectures à accumulateur et architecture à registre. Elles avaient un accumulateur unique, couplé à un banc de registres généraux. D'autres registres étaient souvent présents, comme un registre d'état, des registres pour la pile, etc.
Elles sont apparues assez tôt, dès les années 50. Et c'était à une époque où les ordinateurs étaient intégralement construits avec des tubes à vides et autres mémoires spécialisées. Par exemple, le Bull Gamma 3 était un ordinateur de type ''mainframe'' qui disposait de deux accumulateurs, de 5 registres généraux, de deux registres pour la pile, d'un registre à décalage utilisé pour les opérations arithmétiques et BCD, et d'un registre d'état rudimentaire de deux bits (un bit de signe, un bit pour les résultats de comparaison).
Mais ces architectures sont restées assez confidentielles pendant les années 50 à 80. Par la suite, elles ont eu un regain de popularité durant les années 80-90. Elles ont alors servit de transition entre architectures à accumulateur proprement dites, et architectures à registres. Par exemple, les processeurs Intel 8 bits disposaient de 7 registres de 8 bits nommés A, B, C, D, E, F, H, L, SP. Ils correspondent respectivement à :
* l'accumulateur A ;
* six registres nommés B, C, D, E, H et L ;
* le registre d'état F ;
* le pointeur de pile SP.
Sur ces processeurs, les instructions dyadiques devaient mettre leur premier opérande dans l'accumulateur, la seconde provenait soit des registres, soit de la RAM, soit d'une constante immédiate. Les opérations monadiques pouvaient lire leur opérande depuis l'accumulateur, les autres registres ou la RAM, tout était permis. Les registres d'indices disparaissaient sur ces architectures, en théorie. Les registres généraux pouvaient être utilisés comme registre d'indice ou pour stocker des opérandes, ils étaient assez versatiles pour servir de registres d'indices.
La présence de registres a de nombreux avantages, comparé aux architectures à accumulateur pures. Les instructions arithmétiques sont plus rapide, lire un registre étant plus rapide qu'un accès RAM. Les performances sont donc augmentées. De plus, les instructions arithmétiques utilisant ces registres sont plus courtes : pas besoin d'encoder une adresse mémoire, un nom de registre suffit. Vu que les processeurs de l’époque avaient des instructions de taille variable, cela améliorait la densité de code.
===La micro-architecture des processeurs hybrides registres-accumulateur===
La micro-architecture de ces processeurs est très similaire à celle d'un processeur avec des registres d'indices. La seule différence est que le banc de registre contient des registres généraux et non des registres d'indices. Le banc de registre est systématiquement monoport, car il n'avait aucune raison d'être multiport. Pour les instructions dyadiques, seules à lire deux opérandes, il ne servait que pour la seconde opérande, la première était lue depuis l'accumulateur.
Les processeurs hybrides registre-accumulateur se classent en deux types principaux : ceux qui ont un seul bus interne, et ceux qui en ont deux. Le premier cas est identique à celui vu précédemment pour les architectures à accumulateur avec registres d'indice, à la seule différence est que le banc de registre contient des registres généraux et non des registres d'indices. Afin de gérer l'adressage indirect à registre, le bus interne est connecté aux deux registres d’interfaçage mémoire.
[[File:Architecture à accumulateur avec bus unique de type Von Neumann.png|centre|vignette|upright=2|Architecture à accumulateur avec bus unique de type Von Neumann]]
Notons que cela permet aussi d'implémenter facilement les branchements indirects, car le bus interne permet d'échanger des adresses entre ''program counter'' et banc de registre. De même, il est possible d'utiliser l'ALU pour gérer les branchements indirects., en plus de l'utiliser pour incrémenter le ''program counter''.
[[File:Single bus organization.jpg|centre|vignette|upright=2|Single bus organization]]
Une autre solution utilisait deux bus internes : un connecté au bus de données, un autre relié au bus d'adresse. Le bus de commande mémoire était lui commandé par le séquenceur, l'unité de contrôle. L'intermédiaire entre ces deux bus était le banc de registre, ainsi que les autres registres. Le banc de registre était connecté aux deux bus interne, avec un port de lecture relié au bus d'adresse, un port de lecture-écriture relié au bus de données. Le port de lecture était utilisé pour l'adressage indirect, l'autre l'était pour le reste.
[[File:Proz1-e.png|centre|vignette|upright=2|Intérieur d'un processeur.]]
L'organisation à deux bus simplifiait la gestion du ''program counter'' et le chargement des instructions. Le ''program counter'' était soit séparé du banc de registre, soit placé dans le banc de registre. Les deux solutions étaient utilisés, tout dépend du processeur. Il faut noter que si le ''program counter'' est intégré au banc de registres, alors la microarchitecture du processeur est bien plus simple. L'envoi du ''program counter'' sur le bus d'adresse utilise le port de lecture relié au bus d'adresse, qui sert aussi pour l'adressage indirect. L'économie de circuits, sans compter la simplicité d'implémentation que cela implique, explique sans doute que la technique a été utilisée sur quelques processeurs anciens.
Le ''program counter'' était généralement incrémenté par l'ALU, ce qui explique qu'il soit connecté au bus interne pour les données. La connexion est aussi utile pour gérer les branchements indirects, qui copient un registre dans le ''program counter'', ainsi que les branchements relatifs (addition dans l'ALU), voire les branchements directs (l'adresse vers laquelle brancher est envoyée en entrée de l'ALU et propagée en sortie avec une opération ''pass through'').
[[File:Connexion du program counter sur les bus avec PC dans le banc de registres.png|centre|vignette|upright=2|Connexion du program counter sur les bus avec PC dans le banc de registres]]
===Les registres d'interruption avec un processeur hybride-accumulateur : l'exemple du Z80===
Un exemple de processeur registre-accumulateur à deux bus interne est le Z80, un processeur fortement inspiré des CPU Intel 8 bits. Il a un jeu d'instruction similaire, mais a diverses améliorations par rapport au design original. Notamment, le processeur a des registres séparés pour les interruptions.
Sur le Z80, les registres généraux sont dupliqués avec 6 registres pour les interruptions et 6 registres pour les programmes autres. Leur copie pour les interruptions sont nommées B', C', D', E', H', L'. Les 12 registres sont placés dans le banc de registre, ce qui implique que le fenêtrage de registres est utilisé pour gérer la séparation entre registre d'interruption et normaux. Il faut noter que l'accumulateur et le registre d'état sont aussi dupliqués, leurs copies étant nommées A' et F'. Mais leur duplication se fait autrement que par fenêtrage de registre.
En plus des registres précédents, le Z80 incorporait deux registres d'indice nommés X et Y, ainsi qu'un pointeur de pile SP et un ''program counter'' PC. Ils n'étaient pas dupliqués pour les interruptions. Les registres d'indice étaient reliés à une unité de calcul d'adresse. L'unité de calcul d'adresse prenait deux opérandes : un indice, et une adresse mémoire provenant soit du banc de registre, soit de l'accumulateur. En clair, l'unité de calcul d'adresse faisait le lien entre les deux bus internet : le bus de données interne en entrée, le bus d'adresse en sortie.
À l'intérieur du processeur, tous les registres étaient regroupés dans un banc de registre unique, sauf les accumulateurs, les registres d'état et le ''program counter''. Bien que ce ne soit pas indiqué sur le schéma ci-dessous, le ''program counter'' est séparé du banc de registre, alors que le pointeur de pile est dedans. Le compteur IR est lui associé au ''program counter'', il est sorti du banc de registre. Le Z80 utilise lui aussi un incrémenteur séparé de l'ALU, qui est utilisé pour mettre à jour le ''program counter'', le pointeur de pile et un compteur de rafraichissement mémoire nommé IR sur le Z80 (pour rappel, le rafraichissement mémoire demande de balayer la mémoire d'adresse en adresse et été fait par le CPU à l'époque). De plus, il est utilisé pour les instructions INC et DEC qui incrémentent une opérande de 16 bits obtenue en combinant deux registres de 8 bits. En clair, l'incrémenteur du ''program counter'' a été réutilisé de beaucoup de manières originales.
[[File:Z80 arch.svg|centre|vignette|upright=3|Microarchitecture du Z80.]]
Le Z80 incorporait des instructions pour échanger le contenu des deux ensembles de registres, accumulateur inclus. Elles permettaient d'utiliser les registres d'interruption pour les programmes et réciproquement. En clair, cela doublait le nombre de registres si les interruptions n'étaient pas utilisées.
* L'instruction EXX échangeait les deux fenêtres de registres généraux : les registres B, C, D, E, H et L devenaient les registres B', C', D', E', H' et L' et inversement.
* L'instruction EX échangeait l'accumulateur et le registre d'état : les registres A,F devenait A',F' et inversement.
Le fenêtrage de registre était modifié par l'instruction EXX, qui échangeait les deux fenêtres de registres. Pour l'implémenter, une bascule était ajouté au processeur, appelons-la la bascule INT. Elle était relié au bus d'adresse du banc de registre, dont elle mémorisait le bit de poids fort. L'instruction EXX inversait la valeur de la bascule INT. Il est aussi possible d'échanger le contenu des registres D,E et H,L avec une instruction dédiée, ce qui est là encore fait par deux bascules : une pour les registres D,E et une autre pour les registres H,L.
Pour l'accumulateur et le registre d'état, le choix entre registre normal et registre d'interruption se faisait là encore par une seconde bascule appelée la bascule A. La bascule est reliée à un multiplexeur et un démultiplexeur, qui permet de choisir quel accumulateur relier à l'unité de calcul. L'instruction EX inverse le contenu de la bascule A.
<noinclude>
{{NavChapitre | book=Fonctionnement d'un ordinateur
| prev=L'implémentation matérielle des branchements
| prevText=L'implémentation matérielle des branchements
| next=Les architectures à pile et mémoire-mémoire
| nextText=Les architectures à pile et mémoire-mémoire
}}
</noinclude>
d2buyc09u0viq3tqss8uxp67tkgrhgw
Manuel de terminale de philosophie/Devoir
0
83076
765758
753462
2026-05-02T06:58:15Z
PandaMystique
119061
765758
wikitext
text/x-wiki
{{ManuelPhilo}}
==Introduction : qu'est-ce que le devoir ?==
Le concept de devoir occupe une place centrale dans la réflexion morale. Dans la vie quotidienne, nous utilisons fréquemment le verbe ''devoir'' : le médecin dit à son patient qu'il doit avoir une alimentation équilibrée, un mari promet à son épouse de lui être fidèle, un citoyen se doit de respecter les lois<ref>Maxime Kristanek, « Devoir (GP) », ''L'Encyclopédie philosophique'', [https://encyclo-philo.fr/item/1749], consulté en 2025.</ref>. Mais que signifie exactement ce terme lorsqu'il s'applique à la morale ?
Le devoir désigne une obligation morale, c'est-à-dire ce que nous devons faire indépendamment de nos désirs personnels et de nos intérêts immédiats. Il s'agit d'une exigence qui s'impose à notre volonté et qui se distingue de la simple contrainte physique ou de la nécessité naturelle. Contrairement à ce qui ''est'' (le domaine des faits), le devoir exprime ce qui ''doit être'' (le domaine des normes)<ref>Henry Sidgwick, ''The Methods of Ethics'', seventh edition, London, Macmillan and co., 1907, p. 46.</ref>.
Le concept de devoir peut être analysé en termes de raison d'agir : dire « je dois faire telle action » signifie « j'ai une raison de faire cette action »<ref>Charles Larmore, « La connaissance morale », dans R. Ogien (dir.), ''Le réalisme moral'', PUF, Paris, 1999, p. 392.</ref>. Parmi les raisons d'agir, on distingue les raisons prudentielles (fondées sur nos désirs et intérêts personnels) et les raisons morales (qui s'imposent à nous indépendamment de nos désirs). Par exemple, si un patient mange des légumes parce qu'il désire être en bonne santé, il agit selon une raison prudentielle. En revanche, si un homme reste fidèle à sa promesse même lorsque cela ne lui procure aucun avantage, il agit selon une raison morale, par devoir.
Une question directrice traverse l'ensemble de la réflexion philosophique sur le devoir : faut-il y voir une loi rationnelle universelle qui s'impose à toute volonté, une exigence sociale liée aux institutions concrètes, une forme d'accomplissement de notre nature, une convention utile à la vie commune, ou encore une construction historique dont la prétention à l'objectivité est contestable ? Ces réponses ne s'excluent pas toujours, mais elles dessinent des conceptions différentes du sens de l'obligation morale, du rapport entre devoir et bonheur, entre devoir et liberté, entre règle universelle et situation singulière. C'est cette pluralité de réponses que les pages qui suivent cherchent à exposer.
''Note préliminaire'' : les trois caractéristiques du devoir moral détaillées ci-dessous correspondent principalement à la conception kantienne du devoir et ne font pas consensus dans toutes les philosophies morales. Aristote, par exemple, ne pense pas l'action morale à partir d'une loi universelle comparable à l'impératif catégorique, puisque la vertu suppose une appréciation des circonstances particulières.
===Les caractéristiques du devoir moral (selon Kant)===
Le devoir moral possède, dans la perspective kantienne, trois caractéristiques essentielles :
# La catégoricité : le devoir s'applique indépendamment de nos désirs. Contrairement aux impératifs hypothétiques (« si tu veux réussir cet examen, tu dois travailler »), le devoir moral constitue un impératif catégorique qui commande sans condition : « tu ne dois pas mentir », même si mentir pourrait te procurer un avantage<ref>Emmanuel Kant, ''Fondements de la métaphysique des mœurs'', trad. fr. V. Delbos, Paris, Librairie Delagrave, 1907 (1785), p. 125.</ref>.
# L'universalité : les devoirs moraux, chez Kant, ne varient pas en fonction de circonstances particulières arbitraires. L'universalité porte d'abord sur la forme rationnelle de la maxime, c'est-à-dire sur la possibilité que la règle de l'action soit voulue par tout être raisonnable, et non sur une liste mécaniquement identique d'actions à accomplir.
# La prépondérance : les raisons morales fournies par nos devoirs doivent l'emporter sur nos raisons prudentielles et sur les conventions sociales. Si nous avons le devoir de sauver un enfant de la noyade, cette obligation doit primer sur notre désir de protéger nos vêtements coûteux<ref>R. M. Hare, ''Penser en morale, entre intuition et critique'', trad. M. Bozzo-Rey, J.-P. Cléro et C. Wrobel, Paris, Hermann, 2020 (1981).</ref>.
==Les principales conceptions philosophiques du devoir==
===L'éthique kantienne du devoir===
Emmanuel Kant (1724-1804) propose la conception la plus influente de la morale du devoir dans la philosophie moderne. Pour lui, seules les actions accomplies par devoir ont une véritable valeur morale. Cette conception se sépare nettement des morales antiques qui plaçaient le bonheur au centre de la réflexion éthique.
====L'impératif catégorique====
Kant formule le principe suprême de la moralité sous la forme de l'impératif catégorique, qui se décline en trois formulations principales.
''Première formulation (universalisation)'' : « Agis uniquement d'après la maxime qui fait que tu puisses vouloir en même temps qu'elle devienne une loi universelle »<ref>Emmanuel Kant, ''Fondements de la métaphysique des mœurs'', trad. V. Delbos, Paris, Librairie Delagrave, 1907 (1785), p. 94.</ref>. Cette formule nous invite à nous demander si la règle qui guide notre action pourrait être suivie par tous sans contradiction. Par exemple, si chacun mentait systématiquement, la confiance disparaîtrait et il deviendrait impossible de communiquer : le mensonge ne peut donc être une loi universelle<ref>Onora O'Neill, ''Constructions of Reason: Explorations of Kant's Practical Philosophy'', Cambridge, Cambridge University Press, 1989, chap. 5.</ref>.
''Deuxième formulation (humanité comme fin)'' : « 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 une fin, et jamais simplement comme un moyen »<ref>Emmanuel Kant, ''Fondements de la métaphysique des mœurs'', trad. V. Delbos, Paris, Librairie Delagrave, 1907 (1785), p. 71 (section II).</ref>. Cette formule exprime le respect dû à la dignité humaine. Chaque personne possède une valeur intrinsèque et ne peut être réduite à un simple instrument au service des fins d'autrui.
''Troisième formulation (autonomie)'' : « Agis de telle sorte que ta volonté puisse se considérer elle-même en même temps comme légiférant universellement grâce à sa maxime »<ref>Emmanuel Kant, ''Fondements de la métaphysique des mœurs'', trad. V. Delbos, Paris, Librairie Delagrave, 1907 (1785), p. 79 (section II).</ref>. Cette formulation insiste sur l'autonomie : en obéissant à la loi morale, l'être humain obéit à une loi qu'il se donne à lui-même par sa raison<ref>Allen W. Wood, ''Kantian Ethics'', Cambridge, Cambridge University Press, 2008, chap. 4 ; Christine M. Korsgaard, ''Creating the Kingdom of Ends'', Cambridge, Cambridge University Press, 1996.</ref>.
====Agir par devoir, non par inclination====
Pour Kant, il est essentiel de distinguer les actions conformes au devoir et les actions accomplies par devoir. Un marchand peut vendre honnêtement ses produits, mais s'il le fait uniquement par intérêt (pour conserver sa clientèle), son action est conforme au devoir sans avoir de valeur morale authentique. En revanche, si une personne désespérée conserve sa vie non par peur ou par désir de bonheur, mais par devoir, alors son action possède une véritable valeur morale<ref>Emmanuel Kant, ''Fondements de la métaphysique des mœurs'', première section, trad. V. Delbos, Paris, Delagrave, 1907 (1785), p. 13-15.</ref>.
Cette conception exigeante souligne que la valeur morale de l'action ne dépend pas de ses conséquences ni de l'inclination qui la motive, mais de l'intention pure d'accomplir son devoir. Il faut toutefois préciser que Kant accorde une place propre au sentiment moral : le ''respect'' pour la loi morale est, chez lui, le seul sentiment qui ne précède pas la loi mais en résulte. La loi morale produit dans le sujet un sentiment qui n'est pas la cause mais l'effet de l'obligation. Kant écrit : « Une action accomplie par devoir tire sa valeur morale non pas du but qui doit être atteint par elle, mais de la maxime d'après laquelle elle est décidée »<ref>Emmanuel Kant, ''Fondements de la métaphysique des mœurs'', première section, trad. V. Delbos, Paris, Delagrave, 1907 (1785), p. 18.</ref>.
====Le devoir et la liberté====
Le devoir ne s'oppose pas à la liberté mais la réalise. Pour Kant, être libre ne signifie pas faire ce que l'on veut (cela serait l'esclavage des passions), mais agir selon la raison. En obéissant à la loi morale, l'être humain n'obéit qu'à lui-même, à sa raison, et conquiert ainsi son autonomie. Au contraire, celui qui agit selon ses penchants immédiats demeure hétéronome, soumis à des forces extérieures à sa raison<ref>Voir Allen W. Wood, ''Kantian Ethics'', Cambridge, Cambridge University Press, 2008, chap. 6.</ref>.
====Devoir et bonheur selon Kant====
Chez Kant, le devoir peut entrer en conflit avec notre bonheur empirique. La moralité exige parfois de sacrifier nos intérêts personnels. Cependant, Kant pense que la raison pratique nous oriente vers ce qu'il appelle le ''souverain bien'', c'est-à-dire l'union de la vertu et du bonheur, la vertu en étant la condition. Pour rendre pensable la possibilité d'une telle harmonie, Kant introduit deux postulats de la raison pratique : l'immortalité de l'âme et l'existence de Dieu<ref>Emmanuel Kant, ''Critique de la raison pratique'', Dialectique, livre II, chap. II, trad. F. Picavet, Paris, PUF, 1965 (1788).</ref>. Il importe de souligner que ces postulats ne fondent pas la validité de la loi morale, qui s'impose par la raison pure. Ils accompagnent l'espérance liée au souverain bien : la loi morale serait obligatoire même si l'âme n'était pas immortelle et même si Dieu n'existait pas.
===L'éthique aristotélicienne de la vertu===
Aristote (384-322 av. J.-C.), dans son ''Éthique à Nicomaque'', propose une conception très différente de la morale, centrée non sur le devoir au sens moderne, mais sur la vertu (''arétè'') et le bonheur (''eudaimonia''). Aristote ne construit d'ailleurs pas une morale du devoir au sens kantien : il pense d'abord la formation du caractère, la vertu, la prudence et la vie bonne. Parler de « devoir » à son sujet est donc en partie anachronique.
====La vertu comme disposition acquise====
Pour Aristote, les vertus morales ne sont pas innées : elles s'acquièrent par l'habitude et l'exercice. C'est en pratiquant les actions justes que nous devenons justes, en accomplissant des actions modérées que nous devenons modérés, en accomplissant des actions courageuses que nous devenons courageux<ref>Aristote, ''Éthique à Nicomaque'', II, 1, 1103a-b.</ref>. La vertu est une disposition stable (''hexis'') qui rend possible l'action bonne. L'homme vertueux trouve un plaisir propre dans l'action conforme à la vertu, mais ce plaisir n'efface pas l'effort requis : la vertu reste une disposition rationnelle, acquise par l'exercice et orientée par la prudence<ref>Pierre Aubenque, ''La prudence chez Aristote'', Paris, PUF, 1963.</ref>.
====Le juste milieu====
La vertu se définit comme un juste milieu entre deux excès. Par exemple, le courage est le juste milieu entre la lâcheté (excès de crainte) et la témérité (absence de crainte). La tempérance est le juste milieu entre l'insensibilité et l'intempérance. Ce juste milieu n'est pas une moyenne arithmétique, mais une disposition appropriée aux circonstances et à la personne. Il s'agit d'une médiété ''relative à nous'', c'est-à-dire déterminée en tenant compte de la situation concrète et de l'individu, selon l'appréciation de l'homme prudent<ref>Aristote, ''Éthique à Nicomaque'', II, 6, 1106b36-1107a2.</ref>.
====La prudence (phronesis)====
La vertu morale s'accompagne nécessairement d'une vertu intellectuelle appelée prudence ou sagesse pratique (''phronesis''). Cette faculté permet de délibérer correctement pour déterminer, dans chaque situation particulière, quelle est l'action appropriée. Aristote la définit comme une disposition rationnelle relative à l'action, capable de discerner ce qui est bon ou mauvais pour un être humain<ref>Aristote, ''Éthique à Nicomaque'', VI, 5, 1140b4-6.</ref>.
====Le bonheur comme fin dernière====
Contrairement à Kant, Aristote ne sépare pas vertu et bonheur. Pour lui, la vie vertueuse n'est pas un sacrifice pénible mais l'accomplissement de notre nature rationnelle et sociale. La vertu n'est donc pas seulement un moyen d'atteindre le bonheur : elle en est une part constitutive. Le bien pour l'homme consiste dans une activité de l'âme en accord avec la vertu<ref>Aristote, ''Éthique à Nicomaque'', I, 7, 1098a16-18.</ref>. Toutefois, Aristote reconnaît que le bonheur véritable suppose aussi un certain nombre de biens extérieurs (santé, ressources, amitiés, conditions politiques favorables). Sans ces biens, l'exercice de la vertu reste possible mais difficile. Aristote distingue par ailleurs plusieurs formes de vie bonne : la vie pratique vertueuse, ordonnée à l'action politique et morale, et la vie contemplative (''theoria''), à laquelle il réserve la forme la plus haute d'accomplissement humain<ref>Aristote, ''Éthique à Nicomaque'', X, 7-8 ; Rosalind Hursthouse, ''On Virtue Ethics'', Oxford, Oxford University Press, 1999 ; Alasdair MacIntyre, ''After Virtue'', Notre Dame, University of Notre Dame Press, 1981.</ref>.
===Hegel : du devoir abstrait à l'éthicité concrète===
Georg Wilhelm Friedrich Hegel (1770-1831) critique la conception kantienne du devoir qu'il juge trop abstraite et formelle. Dans ses ''Principes de la philosophie du droit'' (1820), il distingue trois sphères.
''Le droit abstrait'' : la sphère de la propriété et du contrat, où l'individu est reconnu comme personne juridique.
''La moralité'' (''Moralität'') : la sphère de la conscience morale subjective, du devoir intérieur, telle que Kant l'a conçue. Pour Hegel, cette sphère reste insuffisante car elle demeure abstraite et individuelle.
''L'éthicité'' (''Sittlichkeit'') : la sphère des institutions concrètes (famille, société civile, État) où le devoir trouve son contenu effectif. Dans l'éthicité, l'individu n'accomplit pas ses devoirs par contrainte intérieure abstraite. Il les reconnaît comme siens en s'identifiant aux institutions historiques et rationnelles auxquelles il appartient. L'éthicité n'est donc pas une simple naturalité sociale ; elle est une médiation rationnelle où la liberté subjective et l'ordre institutionnel se rejoignent<ref>Jean-François Kervégan et Gilles Marmasse (dir.), ''Hegel penseur du droit'', Paris, CNRS Éditions, 2004 ; Jean-François Kervégan, ''L'effectif et le rationnel. Hegel et l'esprit objectif'', Paris, Vrin, 2007.</ref>.
Hegel ne propose pas une simple réconciliation entre devoir et inclination. Il opère ce qu'il nomme une ''Aufhebung'', c'est-à-dire un dépassement qui conserve certains éléments d'une position antérieure tout en les transformant et en les replaçant dans un ensemble plus riche. La morale kantienne est ainsi reprise et intégrée à l'universel concret des institutions. Cela ne signifie pas que l'État résoudrait par lui-même tous les conflits possibles entre l'individu et la société : Hegel reconnaît la possibilité de tensions, et les analyses du chapitre sur la société civile montrent qu'elle produit ses propres déséquilibres.
Pour Hegel, le devoir bien compris ne s'oppose pas aux inclinations : la disposition éthique consiste à reconnaître dans l'accomplissement de ses devoirs la réalisation de son intérêt propre. Dans l'État rationnel, le citoyen accomplit ses devoirs non comme un sacrifice imposé du dehors mais en réalisant sa propre liberté<ref>Hegel, ''Principes de la philosophie du droit'', § 147 et § 150.</ref>.
===Rousseau : le citoyen et la volonté générale===
Jean-Jacques Rousseau (1712-1778), dans ''Du Contrat social'' (1762), pense le devoir politique à partir de la notion de volonté générale.
====Le contrat social====
Par le contrat social, chaque individu s'associe avec tous les autres en mettant « en commun sa personne et toute sa puissance sous la suprême direction de la volonté générale »<ref>Jean-Jacques Rousseau, ''Du Contrat social'', livre I, chapitre 6.</ref>. Cette aliénation totale de chacun crée un corps politique dont chaque membre est à la fois citoyen (participant au pouvoir souverain) et sujet (soumis aux lois).
====La volonté générale====
La volonté générale ne se confond pas avec la simple addition des intérêts particuliers ; elle exprime ce qui peut valoir comme intérêt commun, une fois écartées les considérations purement privées qui s'opposent les unes aux autres<ref>Jean-Jacques Rousseau, ''Du Contrat social'', livre II, chapitre 3.</ref>. Elle vise toujours le bien commun et reste « toujours droite » lorsqu'elle est correctement formée. Rousseau distingue cependant la rectitude de la volonté générale et la justesse du jugement du peuple : le peuple veut toujours son bien, mais il peut se tromper sur ce bien. La volonté générale n'est donc pas l'opinion majoritaire immédiate ; elle suppose des conditions de délibération, d'information et d'égalité qui ne sont pas toujours réunies.
Le devoir du citoyen consiste à obéir aux lois qui expriment la volonté générale. Cette obéissance constitue l'exercice même de sa liberté, puisqu'il obéit à des lois qu'il a lui-même contribué à établir : « l'obéissance à la loi qu'on s'est prescrite est liberté »<ref>Jean-Jacques Rousseau, ''Du Contrat social'', livre I, chapitre 8.</ref>. Quiconque refuse d'obéir à la volonté générale peut y être contraint par le corps politique, « ce qui ne signifie autre chose sinon qu'on le forcera d'être libre »<ref>Jean-Jacques Rousseau, ''Du Contrat social'', livre I, chapitre 7.</ref>.
===Le stoïcisme : action appropriée et accord avec la nature===
Les philosophes stoïciens (Zénon, Épictète, Marc Aurèle) proposent une conception de l'agir fondée sur l'idée d'un ordre rationnel universel. Le précepte fondamental consiste à « vivre en accord avec la nature », c'est-à-dire avec la raison qui gouverne le cosmos. Comme la nature humaine est essentiellement rationnelle, vivre selon la nature revient à vivre selon la raison<ref>Voir Maxime Kristanek, « Stoïcisme (A) », ''L'Encyclopédie philosophique'', [https://encyclo-philo.fr/item/1681], consulté en 2025 ; Pierre Hadot, ''Qu'est-ce que la philosophie antique ?'', Paris, Gallimard, 1995.</ref>.
Le terme grec qui correspond le mieux à ce que nous appelons « devoir » est, chez les stoïciens, ''kathêkon'', souvent traduit par « action appropriée » ou « devoir convenable ». Le ''kathêkon'' désigne l'action raisonnable que la situation requiert, compte tenu des rôles que chacun occupe. Le stoïcisme ne se réduit donc pas à l'acceptation du destin : il implique aussi des responsabilités sociales, familiales et politiques. Les stoïciens précisent toutefois que les actions appropriées peuvent être accomplies par des hommes ordinaires qui s'efforcent de suivre la raison, alors que l'action parfaitement droite, accomplie en toute connaissance et avec une disposition stable, n'est le propre que du sage.
====Ce qui dépend de nous====
Épictète distingue ce qui dépend de nous (nos jugements, nos désirs, nos volontés) et ce qui ne dépend pas de nous (notre corps, notre réputation, notre place sociale, notre destinée). L'action appropriée consiste à concentrer nos efforts sur ce qui dépend de nous et à accepter avec sérénité ce qui ne dépend pas de nous<ref>Épictète, ''Manuel'', § 1.</ref>.
====Les devoirs sociaux====
Marc Aurèle, empereur et philosophe stoïcien, insiste sur les devoirs sociaux qui découlent de notre nature rationnelle et sociale. Chacun doit remplir le rôle qui lui échoit dans l'ordre cosmique, qu'il soit empereur ou esclave. L'exercice des vertus de justice, de courage, de tempérance et de prudence constitue, selon lui, la voie vers la sagesse<ref>Marc Aurèle, ''Pensées pour moi-même'', livres II et VIII. On consultera la traduction d'Émile Bréhier dans ''Les Stoïciens'', Paris, Gallimard, « Bibliothèque de la Pléiade », 1962.</ref>.
===Spinoza : le conatus et l'éthique===
Baruch Spinoza (1632-1677) propose dans son ''Éthique'' une conception qui s'éloigne de la morale traditionnelle de l'obligation. Spinoza ne dissout pas pour autant toute distinction entre bien et mal : il en transforme le sens, en les rapportant à la puissance d'agir des êtres et non à un ordre transcendant.
====Le conatus====
Pour Spinoza, « chaque chose, autant qu'il est en elle, s'efforce de persévérer dans son être »<ref>Baruch Spinoza, ''Éthique'', III, proposition 6.</ref>. Ce principe, appelé ''conatus'', constitue l'essence même de chaque être. L'homme n'agit pas par devoir imposé de l'extérieur mais par l'effort naturel de persévérer dans son être et d'augmenter sa puissance d'agir. Cet effort n'est pas un acte volontaire ou conscient ajouté à la nature de l'individu ; il exprime cette nature elle-même.
====Bien et mal, liberté et nécessité====
Pour Spinoza, les notions traditionnelles de bien et de mal n'ont pas de fondement transcendant. Mais elles conservent une signification rationnelle relative : est dit ''bon'' ce qui augmente la puissance d'agir d'un individu, ''mauvais'' ce qui la diminue. Le bien est « ce que nous savons avec certitude être un moyen de nous rapprocher de plus en plus du modèle de la nature humaine que nous nous proposons »<ref>Baruch Spinoza, ''Éthique'', IV, préface.</ref>. La morale spinoziste n'est donc pas une absence de norme, mais une réorientation des normes : elles cessent d'être des commandements extérieurs pour devenir l'expression rationnelle de notre puissance. On parle alors d'une morale ''immanente'', c'est-à-dire qui ne procède pas d'une instance extérieure ou supérieure, mais des effets concrets que les actions produisent sur notre puissance d'agir.
La liberté ne consiste pas à obéir à un devoir moral transcendant, mais à comprendre la nécessité qui nous détermine et à agir selon la raison plutôt que selon les passions. Le sage spinoziste, guidé par la connaissance adéquate, reconnaît que les autres hommes raisonnables augmentent sa propre puissance d'agir : la coopération rationnelle et la joie partagée sont des conditions de l'augmentation du ''conatus''. Spinoza ne prône donc nullement un égoïsme ignorant autrui, mais une éthique rationnelle où l'intérêt bien compris coïncide avec la vie sociale<ref>Pierre-François Moreau, ''Spinoza et le spinozisme'', Paris, PUF, 2003.</ref>.
===Hume et le sentiment moral===
David Hume (1711-1776) conteste l'idée d'un fondement purement rationnel du devoir moral. Selon lui, la raison seule ne peut motiver l'action : ce sont nos sentiments moraux et nos passions qui nous poussent à agir. Hume soutient que nos jugements moraux reposent sur l'approbation et la désapprobation que produisent en nous certains traits de caractère ou certaines actions, par l'intermédiaire de la sympathie<ref>David Hume, ''Enquête sur les principes de la morale'' (1751), trad. P. Saltel, Paris, GF-Flammarion, 1991.</ref>. La raison éclaire les faits, calcule les moyens et analyse les circonstances ; mais l'approbation morale elle-même relève du sentiment. Hume analyse en outre la justice comme une vertu artificielle, c'est-à-dire comme une convention sociale née de la rareté des biens et du besoin de coopération. Cette analyse rapproche Hume des théories conventionnalistes, mais sans qu'il fasse pour autant de l'utilité le critère unique de la moralité.
===L'utilitarisme : Bentham et Mill===
L'utilitarisme propose une éthique conséquentialiste où l'action juste est celle qui produit le plus grand bien-être pour le plus grand nombre. Jeremy Bentham (1748-1832) en formule la version la plus directe : il s'agit de calculer la somme algébrique des plaisirs et des peines que les actions produisent, et d'agir de manière à maximiser le solde de plaisir<ref>Jeremy Bentham, ''An Introduction to the Principles of Morals and Legislation'', London, T. Payne, 1789, chap. I.</ref>. Bentham cherche à évaluer les plaisirs et les peines selon plusieurs critères, comme leur intensité, leur durée, leur certitude, leur proximité, leur fécondité, leur pureté et leur étendue. Sa conception du plaisir est essentiellement quantitative : c'est par la combinaison de ces critères mesurables que l'on apprécie la valeur d'une action.
John Stuart Mill (1806-1873) reprend le principe d'utilité, mais introduit une distinction qualitative entre les plaisirs. Pour lui, certains plaisirs (intellectuels, esthétiques, moraux) sont supérieurs en qualité à d'autres (sensoriels), même si leur intensité est moindre<ref>John Stuart Mill, ''L'Utilitarisme'' (1861), trad. G. Tanesse, Paris, GF-Flammarion, 1988, chap. II.</ref>. Mill soutient en particulier que ceux qui ont fait l'expérience des deux genres de plaisirs préfèrent les plaisirs supérieurs : ''it is better to be a human being dissatisfied than a pig satisfied'', écrit-il, ce que l'on peut rendre par : il vaut mieux être un être humain insatisfait qu'un porc satisfait. Mill défend par ailleurs des distinctions importantes entre la justice et l'utilité, et reconnaît la valeur de règles stables que l'on ne saurait réviser à chaque situation. Le devoir, dans cette perspective, ne consiste pas à suivre une règle abstraite, mais à viser, par nos actions et nos institutions, le bien-être collectif.
==Les enjeux philosophiques du devoir==
===Le devoir s'oppose-t-il au bonheur ?===
Cette question traverse toute l'histoire de la philosophie morale et oppose principalement Kant à Aristote.
''La position kantienne'' : pour Kant, le devoir peut entrer en conflit avec notre bonheur. La moralité exige parfois de sacrifier nos intérêts personnels. Kant pense néanmoins que la raison pratique nous permet d'espérer une harmonie entre vertu et bonheur, qu'il appelle souverain bien<ref>Emmanuel Kant, ''Critique de la raison pratique'', Dialectique, livre II, chap. II, trad. F. Picavet, Paris, PUF, 1965 (1788).</ref>.
''La position aristotélicienne'' : pour Aristote, il n'y a pas d'opposition véritable entre vertu et bonheur. La vie vertueuse est elle-même la réalisation du bonheur humain. L'homme véritablement vertueux trouve du plaisir à accomplir des actions vertueuses. La vertu n'est pas un sacrifice mais un accomplissement.
Cette opposition renvoie à des conceptions différentes du bonheur. Si l'on définit le bonheur comme la satisfaction de tous nos désirs immédiats, alors il peut entrer en conflit avec le devoir. Si l'on conçoit le bonheur comme l'accomplissement de notre nature rationnelle, alors devoir et bonheur convergent.
===Le devoir s'oppose-t-il à la liberté ?===
Cette question constitue un paradoxe apparent : comment peut-on être libre en obéissant à un devoir qui s'impose à nous ?
''L'autonomie kantienne'' : pour Kant, le devoir ne s'oppose pas à la liberté mais la réalise. Obéir au devoir, c'est obéir à la loi que notre propre raison nous prescrit. Cette autonomie (du grec ''autos'', soi-même, et ''nomos'', loi) constitue la véritable liberté, par opposition à l'hétéronomie qui consiste à être déterminé par des causes extérieures (désirs, pressions sociales, etc.)<ref>Emmanuel Kant, ''Fondements de la métaphysique des mœurs'', section III, trad. V. Delbos, Paris, Librairie Delagrave, 1907 (1785).</ref>.
''La liberté positive'' : on peut distinguer la liberté négative (absence de contraintes externes) et la liberté positive (capacité de se déterminer soi-même selon la raison). Le devoir moral relève de cette liberté positive. Cette idée rejoint Rousseau, pour qui « l'obéissance à la loi qu'on s'est prescrite est liberté »<ref>Jean-Jacques Rousseau, ''Du Contrat social'', livre I, chapitre 8.</ref>, tandis que Kant parle plutôt d'autonomie de la volonté. La parenté est réelle mais la perspective diffère : chez Rousseau, il s'agit d'une liberté politique dans l'ordre de la loi commune ; chez Kant, d'une liberté morale par laquelle la volonté rationnelle se donne à elle-même la loi.
''Le risque de l'aliénation'' : certains philosophes critiquent cette conception et y voient une forme d'aliénation. Obéir au devoir, ce serait renoncer à sa singularité au profit d'une loi universelle abstraite qui nie la diversité des individus et des situations. Nietzsche, par exemple, voit dans la morale du devoir une intériorisation de la contrainte, qu'il analyse par sa généalogie des valeurs.
===Peut-on fonder le devoir ?===
Cette question oppose des familles de positions plus diverses qu'une simple alternative entre réalisme et nihilisme. Les distinctions présentées ci-dessous ne sont pas toutes exigibles au baccalauréat, mais elles permettent de comprendre que la question du fondement du devoir admet plusieurs réponses et qu'il existe différentes manières de défendre, ou de contester, l'objectivité des jugements moraux.
''Le réalisme moral'' soutient que les devoirs moraux existent objectivement, indépendamment de nos croyances et de nos conventions, et que nous pouvons les connaître. Plusieurs fondements peuvent être proposés :
* la nature humaine : nos devoirs découlent de notre nature rationnelle et sociale (Aristote) ;
* la raison pure : les devoirs sont fondés sur des procédures rationnelles comme l'universalisation (Kant) ;
* les commandements divins : les devoirs sont fondés sur la volonté de Dieu (théologie morale) ;
* l'intuition : nous connaissons certains devoirs de manière directe et évidente (intuitionnisme)<ref>William David Ross, ''The Right and the Good'', Oxford, Oxford University Press, 1930.</ref>.
''Le constructivisme moral'' considère que les normes morales ne sont pas découvertes mais construites par des procédures rationnelles ou délibératives. La justice, pour John Rawls, résulte ainsi d'un accord hypothétique conclu sous le voile d'ignorance<ref>John Rawls, ''Théorie de la justice'', trad. C. Audard, Paris, Seuil, 1987 (1971).</ref>. Christine Korsgaard défend, dans la lignée de Kant, un constructivisme qui ancre l'obligation morale dans les exigences réflexives de l'agent rationnel.
''Le subjectivisme'' et le ''relativisme moral'' font dépendre les jugements moraux respectivement des préférences individuelles ou des cultures particulières. Aucun jugement ne pourrait alors prétendre à une vérité absolue : la moralité varierait selon les sujets ou selon les sociétés.
''L'expressivisme'' soutient que les énoncés moraux n'ont pas pour fonction de décrire des faits objectifs, mais d'exprimer des attitudes (approbation, désapprobation) ou de prescrire des conduites. Cette tradition trouve une expression contemporaine chez Allan Gibbard ou Simon Blackburn<ref>Simon Blackburn, ''Ruling Passions'', Oxford, Clarendon Press, 1998 ; Allan Gibbard, ''Wise Choices, Apt Feelings'', Cambridge (Mass.), Harvard University Press, 1990.</ref>.
''La théorie de l'erreur'', défendue par John Mackie, occupe une position singulière : les énoncés moraux ordinaires prétendent bien décrire des faits objectifs, mais cette prétention est, selon Mackie, systématiquement fausse, car aucun fait moral ne correspond à ces énoncés. Mackie développe en particulier un ''argument de l'étrangeté'' : les propriétés morales objectives, telles que les conçoivent les réalistes, seraient des entités métaphysiques étranges, sans analogue dans le reste du réel<ref>John L. Mackie, ''Ethics: Inventing Right and Wrong'', Harmondsworth, Penguin, 1977, chap. 1.</ref>.
Quant à Nietzsche, il est plus exact de le présenter comme un généalogiste critique des valeurs morales que comme un simple « nihiliste ». Son projet, dans ''La Généalogie de la morale'', consiste à reconstituer l'histoire des valeurs morales, en particulier de la morale de la culpabilité et du ressentiment, pour mettre au jour leurs conditions d'émergence et leurs effets sur les formes de vie<ref>Friedrich Nietzsche, ''La Généalogie de la morale'' (1887), trad. P. Wotling, Paris, Le Livre de Poche, 2000.</ref>.
===Que devons-nous faire concrètement ?===
Cette question pratique oppose différentes théories normatives.
''Le déontologisme'' : certains devoirs sont absolus et ne dépendent pas des conséquences. Par exemple, il ne faut pas mentir, même si les conséquences de la franchise sont graves. Kant défend cette position dans son texte ''Sur un prétendu droit de mentir par humanité'' (1797), où il refuse l'idée d'un droit de mentir, même à un meurtrier qui demanderait où se cache sa victime<ref>Emmanuel Kant, « Sur un prétendu droit de mentir par humanité » (1797), trad. L. Guillermit, dans ''Théorie et pratique. D'un prétendu droit de mentir par humanité. La Fin de toutes choses'', Paris, Vrin, 2000.</ref>.
''Le conséquentialisme'' : nous devons accomplir les actions qui produisent les meilleures conséquences en termes de bien-être général. L'utilitarisme de Bentham et Mill en est l'exemple le plus connu. Selon cette théorie, le devoir consiste à maximiser le bonheur du plus grand nombre<ref>John Stuart Mill, ''L'Utilitarisme'' (1861), trad. G. Tanesse, Paris, GF-Flammarion, 1988.</ref>.
''L'éthique des vertus'' : au lieu de se concentrer sur les règles à suivre, il faut développer des vertus de caractère (courage, générosité, honnêteté) et s'inspirer de personnes vertueuses. Cette approche, inspirée d'Aristote, connaît un renouveau dans la philosophie morale contemporaine, en particulier à la suite de l'article d'Elizabeth Anscombe sur la philosophie morale moderne et des travaux de Philippa Foot, Alasdair MacIntyre et Rosalind Hursthouse<ref>Elizabeth Anscombe, « Modern Moral Philosophy », ''Philosophy'', vol. 33, n° 124, 1958 ; Philippa Foot, ''Virtues and Vices'', Oxford, Blackwell, 1978 ; Rosalind Hursthouse, ''On Virtue Ethics'', Oxford, Oxford University Press, 1999.</ref>.
====Un exemple : le mensonge destiné à protéger quelqu'un====
Pour rendre ces théories plus concrètes, on peut imaginer une situation classique : un proche menacé se cache chez nous, et un tiers hostile demande où il est. Faut-il mentir pour le protéger ?
Kant, dans son texte ''Sur un prétendu droit de mentir par humanité'', refuse l'idée d'un droit de mentir, même dans ce cas. Le mensonge détruit la valeur universelle de la véracité, qui est la condition de toute communication entre êtres rationnels, et il rend celui qui ment responsable des conséquences imprévisibles de son acte.
Aristote ne formulerait pas la question en termes de loi universelle. Il chercherait l'action que choisirait l'homme prudent, en tenant compte des circonstances, des personnes, des conséquences possibles. La franchise est une vertu, mais la prudence peut l'orienter de manière à éviter un mal plus grand.
Hume rappellerait que la sympathie nous incline naturellement à protéger un proche en danger, et que cette inclination est moralement approuvée. La justice exige le respect de règles générales, mais le sentiment moral peut, dans certaines situations particulières, justifier qu'on s'écarte de la franchise.
Bentham et Mill, du point de vue utilitariste, comparent les conséquences. Si le mensonge sauve une vie sans causer de dommage durable, il maximise probablement le bien-être collectif. Mill ajouterait toutefois que les règles morales générales (comme l'interdiction du mensonge) ont une valeur d'utilité globale et qu'il faut peser sérieusement les exceptions.
Cet exemple montre comment des théories différentes peuvent diverger sur des cas précis, sans qu'aucune ne se réduise à une simple application mécanique d'une règle.
===Les dilemmes moraux===
Les dilemmes moraux sont des situations où plusieurs devoirs entrent en conflit, rendant impossible leur accomplissement simultané. Dans le roman de William Styron ''Le Choix de Sophie'', une mère doit choisir lequel de ses deux enfants sera épargné par un officier nazi, l'autre étant condamné à mort<ref>Voir Maxime Kristanek, « Paradoxe (A) », ''L'Encyclopédie philosophique'', [https://encyclo-philo.fr/paradoxe-a], consulté en 2025, section 4.</ref>.
Face aux dilemmes moraux, plusieurs positions sont possibles :
* nier leur existence réelle : un des devoirs apparents n'est pas un véritable devoir ;
* admettre leur existence mais établir une hiérarchie entre les devoirs ;
* reconnaître l'existence de situations tragiques où tout choix implique une faute morale.
==Exemples de sujets de dissertation==
===Sujets sur le devoir et la liberté===
# Faire son devoir, est-ce renoncer à sa liberté ?
# Suis-je libre quand je fais mon devoir ?
# Le devoir s'oppose-t-il à la liberté ?
# L'obéissance au devoir peut-elle être un acte libre ?
# Reconnaître ses devoirs, est-ce renoncer à sa liberté ?
# Peut-on être libre en obéissant à un devoir ?
===Sujets sur le devoir et le bonheur===
# Est-ce un devoir d'être heureux ?
# Avons-nous le devoir de faire le bonheur des autres ?
# Le bonheur et le devoir sont-ils compatibles ?
# Faire son devoir sans être heureux, est-ce possible ?
# La recherche du bonheur est-elle un obstacle à l'accomplissement du devoir ?
# Peut-on concilier bonheur et devoir ?
===Sujets sur la nature du devoir===
# D'où vient que nous avons des devoirs ?
# Qu'est-ce qui fonde nos devoirs moraux ?
# Tous les hommes ont-ils les mêmes devoirs ?
# Suffit-il de faire son devoir ?
# La morale se résume-t-elle à faire son devoir ?
# Peut-on parler d'un devoir envers soi-même ?
===Sujets sur le devoir et autrui===
# Avons-nous des devoirs envers les animaux ?
# Ai-je le devoir d'aimer autrui ?
# Le devoir de secourir autrui a-t-il des limites ?
# Peut-on désobéir par devoir ?
# Y a-t-il un devoir de mémoire ?
# La désobéissance à la loi peut-elle être un devoir ?
===Sujets sur le devoir et la morale===
# Agir moralement, est-ce agir par devoir ?
# La notion d'obligation est-elle indispensable à la morale ?
# Suffit-il d'avoir bonne conscience pour être sûr d'agir moralement ?
# Faut-il toujours suivre sa conscience ?
# Les passions nous empêchent-elles de faire notre devoir ?
# Peut-on faire son devoir par habitude ?
==Extraits de textes philosophiques à étudier==
===Texte 1 : Kant, ''Fondements de la métaphysique des mœurs'' (1785)===
<blockquote>
« Il est sans doute conforme au devoir qu'un marchand ne vende pas plus cher sa marchandise à l'acheteur inexpérimenté, et, là où le commerce est important, le marchand avisé s'en garde bien en effet ; il établit au contraire un prix fixe, le même pour tout le monde, si bien qu'un enfant achète chez lui à aussi bon compte que tout autre. On est donc loyalement servi ; mais ce n'est pas à beaucoup près assez pour qu'on en croie le marchand agissant ainsi par devoir et d'après des principes de probité ; son intérêt l'exigeait ainsi.
Au contraire, conserver sa vie est un devoir, et c'est en outre une chose pour laquelle chacun a encore une inclination immédiate. Or c'est pour cela que la sollicitude souvent inquiète que la plupart des hommes y apportent n'en est pas moins dépourvue de toute valeur intrinsèque et que leur maxime n'a aucun prix moral. Ils protègent leur vie conformément au devoir, sans doute, mais non par devoir. En revanche, que des contrariétés et un chagrin sans espoir aient enlevé à un homme tout goût de vivre, si ce malheureux, à l'âme forte, est plus indigné de son sort qu'il n'est découragé ou abattu, s'il désire la mort et cependant conserve sa vie sans l'aimer, non par inclination ni par crainte, mais par devoir, alors sa maxime a une valeur morale. »
</blockquote>
Emmanuel Kant, ''Fondements de la métaphysique des mœurs'' (1785), première section, trad. V. Delbos, Paris, Delagrave, 1907, p. 13-14<ref>Emmanuel Kant, ''Fondements de la métaphysique des mœurs'', trad. V. Delbos, Paris, Librairie Delagrave, 1907, p. 13-14.</ref>.
''Analyse'' : ce texte distingue trois types d'actions : celles accomplies par intérêt, celles accomplies par inclination (par désir naturel), et celles accomplies par pur devoir. Seules ces dernières ont une valeur morale authentique. Le marchand honnête agit conformément au devoir, mais son honnêteté s'explique par son intérêt (conserver sa clientèle). De même, celui qui conserve sa vie par plaisir de vivre agit conformément au devoir mais par inclination. Seul celui qui conserve sa vie malgré le dégoût qu'elle lui inspire, parce qu'il reconnaît que c'est son devoir, agit véritablement par devoir et possède une volonté moralement bonne.
===Texte 2 : Kant, ''Fondements de la métaphysique des mœurs'' (1785) — l'impératif catégorique===
<blockquote>
« Agis uniquement d'après la maxime qui fait que tu puisses vouloir en même temps qu'elle devienne une loi universelle. […] Agis comme si la maxime de ton action devait être érigée par ta volonté en loi universelle de la nature. […]
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 une fin, et jamais simplement comme un moyen. […]
Agis de telle sorte que ta volonté puisse se considérer elle-même en même temps comme légiférant universellement grâce à sa maxime. »
</blockquote>
Emmanuel Kant, ''Fondements de la métaphysique des mœurs'' (1785), deuxième section, trad. V. Delbos, Paris, Delagrave, 1907, p. 63, 71, 79<ref>Emmanuel Kant, ''Fondements de la métaphysique des mœurs'', trad. V. Delbos, Paris, Librairie Delagrave, 1907, p. 63, 71, 79.</ref>.
''Analyse'' : ces trois formulations de l'impératif catégorique expriment le même principe fondamental sous différents angles. La première formule (universalisation) nous invite à tester nos maximes en imaginant qu'elles deviennent des lois universelles. La deuxième formule (humanité comme fin) exprime le respect dû à chaque personne humaine en raison de sa dignité. La troisième formule (autonomie) souligne que la loi morale émane de notre propre raison : en lui obéissant, nous ne nous soumettons qu'à nous-mêmes.
===Texte 3 : Aristote, ''Éthique à Nicomaque'' (IVe siècle av. J.-C.)===
<blockquote>
« La vertu est donc une disposition à agir d'une façon délibérée, consistant en une médiété relative à nous, laquelle est rationnellement déterminée et comme la déterminerait l'homme prudent. »
</blockquote>
Aristote, ''Éthique à Nicomaque'', livre II, chap. 6, 1106b36-1107a2<ref>Aristote, ''Éthique à Nicomaque'', livre II, chap. 6, 1106b36-1107a2. On consultera notamment l'édition R. Bodéüs, Paris, GF-Flammarion, 2004.</ref>.
''Analyse'' : Aristote définit la vertu morale comme une disposition stable (''hexis'') à choisir délibérément le juste milieu entre deux extrêmes vicieux. Cette disposition n'est pas innée : elle s'acquiert par l'habitude et l'exercice. La vertu requiert également la prudence (''phronesis''), cette sagesse pratique qui permet de déterminer, dans chaque situation particulière, où se situe le juste milieu. Contrairement à Kant, pour qui le devoir prend la forme d'une loi universelle, Aristote insiste sur le caractère relatif et contextuel de l'action vertueuse : le juste milieu est « relatif à nous », c'est-à-dire qu'il doit être adapté aux circonstances et à la personne, selon le jugement de l'homme prudent.
===Texte 4 : Rousseau, ''Du Contrat social'' (1762)===
<blockquote>
« Chacun de nous met en commun sa personne et toute sa puissance sous la suprême direction de la volonté générale ; et nous recevons en corps chaque membre comme partie indivisible du tout.
À l'instant, au lieu de la personne particulière de chaque contractant, cet acte d'association produit un corps moral et collectif composé d'autant de membres que l'assemblée a de voix, lequel reçoit de ce même acte son unité, son moi commun, sa vie et sa volonté. »
</blockquote>
Jean-Jacques Rousseau, ''Du Contrat social'' (1762), livre I, chap. 6<ref>Jean-Jacques Rousseau, ''Du Contrat social'', livre I, chapitre 6, édition GF-Flammarion, Paris, 1966, p. 51-52.</ref>.
''Analyse'' : par le contrat social, les individus s'unissent en un corps politique régi par la volonté générale. Chaque citoyen devient à la fois membre du souverain (en tant qu'il participe à la formation de la volonté générale) et sujet (en tant qu'il obéit aux lois qui expriment cette volonté). Le devoir du citoyen consiste à obéir aux lois, mais cette obéissance n'est pas une contrainte extérieure : en obéissant aux lois qu'il a lui-même contribué à établir, le citoyen obéit à sa propre volonté et demeure libre. Rousseau réconcilie ainsi devoir et liberté, à condition que la volonté générale soit correctement formée.
===Texte 5 : Épictète, ''Manuel'' (Ier-IIe siècle ap. J.-C.)===
<blockquote>
« Il y a des choses qui dépendent de nous et d'autres qui ne dépendent pas de nous. Dépendent de nous l'opinion, la tendance, le désir, l'aversion, bref, toutes nos œuvres propres ; ne dépendent pas de nous le corps, la richesse, les témoignages de considération, les hautes charges, bref, toutes les choses qui ne sont pas nos œuvres propres. »
</blockquote>
Épictète, ''Manuel'', § 1<ref>Épictète, ''Manuel'', § 1. On consultera la traduction d'Émile Bréhier dans ''Les Stoïciens'', Paris, Gallimard, « Bibliothèque de la Pléiade », 1962.</ref>.
''Analyse'' : ce texte fondamental du stoïcisme distingue ce qui dépend de notre volonté (nos jugements, nos désirs, nos choix) et ce qui n'en dépend pas (notre corps, notre richesse, notre réputation, notre destinée). L'action appropriée (''kathêkon'') consiste à concentrer nos efforts sur ce qui dépend de nous et à accepter avec sérénité ce qui ne dépend pas de nous. Cette attitude rend possible la liberté intérieure. Le sage stoïcien accomplit ce que sa situation requiert non par contrainte mais en comprenant la nécessité rationnelle qui gouverne l'univers.
===Texte 6 : Hegel, ''Principes de la philosophie du droit'' (1820)===
Le paragraphe 147 expose ce que Hegel appelle la « disposition éthique ». L'idée centrale peut être formulée ainsi, en paraphrasant le texte original : la disposition éthique consiste, pour l'individu, à reconnaître que son but particulier ne prend sens que comme moment de l'universel, et à se comporter, dans sa volonté comme dans son sentiment, en accord avec cet universel. Là réside, selon Hegel, ce qu'il nomme la confiance éthique : la conviction que mon intérêt propre est conservé et porté par les institutions qui me dépassent<ref>G. W. F. Hegel, ''Principes de la philosophie du droit'' (1820), § 147. Pour le texte allemand, voir l'édition E. Moldenhauer et K. M. Michel, Suhrkamp, ''Werke'', t. 7. Pour une traduction française de référence, voir l'édition critique établie par Jean-François Kervégan, Paris, PUF, « Quadrige », 2013.</ref>.
''Analyse'' : Hegel critique la conception kantienne du devoir comme contrainte abstraite. Dans l'éthicité, l'individu ne perçoit plus le devoir comme une obligation extérieure qui s'opposerait à ses intérêts. Il reconnaît que son bien particulier se réalise dans et par les institutions éthiques (famille, société civile, État). La disposition éthique est donc une identification réfléchie aux institutions, où devoir et inclination peuvent se rejoindre, sans que les conflits soient pour autant exclus.
==Conclusion==
La notion de devoir constitue l'un des concepts centraux de la philosophie morale. Loin d'être univoque, elle a reçu des interprétations diverses selon les époques et les auteurs. La conception kantienne du devoir comme impératif catégorique, fondé sur la raison pure et exigeant l'universalisation de nos maximes, a profondément marqué la pensée moderne. Elle s'oppose à l'éthique aristotélicienne des vertus, qui intègre l'action morale dans une réflexion plus large sur l'accomplissement humain et le bonheur. À ces deux pôles s'ajoutent les conceptions politiques de Rousseau et de Hegel, l'éthique sentimentaliste de Hume, le conséquentialisme utilitariste de Bentham et de Mill, l'analyse spinoziste du ''conatus'', ou encore la généalogie nietzschéenne des valeurs.
Les questions ouvertes par ces traditions ne se referment pas. Le devoir s'oppose-t-il nécessairement au bonheur et à la liberté, ou peut-il se concilier avec eux ? Peut-on fonder rationnellement nos devoirs moraux, ou ne sont-ils que le produit de processus historiques, sociaux et psychologiques ? Comment résoudre les dilemmes moraux où plusieurs devoirs entrent en conflit ?
Ces interrogations engagent notre existence concrète. Elles trouvent un écho dans des questions que les sociétés contemporaines ne peuvent plus contourner : la légitimité de la désobéissance civile, l'étendue du devoir de vérité dans la vie publique et privée, le devoir de secours envers ceux qui en ont besoin, les obligations envers les générations futures qui hériteront du monde que nous laissons, les devoirs envers les animaux et la nature non humaine. Sur chacun de ces points, les conceptions du devoir présentées dans cet article fournissent des ressources distinctes et parfois divergentes.
La réflexion philosophique sur le devoir invite à prendre au sérieux l'exigence morale, à exercer notre raison pratique et à assumer notre responsabilité. Comme l'écrit Kant, « deux choses remplissent le cœur d'une admiration et d'une vénération toujours nouvelles et toujours croissantes : le ciel étoilé au-dessus de moi et la loi morale en moi »<ref>Emmanuel Kant, ''Critique de la raison pratique'', Conclusion, trad. F. Picavet, Paris, PUF, 1965 (1788), p. 173.</ref>. Cette formule n'épuise pas toutes les conceptions du devoir, mais elle exprime avec force l'idée que l'obligation morale n'est pas seulement une règle extérieure : elle engage le sujet dans ce qu'il reconnaît comme valable.
==Pour aller plus loin==
===Œuvres philosophiques===
* Emmanuel Kant, ''Fondements de la métaphysique des mœurs'' (1785), trad. V. Delbos, Paris, Vrin.
* Emmanuel Kant, ''Critique de la raison pratique'' (1788), trad. F. Picavet, Paris, PUF.
* Aristote, ''Éthique à Nicomaque'', trad. R. Bodéüs, Paris, GF-Flammarion, 2004.
* Jean-Jacques Rousseau, ''Du Contrat social'' (1762), édition GF-Flammarion.
* G. W. F. Hegel, ''Principes de la philosophie du droit'' (1820), trad. J.-F. Kervégan, Paris, PUF.
* Épictète, ''Manuel'', dans ''Les Stoïciens'', trad. É. Bréhier, Paris, Gallimard, « Bibliothèque de la Pléiade », 1962.
* Marc Aurèle, ''Pensées pour moi-même'', dans ''Les Stoïciens'', trad. É. Bréhier, Paris, Gallimard, « Bibliothèque de la Pléiade », 1962.
* Baruch Spinoza, ''Éthique'' (1677), trad. B. Pautrat, Paris, Seuil.
* David Hume, ''Enquête sur les principes de la morale'' (1751), trad. P. Saltel, Paris, GF-Flammarion.
* Jeremy Bentham, ''Introduction aux principes de la morale et de la législation'' (1789).
* John Stuart Mill, ''L'Utilitarisme'' (1861), trad. G. Tanesse, Paris, GF-Flammarion.
* Friedrich Nietzsche, ''La Généalogie de la morale'' (1887), trad. P. Wotling, Paris, Le Livre de Poche, 2000.
===Études contemporaines===
* Pierre Aubenque, ''La prudence chez Aristote'', Paris, PUF, 1963.
* Elizabeth Anscombe, « Modern Moral Philosophy », ''Philosophy'', vol. 33, n° 124, 1958.
* William David Ross, ''The Right and the Good'', Oxford, Oxford University Press, 1930.
* John Rawls, ''Théorie de la justice'' (1971), trad. C. Audard, Paris, Seuil, 1987.
* John L. Mackie, ''Ethics: Inventing Right and Wrong'', Harmondsworth, Penguin, 1977.
* Onora O'Neill, ''Constructions of Reason: Explorations of Kant's Practical Philosophy'', Cambridge, Cambridge University Press, 1989.
* Christine M. Korsgaard, ''Creating the Kingdom of Ends'', Cambridge, Cambridge University Press, 1996.
* Allen W. Wood, ''Kantian Ethics'', Cambridge, Cambridge University Press, 2008.
* Philippa Foot, ''Virtues and Vices'', Oxford, Blackwell, 1978.
* Alasdair MacIntyre, ''After Virtue'', Notre Dame, University of Notre Dame Press, 1981.
* Rosalind Hursthouse, ''On Virtue Ethics'', Oxford, Oxford University Press, 1999.
* Pierre Hadot, ''Qu'est-ce que la philosophie antique ?'', Paris, Gallimard, 1995.
* Pierre-François Moreau, ''Spinoza et le spinozisme'', Paris, PUF, 2003.
* Jean-François Kervégan, ''L'effectif et le rationnel. Hegel et l'esprit objectif'', Paris, Vrin, 2007.
* Derek Parfit, ''On What Matters'', Oxford, Oxford University Press, 2011.
==Références==
{{references|colonnes=2}}
{{AutoCat}}
cof142za5goq7hc642933sk7i5d5w2n
765759
765758
2026-05-02T07:12:15Z
PandaMystique
119061
/* Exemples de sujets de dissertation */
765759
wikitext
text/x-wiki
{{ManuelPhilo}}
==Introduction : qu'est-ce que le devoir ?==
Le concept de devoir occupe une place centrale dans la réflexion morale. Dans la vie quotidienne, nous utilisons fréquemment le verbe ''devoir'' : le médecin dit à son patient qu'il doit avoir une alimentation équilibrée, un mari promet à son épouse de lui être fidèle, un citoyen se doit de respecter les lois<ref>Maxime Kristanek, « Devoir (GP) », ''L'Encyclopédie philosophique'', [https://encyclo-philo.fr/item/1749], consulté en 2025.</ref>. Mais que signifie exactement ce terme lorsqu'il s'applique à la morale ?
Le devoir désigne une obligation morale, c'est-à-dire ce que nous devons faire indépendamment de nos désirs personnels et de nos intérêts immédiats. Il s'agit d'une exigence qui s'impose à notre volonté et qui se distingue de la simple contrainte physique ou de la nécessité naturelle. Contrairement à ce qui ''est'' (le domaine des faits), le devoir exprime ce qui ''doit être'' (le domaine des normes)<ref>Henry Sidgwick, ''The Methods of Ethics'', seventh edition, London, Macmillan and co., 1907, p. 46.</ref>.
Le concept de devoir peut être analysé en termes de raison d'agir : dire « je dois faire telle action » signifie « j'ai une raison de faire cette action »<ref>Charles Larmore, « La connaissance morale », dans R. Ogien (dir.), ''Le réalisme moral'', PUF, Paris, 1999, p. 392.</ref>. Parmi les raisons d'agir, on distingue les raisons prudentielles (fondées sur nos désirs et intérêts personnels) et les raisons morales (qui s'imposent à nous indépendamment de nos désirs). Par exemple, si un patient mange des légumes parce qu'il désire être en bonne santé, il agit selon une raison prudentielle. En revanche, si un homme reste fidèle à sa promesse même lorsque cela ne lui procure aucun avantage, il agit selon une raison morale, par devoir.
Une question directrice traverse l'ensemble de la réflexion philosophique sur le devoir : faut-il y voir une loi rationnelle universelle qui s'impose à toute volonté, une exigence sociale liée aux institutions concrètes, une forme d'accomplissement de notre nature, une convention utile à la vie commune, ou encore une construction historique dont la prétention à l'objectivité est contestable ? Ces réponses ne s'excluent pas toujours, mais elles dessinent des conceptions différentes du sens de l'obligation morale, du rapport entre devoir et bonheur, entre devoir et liberté, entre règle universelle et situation singulière. C'est cette pluralité de réponses que les pages qui suivent cherchent à exposer.
''Note préliminaire'' : les trois caractéristiques du devoir moral détaillées ci-dessous correspondent principalement à la conception kantienne du devoir et ne font pas consensus dans toutes les philosophies morales. Aristote, par exemple, ne pense pas l'action morale à partir d'une loi universelle comparable à l'impératif catégorique, puisque la vertu suppose une appréciation des circonstances particulières.
===Les caractéristiques du devoir moral (selon Kant)===
Le devoir moral possède, dans la perspective kantienne, trois caractéristiques essentielles :
# La catégoricité : le devoir s'applique indépendamment de nos désirs. Contrairement aux impératifs hypothétiques (« si tu veux réussir cet examen, tu dois travailler »), le devoir moral constitue un impératif catégorique qui commande sans condition : « tu ne dois pas mentir », même si mentir pourrait te procurer un avantage<ref>Emmanuel Kant, ''Fondements de la métaphysique des mœurs'', trad. fr. V. Delbos, Paris, Librairie Delagrave, 1907 (1785), p. 125.</ref>.
# L'universalité : les devoirs moraux, chez Kant, ne varient pas en fonction de circonstances particulières arbitraires. L'universalité porte d'abord sur la forme rationnelle de la maxime, c'est-à-dire sur la possibilité que la règle de l'action soit voulue par tout être raisonnable, et non sur une liste mécaniquement identique d'actions à accomplir.
# La prépondérance : les raisons morales fournies par nos devoirs doivent l'emporter sur nos raisons prudentielles et sur les conventions sociales. Si nous avons le devoir de sauver un enfant de la noyade, cette obligation doit primer sur notre désir de protéger nos vêtements coûteux<ref>R. M. Hare, ''Penser en morale, entre intuition et critique'', trad. M. Bozzo-Rey, J.-P. Cléro et C. Wrobel, Paris, Hermann, 2020 (1981).</ref>.
==Les principales conceptions philosophiques du devoir==
===L'éthique kantienne du devoir===
Emmanuel Kant (1724-1804) propose la conception la plus influente de la morale du devoir dans la philosophie moderne. Pour lui, seules les actions accomplies par devoir ont une véritable valeur morale. Cette conception se sépare nettement des morales antiques qui plaçaient le bonheur au centre de la réflexion éthique.
====L'impératif catégorique====
Kant formule le principe suprême de la moralité sous la forme de l'impératif catégorique, qui se décline en trois formulations principales.
''Première formulation (universalisation)'' : « Agis uniquement d'après la maxime qui fait que tu puisses vouloir en même temps qu'elle devienne une loi universelle »<ref>Emmanuel Kant, ''Fondements de la métaphysique des mœurs'', trad. V. Delbos, Paris, Librairie Delagrave, 1907 (1785), p. 94.</ref>. Cette formule nous invite à nous demander si la règle qui guide notre action pourrait être suivie par tous sans contradiction. Par exemple, si chacun mentait systématiquement, la confiance disparaîtrait et il deviendrait impossible de communiquer : le mensonge ne peut donc être une loi universelle<ref>Onora O'Neill, ''Constructions of Reason: Explorations of Kant's Practical Philosophy'', Cambridge, Cambridge University Press, 1989, chap. 5.</ref>.
''Deuxième formulation (humanité comme fin)'' : « 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 une fin, et jamais simplement comme un moyen »<ref>Emmanuel Kant, ''Fondements de la métaphysique des mœurs'', trad. V. Delbos, Paris, Librairie Delagrave, 1907 (1785), p. 71 (section II).</ref>. Cette formule exprime le respect dû à la dignité humaine. Chaque personne possède une valeur intrinsèque et ne peut être réduite à un simple instrument au service des fins d'autrui.
''Troisième formulation (autonomie)'' : « Agis de telle sorte que ta volonté puisse se considérer elle-même en même temps comme légiférant universellement grâce à sa maxime »<ref>Emmanuel Kant, ''Fondements de la métaphysique des mœurs'', trad. V. Delbos, Paris, Librairie Delagrave, 1907 (1785), p. 79 (section II).</ref>. Cette formulation insiste sur l'autonomie : en obéissant à la loi morale, l'être humain obéit à une loi qu'il se donne à lui-même par sa raison<ref>Allen W. Wood, ''Kantian Ethics'', Cambridge, Cambridge University Press, 2008, chap. 4 ; Christine M. Korsgaard, ''Creating the Kingdom of Ends'', Cambridge, Cambridge University Press, 1996.</ref>.
====Agir par devoir, non par inclination====
Pour Kant, il est essentiel de distinguer les actions conformes au devoir et les actions accomplies par devoir. Un marchand peut vendre honnêtement ses produits, mais s'il le fait uniquement par intérêt (pour conserver sa clientèle), son action est conforme au devoir sans avoir de valeur morale authentique. En revanche, si une personne désespérée conserve sa vie non par peur ou par désir de bonheur, mais par devoir, alors son action possède une véritable valeur morale<ref>Emmanuel Kant, ''Fondements de la métaphysique des mœurs'', première section, trad. V. Delbos, Paris, Delagrave, 1907 (1785), p. 13-15.</ref>.
Cette conception exigeante souligne que la valeur morale de l'action ne dépend pas de ses conséquences ni de l'inclination qui la motive, mais de l'intention pure d'accomplir son devoir. Il faut toutefois préciser que Kant accorde une place propre au sentiment moral : le ''respect'' pour la loi morale est, chez lui, le seul sentiment qui ne précède pas la loi mais en résulte. La loi morale produit dans le sujet un sentiment qui n'est pas la cause mais l'effet de l'obligation. Kant écrit : « Une action accomplie par devoir tire sa valeur morale non pas du but qui doit être atteint par elle, mais de la maxime d'après laquelle elle est décidée »<ref>Emmanuel Kant, ''Fondements de la métaphysique des mœurs'', première section, trad. V. Delbos, Paris, Delagrave, 1907 (1785), p. 18.</ref>.
====Le devoir et la liberté====
Le devoir ne s'oppose pas à la liberté mais la réalise. Pour Kant, être libre ne signifie pas faire ce que l'on veut (cela serait l'esclavage des passions), mais agir selon la raison. En obéissant à la loi morale, l'être humain n'obéit qu'à lui-même, à sa raison, et conquiert ainsi son autonomie. Au contraire, celui qui agit selon ses penchants immédiats demeure hétéronome, soumis à des forces extérieures à sa raison<ref>Voir Allen W. Wood, ''Kantian Ethics'', Cambridge, Cambridge University Press, 2008, chap. 6.</ref>.
====Devoir et bonheur selon Kant====
Chez Kant, le devoir peut entrer en conflit avec notre bonheur empirique. La moralité exige parfois de sacrifier nos intérêts personnels. Cependant, Kant pense que la raison pratique nous oriente vers ce qu'il appelle le ''souverain bien'', c'est-à-dire l'union de la vertu et du bonheur, la vertu en étant la condition. Pour rendre pensable la possibilité d'une telle harmonie, Kant introduit deux postulats de la raison pratique : l'immortalité de l'âme et l'existence de Dieu<ref>Emmanuel Kant, ''Critique de la raison pratique'', Dialectique, livre II, chap. II, trad. F. Picavet, Paris, PUF, 1965 (1788).</ref>. Il importe de souligner que ces postulats ne fondent pas la validité de la loi morale, qui s'impose par la raison pure. Ils accompagnent l'espérance liée au souverain bien : la loi morale serait obligatoire même si l'âme n'était pas immortelle et même si Dieu n'existait pas.
===L'éthique aristotélicienne de la vertu===
Aristote (384-322 av. J.-C.), dans son ''Éthique à Nicomaque'', propose une conception très différente de la morale, centrée non sur le devoir au sens moderne, mais sur la vertu (''arétè'') et le bonheur (''eudaimonia''). Aristote ne construit d'ailleurs pas une morale du devoir au sens kantien : il pense d'abord la formation du caractère, la vertu, la prudence et la vie bonne. Parler de « devoir » à son sujet est donc en partie anachronique.
====La vertu comme disposition acquise====
Pour Aristote, les vertus morales ne sont pas innées : elles s'acquièrent par l'habitude et l'exercice. C'est en pratiquant les actions justes que nous devenons justes, en accomplissant des actions modérées que nous devenons modérés, en accomplissant des actions courageuses que nous devenons courageux<ref>Aristote, ''Éthique à Nicomaque'', II, 1, 1103a-b.</ref>. La vertu est une disposition stable (''hexis'') qui rend possible l'action bonne. L'homme vertueux trouve un plaisir propre dans l'action conforme à la vertu, mais ce plaisir n'efface pas l'effort requis : la vertu reste une disposition rationnelle, acquise par l'exercice et orientée par la prudence<ref>Pierre Aubenque, ''La prudence chez Aristote'', Paris, PUF, 1963.</ref>.
====Le juste milieu====
La vertu se définit comme un juste milieu entre deux excès. Par exemple, le courage est le juste milieu entre la lâcheté (excès de crainte) et la témérité (absence de crainte). La tempérance est le juste milieu entre l'insensibilité et l'intempérance. Ce juste milieu n'est pas une moyenne arithmétique, mais une disposition appropriée aux circonstances et à la personne. Il s'agit d'une médiété ''relative à nous'', c'est-à-dire déterminée en tenant compte de la situation concrète et de l'individu, selon l'appréciation de l'homme prudent<ref>Aristote, ''Éthique à Nicomaque'', II, 6, 1106b36-1107a2.</ref>.
====La prudence (phronesis)====
La vertu morale s'accompagne nécessairement d'une vertu intellectuelle appelée prudence ou sagesse pratique (''phronesis''). Cette faculté permet de délibérer correctement pour déterminer, dans chaque situation particulière, quelle est l'action appropriée. Aristote la définit comme une disposition rationnelle relative à l'action, capable de discerner ce qui est bon ou mauvais pour un être humain<ref>Aristote, ''Éthique à Nicomaque'', VI, 5, 1140b4-6.</ref>.
====Le bonheur comme fin dernière====
Contrairement à Kant, Aristote ne sépare pas vertu et bonheur. Pour lui, la vie vertueuse n'est pas un sacrifice pénible mais l'accomplissement de notre nature rationnelle et sociale. La vertu n'est donc pas seulement un moyen d'atteindre le bonheur : elle en est une part constitutive. Le bien pour l'homme consiste dans une activité de l'âme en accord avec la vertu<ref>Aristote, ''Éthique à Nicomaque'', I, 7, 1098a16-18.</ref>. Toutefois, Aristote reconnaît que le bonheur véritable suppose aussi un certain nombre de biens extérieurs (santé, ressources, amitiés, conditions politiques favorables). Sans ces biens, l'exercice de la vertu reste possible mais difficile. Aristote distingue par ailleurs plusieurs formes de vie bonne : la vie pratique vertueuse, ordonnée à l'action politique et morale, et la vie contemplative (''theoria''), à laquelle il réserve la forme la plus haute d'accomplissement humain<ref>Aristote, ''Éthique à Nicomaque'', X, 7-8 ; Rosalind Hursthouse, ''On Virtue Ethics'', Oxford, Oxford University Press, 1999 ; Alasdair MacIntyre, ''After Virtue'', Notre Dame, University of Notre Dame Press, 1981.</ref>.
===Hegel : du devoir abstrait à l'éthicité concrète===
Georg Wilhelm Friedrich Hegel (1770-1831) critique la conception kantienne du devoir qu'il juge trop abstraite et formelle. Dans ses ''Principes de la philosophie du droit'' (1820), il distingue trois sphères.
''Le droit abstrait'' : la sphère de la propriété et du contrat, où l'individu est reconnu comme personne juridique.
''La moralité'' (''Moralität'') : la sphère de la conscience morale subjective, du devoir intérieur, telle que Kant l'a conçue. Pour Hegel, cette sphère reste insuffisante car elle demeure abstraite et individuelle.
''L'éthicité'' (''Sittlichkeit'') : la sphère des institutions concrètes (famille, société civile, État) où le devoir trouve son contenu effectif. Dans l'éthicité, l'individu n'accomplit pas ses devoirs par contrainte intérieure abstraite. Il les reconnaît comme siens en s'identifiant aux institutions historiques et rationnelles auxquelles il appartient. L'éthicité n'est donc pas une simple naturalité sociale ; elle est une médiation rationnelle où la liberté subjective et l'ordre institutionnel se rejoignent<ref>Jean-François Kervégan et Gilles Marmasse (dir.), ''Hegel penseur du droit'', Paris, CNRS Éditions, 2004 ; Jean-François Kervégan, ''L'effectif et le rationnel. Hegel et l'esprit objectif'', Paris, Vrin, 2007.</ref>.
Hegel ne propose pas une simple réconciliation entre devoir et inclination. Il opère ce qu'il nomme une ''Aufhebung'', c'est-à-dire un dépassement qui conserve certains éléments d'une position antérieure tout en les transformant et en les replaçant dans un ensemble plus riche. La morale kantienne est ainsi reprise et intégrée à l'universel concret des institutions. Cela ne signifie pas que l'État résoudrait par lui-même tous les conflits possibles entre l'individu et la société : Hegel reconnaît la possibilité de tensions, et les analyses du chapitre sur la société civile montrent qu'elle produit ses propres déséquilibres.
Pour Hegel, le devoir bien compris ne s'oppose pas aux inclinations : la disposition éthique consiste à reconnaître dans l'accomplissement de ses devoirs la réalisation de son intérêt propre. Dans l'État rationnel, le citoyen accomplit ses devoirs non comme un sacrifice imposé du dehors mais en réalisant sa propre liberté<ref>Hegel, ''Principes de la philosophie du droit'', § 147 et § 150.</ref>.
===Rousseau : le citoyen et la volonté générale===
Jean-Jacques Rousseau (1712-1778), dans ''Du Contrat social'' (1762), pense le devoir politique à partir de la notion de volonté générale.
====Le contrat social====
Par le contrat social, chaque individu s'associe avec tous les autres en mettant « en commun sa personne et toute sa puissance sous la suprême direction de la volonté générale »<ref>Jean-Jacques Rousseau, ''Du Contrat social'', livre I, chapitre 6.</ref>. Cette aliénation totale de chacun crée un corps politique dont chaque membre est à la fois citoyen (participant au pouvoir souverain) et sujet (soumis aux lois).
====La volonté générale====
La volonté générale ne se confond pas avec la simple addition des intérêts particuliers ; elle exprime ce qui peut valoir comme intérêt commun, une fois écartées les considérations purement privées qui s'opposent les unes aux autres<ref>Jean-Jacques Rousseau, ''Du Contrat social'', livre II, chapitre 3.</ref>. Elle vise toujours le bien commun et reste « toujours droite » lorsqu'elle est correctement formée. Rousseau distingue cependant la rectitude de la volonté générale et la justesse du jugement du peuple : le peuple veut toujours son bien, mais il peut se tromper sur ce bien. La volonté générale n'est donc pas l'opinion majoritaire immédiate ; elle suppose des conditions de délibération, d'information et d'égalité qui ne sont pas toujours réunies.
Le devoir du citoyen consiste à obéir aux lois qui expriment la volonté générale. Cette obéissance constitue l'exercice même de sa liberté, puisqu'il obéit à des lois qu'il a lui-même contribué à établir : « l'obéissance à la loi qu'on s'est prescrite est liberté »<ref>Jean-Jacques Rousseau, ''Du Contrat social'', livre I, chapitre 8.</ref>. Quiconque refuse d'obéir à la volonté générale peut y être contraint par le corps politique, « ce qui ne signifie autre chose sinon qu'on le forcera d'être libre »<ref>Jean-Jacques Rousseau, ''Du Contrat social'', livre I, chapitre 7.</ref>.
===Le stoïcisme : action appropriée et accord avec la nature===
Les philosophes stoïciens (Zénon, Épictète, Marc Aurèle) proposent une conception de l'agir fondée sur l'idée d'un ordre rationnel universel. Le précepte fondamental consiste à « vivre en accord avec la nature », c'est-à-dire avec la raison qui gouverne le cosmos. Comme la nature humaine est essentiellement rationnelle, vivre selon la nature revient à vivre selon la raison<ref>Voir Maxime Kristanek, « Stoïcisme (A) », ''L'Encyclopédie philosophique'', [https://encyclo-philo.fr/item/1681], consulté en 2025 ; Pierre Hadot, ''Qu'est-ce que la philosophie antique ?'', Paris, Gallimard, 1995.</ref>.
Le terme grec qui correspond le mieux à ce que nous appelons « devoir » est, chez les stoïciens, ''kathêkon'', souvent traduit par « action appropriée » ou « devoir convenable ». Le ''kathêkon'' désigne l'action raisonnable que la situation requiert, compte tenu des rôles que chacun occupe. Le stoïcisme ne se réduit donc pas à l'acceptation du destin : il implique aussi des responsabilités sociales, familiales et politiques. Les stoïciens précisent toutefois que les actions appropriées peuvent être accomplies par des hommes ordinaires qui s'efforcent de suivre la raison, alors que l'action parfaitement droite, accomplie en toute connaissance et avec une disposition stable, n'est le propre que du sage.
====Ce qui dépend de nous====
Épictète distingue ce qui dépend de nous (nos jugements, nos désirs, nos volontés) et ce qui ne dépend pas de nous (notre corps, notre réputation, notre place sociale, notre destinée). L'action appropriée consiste à concentrer nos efforts sur ce qui dépend de nous et à accepter avec sérénité ce qui ne dépend pas de nous<ref>Épictète, ''Manuel'', § 1.</ref>.
====Les devoirs sociaux====
Marc Aurèle, empereur et philosophe stoïcien, insiste sur les devoirs sociaux qui découlent de notre nature rationnelle et sociale. Chacun doit remplir le rôle qui lui échoit dans l'ordre cosmique, qu'il soit empereur ou esclave. L'exercice des vertus de justice, de courage, de tempérance et de prudence constitue, selon lui, la voie vers la sagesse<ref>Marc Aurèle, ''Pensées pour moi-même'', livres II et VIII. On consultera la traduction d'Émile Bréhier dans ''Les Stoïciens'', Paris, Gallimard, « Bibliothèque de la Pléiade », 1962.</ref>.
===Spinoza : le conatus et l'éthique===
Baruch Spinoza (1632-1677) propose dans son ''Éthique'' une conception qui s'éloigne de la morale traditionnelle de l'obligation. Spinoza ne dissout pas pour autant toute distinction entre bien et mal : il en transforme le sens, en les rapportant à la puissance d'agir des êtres et non à un ordre transcendant.
====Le conatus====
Pour Spinoza, « chaque chose, autant qu'il est en elle, s'efforce de persévérer dans son être »<ref>Baruch Spinoza, ''Éthique'', III, proposition 6.</ref>. Ce principe, appelé ''conatus'', constitue l'essence même de chaque être. L'homme n'agit pas par devoir imposé de l'extérieur mais par l'effort naturel de persévérer dans son être et d'augmenter sa puissance d'agir. Cet effort n'est pas un acte volontaire ou conscient ajouté à la nature de l'individu ; il exprime cette nature elle-même.
====Bien et mal, liberté et nécessité====
Pour Spinoza, les notions traditionnelles de bien et de mal n'ont pas de fondement transcendant. Mais elles conservent une signification rationnelle relative : est dit ''bon'' ce qui augmente la puissance d'agir d'un individu, ''mauvais'' ce qui la diminue. Le bien est « ce que nous savons avec certitude être un moyen de nous rapprocher de plus en plus du modèle de la nature humaine que nous nous proposons »<ref>Baruch Spinoza, ''Éthique'', IV, préface.</ref>. La morale spinoziste n'est donc pas une absence de norme, mais une réorientation des normes : elles cessent d'être des commandements extérieurs pour devenir l'expression rationnelle de notre puissance. On parle alors d'une morale ''immanente'', c'est-à-dire qui ne procède pas d'une instance extérieure ou supérieure, mais des effets concrets que les actions produisent sur notre puissance d'agir.
La liberté ne consiste pas à obéir à un devoir moral transcendant, mais à comprendre la nécessité qui nous détermine et à agir selon la raison plutôt que selon les passions. Le sage spinoziste, guidé par la connaissance adéquate, reconnaît que les autres hommes raisonnables augmentent sa propre puissance d'agir : la coopération rationnelle et la joie partagée sont des conditions de l'augmentation du ''conatus''. Spinoza ne prône donc nullement un égoïsme ignorant autrui, mais une éthique rationnelle où l'intérêt bien compris coïncide avec la vie sociale<ref>Pierre-François Moreau, ''Spinoza et le spinozisme'', Paris, PUF, 2003.</ref>.
===Hume et le sentiment moral===
David Hume (1711-1776) conteste l'idée d'un fondement purement rationnel du devoir moral. Selon lui, la raison seule ne peut motiver l'action : ce sont nos sentiments moraux et nos passions qui nous poussent à agir. Hume soutient que nos jugements moraux reposent sur l'approbation et la désapprobation que produisent en nous certains traits de caractère ou certaines actions, par l'intermédiaire de la sympathie<ref>David Hume, ''Enquête sur les principes de la morale'' (1751), trad. P. Saltel, Paris, GF-Flammarion, 1991.</ref>. La raison éclaire les faits, calcule les moyens et analyse les circonstances ; mais l'approbation morale elle-même relève du sentiment. Hume analyse en outre la justice comme une vertu artificielle, c'est-à-dire comme une convention sociale née de la rareté des biens et du besoin de coopération. Cette analyse rapproche Hume des théories conventionnalistes, mais sans qu'il fasse pour autant de l'utilité le critère unique de la moralité.
===L'utilitarisme : Bentham et Mill===
L'utilitarisme propose une éthique conséquentialiste où l'action juste est celle qui produit le plus grand bien-être pour le plus grand nombre. Jeremy Bentham (1748-1832) en formule la version la plus directe : il s'agit de calculer la somme algébrique des plaisirs et des peines que les actions produisent, et d'agir de manière à maximiser le solde de plaisir<ref>Jeremy Bentham, ''An Introduction to the Principles of Morals and Legislation'', London, T. Payne, 1789, chap. I.</ref>. Bentham cherche à évaluer les plaisirs et les peines selon plusieurs critères, comme leur intensité, leur durée, leur certitude, leur proximité, leur fécondité, leur pureté et leur étendue. Sa conception du plaisir est essentiellement quantitative : c'est par la combinaison de ces critères mesurables que l'on apprécie la valeur d'une action.
John Stuart Mill (1806-1873) reprend le principe d'utilité, mais introduit une distinction qualitative entre les plaisirs. Pour lui, certains plaisirs (intellectuels, esthétiques, moraux) sont supérieurs en qualité à d'autres (sensoriels), même si leur intensité est moindre<ref>John Stuart Mill, ''L'Utilitarisme'' (1861), trad. G. Tanesse, Paris, GF-Flammarion, 1988, chap. II.</ref>. Mill soutient en particulier que ceux qui ont fait l'expérience des deux genres de plaisirs préfèrent les plaisirs supérieurs : ''it is better to be a human being dissatisfied than a pig satisfied'', écrit-il, ce que l'on peut rendre par : il vaut mieux être un être humain insatisfait qu'un porc satisfait. Mill défend par ailleurs des distinctions importantes entre la justice et l'utilité, et reconnaît la valeur de règles stables que l'on ne saurait réviser à chaque situation. Le devoir, dans cette perspective, ne consiste pas à suivre une règle abstraite, mais à viser, par nos actions et nos institutions, le bien-être collectif.
==Les enjeux philosophiques du devoir==
===Le devoir s'oppose-t-il au bonheur ?===
Cette question traverse toute l'histoire de la philosophie morale et oppose principalement Kant à Aristote.
''La position kantienne'' : pour Kant, le devoir peut entrer en conflit avec notre bonheur. La moralité exige parfois de sacrifier nos intérêts personnels. Kant pense néanmoins que la raison pratique nous permet d'espérer une harmonie entre vertu et bonheur, qu'il appelle souverain bien<ref>Emmanuel Kant, ''Critique de la raison pratique'', Dialectique, livre II, chap. II, trad. F. Picavet, Paris, PUF, 1965 (1788).</ref>.
''La position aristotélicienne'' : pour Aristote, il n'y a pas d'opposition véritable entre vertu et bonheur. La vie vertueuse est elle-même la réalisation du bonheur humain. L'homme véritablement vertueux trouve du plaisir à accomplir des actions vertueuses. La vertu n'est pas un sacrifice mais un accomplissement.
Cette opposition renvoie à des conceptions différentes du bonheur. Si l'on définit le bonheur comme la satisfaction de tous nos désirs immédiats, alors il peut entrer en conflit avec le devoir. Si l'on conçoit le bonheur comme l'accomplissement de notre nature rationnelle, alors devoir et bonheur convergent.
===Le devoir s'oppose-t-il à la liberté ?===
Cette question constitue un paradoxe apparent : comment peut-on être libre en obéissant à un devoir qui s'impose à nous ?
''L'autonomie kantienne'' : pour Kant, le devoir ne s'oppose pas à la liberté mais la réalise. Obéir au devoir, c'est obéir à la loi que notre propre raison nous prescrit. Cette autonomie (du grec ''autos'', soi-même, et ''nomos'', loi) constitue la véritable liberté, par opposition à l'hétéronomie qui consiste à être déterminé par des causes extérieures (désirs, pressions sociales, etc.)<ref>Emmanuel Kant, ''Fondements de la métaphysique des mœurs'', section III, trad. V. Delbos, Paris, Librairie Delagrave, 1907 (1785).</ref>.
''La liberté positive'' : on peut distinguer la liberté négative (absence de contraintes externes) et la liberté positive (capacité de se déterminer soi-même selon la raison). Le devoir moral relève de cette liberté positive. Cette idée rejoint Rousseau, pour qui « l'obéissance à la loi qu'on s'est prescrite est liberté »<ref>Jean-Jacques Rousseau, ''Du Contrat social'', livre I, chapitre 8.</ref>, tandis que Kant parle plutôt d'autonomie de la volonté. La parenté est réelle mais la perspective diffère : chez Rousseau, il s'agit d'une liberté politique dans l'ordre de la loi commune ; chez Kant, d'une liberté morale par laquelle la volonté rationnelle se donne à elle-même la loi.
''Le risque de l'aliénation'' : certains philosophes critiquent cette conception et y voient une forme d'aliénation. Obéir au devoir, ce serait renoncer à sa singularité au profit d'une loi universelle abstraite qui nie la diversité des individus et des situations. Nietzsche, par exemple, voit dans la morale du devoir une intériorisation de la contrainte, qu'il analyse par sa généalogie des valeurs.
===Peut-on fonder le devoir ?===
Cette question oppose des familles de positions plus diverses qu'une simple alternative entre réalisme et nihilisme. Les distinctions présentées ci-dessous ne sont pas toutes exigibles au baccalauréat, mais elles permettent de comprendre que la question du fondement du devoir admet plusieurs réponses et qu'il existe différentes manières de défendre, ou de contester, l'objectivité des jugements moraux.
''Le réalisme moral'' soutient que les devoirs moraux existent objectivement, indépendamment de nos croyances et de nos conventions, et que nous pouvons les connaître. Plusieurs fondements peuvent être proposés :
* la nature humaine : nos devoirs découlent de notre nature rationnelle et sociale (Aristote) ;
* la raison pure : les devoirs sont fondés sur des procédures rationnelles comme l'universalisation (Kant) ;
* les commandements divins : les devoirs sont fondés sur la volonté de Dieu (théologie morale) ;
* l'intuition : nous connaissons certains devoirs de manière directe et évidente (intuitionnisme)<ref>William David Ross, ''The Right and the Good'', Oxford, Oxford University Press, 1930.</ref>.
''Le constructivisme moral'' considère que les normes morales ne sont pas découvertes mais construites par des procédures rationnelles ou délibératives. La justice, pour John Rawls, résulte ainsi d'un accord hypothétique conclu sous le voile d'ignorance<ref>John Rawls, ''Théorie de la justice'', trad. C. Audard, Paris, Seuil, 1987 (1971).</ref>. Christine Korsgaard défend, dans la lignée de Kant, un constructivisme qui ancre l'obligation morale dans les exigences réflexives de l'agent rationnel.
''Le subjectivisme'' et le ''relativisme moral'' font dépendre les jugements moraux respectivement des préférences individuelles ou des cultures particulières. Aucun jugement ne pourrait alors prétendre à une vérité absolue : la moralité varierait selon les sujets ou selon les sociétés.
''L'expressivisme'' soutient que les énoncés moraux n'ont pas pour fonction de décrire des faits objectifs, mais d'exprimer des attitudes (approbation, désapprobation) ou de prescrire des conduites. Cette tradition trouve une expression contemporaine chez Allan Gibbard ou Simon Blackburn<ref>Simon Blackburn, ''Ruling Passions'', Oxford, Clarendon Press, 1998 ; Allan Gibbard, ''Wise Choices, Apt Feelings'', Cambridge (Mass.), Harvard University Press, 1990.</ref>.
''La théorie de l'erreur'', défendue par John Mackie, occupe une position singulière : les énoncés moraux ordinaires prétendent bien décrire des faits objectifs, mais cette prétention est, selon Mackie, systématiquement fausse, car aucun fait moral ne correspond à ces énoncés. Mackie développe en particulier un ''argument de l'étrangeté'' : les propriétés morales objectives, telles que les conçoivent les réalistes, seraient des entités métaphysiques étranges, sans analogue dans le reste du réel<ref>John L. Mackie, ''Ethics: Inventing Right and Wrong'', Harmondsworth, Penguin, 1977, chap. 1.</ref>.
Quant à Nietzsche, il est plus exact de le présenter comme un généalogiste critique des valeurs morales que comme un simple « nihiliste ». Son projet, dans ''La Généalogie de la morale'', consiste à reconstituer l'histoire des valeurs morales, en particulier de la morale de la culpabilité et du ressentiment, pour mettre au jour leurs conditions d'émergence et leurs effets sur les formes de vie<ref>Friedrich Nietzsche, ''La Généalogie de la morale'' (1887), trad. P. Wotling, Paris, Le Livre de Poche, 2000.</ref>.
===Que devons-nous faire concrètement ?===
Cette question pratique oppose différentes théories normatives.
''Le déontologisme'' : certains devoirs sont absolus et ne dépendent pas des conséquences. Par exemple, il ne faut pas mentir, même si les conséquences de la franchise sont graves. Kant défend cette position dans son texte ''Sur un prétendu droit de mentir par humanité'' (1797), où il refuse l'idée d'un droit de mentir, même à un meurtrier qui demanderait où se cache sa victime<ref>Emmanuel Kant, « Sur un prétendu droit de mentir par humanité » (1797), trad. L. Guillermit, dans ''Théorie et pratique. D'un prétendu droit de mentir par humanité. La Fin de toutes choses'', Paris, Vrin, 2000.</ref>.
''Le conséquentialisme'' : nous devons accomplir les actions qui produisent les meilleures conséquences en termes de bien-être général. L'utilitarisme de Bentham et Mill en est l'exemple le plus connu. Selon cette théorie, le devoir consiste à maximiser le bonheur du plus grand nombre<ref>John Stuart Mill, ''L'Utilitarisme'' (1861), trad. G. Tanesse, Paris, GF-Flammarion, 1988.</ref>.
''L'éthique des vertus'' : au lieu de se concentrer sur les règles à suivre, il faut développer des vertus de caractère (courage, générosité, honnêteté) et s'inspirer de personnes vertueuses. Cette approche, inspirée d'Aristote, connaît un renouveau dans la philosophie morale contemporaine, en particulier à la suite de l'article d'Elizabeth Anscombe sur la philosophie morale moderne et des travaux de Philippa Foot, Alasdair MacIntyre et Rosalind Hursthouse<ref>Elizabeth Anscombe, « Modern Moral Philosophy », ''Philosophy'', vol. 33, n° 124, 1958 ; Philippa Foot, ''Virtues and Vices'', Oxford, Blackwell, 1978 ; Rosalind Hursthouse, ''On Virtue Ethics'', Oxford, Oxford University Press, 1999.</ref>.
====Un exemple : le mensonge destiné à protéger quelqu'un====
Pour rendre ces théories plus concrètes, on peut imaginer une situation classique : un proche menacé se cache chez nous, et un tiers hostile demande où il est. Faut-il mentir pour le protéger ?
Kant, dans son texte ''Sur un prétendu droit de mentir par humanité'', refuse l'idée d'un droit de mentir, même dans ce cas. Le mensonge détruit la valeur universelle de la véracité, qui est la condition de toute communication entre êtres rationnels, et il rend celui qui ment responsable des conséquences imprévisibles de son acte.
Aristote ne formulerait pas la question en termes de loi universelle. Il chercherait l'action que choisirait l'homme prudent, en tenant compte des circonstances, des personnes, des conséquences possibles. La franchise est une vertu, mais la prudence peut l'orienter de manière à éviter un mal plus grand.
Hume rappellerait que la sympathie nous incline naturellement à protéger un proche en danger, et que cette inclination est moralement approuvée. La justice exige le respect de règles générales, mais le sentiment moral peut, dans certaines situations particulières, justifier qu'on s'écarte de la franchise.
Bentham et Mill, du point de vue utilitariste, comparent les conséquences. Si le mensonge sauve une vie sans causer de dommage durable, il maximise probablement le bien-être collectif. Mill ajouterait toutefois que les règles morales générales (comme l'interdiction du mensonge) ont une valeur d'utilité globale et qu'il faut peser sérieusement les exceptions.
Cet exemple montre comment des théories différentes peuvent diverger sur des cas précis, sans qu'aucune ne se réduise à une simple application mécanique d'une règle.
===Les dilemmes moraux===
Les dilemmes moraux sont des situations où plusieurs devoirs entrent en conflit, rendant impossible leur accomplissement simultané. Dans le roman de William Styron ''Le Choix de Sophie'', une mère doit choisir lequel de ses deux enfants sera épargné par un officier nazi, l'autre étant condamné à mort<ref>Voir Maxime Kristanek, « Paradoxe (A) », ''L'Encyclopédie philosophique'', [https://encyclo-philo.fr/paradoxe-a], consulté en 2025, section 4.</ref>.
Face aux dilemmes moraux, plusieurs positions sont possibles :
* nier leur existence réelle : un des devoirs apparents n'est pas un véritable devoir ;
* admettre leur existence mais établir une hiérarchie entre les devoirs ;
* reconnaître l'existence de situations tragiques où tout choix implique une faute morale.
==Sujets de dissertation==
Avant de proposer des sujets répartis par grands thèmes, voici quelques conseils généraux pour aborder une dissertation sur la notion de devoir.
''Analyser les termes du sujet.'' La plupart des sujets articulent le devoir avec une autre notion : la liberté, le bonheur, autrui, la conscience, la loi. Il faut d'abord se demander quel sens chaque terme reçoit dans la question posée. Le mot « devoir », par exemple, peut renvoyer à l'impératif catégorique kantien, à un rôle social, à un sentiment d'obligation, à une règle juridique ou à une exigence intérieure. Repérer ces ambiguïtés permet de construire une vraie problématique, au lieu de répondre à un sujet supposé.
''Identifier la tension à laquelle invite le sujet.'' Une bonne dissertation ne se contente pas de juxtaposer des thèses. Elle part d'une difficulté : pourquoi la question se pose-t-elle ? Quel paradoxe ou quel conflit oblige à réfléchir ? « Suis-je libre quand je fais mon devoir ? » suppose, par exemple, qu'à première vue le devoir contraint la liberté. Le travail consistera alors à examiner si cette première impression est juste, à la nuancer, et à proposer une compréhension plus précise de ce qu'on appelle « liberté ».
''Mobiliser plusieurs doctrines et les confronter.'' Les théories morales présentées dans cet article ne sont pas interchangeables. Kant, Aristote, Hume, Mill, Hegel ou Nietzsche ne donneraient pas la même réponse à une même question. Une bonne copie ne se borne pas à exposer chaque position : elle les fait dialoguer, en montrant pourquoi l'une ne suffit pas et en quoi une autre la complète ou la corrige.
''S'appuyer sur des exemples précis.'' Les exemples ne sont pas un ornement, mais un instrument d'analyse. Le mensonge destiné à protéger un proche, la désobéissance civile face à une loi injuste, le devoir de secours envers un inconnu, le respect d'une promesse contraignante : ces situations concrètes permettent de tester la portée des théories et d'éviter les généralités abstraites.
''Éviter quelques pièges fréquents.'' Confondre le devoir moral avec une simple obéissance aux lois ; réduire la morale du devoir à Kant en oubliant les autres conceptions ; opposer mécaniquement devoir et bonheur sans interroger les termes ; transformer la dissertation en plaidoyer personnel au lieu d'une analyse argumentée. La rigueur consiste à examiner chaque thèse avec la même attention, y compris celles qu'on ne partage pas spontanément.
===Sujets sur le devoir et la liberté===
# Faire son devoir, est-ce renoncer à sa liberté ?
# Suis-je libre quand je fais mon devoir ?
# Le devoir s'oppose-t-il à la liberté ?
# L'obéissance au devoir peut-elle être un acte libre ?
# Reconnaître ses devoirs, est-ce renoncer à sa liberté ?
# Peut-on être libre en obéissant à un devoir ?
''Conseil.'' Sur ces sujets, l'enjeu est de distinguer plusieurs sens du mot liberté : absence de contrainte extérieure, capacité de céder à ses désirs immédiats, ou capacité de se déterminer par sa raison. Le rapprochement entre Rousseau (l'obéissance à la loi qu'on s'est prescrite) et Kant (l'autonomie de la volonté) permet de montrer que le devoir peut, dans certaines conceptions, réaliser la liberté plutôt que la contredire. Les critiques nietzschéennes de l'obéissance morale offrent un contrepoint utile pour éviter une réponse trop unilatérale.
===Sujets sur le devoir et le bonheur===
# Est-ce un devoir d'être heureux ?
# Avons-nous le devoir de faire le bonheur des autres ?
# Le bonheur et le devoir sont-ils compatibles ?
# Faire son devoir sans être heureux, est-ce possible ?
# La recherche du bonheur est-elle un obstacle à l'accomplissement du devoir ?
# Peut-on concilier bonheur et devoir ?
''Conseil.'' La réponse dépend largement de la conception du bonheur que l'on adopte. Si le bonheur se réduit à la satisfaction des désirs immédiats, le devoir peut s'y opposer. Si le bonheur est conçu comme accomplissement de soi (Aristote, Spinoza), il converge avec l'exercice de la vertu. La position kantienne, plus exigeante, distingue le bonheur empirique du souverain bien et soutient que le devoir doit primer, sans renoncer à l'espérance d'une harmonie ultime. La perspective utilitariste, enfin, fait du bien-être collectif le critère même du devoir.
===Sujets sur la nature du devoir===
# D'où vient que nous avons des devoirs ?
# Qu'est-ce qui fonde nos devoirs moraux ?
# Tous les hommes ont-ils les mêmes devoirs ?
# Suffit-il de faire son devoir ?
# La morale se résume-t-elle à faire son devoir ?
# Peut-on parler d'un devoir envers soi-même ?
''Conseil.'' Sur la question du fondement, mobiliser les principales familles présentées dans l'article : la nature humaine (Aristote), la raison pure (Kant), le sentiment moral (Hume), les conséquences (utilitarisme), les conventions sociales, la critique généalogique (Nietzsche). La question « tous les hommes ont-ils les mêmes devoirs ? » invite à distinguer universalisme moral et relativisme culturel : il faut analyser ce qui peut être universalisable (le respect de la dignité d'autrui, par exemple) et ce qui dépend des contextes historiques et institutionnels.
===Sujets sur le devoir et autrui===
# Avons-nous des devoirs envers les animaux ?
# Ai-je le devoir d'aimer autrui ?
# Le devoir de secourir autrui a-t-il des limites ?
# Peut-on désobéir par devoir ?
# Y a-t-il un devoir de mémoire ?
# La désobéissance à la loi peut-elle être un devoir ?
''Conseil.'' Ces sujets engagent des débats contemporains. La question des devoirs envers les animaux peut s'appuyer sur l'utilitarisme (Bentham, Peter Singer) et sur une discussion du concept kantien d'humanité comme fin en soi. La désobéissance par devoir peut s'éclairer par les analyses de la désobéissance civile (Thoreau, Hannah Arendt, Habermas) et par la distinction rousseauiste entre la volonté générale et la volonté de tous : on peut désobéir à une loi qui contredit la justice sans renoncer à l'idée même de loi. Distinguer le devoir d'aimer (qui peut sembler contradictoire, l'amour n'étant pas commandable) et le devoir de respecter ou de secourir, qui ne dépendent pas de l'inclination affective.
===Sujets sur le devoir et la morale===
# Agir moralement, est-ce agir par devoir ?
# La notion d'obligation est-elle indispensable à la morale ?
# Suffit-il d'avoir bonne conscience pour être sûr d'agir moralement ?
# Faut-il toujours suivre sa conscience ?
# Les passions nous empêchent-elles de faire notre devoir ?
# Peut-on faire son devoir par habitude ?
''Conseil.'' La question « agir moralement, est-ce agir par devoir ? » oppose typiquement Kant à l'éthique des vertus : pour Kant, seule l'action accomplie par devoir a une valeur morale ; pour Aristote et l'éthique des vertus, l'action vertueuse procède d'une disposition stable acquise par l'habitude, qui n'a pas besoin d'être motivée par la conscience explicite d'une obligation. Sur la question de la conscience morale, attention à ne pas la confondre avec la simple opinion : la bonne conscience peut tromper, et il existe une conscience dévoyée ou mal éclairée. La conscience suppose donc un travail de réflexion et d'auto-examen, qu'aucune théorie morale ne dispense d'accomplir.
==Extraits de textes philosophiques à étudier==
===Texte 1 : Kant, ''Fondements de la métaphysique des mœurs'' (1785)===
<blockquote>
« Il est sans doute conforme au devoir qu'un marchand ne vende pas plus cher sa marchandise à l'acheteur inexpérimenté, et, là où le commerce est important, le marchand avisé s'en garde bien en effet ; il établit au contraire un prix fixe, le même pour tout le monde, si bien qu'un enfant achète chez lui à aussi bon compte que tout autre. On est donc loyalement servi ; mais ce n'est pas à beaucoup près assez pour qu'on en croie le marchand agissant ainsi par devoir et d'après des principes de probité ; son intérêt l'exigeait ainsi.
Au contraire, conserver sa vie est un devoir, et c'est en outre une chose pour laquelle chacun a encore une inclination immédiate. Or c'est pour cela que la sollicitude souvent inquiète que la plupart des hommes y apportent n'en est pas moins dépourvue de toute valeur intrinsèque et que leur maxime n'a aucun prix moral. Ils protègent leur vie conformément au devoir, sans doute, mais non par devoir. En revanche, que des contrariétés et un chagrin sans espoir aient enlevé à un homme tout goût de vivre, si ce malheureux, à l'âme forte, est plus indigné de son sort qu'il n'est découragé ou abattu, s'il désire la mort et cependant conserve sa vie sans l'aimer, non par inclination ni par crainte, mais par devoir, alors sa maxime a une valeur morale. »
</blockquote>
Emmanuel Kant, ''Fondements de la métaphysique des mœurs'' (1785), première section, trad. V. Delbos, Paris, Delagrave, 1907, p. 13-14<ref>Emmanuel Kant, ''Fondements de la métaphysique des mœurs'', trad. V. Delbos, Paris, Librairie Delagrave, 1907, p. 13-14.</ref>.
''Analyse'' : ce texte distingue trois types d'actions : celles accomplies par intérêt, celles accomplies par inclination (par désir naturel), et celles accomplies par pur devoir. Seules ces dernières ont une valeur morale authentique. Le marchand honnête agit conformément au devoir, mais son honnêteté s'explique par son intérêt (conserver sa clientèle). De même, celui qui conserve sa vie par plaisir de vivre agit conformément au devoir mais par inclination. Seul celui qui conserve sa vie malgré le dégoût qu'elle lui inspire, parce qu'il reconnaît que c'est son devoir, agit véritablement par devoir et possède une volonté moralement bonne.
===Texte 2 : Kant, ''Fondements de la métaphysique des mœurs'' (1785) — l'impératif catégorique===
<blockquote>
« Agis uniquement d'après la maxime qui fait que tu puisses vouloir en même temps qu'elle devienne une loi universelle. […] Agis comme si la maxime de ton action devait être érigée par ta volonté en loi universelle de la nature. […]
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 une fin, et jamais simplement comme un moyen. […]
Agis de telle sorte que ta volonté puisse se considérer elle-même en même temps comme légiférant universellement grâce à sa maxime. »
</blockquote>
Emmanuel Kant, ''Fondements de la métaphysique des mœurs'' (1785), deuxième section, trad. V. Delbos, Paris, Delagrave, 1907, p. 63, 71, 79<ref>Emmanuel Kant, ''Fondements de la métaphysique des mœurs'', trad. V. Delbos, Paris, Librairie Delagrave, 1907, p. 63, 71, 79.</ref>.
''Analyse'' : ces trois formulations de l'impératif catégorique expriment le même principe fondamental sous différents angles. La première formule (universalisation) nous invite à tester nos maximes en imaginant qu'elles deviennent des lois universelles. La deuxième formule (humanité comme fin) exprime le respect dû à chaque personne humaine en raison de sa dignité. La troisième formule (autonomie) souligne que la loi morale émane de notre propre raison : en lui obéissant, nous ne nous soumettons qu'à nous-mêmes.
===Texte 3 : Aristote, ''Éthique à Nicomaque'' (IVe siècle av. J.-C.)===
<blockquote>
« La vertu est donc une disposition à agir d'une façon délibérée, consistant en une médiété relative à nous, laquelle est rationnellement déterminée et comme la déterminerait l'homme prudent. »
</blockquote>
Aristote, ''Éthique à Nicomaque'', livre II, chap. 6, 1106b36-1107a2<ref>Aristote, ''Éthique à Nicomaque'', livre II, chap. 6, 1106b36-1107a2. On consultera notamment l'édition R. Bodéüs, Paris, GF-Flammarion, 2004.</ref>.
''Analyse'' : Aristote définit la vertu morale comme une disposition stable (''hexis'') à choisir délibérément le juste milieu entre deux extrêmes vicieux. Cette disposition n'est pas innée : elle s'acquiert par l'habitude et l'exercice. La vertu requiert également la prudence (''phronesis''), cette sagesse pratique qui permet de déterminer, dans chaque situation particulière, où se situe le juste milieu. Contrairement à Kant, pour qui le devoir prend la forme d'une loi universelle, Aristote insiste sur le caractère relatif et contextuel de l'action vertueuse : le juste milieu est « relatif à nous », c'est-à-dire qu'il doit être adapté aux circonstances et à la personne, selon le jugement de l'homme prudent.
===Texte 4 : Rousseau, ''Du Contrat social'' (1762)===
<blockquote>
« Chacun de nous met en commun sa personne et toute sa puissance sous la suprême direction de la volonté générale ; et nous recevons en corps chaque membre comme partie indivisible du tout.
À l'instant, au lieu de la personne particulière de chaque contractant, cet acte d'association produit un corps moral et collectif composé d'autant de membres que l'assemblée a de voix, lequel reçoit de ce même acte son unité, son moi commun, sa vie et sa volonté. »
</blockquote>
Jean-Jacques Rousseau, ''Du Contrat social'' (1762), livre I, chap. 6<ref>Jean-Jacques Rousseau, ''Du Contrat social'', livre I, chapitre 6, édition GF-Flammarion, Paris, 1966, p. 51-52.</ref>.
''Analyse'' : par le contrat social, les individus s'unissent en un corps politique régi par la volonté générale. Chaque citoyen devient à la fois membre du souverain (en tant qu'il participe à la formation de la volonté générale) et sujet (en tant qu'il obéit aux lois qui expriment cette volonté). Le devoir du citoyen consiste à obéir aux lois, mais cette obéissance n'est pas une contrainte extérieure : en obéissant aux lois qu'il a lui-même contribué à établir, le citoyen obéit à sa propre volonté et demeure libre. Rousseau réconcilie ainsi devoir et liberté, à condition que la volonté générale soit correctement formée.
===Texte 5 : Épictète, ''Manuel'' (Ier-IIe siècle ap. J.-C.)===
<blockquote>
« Il y a des choses qui dépendent de nous et d'autres qui ne dépendent pas de nous. Dépendent de nous l'opinion, la tendance, le désir, l'aversion, bref, toutes nos œuvres propres ; ne dépendent pas de nous le corps, la richesse, les témoignages de considération, les hautes charges, bref, toutes les choses qui ne sont pas nos œuvres propres. »
</blockquote>
Épictète, ''Manuel'', § 1<ref>Épictète, ''Manuel'', § 1. On consultera la traduction d'Émile Bréhier dans ''Les Stoïciens'', Paris, Gallimard, « Bibliothèque de la Pléiade », 1962.</ref>.
''Analyse'' : ce texte fondamental du stoïcisme distingue ce qui dépend de notre volonté (nos jugements, nos désirs, nos choix) et ce qui n'en dépend pas (notre corps, notre richesse, notre réputation, notre destinée). L'action appropriée (''kathêkon'') consiste à concentrer nos efforts sur ce qui dépend de nous et à accepter avec sérénité ce qui ne dépend pas de nous. Cette attitude rend possible la liberté intérieure. Le sage stoïcien accomplit ce que sa situation requiert non par contrainte mais en comprenant la nécessité rationnelle qui gouverne l'univers.
===Texte 6 : Hegel, ''Principes de la philosophie du droit'' (1820)===
Le paragraphe 147 expose ce que Hegel appelle la « disposition éthique ». L'idée centrale peut être formulée ainsi, en paraphrasant le texte original : la disposition éthique consiste, pour l'individu, à reconnaître que son but particulier ne prend sens que comme moment de l'universel, et à se comporter, dans sa volonté comme dans son sentiment, en accord avec cet universel. Là réside, selon Hegel, ce qu'il nomme la confiance éthique : la conviction que mon intérêt propre est conservé et porté par les institutions qui me dépassent<ref>G. W. F. Hegel, ''Principes de la philosophie du droit'' (1820), § 147. Pour le texte allemand, voir l'édition E. Moldenhauer et K. M. Michel, Suhrkamp, ''Werke'', t. 7. Pour une traduction française de référence, voir l'édition critique établie par Jean-François Kervégan, Paris, PUF, « Quadrige », 2013.</ref>.
''Analyse'' : Hegel critique la conception kantienne du devoir comme contrainte abstraite. Dans l'éthicité, l'individu ne perçoit plus le devoir comme une obligation extérieure qui s'opposerait à ses intérêts. Il reconnaît que son bien particulier se réalise dans et par les institutions éthiques (famille, société civile, État). La disposition éthique est donc une identification réfléchie aux institutions, où devoir et inclination peuvent se rejoindre, sans que les conflits soient pour autant exclus.
==Conclusion==
La notion de devoir constitue l'un des concepts centraux de la philosophie morale. Loin d'être univoque, elle a reçu des interprétations diverses selon les époques et les auteurs. La conception kantienne du devoir comme impératif catégorique, fondé sur la raison pure et exigeant l'universalisation de nos maximes, a profondément marqué la pensée moderne. Elle s'oppose à l'éthique aristotélicienne des vertus, qui intègre l'action morale dans une réflexion plus large sur l'accomplissement humain et le bonheur. À ces deux pôles s'ajoutent les conceptions politiques de Rousseau et de Hegel, l'éthique sentimentaliste de Hume, le conséquentialisme utilitariste de Bentham et de Mill, l'analyse spinoziste du ''conatus'', ou encore la généalogie nietzschéenne des valeurs.
Les questions ouvertes par ces traditions ne se referment pas. Le devoir s'oppose-t-il nécessairement au bonheur et à la liberté, ou peut-il se concilier avec eux ? Peut-on fonder rationnellement nos devoirs moraux, ou ne sont-ils que le produit de processus historiques, sociaux et psychologiques ? Comment résoudre les dilemmes moraux où plusieurs devoirs entrent en conflit ?
Ces interrogations engagent notre existence concrète. Elles trouvent un écho dans des questions que les sociétés contemporaines ne peuvent plus contourner : la légitimité de la désobéissance civile, l'étendue du devoir de vérité dans la vie publique et privée, le devoir de secours envers ceux qui en ont besoin, les obligations envers les générations futures qui hériteront du monde que nous laissons, les devoirs envers les animaux et la nature non humaine. Sur chacun de ces points, les conceptions du devoir présentées dans cet article fournissent des ressources distinctes et parfois divergentes.
La réflexion philosophique sur le devoir invite à prendre au sérieux l'exigence morale, à exercer notre raison pratique et à assumer notre responsabilité. Comme l'écrit Kant, « deux choses remplissent le cœur d'une admiration et d'une vénération toujours nouvelles et toujours croissantes : le ciel étoilé au-dessus de moi et la loi morale en moi »<ref>Emmanuel Kant, ''Critique de la raison pratique'', Conclusion, trad. F. Picavet, Paris, PUF, 1965 (1788), p. 173.</ref>. Cette formule n'épuise pas toutes les conceptions du devoir, mais elle exprime avec force l'idée que l'obligation morale n'est pas seulement une règle extérieure : elle engage le sujet dans ce qu'il reconnaît comme valable.
==Pour aller plus loin==
===Œuvres philosophiques===
* Emmanuel Kant, ''Fondements de la métaphysique des mœurs'' (1785), trad. V. Delbos, Paris, Vrin.
* Emmanuel Kant, ''Critique de la raison pratique'' (1788), trad. F. Picavet, Paris, PUF.
* Aristote, ''Éthique à Nicomaque'', trad. R. Bodéüs, Paris, GF-Flammarion, 2004.
* Jean-Jacques Rousseau, ''Du Contrat social'' (1762), édition GF-Flammarion.
* G. W. F. Hegel, ''Principes de la philosophie du droit'' (1820), trad. J.-F. Kervégan, Paris, PUF.
* Épictète, ''Manuel'', dans ''Les Stoïciens'', trad. É. Bréhier, Paris, Gallimard, « Bibliothèque de la Pléiade », 1962.
* Marc Aurèle, ''Pensées pour moi-même'', dans ''Les Stoïciens'', trad. É. Bréhier, Paris, Gallimard, « Bibliothèque de la Pléiade », 1962.
* Baruch Spinoza, ''Éthique'' (1677), trad. B. Pautrat, Paris, Seuil.
* David Hume, ''Enquête sur les principes de la morale'' (1751), trad. P. Saltel, Paris, GF-Flammarion.
* Jeremy Bentham, ''Introduction aux principes de la morale et de la législation'' (1789).
* John Stuart Mill, ''L'Utilitarisme'' (1861), trad. G. Tanesse, Paris, GF-Flammarion.
* Friedrich Nietzsche, ''La Généalogie de la morale'' (1887), trad. P. Wotling, Paris, Le Livre de Poche, 2000.
===Études contemporaines===
* Pierre Aubenque, ''La prudence chez Aristote'', Paris, PUF, 1963.
* Elizabeth Anscombe, « Modern Moral Philosophy », ''Philosophy'', vol. 33, n° 124, 1958.
* William David Ross, ''The Right and the Good'', Oxford, Oxford University Press, 1930.
* John Rawls, ''Théorie de la justice'' (1971), trad. C. Audard, Paris, Seuil, 1987.
* John L. Mackie, ''Ethics: Inventing Right and Wrong'', Harmondsworth, Penguin, 1977.
* Onora O'Neill, ''Constructions of Reason: Explorations of Kant's Practical Philosophy'', Cambridge, Cambridge University Press, 1989.
* Christine M. Korsgaard, ''Creating the Kingdom of Ends'', Cambridge, Cambridge University Press, 1996.
* Allen W. Wood, ''Kantian Ethics'', Cambridge, Cambridge University Press, 2008.
* Philippa Foot, ''Virtues and Vices'', Oxford, Blackwell, 1978.
* Alasdair MacIntyre, ''After Virtue'', Notre Dame, University of Notre Dame Press, 1981.
* Rosalind Hursthouse, ''On Virtue Ethics'', Oxford, Oxford University Press, 1999.
* Pierre Hadot, ''Qu'est-ce que la philosophie antique ?'', Paris, Gallimard, 1995.
* Pierre-François Moreau, ''Spinoza et le spinozisme'', Paris, PUF, 2003.
* Jean-François Kervégan, ''L'effectif et le rationnel. Hegel et l'esprit objectif'', Paris, Vrin, 2007.
* Derek Parfit, ''On What Matters'', Oxford, Oxford University Press, 2011.
==Références==
{{references|colonnes=2}}
{{AutoCat}}
biz067pa9wuebdlx4u7dznbho454dzg
Manuel de terminale de philosophie/Bonheur
0
83097
765718
757715
2026-05-01T19:52:06Z
PandaMystique
119061
765718
wikitext
text/x-wiki
{{ManuelPhilo}}
Tout être humain semble désirer le bonheur. Mais dès qu'on cherche à dire ce qu'il est, ou par quels moyens l'atteindre, les réponses divergent. Le bonheur est-il un sentiment intérieur ou une vie réussie ? Dépend-il de nous ou des circonstances extérieures ? Faut-il satisfaire ses désirs, les limiter ou les transformer ? Peut-on être heureux dans l'injustice, la pauvreté ou l'illusion ? Ces questions, qui traversent toute l'histoire de la philosophie, montrent que le bonheur n'est pas une donnée immédiate de l'existence : ses contours varient selon la doctrine qui l'interprète, et chaque tradition en éclaire une face différente.
=== Qu'est-ce que le bonheur ? ===
Le mot « bonheur » vient du latin ''bonum augurium'', qui signifie « bon augure » ou « bonne chance ». À l'origine, le bonheur était donc lié à la chance, au hasard. Une partie de la tradition philosophique a précisément cherché à savoir si le bonheur pouvait dépendre de nous plutôt que d'une fortune favorable.
On confond souvent le bonheur avec des états proches qu'il faut pourtant distinguer. Le plaisir est une sensation agréable, souvent corporelle et passagère, comme manger quelque chose de délicieux ou écouter une belle musique. Dans l'usage courant, la joie désigne souvent une émotion vive mais ponctuelle ; certains philosophes, comme Spinoza, lui donnent toutefois un sens plus profond, comme on le verra plus loin. La satisfaction désigne le contentement qui suit la réalisation d'un désir précis. Le bien-être renvoie à un état général d'aisance physique et psychique. Le bonheur, lui, concerne la vie dans son ensemble : il dépasse l'instant et engage notre rapport à l'existence<ref>Aristote, ''Éthique à Nicomaque'', I, 7, 1098a, trad. J. Tricot, Paris, Vrin, 1990, p. 60-62.</ref>. Les philosophes anciens utilisent encore d'autres termes : la ''béatitude'' désigne un bonheur parfait, presque divin ; la ''félicité'' un bonheur stable et durable.
Cette première distinction conduit à une question : le bonheur est-il un état intérieur que l'on ressent, un jugement que l'on porte sur sa vie, ou un accomplissement objectif qu'on peut constater de l'extérieur ? Selon la réponse choisie, les conceptions philosophiques s'orientent dans des directions différentes.
=== Les grandes conceptions du bonheur ===
==== Le bonheur comme plaisir : l'épicurisme ====
Pour Épicure (341-270 avant J.-C.), philosophe grec de l'Antiquité, le bonheur se trouve dans le plaisir. Mais il ne s'agit pas de chercher tous les plaisirs n'importe comment. Épicure distingue trois types de désirs.
Il y a d'abord les désirs naturels et nécessaires, comme boire quand on a soif ou manger quand on a faim. Ces désirs doivent être satisfaits. Ensuite, les désirs naturels mais non nécessaires, comme manger des plats raffinés. Enfin, les désirs ni naturels ni nécessaires, comme vouloir devenir riche ou célèbre. Ces derniers désirs sont à éviter parce qu'ils sont sans limites et nous causent du tourment<ref>Épicure, ''Lettre à Ménécée'', § 127-128, dans ''Lettres et maximes'', trad. M. Conche, Paris, PUF, 1987, p. 219-221.</ref>.
Le bonheur selon Épicure, c'est l'''ataraxie'' : l'absence de trouble dans l'âme. C'est un état de tranquillité et de paix intérieure. Pour y parvenir, il faut limiter ses désirs et apprendre à ne plus craindre la mort ni les dieux. Le plaisir qu'Épicure recherche n'est donc pas l'excitation ou l'agitation, mais la sérénité qui accompagne l'absence de souffrance physique et l'absence de trouble moral<ref>Épicure, ''Maximes capitales'', I-IV, dans ''Lettres et maximes'', trad. M. Conche, Paris, PUF, 1987, p. 231-233.</ref>.
À cette conception modérée du plaisir s'oppose la position défendue par Calliclès dans le ''Gorgias'' de Platon. Pour Calliclès, le bonheur consiste à laisser ses désirs grandir le plus possible et à trouver les moyens de les satisfaire. La frugalité épicurienne lui apparaîtrait comme une vie d'esclave. Socrate lui répond que cette vie est celle d'un tonneau percé qu'il faut sans cesse remplir : elle ne connaît jamais le repos<ref>Platon, ''Gorgias'', 491e-494a, trad. M. Canto-Sperber, Paris, GF-Flammarion, 1987, p. 226-230.</ref>. Cette discussion ancienne montre que la question « faut-il satisfaire ou limiter ses désirs ? » se pose dès l'origine de la philosophie.
==== Le bonheur comme activité vertueuse : Aristote ====
Aristote (384-322 avant J.-C.) propose une autre conception du bonheur. Pour lui, le bonheur (qu'il appelle ''eudaimonia'' en grec) est le but suprême de la vie humaine, ce vers quoi tout le monde tend.
Mais qu'est-ce que le bonheur selon Aristote ? Ce n'est pas d'abord un état intérieur agréable. C'est une manière de vivre. Plus précisément, le bonheur consiste à réaliser la fonction propre de l'être humain, c'est-à-dire à exercer son intelligence et sa raison de manière excellente. Le bonheur consiste donc à vivre selon la vertu<ref>Aristote, ''Éthique à Nicomaque'', I, 7, 1098a, trad. J. Tricot, Paris, Vrin, 1990, p. 60.</ref>.
La vertu, chez Aristote, est une disposition acquise à bien agir, un juste milieu entre deux excès. Le courage, par exemple, est le juste milieu entre la lâcheté et la témérité. Une vie heureuse est donc une vie où l'on cultive ces vertus et où l'on agit avec raison.
Aristote insiste sur un point important : le bonheur n'arrive pas en un instant. C'est une activité qui se déploie sur toute une vie. On ne peut pas dire qu'une personne est heureuse après une seule journée agréable ; il faut considérer sa vie dans son ensemble<ref>Aristote, ''Éthique à Nicomaque'', I, 10, 1100a-1101a, trad. J. Tricot, Paris, Vrin, 1990, p. 73-77.</ref>.
Aristote ne réduit pourtant pas le bonheur à la seule vertu morale. Il reconnaît que la vie heureuse a aussi besoin de certains biens extérieurs : la santé, une situation matérielle suffisante, des amis, et même une certaine beauté physique. Surtout, l'homme étant un « animal politique », son bonheur ne se développe pleinement que dans une cité juste. Enfin, dans le livre X de l'''Éthique à Nicomaque'', Aristote présente la vie contemplative, consacrée à la connaissance, comme la forme la plus haute du bonheur<ref>Aristote, ''Éthique à Nicomaque'', X, 7-8, 1177a-1178a, trad. J. Tricot, Paris, Vrin, 1990, p. 506-512.</ref>. Il existe ainsi une tension à l'intérieur du texte aristotélicien : le livre I semble faire du bonheur la totalité d'une vie moralement accomplie en société, tandis que le livre X confère la priorité à la contemplation. Cette hésitation n'est pas une contradiction, mais l'indice d'une question philosophique difficile : la vie heureuse est-elle d'abord une vie d'action vertueuse, ou une vie de connaissance ?
==== Le bonheur comme sérénité : le stoïcisme ====
Les philosophes stoïciens, comme Épictète (50-125 après J.-C.) ou Marc Aurèle (121-180 après J.-C.), proposent une autre voie. Selon eux, le bonheur ne dépend pas des choses extérieures (richesse, santé, réputation) mais de notre rapport à elles.
Le stoïcisme repose sur une distinction : il y a les choses qui dépendent de nous (nos jugements, nos opinions, nos désirs) et celles qui ne dépendent pas de nous (la maladie, la mort, l'opinion d'autrui, les événements). Ce qui dépend de nous, Épictète l'appelle la ''prohairesis'' : la faculté de juger, de vouloir et de consentir. Pour atteindre la tranquillité, il faut accepter avec sérénité ce qui ne dépend pas de nous et concentrer notre effort sur l'usage droit de cette faculté de jugement<ref>Épictète, ''Manuel'', § 1, trad. P. Hadot, Paris, Le Livre de Poche, 2000, p. 33-35.</ref>.
Mais le stoïcisme ne se réduit pas à un changement d'attitude intérieure. Pour les stoïciens, le seul bien véritable est la vertu, et le seul mal véritable est le vice. Tout le reste, comme la santé, la richesse, la maladie ou la mort, n'est ni un bien ni un mal au sens propre : ce sont des « indifférents ». Ce qui rend une vie heureuse, c'est l'accord entre nos jugements, nos désirs et la raison qui ordonne le monde. Les passions, qui troublent l'âme, viennent de jugements erronés ; les corriger permet d'atteindre l'''apatheia''. Cette ''apatheia'' n'est pas l'absence de toute émotion : les stoïciens admettent au contraire des affects raisonnables, comme la joie du sage face au bien accompli. Ce qui disparaît, ce sont seulement les passions irrationnelles, qui naissent d'une mauvaise estimation de la valeur des choses<ref>Marc Aurèle, ''Pensées pour moi-même'', IV, 3 et VIII, 7, trad. M. Meunier, Paris, Garnier-Flammarion, 1964, p. 60-62 et p. 116-117.</ref>.
=== Les enjeux philosophiques du bonheur ===
==== Peut-on savoir ce qui nous rend heureux ? ====
Emmanuel Kant (1724-1804), philosophe allemand, soulève un problème : le bonheur est un concept indéterminé. Personne ne peut dire avec précision ce qui le rendrait parfaitement heureux. Nos désirs changent, et ce qui nous semble bon aujourd'hui peut ne plus nous satisfaire demain. Pour Kant, le bonheur est « un idéal de l'imagination, non de la raison »<ref>Kant, ''Fondements de la métaphysique des mœurs'', deuxième section, AK IV, 418, trad. V. Delbos, Paris, Vrin, 1980, p. 124.</ref>.
Cela ne veut pas dire que Kant méprise le bonheur. Il refuse seulement d'en faire le fondement de la morale. La loi morale ne peut pas être tirée de la recherche du bonheur, parce que le bonheur dépend d'inclinations sensibles et variables : on ne peut donc pas en faire une règle universelle. La morale doit reposer sur le devoir, c'est-à-dire sur le respect de la loi rationnelle.
Mais Kant n'oublie pas le bonheur. Il introduit l'idée du « souverain bien », qui désigne l'union de la vertu et du bonheur. Il ne s'agit pas d'une simple récompense morale, mais d'une exigence de la raison pratique elle-même : il appartient à la raison de penser comme possible un ordre dans lequel celui qui agit moralement bien recevrait aussi sa part de bonheur. Le bonheur n'est donc pas le principe de la morale, mais il en accompagne idéalement l'achèvement<ref>Kant, ''Critique de la raison pratique'', livre II, chap. II, AK V, 110-114, trad. F. Picavet, Paris, PUF, 1989, p. 119-124.</ref>.
==== Le bonheur dépend-il de nous ou de la chance ? ====
C'est une question ancienne. Si le bonheur dépend de circonstances extérieures (santé, richesse, hasard), nous ne sommes pas maîtres de notre bonheur ; nous sommes à la merci de la fortune.
Aristote reconnaît que certains biens extérieurs sont nécessaires au bonheur. On ne peut pas être pleinement heureux dans la misère ou la maladie. Mais la vertu reste l'élément principal du bonheur, parce qu'elle dépend de nous<ref>Aristote, ''Éthique à Nicomaque'', I, 9-10, 1099b-1100a, trad. J. Tricot, Paris, Vrin, 1990, p. 70-74.</ref>.
Les stoïciens, eux, soutiennent que le bonheur dépend de l'usage droit du jugement, parce que ce jugement est seul à nous appartenir vraiment. Spinoza (1632-1677) ouvre une autre voie. Pour lui, la joie n'est pas une simple émotion agréable : elle est définie comme le passage à une plus grande perfection, c'est-à-dire l'augmentation de la puissance d'agir. Le bonheur consiste à comprendre par la raison les causes des choses, à transformer les passions tristes (qui diminuent notre puissance) en passions joyeuses, puis en affects actifs. La connaissance adéquate de soi, du monde et de Dieu conduit à la « béatitude », qui est l'amour intellectuel envers la Nature et coïncide avec la liberté véritable<ref>Spinoza, ''Éthique'', V, prop. 32-42, trad. B. Pautrat, Paris, Seuil, 1988, p. 535-547.</ref>.
À l'opposé de cette intériorisation par la connaissance, certains penseurs insistent sur les conditions sociales et matérielles du bonheur. Karl Marx (1818-1883) montre que le travail salarié, lorsqu'il devient aliéné, prive l'ouvrier de la jouissance de ce qu'il produit, le sépare de son activité, des autres travailleurs et de lui-même. Dans une société d'inégalités, de travail contraint et de consommation, la simple bonne volonté individuelle ne suffit pas à rendre heureux : transformer la vie suppose aussi de transformer les conditions sociales du travail et de la richesse<ref>Marx, ''Manuscrits de 1844'', « Le travail aliéné », trad. J.-P. Gougeon, Paris, GF-Flammarion, 1996, p. 115-126.</ref>.
==== Le bonheur du plus grand nombre : l'utilitarisme ====
Au {{XIXe}} siècle, des philosophes anglais comme Jeremy Bentham (1748-1832) et John Stuart Mill (1806-1873) développent une théorie morale appelée ''utilitarisme''. Selon eux, une action est bonne si elle augmente le bonheur du plus grand nombre.
Bentham pense qu'on peut calculer le bonheur en mesurant les plaisirs et les peines selon plusieurs critères : intensité, durée, certitude, proximité, fécondité (probabilité d'engendrer d'autres plaisirs), pureté (faible probabilité de produire des peines) et nombre de personnes concernées. Pour lui, les plaisirs ne diffèrent pas par leur nature mais par ces dimensions quantitatives ; à intensité et durée égales, le plaisir d'un jeu simple peut donc équivaloir à celui d'une lecture savante<ref>Bentham, ''Introduction aux principes de morale et de législation'', chap. IV, trad. Centre Bentham, Paris, Vrin, 2011, p. 51-54.</ref>.
Mill n'est pas d'accord avec ce calcul purement quantitatif. Il introduit une différence qualitative entre les plaisirs : il existe selon lui des plaisirs supérieurs (intellectuels, moraux, esthétiques) et des plaisirs inférieurs (corporels, immédiats). « Il vaut mieux être un Socrate insatisfait qu'un imbécile satisfait », écrit-il : la qualité du plaisir compte autant que sa quantité<ref>Mill, ''L'Utilitarisme'', chap. II, trad. C. Audard, Paris, PUF, 2008, p. 51-54.</ref>.
L'utilitarisme soulève des questions difficiles. Peut-on vraiment comparer des plaisirs aussi différents qu'un repas, une amitié ou une lecture ? Peut-on additionner les bonheurs individuels pour obtenir un bonheur collectif ? Et surtout : est-il juste de sacrifier le bonheur d'une minorité au bonheur de la majorité, si le calcul l'exige ? Ces difficultés font que l'utilitarisme est à la fois une théorie politique forte et une doctrine très discutée.
==== Le bonheur est-il vraiment possible ? Le pessimisme ====
Certains philosophes ont une vision plus sombre. Arthur Schopenhauer (1788-1860) pense que le bonheur durable est une illusion. Selon lui, la vie humaine oscille entre la souffrance et l'ennui : quand nos désirs ne sont pas satisfaits, nous souffrons ; quand ils le sont, nous nous ennuyons et cherchons de nouveaux désirs<ref>Schopenhauer, ''Le Monde comme volonté et comme représentation'', livre IV, § 57, trad. A. Burdeau, Paris, PUF, 1966, p. 391-396.</ref>.
Pour Schopenhauer, le bonheur n'est jamais qu'un soulagement provisoire. La sagesse consiste à diminuer la souffrance en renonçant à ses désirs et en se tournant vers l'art ou la compassion.
Une critique d'un autre type vient de Sigmund Freud (1856-1939). Dans ''Le Malaise dans la culture'', il rappelle que la civilisation impose des renoncements aux pulsions individuelles, ce qui crée une tension permanente entre le désir d'être heureux et les exigences de la vie en société. Freud formule de manière ironique l'idée que le bonheur humain ne semble pas avoir été prévu par quelque ordre providentiel du monde : la formule est anti-providentialiste, et non l'aveu d'une croyance en un « plan de la création »<ref>Freud, ''Le Malaise dans la culture'', chap. II, trad. P. Cotet, R. Lainé et J. Stute-Cadiot, Paris, PUF, 2010, p. 19-22.</ref>.
==== Le bonheur face à l'absurde : Albert Camus ====
Albert Camus (1913-1960), écrivain et essayiste français, aborde le bonheur d'une manière originale. Dans ''Le Mythe de Sisyphe'', il évoque ce héros condamné par les dieux à rouler éternellement un rocher jusqu'au sommet d'une montagne, d'où il retombe aussitôt.
Cette situation paraît désespérée et absurde. Pourtant, Camus écrit : « Il faut imaginer Sisyphe heureux ». Comment cela ? Parce que Sisyphe prend conscience de sa condition et l'assume sans illusion. Il ne cherche plus dans le ciel ou dans une promesse de salut le sens qui lui manque. Il refuse l'espoir religieux ou métaphysique et choisit d'habiter pleinement sa tâche<ref>Camus, ''Le Mythe de Sisyphe'', Paris, Gallimard, 1942, p. 165-168.</ref>.
Pour Camus, le bonheur est possible même dans un monde absurde, c'est-à-dire un monde qui n'a pas de sens préétabli. Ce bonheur naît d'une lucidité, d'un refus du désespoir et d'une révolte qui maintient la vie intense, malgré l'absence de justification ultime.
=== Conclusion ===
Les conceptions du bonheur examinées dans ce chapitre ne se laissent pas réduire à une réponse unique. Elles dessinent toutefois trois grandes questions directrices.
D'abord : le bonheur est-il un état subjectif ressenti, ou une vie objectivement réussie ? Aristote et Camus, à des époques différentes, refusent de le réduire à un sentiment intérieur. Schopenhauer, à l'inverse, évalue négativement la structure affective du désir humain, tandis que l'utilitarisme cherche à mesurer les plaisirs et les peines pour fonder une politique du bien commun.
Ensuite : le bonheur dépend-il de nous ou des conditions extérieures ? Les stoïciens en font dépendre le bonheur de l'usage droit du jugement ; Spinoza, de la connaissance et de la puissance d'agir ; Aristote rappelle que la vie heureuse exige aussi des biens extérieurs, des amis et une cité juste ; Marx ou les penseurs de la justice sociale soulignent que la transformation du bonheur passe par celle des conditions matérielles et politiques.
Enfin : faut-il rechercher le bonheur directement, ou résulte-t-il d'autre chose ? Bentham et Mill en font le but explicite de l'action ; Kant pense au contraire qu'il faut viser le devoir, le bonheur n'étant qu'une espérance. Camus suggère qu'il vient par surcroît, à celui qui assume sa condition.
Réfléchir au bonheur ne consiste donc pas seulement à comparer des doctrines. C'est apprendre à articuler ces tensions, en lien avec les autres notions du programme : le désir, la liberté, la justice, le travail, l'État, la conscience.
== Sujets de dissertation ==
Cette collection propose seize sujets de dissertation philosophique portant sur la notion de bonheur, organisés selon différentes perspectives : métaphysique, éthique, politique et existentielle. Chaque question ouvre un ensemble de problématiques que tout penseur doit affronter pour comprendre en quoi consiste une vie bonne et comment l'atteindre.
=== 1. Faut-il philosopher pour bien vivre ? ===
Cette question d'ouverture pose un problème que les philosophes eux-mêmes se sont longtemps posé. Y a-t-il une nécessité intrinsèque à philosopher pour accéder au bonheur, ou la réflexion théorique constitue-t-elle simplement un chemin parmi d'autres ? Les anciens Grecs, notamment Aristote, tenaient que la vie heureuse consiste en l'exercice vertueux de l'âme, ce qui exige une certaine connaissance de ce qu'est la vertu. Cependant, nombre de gens vivent heureux sans jamais avoir lu un traité d'éthique. La question demande d'examiner si la philosophie est une condition du bonheur ou seulement un moyen parmi d'autres, et si le bien vivre suppose une compréhension explicite de ce qui rend la vie bonne.
=== 2. Le bonheur est-il un idéal inaccessible ? ===
Le bonheur parfait, total et perpétuel semble appartenir à l'ordre de l'utopie. Tout état heureux s'accompagne de limitations : la finitude humaine, la souffrance, l'expérience du deuil. Peut-on concevoir le bonheur autrement que comme un horizon jamais complètement atteint ? Certains courants philosophiques, notamment l'épicurisme, proposent une version plus modérée du bonheur comme absence de douleur plutôt que comme joie constante. D'autres, comme le stoïcisme, le conçoivent comme indépendant des circonstances extérieures. La question invite à réfléchir sur ce qui rend un idéal inaccessible et si cette inaccessibilité est un problème philosophique réel ou simplement le résultat d'une définition trop exigeante.
=== 3. Existe-t-il des critères du bonheur ? ===
Le bonheur est-il une notion univoque et bien déterminée, ou reste-t-elle relative à chaque individu ? Peut-on établir des critères objectifs permettant de juger qu'une personne ou qu'une vie est heureuse ? Aristote proposait que le bonheur réside dans l'exercice vertueux de nos capacités proprement humaines. Kant, lui, refusait de placer le bonheur au cœur de l'éthique, mais reconnaissait l'importance du « souverain bien » qui combine vertu et bonheur. La question demande s'il existe des critères universels du bonheur ou si chacun doit trouver ses propres repères. Elle touche aussi à la possibilité d'une mesure du bonheur et à ce que signifierait une telle mesure.
=== 4. Le bonheur consiste-t-il à faire tout ce qui nous fait plaisir ? ===
L'identification du bonheur au plaisir constitue une tentative de réponse immédiate et intuitive. Mais elle pose des problèmes : certains plaisirs semblent nuisibles à long terme, certains plaisirs entrent en conflit les uns avec les autres, et poursuivre tous ses désirs conduit souvent à l'épuisement ou à la culpabilité. Épicure lui-même, malgré sa réputation, recommandait une certaine frugalité dans la recherche du plaisir, privilégiant les plaisirs naturels et nécessaires. La question pousse à distinguer entre différents types de plaisirs et à interroger s'il existe une hiérarchie entre eux.
=== 5. Le bonheur est-il une somme de plaisirs ? ===
Cette formulation suggère une approche quantitative : le bonheur résulterait de l'accumulation ou de la maximisation des plaisirs. C'est essentiellement la position de l'utilitarisme classique, notamment chez Jeremy Bentham. Mais peut-on vraiment additionner des plaisirs hétérogènes ? Un plaisir intense et bref vaut-il mieux qu'une satisfaction durable mais moins intense ? John Stuart Mill introduisit la distinction entre plaisirs inférieurs et supérieurs, reconnaissant que certains plaisirs intellectuels ou moraux possèdent une qualité que d'autres ne possèdent pas. La question demande si l'approche mathématique peut saisir la nature du bonheur ou si celui-ci ne relève pas d'une autre logique.
=== 6. Y a-t-il une différence de degré ou de nature entre le bonheur et le plaisir ? ===
Le plaisir semble instantané, localisé, souvent corporel. Le bonheur paraît plus durable, plus global, plus profond. Mais s'agit-il d'une simple question d'intensité ou de durée (différence de degré), ou le bonheur appartient-il à un ordre différent (différence de nature) ? Peut-on accéder à un véritable bonheur en vivant une suite de plaisirs minimaux ? Inversement, peut-on être heureux en renonçant complètement au plaisir ? Cette distinction entre bonheur et plaisir constitue un carrefour où se rencontrent plusieurs traditions philosophiques, du platonisme au confucianisme.
=== 7. Le bonheur est-il un simple hasard ? ===
Cette question interroge la part de contingence et de maîtrise dans le bonheur. Sommes-nous maîtres de notre bonheur, ou celui-ci dépend-il de circonstances externes échappant à notre contrôle : notre tempérament naturel, notre milieu social, les événements imprévisibles ? Les Anciens parlaient de ''tyché'' (chance, fortune) comme d'une puissance qui échappe à la raison. Montaigne, relevant l'instabilité du destin humain, reconnaissait le poids de la contingence. Cependant, soutenir que le bonheur est purement aléatoire semblerait ôter toute responsabilité et tout sens à nos efforts. La question demande comment articuler la reconnaissance de notre dépendance aux circonstances avec une certaine forme de maîtrise ou d'autonomie.
=== 8. Le bonheur peut-il être le résultat d'une pratique ou d'un art de vivre ? ===
Contrairement à l'idée qu'il serait un simple hasard, cette perspective envisage le bonheur comme acquis par la discipline, la pratique et l'apprentissage. L'éthique aristotélicienne insiste sur la formation des vertus par la répétition des bonnes actions. Le stoïcisme propose un art de vivre fondé sur la distinction entre ce qui dépend de nous et ce qui ne dépend pas de nous. De nombreuses traditions non occidentales, du bouddhisme au taoïsme, offrent des pratiques censées conduire au bien-être ou à l'illumination. La question soulève la possibilité d'une « technique » du bonheur et ses limites : peut-on vraiment l'enseigner et l'apprendre comme on apprend un métier ?
=== 9. Le bonheur est-il une affaire de politique ? ===
Si le bonheur dépend largement des conditions sociales, économiques et politiques, alors sa réalisation ne peut pas être individuelle mais doit relever de la responsabilité collective. Platon, dans la ''République'', envisage un ordre politico-social destiné à produire l'harmonie et le bien-être. Aristote affirme que l'homme est un animal politique et que la vie heureuse s'épanouit dans la cité. Les penseurs utilitaristes du {{XIXe}} siècle proposaient que la politique vise à maximiser le bonheur du plus grand nombre. Cependant, la question de savoir si la politique doit poursuivre explicitement le bonheur reste contestée : ne risque-t-on pas de sacrifier les libertés individuelles à une conception collective du bien ? L'État ne risque-t-il pas, en poursuivant le bonheur, d'imposer à tous une conception unique de la vie bonne ?
=== 10. Le bonheur peut-il dépendre de nous ? ===
Cette question interroge le degré d'autonomie que nous possédons sur notre propre bonheur. S'il dépendait entièrement de nous, nous pourrions le produire à volonté, ce qui ne semble pas vrai. Mais s'il ne dépendait pas du tout de nous, l'effort et la responsabilité seraient illusoires. Le stoïcisme, notamment avec Épictète, distingue nettement entre ce qui dépend de nous (nos jugements, nos intentions) et ce qui ne dépend pas de nous (notre corps, les événements externes), et préconise de concentrer nos efforts sur ce qui nous appartient. Cette distinction peut-elle vraiment résoudre le problème ? Notre bonheur ne résulte-t-il pas toujours d'une combinaison complexe d'efforts personnels et de circonstances externes ?
=== 11. Y a-t-il un devoir d'être heureux ? ===
À première vue, le bonheur semble être ce que nous cherchons naturellement, pas une obligation morale. Cependant, plusieurs penseurs ont soulevé l'idée que nous avons des devoirs envers nous-mêmes de cultiver nos capacités et de mener une vie digne. Kant, tout en refusant de placer le bonheur au cœur de la morale, reconnaît que le « souverain bien » combine vertu et bonheur. On pourrait aussi avancer que nous avons un devoir envers les autres de ne pas nous laisser sombrer dans la misère, qui affecte ceux qui nous entourent. La question demande si le bonheur relève d'un droit, d'un devoir, ou simplement d'une aspiration naturelle sans caractère moral.
=== 12. Le bonheur est-il utopique ? ===
L'utopie désigne un lieu qui n'existe pas, un idéal irréalisable. Qualifier le bonheur d'utopique signifierait que nous ne pouvons que nous en rapprocher sans jamais l'atteindre vraiment. Mais certaines sociétés ou certaines périodes historiques semblent avoir produit des formes de bien-être général, même si aucune n'a réalisé une félicité absolue. La question demande si l'utopie du bonheur joue un rôle moteur utile dans l'organisation de nos sociétés, ou si elle nous détourne des réalisations possibles en nous promettant l'impossible. Elle s'interroge aussi sur ce qui distingue une utopie d'une aspiration légitime mais exigeante.
=== 13. La culture est-elle un gage de bonheur ? ===
La culture, au sens de raffinement intellectuel, de connaissance des arts, des sciences et des humanités, semble enrichir la vie. Cependant, elle peut aussi générer de nouvelles formes de malheur : culpabilité, conscience du malheur d'autrui, sentiment d'inadéquation face aux grands idéaux. Une personne peu instruite peut-elle être plus heureuse qu'un intellectuel perpétuellement inquiet ? La question rejoint le débat entre les plaisirs « inférieurs » et les plaisirs « supérieurs ». Elle demande aussi si le bonheur consiste davantage dans l'ignorance confortable ou dans l'autonomie de pensée qu'offre la culture, même au prix du trouble et du questionnement.
=== 14. Le bonheur des hommes dépend-il de l'augmentation des richesses ? ===
Cette question moderne s'impose avec force dans nos sociétés de consommation. Certaines études contemporaines suggèrent qu'au-delà d'un seuil où les besoins matériels sont satisfaits, l'augmentation des richesses n'améliore que marginalement le bien-être subjectif. Pourtant, la pauvreté constitue clairement un obstacle au bonheur. La question demande s'il existe un point d'équilibre : à quel niveau de richesse maîtrisée le bonheur atteint-il son optimum ? Elle interroge aussi la nature du désir de richesse : repose-t-il sur un besoin véritable ou sur une illusion entretenue par le désir de comparaison sociale ?
=== 15. Le bonheur n'est-il pas un état d'esprit ? ===
Cette affirmation suggère que le bonheur dépend avant tout de notre attitude face aux circonstances, plutôt que des circonstances elles-mêmes. Deux personnes en situation identique peuvent connaître des niveaux de bien-être très différents selon leur disposition d'esprit. Cette perspective rapproche le bonheur de la sérénité stoïcienne ou de l'équanimité bouddhiste. Cependant, dire que le bonheur relève d'un simple état d'esprit pourrait sembler réducteur ou même cruel : cela pourrait suggérer que celui qui souffre a seulement besoin de « changer d'attitude » plutôt que d'améliorer ses conditions matérielles. La question demande comment équilibrer la reconnaissance de l'importance de la perspective mentale avec celle des réalités concrètes.
=== 16. La recherche du bonheur nous pousse-t-elle à changer notre façon d'être ? ===
Poursuivre activement le bonheur nous oblige-t-il à transformer nos habitudes, nos valeurs, nos relations ? Si le bonheur ne s'obtient qu'au prix d'une profonde conversion intérieure ou d'un apprentissage exigeant, alors la question de savoir comment nous vivons devient centrale. De nombreuses traditions voient dans cette transformation de soi la condition du bien-être durable. Mais on peut aussi se demander si une telle exigence de changement perpétuel ne nous éloigne pas du bonheur plutôt que de nous en rapprocher. La question touche à l'authenticité : faut-il accepter qui nous sommes ou nous transformer ? Le bonheur suppose-t-il une acceptation de soi ou une acceptation créatrice de nos possibilités ?
=== Perspectives transversales ===
Ces seize questions forment un ensemble où plusieurs thèmes surgissent régulièrement :
* La relation entre plaisir et bonheur revient dans les questions 4, 5 et 6. Elle demande de distinguer l'immédiat du durable, le local du global.
* Le degré d'autonomie personnel apparaît dans les questions 7, 8 et 10. Il concerne notre responsabilité et notre pouvoir d'agir.
* Le contexte social et politique se manifeste dans les questions 9 et 14. Il soulève la question de savoir si le bonheur est individuel ou collectif.
* La nature du bonheur, qu'il s'agisse d'une sensation, d'un jugement ou d'un état, traverse en arrière-plan toutes ces questions.
* L'accès au bonheur, par la chance, la pratique, la réflexion ou la transformation, structure plusieurs de ces interrogations.
Ces dissertations invitent à explorer le bonheur non comme une notion simple, mais comme un carrefour où se rencontrent l'éthique, la métaphysique, la politique et l'existence quotidienne. Aucune réponse définitive ne peut clore ces questions ; chaque époque, chaque individu, doit les reposer en fonction de ses circonstances et de sa compréhension du monde.
== Textes d'étude ==
==== Épicure : le plaisir comme absence de trouble ====
; Question travaillée : Le bonheur consiste-t-il à satisfaire tous nos plaisirs ?
; Thèse : Le plaisir est le bien suprême, mais ce plaisir doit être compris comme absence de souffrance physique et absence de trouble moral, et non comme jouissance débridée.
; Notions : plaisir, désir, ataraxie, bien.
''Questions d'analyse'' :
* Pourquoi Épicure refuse-t-il certains plaisirs et accepte-t-il certaines souffrances ?
* Comment comprendre que « ne dépendre que de soi-même » est un grand bien ?
* En quoi cette conception du plaisir s'oppose-t-elle à l'image du débauché ?
{{Citation bloc|Le plaisir est le commencement et la fin d'une vie bienheureuse. Le plaisir est, en effet, considéré par nous comme le premier des biens naturels, c'est lui qui nous fait accepter ou fuir les choses, c'est à lui que nous aboutissons, en prenant la sensibilité comme critère du bien. Or, puisque le plaisir est le premier des biens naturels, il s'ensuit que nous n'acceptons pas le premier plaisir venu, mais qu'en certains cas, nous méprisons de nombreux plaisirs, quand ils ont pour conséquence une peine plus grande. D'un autre côté, il y a de nombreuses souffrances que nous estimons préférables aux plaisirs, quand elles entraînent pour nous un plus grand plaisir. Tout plaisir, dans la mesure où il s'accorde avec notre nature, est donc un bien, mais tout plaisir n'est pas cependant nécessairement souhaitable. De même, toute douleur est un mal, mais pourtant toute douleur n'est pas nécessairement à fuir. Il reste que c'est par une sage considération de l'avantage et du désagrément qu'il procure, que chaque plaisir doit être apprécié. En effet, en certains cas, nous traitons le bien comme un mal, et en d'autres, le mal comme un bien.
Ne dépendre que de soi-même est, à notre avis, un grand bien, mais il ne s'ensuit pas qu'il faille toujours se contenter de peu. Simplement, quand l'abondance nous fait défaut, nous devons pouvoir nous contenter de peu, étant bien persuadés que ceux-là jouissent le mieux de la richesse qui en ont le moins besoin, et que tout ce qui est naturel s'obtient aisément, tandis que ce qui ne l'est pas s'obtient malaisément. Les mets les plus simples apportent autant de plaisir que la table la plus richement servie, quand est absente la souffrance que cause le besoin, et du pain et de l'eau procurent le plaisir le plus vif, quand on les mange après une longue privation. L'habitude d'une vie simple et modeste est donc une bonne façon de soigner sa santé, et rend l'homme par surcroît courageux pour supporter les tâches qu'il doit nécessairement remplir dans la vie. Elle lui permet encore de mieux goûter une vie opulente, à l'occasion, et l'affermit contre les revers de la fortune. Par conséquent, lorsque nous disons que le plaisir est le souverain bien, nous ne parlons pas des plaisirs des débauchés, ni des jouissances sensuelles, comme le prétendent quelques ignorants qui nous combattent et défigurent notre pensée. Nous parlons de l'absence de souffrance physique et de l'absence de trouble moral. Car ce ne sont ni les beuveries et les banquets continuels, ni la jouissance que l'on tire de la fréquentation des mignons et des femmes, ni la joie que donnent les poissons et les viandes dont on charge les tables somptueuses, qui procurent une vie heureuse, mais des habitudes raisonnables et sobres, une raison cherchant sans cesse des causes légitimes de choix ou d'aversion, et rejetant les opinions susceptibles d'apporter à l'âme le plus grand trouble.|Épicure, ''[[Commentaire philosophique/Lettre à Ménécée|Lettre à Ménécée]]''}}
==== Sénèque : vivre selon la nature ====
; Question travaillée : Le bonheur peut-il dépendre des biens extérieurs ?
; Thèse : Vivre heureux, c'est vivre selon la nature et la raison, en faisant des biens extérieurs des « auxiliaires » et non des maîtres ; le souverain bien est l'harmonie de l'âme.
; Notions : nature, raison, vertu, souverain bien.
''Questions d'analyse'' :
* Pourquoi Sénèque distingue-t-il les biens extérieurs et l'âme ?
* Que signifie « être l'artisan de sa vie » ?
* Comment comprendre l'analogie entre l'esprit et le « monde » qui se concentre en soi ?
{{Citation bloc|La nature, en effet, est le guide qu'il faut suivre ; c'est elle que la raison observe et consulte. C'est donc une même chose que vivre heureux et vivre selon la nature. Ce que c'est, je vais le développer : cela consiste à conserver, avec soin et sans effroi, les avantages du corps et ce qui convient à notre nature, comme choses données pour un jour et prêtes à fuir ; à ne pas nous y soumettre en esclaves, et à ne pas nous laisser posséder par les objets étrangers ; à reléguer tout ce qui plaît au corps, tout ce qui lui survient accidentellement, comme dans les camps on place à l'écart les auxiliaires et les troupes légères. Que ces objets soient des esclaves, et non des maîtres ; c'est uniquement ainsi qu'ils sont utiles à l'esprit. Que l'homme de cœur soit incorruptible en présence des choses du dehors, qu'il soit inexpugnable, et qu'il n'attache de prix qu'à se posséder lui-même ; que d'une âme confiante, que préparé à l'une et à l'autre fortune, il soit l'artisan de sa vie. Que chez lui la confiance n'existe pas sans le savoir, ni le savoir sans la fermeté ; que ses résolutions tiennent, une fois qu'elles sont prises, et que dans ses décrets il n'y ait pas de rature. On comprend, quand même je ne l'ajouterais pas, qu'un tel homme sera posé, qu'il sera rangé, qu'en cela aussi, agissant avec aménité, il sera grand. Chez lui, la véritable raison sera greffée sur les sens ; elle y puisera ses éléments ; et en effet, elle n'a pas d'autre point d'appui d'où elle s'élance, d'où elle prenne son essor vers la vérité, afin de revenir en elle-même. Le monde aussi, qui embrasse tout, ce dieu qui régit l'univers, tend à se répandre au dehors, et néanmoins, de toutes parts il se ramène en soi pour s'y concentrer. Que notre esprit fasse de même, lorsqu'en suivant les sens qui lui sont propres, il se sera étendu par leur moyen vers les objets extérieurs ; qu'il soit maître de ces objets et de lui ; qu'alors, pour ainsi dire, il enchaîne le souverain bien. De là résultera une force, une puissance unique, d'accord avec elle-même ; ainsi naîtra cette raison certaine, qui n'admet ni contrariété, ni hésitation, dans ses jugements et dans ses conceptions, non plus que dans sa persuasion. Cette raison, lorsqu'elle s'est ajustée, accordée avec ses parties et, pour ainsi dire, mise à l'unisson, a touché au souverain bien. En effet, il ne reste rien de tortueux, rien de glissant rien sur quoi elle puisse broncher ou chanceler. Elle fera tout de sa propre autorité : pour elle, point d'accident inopiné ; au contraire, toutes ses actions viendront à bien, avec aisance et promptitude, sans que l'agent tergiverse ; car les retardements et l'hésitation dénotent le trouble et l'inconstance. Ainsi, vous pouvez hardiment déclarer que le souverain bien est l'harmonie de l'âme. En effet, les vertus seront nécessairement là où sera l'accord, où sera l'unité ; la discordance est pour les vices.|Sénèque, ''De la vie heureuse'' (vers 58 après J.-C.), chap. VIII}}
==== Descartes : vaut-il mieux être heureux dans l'illusion ou moins joyeux dans la vérité ? ====
; Question travaillée : Le bonheur peut-il reposer sur l'illusion ?
; Thèse : Le souverain bien réside dans l'exercice de la vertu, c'est-à-dire dans la possession des biens qui dépendent de notre libre arbitre ; la satisfaction d'esprit qui en découle vaut mieux qu'une gaieté fondée sur de fausses imaginations.
; Notions : vérité, illusion, libre arbitre, vertu, joie.
''Questions d'analyse'' :
* Pourquoi Descartes refuse-t-il d'identifier le souverain bien à la joie ?
* Que signifie distinguer le souverain bien et la satisfaction d'esprit ?
* Pourquoi une joie fausse laisse-t-elle, selon Descartes, une « amertume intérieure » ?
{{Citation bloc|Je me suis quelquefois proposé un doute : savoir s'il est mieux d'être gai et content, en imaginant les biens qu'on possède être plus grands et plus estimables qu'ils ne sont, et ignorant ou ne s'arrêtant pas à considérer ceux qui manquent, que d'avoir plus de considération et de savoir, pour connaître la juste valeur des uns et des autres, et qu'on devienne plus triste. Si je pensais que le souverain bien fût la joie, je ne douterais point qu'on ne dût tâcher de se rendre joyeux, à quelque prix que ce pût être, et j'approuverais la brutalité de ceux qui noient leurs déplaisirs dans le vin, ou les étourdissent avec du pétun. Mais je distingue entre le souverain bien, qui consiste en l'exercice de la vertu, ou, ce qui est le même, en la possession de tous les biens dont l'acquisition dépend de notre libre arbitre, et la satisfaction d'esprit qui suit de cette acquisition. C'est pourquoi, voyant que c'est une plus grande perfection de connaître la vérité, encore même qu'elle soit à notre désavantage, que l'ignorer, j'avoue qu'il vaut mieux être moins gai et avoir plus de connaissance. Aussi n'est-ce pas toujours lorsqu'on a le plus de gaieté qu'on a l'esprit plus satisfait ; au contraire, les grandes joies sont ordinairement mornes et sérieuses, et il n'y a que les médiocres et passagères, qui soient accompagnées du ris. Ainsi je n'approuve point qu'on tâche à se tromper, en se repaissant de fausses imaginations ; car tout le plaisir qui en revient ne peut toucher que la superficie de l'âme, laquelle sent cependant une amertume intérieure, en s'apercevant qu'ils sont faux. Et encore qu'il pourrait arriver qu'elle fût si continuellement divertie ailleurs que jamais elle ne s'en aperçût, on ne jouirait pas pour cela de la béatitude dont il est question, pour ce qu'elle doit dépendre de notre conduite, et cela ne viendrait que de la fortune.|Descartes, ''Lettre à Élisabeth'' (6 octobre 1645)}}
==== Pascal : le divertissement, fuite hors de notre condition ====
; Question travaillée : Le divertissement nous rend-il heureux ou nous empêche-t-il de penser à notre malheur ?
; Thèse : Tout le malheur des hommes vient de leur incapacité à demeurer en repos avec eux-mêmes ; le divertissement n'apporte pas le bonheur, il détourne l'esprit de la condition humaine, faible et mortelle.
; Notions : divertissement, repos, condition humaine, bonheur, illusion.
''Questions d'analyse'' :
* Pourquoi le roi sans divertissement est-il, selon Pascal, plus malheureux que ses sujets ?
* Pourquoi recherche-t-on le « tracas » et non pas le bien lui-même ?
* En quoi cette analyse remet-elle en cause l'idée d'un bonheur fondé sur l'activité ?
{{Citation bloc|Divertissement. Quand je m'y suis mis quelquefois à considérer les diverses agitations des hommes et les périls et les peines où ils s'exposent, dans la cour, dans la guerre, d'où naissent tant de querelles, de passions, d'entreprises hardies et souvent mauvaises, etc., j'ai découvert que tout le malheur des hommes vient d'une seule chose, qui est de ne savoir pas demeurer en repos, dans une chambre. Un homme qui a assez de bien pour vivre, s'il savait demeurer chez soi avec plaisir, n'en sortirait pas pour aller sur la mer ou au siège d'une place. On n'achètera une charge à l'armée si cher, que parce qu'on trouverait insupportable de ne bouger de la ville ; et on ne recherche les conversations et les divertissements des jeux que parce qu'on ne peut demeurer chez soi avec plaisir.
Mais quand j'ai pensé de plus près, et qu'après avoir trouvé la cause de tous nos malheurs, j'ai voulu en découvrir la raison, j'ai trouvé qu'il y en a une bien effective, qui consiste dans le malheur naturel de notre condition faible et mortelle, et si misérable, que rien ne peut nous consoler, lorsque nous y pensons de près.
Quelque condition qu'on se figure, si l'on assemble tous les biens qui peuvent nous appartenir, la royauté est le plus beau poste du monde ; et cependant, qu'on s'en imagine [un roi] accompagné de toutes les satisfactions qui peuvent le toucher, s'il est sans divertissement, et qu'on le laisse considérer et faire réflexion sur ce qu'il est, cette félicité languissante ne le soutiendra point, il tombera par nécessité dans les vues qui le menacent, des révoltes qui peuvent arriver, et enfin de la mort et des maladies qui sont inévitables ; de sorte que, s'il est sans ce qu'on appelle divertissement, le voilà malheureux, et plus malheureux que le moindre de ses sujets, qui joue et qui se divertit.
De là vient que le jeu et la conversation des femmes, la guerre, les grands emplois sont si recherchés. Ce n'est pas qu'il y ait en effet du bonheur, ni qu'on s'imagine que la vraie béatitude soit d'avoir l'argent qu'on peut gagner au jeu, ou dans le lièvre qu'on court : on n'en voudrait pas s'il était offert. Ce n'est pas cet usage mol et paisible, et qui nous laisse penser à notre malheureuse condition, qu'on recherche, ni les dangers de la guerre, ni la peine des emplois, mais c'est le tracas qui nous détourne d'y penser et nous divertit.|Pascal, ''Pensées'' (1670), fragment 139}}
==== Nietzsche : l'oubli, condition du bonheur ====
; Question travaillée : L'oubli est-il une condition du bonheur et de l'action ?
; Thèse : Le bonheur exige une part de non-historique : la capacité d'oublier le passé pour se tenir dans le moment présent ; l'excès de mémoire empêche d'agir et de vivre.
; Notions : mémoire, oubli, action, devenir, vie.
''Questions d'analyse'' :
* Pourquoi Nietzsche associe-t-il bonheur et capacité d'oublier ?
* Que signifie « sentir d'une façon non historique » ?
* En quoi un excès de mémoire serait-il nuisible à la vie ?
{{Citation bloc|Pour le plus petit comme pour le plus grand bonheur, il y a toujours une chose qui le crée : le pouvoir d'oublier, ou, pour m'exprimer en savant, la faculté de sentir, pendant que dure le bonheur, d'une façon non-historique. Celui qui ne sait pas se reposer sur le seuil du moment pour oublier tout le passé, celui qui ne se dresse point, comme un génie de victoire, sans vertige et sans crainte, ne saura jamais ce que c'est que le bonheur, et, ce qui est pire encore, il ne fera jamais rien qui puisse rendre heureux les autres. Imaginez l'exemple extrême : un homme qui ne posséderait pas du tout la faculté d'oublier, qui serait condamné à voir en toutes choses le devenir. Un tel homme ne croirait plus à sa propre essence, ne croirait plus en lui-même ; tout s'écoulerait pour lui en points mouvants pour se perdre dans cette mer du devenir ; en véritable élève d'Héraclite il finirait par ne plus oser lever un doigt. Toute action exige l'oubli, comme tout organisme a besoin, non seulement de lumière, mais encore d'obscurité. Un homme qui voudrait sentir d'une façon tout à fait historique ressemblerait à celui qui serait forcé de se priver de sommeil, ou bien à l'animal qui devrait continuer à vivre en ne faisant que ruminer, et ruminer toujours à nouveau. Donc il est impossible de vivre sans se souvenir, de vivre même heureux, à l'exemple de la bête, mais il est absolument impossible de vivre sans oublier. Ou bien, pour m'expliquer sur ce sujet d'une façon plus simple encore, il y a un degré d'insomnie, de rumination, de sens historique qui nuit à l'être vivant et finit par l'anéantir, qu'il s'agisse d'un homme, d'un peuple ou d'une civilisation.|Nietzsche, ''Considérations inactuelles'', II (1874), § 1}}
== Notes et Références ==
{{references|colonnes=2}}
[[Catégorie:Manuel de terminale de philosophie (livre)]]
{{Autocat}}
64tvam7mh0jsznd4a8r0ogjc0u0k5th
765719
765718
2026-05-01T19:56:51Z
PandaMystique
119061
/* Le bonheur du plus grand nombre : l'utilitarisme */
765719
wikitext
text/x-wiki
{{ManuelPhilo}}
Tout être humain semble désirer le bonheur. Mais dès qu'on cherche à dire ce qu'il est, ou par quels moyens l'atteindre, les réponses divergent. Le bonheur est-il un sentiment intérieur ou une vie réussie ? Dépend-il de nous ou des circonstances extérieures ? Faut-il satisfaire ses désirs, les limiter ou les transformer ? Peut-on être heureux dans l'injustice, la pauvreté ou l'illusion ? Ces questions, qui traversent toute l'histoire de la philosophie, montrent que le bonheur n'est pas une donnée immédiate de l'existence : ses contours varient selon la doctrine qui l'interprète, et chaque tradition en éclaire une face différente.
=== Qu'est-ce que le bonheur ? ===
Le mot « bonheur » vient du latin ''bonum augurium'', qui signifie « bon augure » ou « bonne chance ». À l'origine, le bonheur était donc lié à la chance, au hasard. Une partie de la tradition philosophique a précisément cherché à savoir si le bonheur pouvait dépendre de nous plutôt que d'une fortune favorable.
On confond souvent le bonheur avec des états proches qu'il faut pourtant distinguer. Le plaisir est une sensation agréable, souvent corporelle et passagère, comme manger quelque chose de délicieux ou écouter une belle musique. Dans l'usage courant, la joie désigne souvent une émotion vive mais ponctuelle ; certains philosophes, comme Spinoza, lui donnent toutefois un sens plus profond, comme on le verra plus loin. La satisfaction désigne le contentement qui suit la réalisation d'un désir précis. Le bien-être renvoie à un état général d'aisance physique et psychique. Le bonheur, lui, concerne la vie dans son ensemble : il dépasse l'instant et engage notre rapport à l'existence<ref>Aristote, ''Éthique à Nicomaque'', I, 7, 1098a, trad. J. Tricot, Paris, Vrin, 1990, p. 60-62.</ref>. Les philosophes anciens utilisent encore d'autres termes : la ''béatitude'' désigne un bonheur parfait, presque divin ; la ''félicité'' un bonheur stable et durable.
Cette première distinction conduit à une question : le bonheur est-il un état intérieur que l'on ressent, un jugement que l'on porte sur sa vie, ou un accomplissement objectif qu'on peut constater de l'extérieur ? Selon la réponse choisie, les conceptions philosophiques s'orientent dans des directions différentes.
=== Les grandes conceptions du bonheur ===
==== Le bonheur comme plaisir : l'épicurisme ====
Pour Épicure (341-270 avant J.-C.), philosophe grec de l'Antiquité, le bonheur se trouve dans le plaisir. Mais il ne s'agit pas de chercher tous les plaisirs n'importe comment. Épicure distingue trois types de désirs.
Il y a d'abord les désirs naturels et nécessaires, comme boire quand on a soif ou manger quand on a faim. Ces désirs doivent être satisfaits. Ensuite, les désirs naturels mais non nécessaires, comme manger des plats raffinés. Enfin, les désirs ni naturels ni nécessaires, comme vouloir devenir riche ou célèbre. Ces derniers désirs sont à éviter parce qu'ils sont sans limites et nous causent du tourment<ref>Épicure, ''Lettre à Ménécée'', § 127-128, dans ''Lettres et maximes'', trad. M. Conche, Paris, PUF, 1987, p. 219-221.</ref>.
Le bonheur selon Épicure, c'est l'''ataraxie'' : l'absence de trouble dans l'âme. C'est un état de tranquillité et de paix intérieure. Pour y parvenir, il faut limiter ses désirs et apprendre à ne plus craindre la mort ni les dieux. Le plaisir qu'Épicure recherche n'est donc pas l'excitation ou l'agitation, mais la sérénité qui accompagne l'absence de souffrance physique et l'absence de trouble moral<ref>Épicure, ''Maximes capitales'', I-IV, dans ''Lettres et maximes'', trad. M. Conche, Paris, PUF, 1987, p. 231-233.</ref>.
À cette conception modérée du plaisir s'oppose la position défendue par Calliclès dans le ''Gorgias'' de Platon. Pour Calliclès, le bonheur consiste à laisser ses désirs grandir le plus possible et à trouver les moyens de les satisfaire. La frugalité épicurienne lui apparaîtrait comme une vie d'esclave. Socrate lui répond que cette vie est celle d'un tonneau percé qu'il faut sans cesse remplir : elle ne connaît jamais le repos<ref>Platon, ''Gorgias'', 491e-494a, trad. M. Canto-Sperber, Paris, GF-Flammarion, 1987, p. 226-230.</ref>. Cette discussion ancienne montre que la question « faut-il satisfaire ou limiter ses désirs ? » se pose dès l'origine de la philosophie.
==== Le bonheur comme activité vertueuse : Aristote ====
Aristote (384-322 avant J.-C.) propose une autre conception du bonheur. Pour lui, le bonheur (qu'il appelle ''eudaimonia'' en grec) est le but suprême de la vie humaine, ce vers quoi tout le monde tend.
Mais qu'est-ce que le bonheur selon Aristote ? Ce n'est pas d'abord un état intérieur agréable. C'est une manière de vivre. Plus précisément, le bonheur consiste à réaliser la fonction propre de l'être humain, c'est-à-dire à exercer son intelligence et sa raison de manière excellente. Le bonheur consiste donc à vivre selon la vertu<ref>Aristote, ''Éthique à Nicomaque'', I, 7, 1098a, trad. J. Tricot, Paris, Vrin, 1990, p. 60.</ref>.
La vertu, chez Aristote, est une disposition acquise à bien agir, un juste milieu entre deux excès. Le courage, par exemple, est le juste milieu entre la lâcheté et la témérité. Une vie heureuse est donc une vie où l'on cultive ces vertus et où l'on agit avec raison.
Aristote insiste sur un point important : le bonheur n'arrive pas en un instant. C'est une activité qui se déploie sur toute une vie. On ne peut pas dire qu'une personne est heureuse après une seule journée agréable ; il faut considérer sa vie dans son ensemble<ref>Aristote, ''Éthique à Nicomaque'', I, 10, 1100a-1101a, trad. J. Tricot, Paris, Vrin, 1990, p. 73-77.</ref>.
Aristote ne réduit pourtant pas le bonheur à la seule vertu morale. Il reconnaît que la vie heureuse a aussi besoin de certains biens extérieurs : la santé, une situation matérielle suffisante, des amis, et même une certaine beauté physique. Surtout, l'homme étant un « animal politique », son bonheur ne se développe pleinement que dans une cité juste. Enfin, dans le livre X de l'''Éthique à Nicomaque'', Aristote présente la vie contemplative, consacrée à la connaissance, comme la forme la plus haute du bonheur<ref>Aristote, ''Éthique à Nicomaque'', X, 7-8, 1177a-1178a, trad. J. Tricot, Paris, Vrin, 1990, p. 506-512.</ref>. Il existe ainsi une tension à l'intérieur du texte aristotélicien : le livre I semble faire du bonheur la totalité d'une vie moralement accomplie en société, tandis que le livre X confère la priorité à la contemplation. Cette hésitation n'est pas une contradiction, mais l'indice d'une question philosophique difficile : la vie heureuse est-elle d'abord une vie d'action vertueuse, ou une vie de connaissance ?
==== Le bonheur comme sérénité : le stoïcisme ====
Les philosophes stoïciens, comme Épictète (50-125 après J.-C.) ou Marc Aurèle (121-180 après J.-C.), proposent une autre voie. Selon eux, le bonheur ne dépend pas des choses extérieures (richesse, santé, réputation) mais de notre rapport à elles.
Le stoïcisme repose sur une distinction : il y a les choses qui dépendent de nous (nos jugements, nos opinions, nos désirs) et celles qui ne dépendent pas de nous (la maladie, la mort, l'opinion d'autrui, les événements). Ce qui dépend de nous, Épictète l'appelle la ''prohairesis'' : la faculté de juger, de vouloir et de consentir. Pour atteindre la tranquillité, il faut accepter avec sérénité ce qui ne dépend pas de nous et concentrer notre effort sur l'usage droit de cette faculté de jugement<ref>Épictète, ''Manuel'', § 1, trad. P. Hadot, Paris, Le Livre de Poche, 2000, p. 33-35.</ref>.
Mais le stoïcisme ne se réduit pas à un changement d'attitude intérieure. Pour les stoïciens, le seul bien véritable est la vertu, et le seul mal véritable est le vice. Tout le reste, comme la santé, la richesse, la maladie ou la mort, n'est ni un bien ni un mal au sens propre : ce sont des « indifférents ». Ce qui rend une vie heureuse, c'est l'accord entre nos jugements, nos désirs et la raison qui ordonne le monde. Les passions, qui troublent l'âme, viennent de jugements erronés ; les corriger permet d'atteindre l'''apatheia''. Cette ''apatheia'' n'est pas l'absence de toute émotion : les stoïciens admettent au contraire des affects raisonnables, comme la joie du sage face au bien accompli. Ce qui disparaît, ce sont seulement les passions irrationnelles, qui naissent d'une mauvaise estimation de la valeur des choses<ref>Marc Aurèle, ''Pensées pour moi-même'', IV, 3 et VIII, 7, trad. M. Meunier, Paris, Garnier-Flammarion, 1964, p. 60-62 et p. 116-117.</ref>.
=== Les enjeux philosophiques du bonheur ===
==== Peut-on savoir ce qui nous rend heureux ? ====
Emmanuel Kant (1724-1804), philosophe allemand, soulève un problème : le bonheur est un concept indéterminé. Personne ne peut dire avec précision ce qui le rendrait parfaitement heureux. Nos désirs changent, et ce qui nous semble bon aujourd'hui peut ne plus nous satisfaire demain. Pour Kant, le bonheur est « un idéal de l'imagination, non de la raison »<ref>Kant, ''Fondements de la métaphysique des mœurs'', deuxième section, AK IV, 418, trad. V. Delbos, Paris, Vrin, 1980, p. 124.</ref>.
Cela ne veut pas dire que Kant méprise le bonheur. Il refuse seulement d'en faire le fondement de la morale. La loi morale ne peut pas être tirée de la recherche du bonheur, parce que le bonheur dépend d'inclinations sensibles et variables : on ne peut donc pas en faire une règle universelle. La morale doit reposer sur le devoir, c'est-à-dire sur le respect de la loi rationnelle.
Mais Kant n'oublie pas le bonheur. Il introduit l'idée du « souverain bien », qui désigne l'union de la vertu et du bonheur. Il ne s'agit pas d'une simple récompense morale, mais d'une exigence de la raison pratique elle-même : il appartient à la raison de penser comme possible un ordre dans lequel celui qui agit moralement bien recevrait aussi sa part de bonheur. Le bonheur n'est donc pas le principe de la morale, mais il en accompagne idéalement l'achèvement<ref>Kant, ''Critique de la raison pratique'', livre II, chap. II, AK V, 110-114, trad. F. Picavet, Paris, PUF, 1989, p. 119-124.</ref>.
==== Le bonheur dépend-il de nous ou de la chance ? ====
C'est une question ancienne. Si le bonheur dépend de circonstances extérieures (santé, richesse, hasard), nous ne sommes pas maîtres de notre bonheur ; nous sommes à la merci de la fortune.
Aristote reconnaît que certains biens extérieurs sont nécessaires au bonheur. On ne peut pas être pleinement heureux dans la misère ou la maladie. Mais la vertu reste l'élément principal du bonheur, parce qu'elle dépend de nous<ref>Aristote, ''Éthique à Nicomaque'', I, 9-10, 1099b-1100a, trad. J. Tricot, Paris, Vrin, 1990, p. 70-74.</ref>.
Les stoïciens, eux, soutiennent que le bonheur dépend de l'usage droit du jugement, parce que ce jugement est seul à nous appartenir vraiment. Spinoza (1632-1677) ouvre une autre voie. Pour lui, la joie n'est pas une simple émotion agréable : elle est définie comme le passage à une plus grande perfection, c'est-à-dire l'augmentation de la puissance d'agir. Le bonheur consiste à comprendre par la raison les causes des choses, à transformer les passions tristes (qui diminuent notre puissance) en passions joyeuses, puis en affects actifs. La connaissance adéquate de soi, du monde et de Dieu conduit à la « béatitude », qui est l'amour intellectuel envers la Nature et coïncide avec la liberté véritable<ref>Spinoza, ''Éthique'', V, prop. 32-42, trad. B. Pautrat, Paris, Seuil, 1988, p. 535-547.</ref>.
À l'opposé de cette intériorisation par la connaissance, certains penseurs insistent sur les conditions sociales et matérielles du bonheur. Karl Marx (1818-1883) montre que le travail salarié, lorsqu'il devient aliéné, prive l'ouvrier de la jouissance de ce qu'il produit, le sépare de son activité, des autres travailleurs et de lui-même. Dans une société d'inégalités, de travail contraint et de consommation, la simple bonne volonté individuelle ne suffit pas à rendre heureux : transformer la vie suppose aussi de transformer les conditions sociales du travail et de la richesse<ref>Marx, ''Manuscrits de 1844'', « Le travail aliéné », trad. J.-P. Gougeon, Paris, GF-Flammarion, 1996, p. 115-126.</ref>.
==== Le bonheur du plus grand nombre : l'utilitarisme ====
Au {{s|XIX}}, des philosophes anglais comme Jeremy Bentham (1748-1832) et John Stuart Mill (1806-1873) développent une théorie morale appelée ''utilitarisme''. Selon eux, une action est bonne si elle augmente le bonheur du plus grand nombre.
Bentham pense qu'on peut calculer le bonheur en mesurant les plaisirs et les peines selon plusieurs critères : intensité, durée, certitude, proximité, fécondité (probabilité d'engendrer d'autres plaisirs), pureté (faible probabilité de produire des peines) et nombre de personnes concernées. Pour lui, les plaisirs ne diffèrent pas par leur nature mais par ces dimensions quantitatives ; à intensité et durée égales, le plaisir d'un jeu simple peut donc équivaloir à celui d'une lecture savante<ref>Bentham, ''Introduction aux principes de morale et de législation'', chap. IV, trad. Centre Bentham, Paris, Vrin, 2011, p. 51-54.</ref>.
Mill n'est pas d'accord avec ce calcul purement quantitatif. Il introduit une différence qualitative entre les plaisirs : il existe selon lui des plaisirs supérieurs (intellectuels, moraux, esthétiques) et des plaisirs inférieurs (corporels, immédiats). « Il vaut mieux être un Socrate insatisfait qu'un imbécile satisfait », écrit-il : la qualité du plaisir compte autant que sa quantité<ref>Mill, ''L'Utilitarisme'', chap. II, trad. C. Audard, Paris, PUF, 2008, p. 51-54.</ref>.
L'utilitarisme soulève des questions difficiles. Peut-on vraiment comparer des plaisirs aussi différents qu'un repas, une amitié ou une lecture ? Peut-on additionner les bonheurs individuels pour obtenir un bonheur collectif ? Et surtout : est-il juste de sacrifier le bonheur d'une minorité au bonheur de la majorité, si le calcul l'exige ? Ces difficultés font que l'utilitarisme est à la fois une théorie politique forte et une doctrine très discutée.
==== Le bonheur est-il vraiment possible ? Le pessimisme ====
Certains philosophes ont une vision plus sombre. Arthur Schopenhauer (1788-1860) pense que le bonheur durable est une illusion. Selon lui, la vie humaine oscille entre la souffrance et l'ennui : quand nos désirs ne sont pas satisfaits, nous souffrons ; quand ils le sont, nous nous ennuyons et cherchons de nouveaux désirs<ref>Schopenhauer, ''Le Monde comme volonté et comme représentation'', livre IV, § 57, trad. A. Burdeau, Paris, PUF, 1966, p. 391-396.</ref>.
Pour Schopenhauer, le bonheur n'est jamais qu'un soulagement provisoire. La sagesse consiste à diminuer la souffrance en renonçant à ses désirs et en se tournant vers l'art ou la compassion.
Une critique d'un autre type vient de Sigmund Freud (1856-1939). Dans ''Le Malaise dans la culture'', il rappelle que la civilisation impose des renoncements aux pulsions individuelles, ce qui crée une tension permanente entre le désir d'être heureux et les exigences de la vie en société. Freud formule de manière ironique l'idée que le bonheur humain ne semble pas avoir été prévu par quelque ordre providentiel du monde : la formule est anti-providentialiste, et non l'aveu d'une croyance en un « plan de la création »<ref>Freud, ''Le Malaise dans la culture'', chap. II, trad. P. Cotet, R. Lainé et J. Stute-Cadiot, Paris, PUF, 2010, p. 19-22.</ref>.
==== Le bonheur face à l'absurde : Albert Camus ====
Albert Camus (1913-1960), écrivain et essayiste français, aborde le bonheur d'une manière originale. Dans ''Le Mythe de Sisyphe'', il évoque ce héros condamné par les dieux à rouler éternellement un rocher jusqu'au sommet d'une montagne, d'où il retombe aussitôt.
Cette situation paraît désespérée et absurde. Pourtant, Camus écrit : « Il faut imaginer Sisyphe heureux ». Comment cela ? Parce que Sisyphe prend conscience de sa condition et l'assume sans illusion. Il ne cherche plus dans le ciel ou dans une promesse de salut le sens qui lui manque. Il refuse l'espoir religieux ou métaphysique et choisit d'habiter pleinement sa tâche<ref>Camus, ''Le Mythe de Sisyphe'', Paris, Gallimard, 1942, p. 165-168.</ref>.
Pour Camus, le bonheur est possible même dans un monde absurde, c'est-à-dire un monde qui n'a pas de sens préétabli. Ce bonheur naît d'une lucidité, d'un refus du désespoir et d'une révolte qui maintient la vie intense, malgré l'absence de justification ultime.
=== Conclusion ===
Les conceptions du bonheur examinées dans ce chapitre ne se laissent pas réduire à une réponse unique. Elles dessinent toutefois trois grandes questions directrices.
D'abord : le bonheur est-il un état subjectif ressenti, ou une vie objectivement réussie ? Aristote et Camus, à des époques différentes, refusent de le réduire à un sentiment intérieur. Schopenhauer, à l'inverse, évalue négativement la structure affective du désir humain, tandis que l'utilitarisme cherche à mesurer les plaisirs et les peines pour fonder une politique du bien commun.
Ensuite : le bonheur dépend-il de nous ou des conditions extérieures ? Les stoïciens en font dépendre le bonheur de l'usage droit du jugement ; Spinoza, de la connaissance et de la puissance d'agir ; Aristote rappelle que la vie heureuse exige aussi des biens extérieurs, des amis et une cité juste ; Marx ou les penseurs de la justice sociale soulignent que la transformation du bonheur passe par celle des conditions matérielles et politiques.
Enfin : faut-il rechercher le bonheur directement, ou résulte-t-il d'autre chose ? Bentham et Mill en font le but explicite de l'action ; Kant pense au contraire qu'il faut viser le devoir, le bonheur n'étant qu'une espérance. Camus suggère qu'il vient par surcroît, à celui qui assume sa condition.
Réfléchir au bonheur ne consiste donc pas seulement à comparer des doctrines. C'est apprendre à articuler ces tensions, en lien avec les autres notions du programme : le désir, la liberté, la justice, le travail, l'État, la conscience.
== Sujets de dissertation ==
Cette collection propose seize sujets de dissertation philosophique portant sur la notion de bonheur, organisés selon différentes perspectives : métaphysique, éthique, politique et existentielle. Chaque question ouvre un ensemble de problématiques que tout penseur doit affronter pour comprendre en quoi consiste une vie bonne et comment l'atteindre.
=== 1. Faut-il philosopher pour bien vivre ? ===
Cette question d'ouverture pose un problème que les philosophes eux-mêmes se sont longtemps posé. Y a-t-il une nécessité intrinsèque à philosopher pour accéder au bonheur, ou la réflexion théorique constitue-t-elle simplement un chemin parmi d'autres ? Les anciens Grecs, notamment Aristote, tenaient que la vie heureuse consiste en l'exercice vertueux de l'âme, ce qui exige une certaine connaissance de ce qu'est la vertu. Cependant, nombre de gens vivent heureux sans jamais avoir lu un traité d'éthique. La question demande d'examiner si la philosophie est une condition du bonheur ou seulement un moyen parmi d'autres, et si le bien vivre suppose une compréhension explicite de ce qui rend la vie bonne.
=== 2. Le bonheur est-il un idéal inaccessible ? ===
Le bonheur parfait, total et perpétuel semble appartenir à l'ordre de l'utopie. Tout état heureux s'accompagne de limitations : la finitude humaine, la souffrance, l'expérience du deuil. Peut-on concevoir le bonheur autrement que comme un horizon jamais complètement atteint ? Certains courants philosophiques, notamment l'épicurisme, proposent une version plus modérée du bonheur comme absence de douleur plutôt que comme joie constante. D'autres, comme le stoïcisme, le conçoivent comme indépendant des circonstances extérieures. La question invite à réfléchir sur ce qui rend un idéal inaccessible et si cette inaccessibilité est un problème philosophique réel ou simplement le résultat d'une définition trop exigeante.
=== 3. Existe-t-il des critères du bonheur ? ===
Le bonheur est-il une notion univoque et bien déterminée, ou reste-t-elle relative à chaque individu ? Peut-on établir des critères objectifs permettant de juger qu'une personne ou qu'une vie est heureuse ? Aristote proposait que le bonheur réside dans l'exercice vertueux de nos capacités proprement humaines. Kant, lui, refusait de placer le bonheur au cœur de l'éthique, mais reconnaissait l'importance du « souverain bien » qui combine vertu et bonheur. La question demande s'il existe des critères universels du bonheur ou si chacun doit trouver ses propres repères. Elle touche aussi à la possibilité d'une mesure du bonheur et à ce que signifierait une telle mesure.
=== 4. Le bonheur consiste-t-il à faire tout ce qui nous fait plaisir ? ===
L'identification du bonheur au plaisir constitue une tentative de réponse immédiate et intuitive. Mais elle pose des problèmes : certains plaisirs semblent nuisibles à long terme, certains plaisirs entrent en conflit les uns avec les autres, et poursuivre tous ses désirs conduit souvent à l'épuisement ou à la culpabilité. Épicure lui-même, malgré sa réputation, recommandait une certaine frugalité dans la recherche du plaisir, privilégiant les plaisirs naturels et nécessaires. La question pousse à distinguer entre différents types de plaisirs et à interroger s'il existe une hiérarchie entre eux.
=== 5. Le bonheur est-il une somme de plaisirs ? ===
Cette formulation suggère une approche quantitative : le bonheur résulterait de l'accumulation ou de la maximisation des plaisirs. C'est essentiellement la position de l'utilitarisme classique, notamment chez Jeremy Bentham. Mais peut-on vraiment additionner des plaisirs hétérogènes ? Un plaisir intense et bref vaut-il mieux qu'une satisfaction durable mais moins intense ? John Stuart Mill introduisit la distinction entre plaisirs inférieurs et supérieurs, reconnaissant que certains plaisirs intellectuels ou moraux possèdent une qualité que d'autres ne possèdent pas. La question demande si l'approche mathématique peut saisir la nature du bonheur ou si celui-ci ne relève pas d'une autre logique.
=== 6. Y a-t-il une différence de degré ou de nature entre le bonheur et le plaisir ? ===
Le plaisir semble instantané, localisé, souvent corporel. Le bonheur paraît plus durable, plus global, plus profond. Mais s'agit-il d'une simple question d'intensité ou de durée (différence de degré), ou le bonheur appartient-il à un ordre différent (différence de nature) ? Peut-on accéder à un véritable bonheur en vivant une suite de plaisirs minimaux ? Inversement, peut-on être heureux en renonçant complètement au plaisir ? Cette distinction entre bonheur et plaisir constitue un carrefour où se rencontrent plusieurs traditions philosophiques, du platonisme au confucianisme.
=== 7. Le bonheur est-il un simple hasard ? ===
Cette question interroge la part de contingence et de maîtrise dans le bonheur. Sommes-nous maîtres de notre bonheur, ou celui-ci dépend-il de circonstances externes échappant à notre contrôle : notre tempérament naturel, notre milieu social, les événements imprévisibles ? Les Anciens parlaient de ''tyché'' (chance, fortune) comme d'une puissance qui échappe à la raison. Montaigne, relevant l'instabilité du destin humain, reconnaissait le poids de la contingence. Cependant, soutenir que le bonheur est purement aléatoire semblerait ôter toute responsabilité et tout sens à nos efforts. La question demande comment articuler la reconnaissance de notre dépendance aux circonstances avec une certaine forme de maîtrise ou d'autonomie.
=== 8. Le bonheur peut-il être le résultat d'une pratique ou d'un art de vivre ? ===
Contrairement à l'idée qu'il serait un simple hasard, cette perspective envisage le bonheur comme acquis par la discipline, la pratique et l'apprentissage. L'éthique aristotélicienne insiste sur la formation des vertus par la répétition des bonnes actions. Le stoïcisme propose un art de vivre fondé sur la distinction entre ce qui dépend de nous et ce qui ne dépend pas de nous. De nombreuses traditions non occidentales, du bouddhisme au taoïsme, offrent des pratiques censées conduire au bien-être ou à l'illumination. La question soulève la possibilité d'une « technique » du bonheur et ses limites : peut-on vraiment l'enseigner et l'apprendre comme on apprend un métier ?
=== 9. Le bonheur est-il une affaire de politique ? ===
Si le bonheur dépend largement des conditions sociales, économiques et politiques, alors sa réalisation ne peut pas être individuelle mais doit relever de la responsabilité collective. Platon, dans la ''République'', envisage un ordre politico-social destiné à produire l'harmonie et le bien-être. Aristote affirme que l'homme est un animal politique et que la vie heureuse s'épanouit dans la cité. Les penseurs utilitaristes du {{XIXe}} siècle proposaient que la politique vise à maximiser le bonheur du plus grand nombre. Cependant, la question de savoir si la politique doit poursuivre explicitement le bonheur reste contestée : ne risque-t-on pas de sacrifier les libertés individuelles à une conception collective du bien ? L'État ne risque-t-il pas, en poursuivant le bonheur, d'imposer à tous une conception unique de la vie bonne ?
=== 10. Le bonheur peut-il dépendre de nous ? ===
Cette question interroge le degré d'autonomie que nous possédons sur notre propre bonheur. S'il dépendait entièrement de nous, nous pourrions le produire à volonté, ce qui ne semble pas vrai. Mais s'il ne dépendait pas du tout de nous, l'effort et la responsabilité seraient illusoires. Le stoïcisme, notamment avec Épictète, distingue nettement entre ce qui dépend de nous (nos jugements, nos intentions) et ce qui ne dépend pas de nous (notre corps, les événements externes), et préconise de concentrer nos efforts sur ce qui nous appartient. Cette distinction peut-elle vraiment résoudre le problème ? Notre bonheur ne résulte-t-il pas toujours d'une combinaison complexe d'efforts personnels et de circonstances externes ?
=== 11. Y a-t-il un devoir d'être heureux ? ===
À première vue, le bonheur semble être ce que nous cherchons naturellement, pas une obligation morale. Cependant, plusieurs penseurs ont soulevé l'idée que nous avons des devoirs envers nous-mêmes de cultiver nos capacités et de mener une vie digne. Kant, tout en refusant de placer le bonheur au cœur de la morale, reconnaît que le « souverain bien » combine vertu et bonheur. On pourrait aussi avancer que nous avons un devoir envers les autres de ne pas nous laisser sombrer dans la misère, qui affecte ceux qui nous entourent. La question demande si le bonheur relève d'un droit, d'un devoir, ou simplement d'une aspiration naturelle sans caractère moral.
=== 12. Le bonheur est-il utopique ? ===
L'utopie désigne un lieu qui n'existe pas, un idéal irréalisable. Qualifier le bonheur d'utopique signifierait que nous ne pouvons que nous en rapprocher sans jamais l'atteindre vraiment. Mais certaines sociétés ou certaines périodes historiques semblent avoir produit des formes de bien-être général, même si aucune n'a réalisé une félicité absolue. La question demande si l'utopie du bonheur joue un rôle moteur utile dans l'organisation de nos sociétés, ou si elle nous détourne des réalisations possibles en nous promettant l'impossible. Elle s'interroge aussi sur ce qui distingue une utopie d'une aspiration légitime mais exigeante.
=== 13. La culture est-elle un gage de bonheur ? ===
La culture, au sens de raffinement intellectuel, de connaissance des arts, des sciences et des humanités, semble enrichir la vie. Cependant, elle peut aussi générer de nouvelles formes de malheur : culpabilité, conscience du malheur d'autrui, sentiment d'inadéquation face aux grands idéaux. Une personne peu instruite peut-elle être plus heureuse qu'un intellectuel perpétuellement inquiet ? La question rejoint le débat entre les plaisirs « inférieurs » et les plaisirs « supérieurs ». Elle demande aussi si le bonheur consiste davantage dans l'ignorance confortable ou dans l'autonomie de pensée qu'offre la culture, même au prix du trouble et du questionnement.
=== 14. Le bonheur des hommes dépend-il de l'augmentation des richesses ? ===
Cette question moderne s'impose avec force dans nos sociétés de consommation. Certaines études contemporaines suggèrent qu'au-delà d'un seuil où les besoins matériels sont satisfaits, l'augmentation des richesses n'améliore que marginalement le bien-être subjectif. Pourtant, la pauvreté constitue clairement un obstacle au bonheur. La question demande s'il existe un point d'équilibre : à quel niveau de richesse maîtrisée le bonheur atteint-il son optimum ? Elle interroge aussi la nature du désir de richesse : repose-t-il sur un besoin véritable ou sur une illusion entretenue par le désir de comparaison sociale ?
=== 15. Le bonheur n'est-il pas un état d'esprit ? ===
Cette affirmation suggère que le bonheur dépend avant tout de notre attitude face aux circonstances, plutôt que des circonstances elles-mêmes. Deux personnes en situation identique peuvent connaître des niveaux de bien-être très différents selon leur disposition d'esprit. Cette perspective rapproche le bonheur de la sérénité stoïcienne ou de l'équanimité bouddhiste. Cependant, dire que le bonheur relève d'un simple état d'esprit pourrait sembler réducteur ou même cruel : cela pourrait suggérer que celui qui souffre a seulement besoin de « changer d'attitude » plutôt que d'améliorer ses conditions matérielles. La question demande comment équilibrer la reconnaissance de l'importance de la perspective mentale avec celle des réalités concrètes.
=== 16. La recherche du bonheur nous pousse-t-elle à changer notre façon d'être ? ===
Poursuivre activement le bonheur nous oblige-t-il à transformer nos habitudes, nos valeurs, nos relations ? Si le bonheur ne s'obtient qu'au prix d'une profonde conversion intérieure ou d'un apprentissage exigeant, alors la question de savoir comment nous vivons devient centrale. De nombreuses traditions voient dans cette transformation de soi la condition du bien-être durable. Mais on peut aussi se demander si une telle exigence de changement perpétuel ne nous éloigne pas du bonheur plutôt que de nous en rapprocher. La question touche à l'authenticité : faut-il accepter qui nous sommes ou nous transformer ? Le bonheur suppose-t-il une acceptation de soi ou une acceptation créatrice de nos possibilités ?
=== Perspectives transversales ===
Ces seize questions forment un ensemble où plusieurs thèmes surgissent régulièrement :
* La relation entre plaisir et bonheur revient dans les questions 4, 5 et 6. Elle demande de distinguer l'immédiat du durable, le local du global.
* Le degré d'autonomie personnel apparaît dans les questions 7, 8 et 10. Il concerne notre responsabilité et notre pouvoir d'agir.
* Le contexte social et politique se manifeste dans les questions 9 et 14. Il soulève la question de savoir si le bonheur est individuel ou collectif.
* La nature du bonheur, qu'il s'agisse d'une sensation, d'un jugement ou d'un état, traverse en arrière-plan toutes ces questions.
* L'accès au bonheur, par la chance, la pratique, la réflexion ou la transformation, structure plusieurs de ces interrogations.
Ces dissertations invitent à explorer le bonheur non comme une notion simple, mais comme un carrefour où se rencontrent l'éthique, la métaphysique, la politique et l'existence quotidienne. Aucune réponse définitive ne peut clore ces questions ; chaque époque, chaque individu, doit les reposer en fonction de ses circonstances et de sa compréhension du monde.
== Textes d'étude ==
==== Épicure : le plaisir comme absence de trouble ====
; Question travaillée : Le bonheur consiste-t-il à satisfaire tous nos plaisirs ?
; Thèse : Le plaisir est le bien suprême, mais ce plaisir doit être compris comme absence de souffrance physique et absence de trouble moral, et non comme jouissance débridée.
; Notions : plaisir, désir, ataraxie, bien.
''Questions d'analyse'' :
* Pourquoi Épicure refuse-t-il certains plaisirs et accepte-t-il certaines souffrances ?
* Comment comprendre que « ne dépendre que de soi-même » est un grand bien ?
* En quoi cette conception du plaisir s'oppose-t-elle à l'image du débauché ?
{{Citation bloc|Le plaisir est le commencement et la fin d'une vie bienheureuse. Le plaisir est, en effet, considéré par nous comme le premier des biens naturels, c'est lui qui nous fait accepter ou fuir les choses, c'est à lui que nous aboutissons, en prenant la sensibilité comme critère du bien. Or, puisque le plaisir est le premier des biens naturels, il s'ensuit que nous n'acceptons pas le premier plaisir venu, mais qu'en certains cas, nous méprisons de nombreux plaisirs, quand ils ont pour conséquence une peine plus grande. D'un autre côté, il y a de nombreuses souffrances que nous estimons préférables aux plaisirs, quand elles entraînent pour nous un plus grand plaisir. Tout plaisir, dans la mesure où il s'accorde avec notre nature, est donc un bien, mais tout plaisir n'est pas cependant nécessairement souhaitable. De même, toute douleur est un mal, mais pourtant toute douleur n'est pas nécessairement à fuir. Il reste que c'est par une sage considération de l'avantage et du désagrément qu'il procure, que chaque plaisir doit être apprécié. En effet, en certains cas, nous traitons le bien comme un mal, et en d'autres, le mal comme un bien.
Ne dépendre que de soi-même est, à notre avis, un grand bien, mais il ne s'ensuit pas qu'il faille toujours se contenter de peu. Simplement, quand l'abondance nous fait défaut, nous devons pouvoir nous contenter de peu, étant bien persuadés que ceux-là jouissent le mieux de la richesse qui en ont le moins besoin, et que tout ce qui est naturel s'obtient aisément, tandis que ce qui ne l'est pas s'obtient malaisément. Les mets les plus simples apportent autant de plaisir que la table la plus richement servie, quand est absente la souffrance que cause le besoin, et du pain et de l'eau procurent le plaisir le plus vif, quand on les mange après une longue privation. L'habitude d'une vie simple et modeste est donc une bonne façon de soigner sa santé, et rend l'homme par surcroît courageux pour supporter les tâches qu'il doit nécessairement remplir dans la vie. Elle lui permet encore de mieux goûter une vie opulente, à l'occasion, et l'affermit contre les revers de la fortune. Par conséquent, lorsque nous disons que le plaisir est le souverain bien, nous ne parlons pas des plaisirs des débauchés, ni des jouissances sensuelles, comme le prétendent quelques ignorants qui nous combattent et défigurent notre pensée. Nous parlons de l'absence de souffrance physique et de l'absence de trouble moral. Car ce ne sont ni les beuveries et les banquets continuels, ni la jouissance que l'on tire de la fréquentation des mignons et des femmes, ni la joie que donnent les poissons et les viandes dont on charge les tables somptueuses, qui procurent une vie heureuse, mais des habitudes raisonnables et sobres, une raison cherchant sans cesse des causes légitimes de choix ou d'aversion, et rejetant les opinions susceptibles d'apporter à l'âme le plus grand trouble.|Épicure, ''[[Commentaire philosophique/Lettre à Ménécée|Lettre à Ménécée]]''}}
==== Sénèque : vivre selon la nature ====
; Question travaillée : Le bonheur peut-il dépendre des biens extérieurs ?
; Thèse : Vivre heureux, c'est vivre selon la nature et la raison, en faisant des biens extérieurs des « auxiliaires » et non des maîtres ; le souverain bien est l'harmonie de l'âme.
; Notions : nature, raison, vertu, souverain bien.
''Questions d'analyse'' :
* Pourquoi Sénèque distingue-t-il les biens extérieurs et l'âme ?
* Que signifie « être l'artisan de sa vie » ?
* Comment comprendre l'analogie entre l'esprit et le « monde » qui se concentre en soi ?
{{Citation bloc|La nature, en effet, est le guide qu'il faut suivre ; c'est elle que la raison observe et consulte. C'est donc une même chose que vivre heureux et vivre selon la nature. Ce que c'est, je vais le développer : cela consiste à conserver, avec soin et sans effroi, les avantages du corps et ce qui convient à notre nature, comme choses données pour un jour et prêtes à fuir ; à ne pas nous y soumettre en esclaves, et à ne pas nous laisser posséder par les objets étrangers ; à reléguer tout ce qui plaît au corps, tout ce qui lui survient accidentellement, comme dans les camps on place à l'écart les auxiliaires et les troupes légères. Que ces objets soient des esclaves, et non des maîtres ; c'est uniquement ainsi qu'ils sont utiles à l'esprit. Que l'homme de cœur soit incorruptible en présence des choses du dehors, qu'il soit inexpugnable, et qu'il n'attache de prix qu'à se posséder lui-même ; que d'une âme confiante, que préparé à l'une et à l'autre fortune, il soit l'artisan de sa vie. Que chez lui la confiance n'existe pas sans le savoir, ni le savoir sans la fermeté ; que ses résolutions tiennent, une fois qu'elles sont prises, et que dans ses décrets il n'y ait pas de rature. On comprend, quand même je ne l'ajouterais pas, qu'un tel homme sera posé, qu'il sera rangé, qu'en cela aussi, agissant avec aménité, il sera grand. Chez lui, la véritable raison sera greffée sur les sens ; elle y puisera ses éléments ; et en effet, elle n'a pas d'autre point d'appui d'où elle s'élance, d'où elle prenne son essor vers la vérité, afin de revenir en elle-même. Le monde aussi, qui embrasse tout, ce dieu qui régit l'univers, tend à se répandre au dehors, et néanmoins, de toutes parts il se ramène en soi pour s'y concentrer. Que notre esprit fasse de même, lorsqu'en suivant les sens qui lui sont propres, il se sera étendu par leur moyen vers les objets extérieurs ; qu'il soit maître de ces objets et de lui ; qu'alors, pour ainsi dire, il enchaîne le souverain bien. De là résultera une force, une puissance unique, d'accord avec elle-même ; ainsi naîtra cette raison certaine, qui n'admet ni contrariété, ni hésitation, dans ses jugements et dans ses conceptions, non plus que dans sa persuasion. Cette raison, lorsqu'elle s'est ajustée, accordée avec ses parties et, pour ainsi dire, mise à l'unisson, a touché au souverain bien. En effet, il ne reste rien de tortueux, rien de glissant rien sur quoi elle puisse broncher ou chanceler. Elle fera tout de sa propre autorité : pour elle, point d'accident inopiné ; au contraire, toutes ses actions viendront à bien, avec aisance et promptitude, sans que l'agent tergiverse ; car les retardements et l'hésitation dénotent le trouble et l'inconstance. Ainsi, vous pouvez hardiment déclarer que le souverain bien est l'harmonie de l'âme. En effet, les vertus seront nécessairement là où sera l'accord, où sera l'unité ; la discordance est pour les vices.|Sénèque, ''De la vie heureuse'' (vers 58 après J.-C.), chap. VIII}}
==== Descartes : vaut-il mieux être heureux dans l'illusion ou moins joyeux dans la vérité ? ====
; Question travaillée : Le bonheur peut-il reposer sur l'illusion ?
; Thèse : Le souverain bien réside dans l'exercice de la vertu, c'est-à-dire dans la possession des biens qui dépendent de notre libre arbitre ; la satisfaction d'esprit qui en découle vaut mieux qu'une gaieté fondée sur de fausses imaginations.
; Notions : vérité, illusion, libre arbitre, vertu, joie.
''Questions d'analyse'' :
* Pourquoi Descartes refuse-t-il d'identifier le souverain bien à la joie ?
* Que signifie distinguer le souverain bien et la satisfaction d'esprit ?
* Pourquoi une joie fausse laisse-t-elle, selon Descartes, une « amertume intérieure » ?
{{Citation bloc|Je me suis quelquefois proposé un doute : savoir s'il est mieux d'être gai et content, en imaginant les biens qu'on possède être plus grands et plus estimables qu'ils ne sont, et ignorant ou ne s'arrêtant pas à considérer ceux qui manquent, que d'avoir plus de considération et de savoir, pour connaître la juste valeur des uns et des autres, et qu'on devienne plus triste. Si je pensais que le souverain bien fût la joie, je ne douterais point qu'on ne dût tâcher de se rendre joyeux, à quelque prix que ce pût être, et j'approuverais la brutalité de ceux qui noient leurs déplaisirs dans le vin, ou les étourdissent avec du pétun. Mais je distingue entre le souverain bien, qui consiste en l'exercice de la vertu, ou, ce qui est le même, en la possession de tous les biens dont l'acquisition dépend de notre libre arbitre, et la satisfaction d'esprit qui suit de cette acquisition. C'est pourquoi, voyant que c'est une plus grande perfection de connaître la vérité, encore même qu'elle soit à notre désavantage, que l'ignorer, j'avoue qu'il vaut mieux être moins gai et avoir plus de connaissance. Aussi n'est-ce pas toujours lorsqu'on a le plus de gaieté qu'on a l'esprit plus satisfait ; au contraire, les grandes joies sont ordinairement mornes et sérieuses, et il n'y a que les médiocres et passagères, qui soient accompagnées du ris. Ainsi je n'approuve point qu'on tâche à se tromper, en se repaissant de fausses imaginations ; car tout le plaisir qui en revient ne peut toucher que la superficie de l'âme, laquelle sent cependant une amertume intérieure, en s'apercevant qu'ils sont faux. Et encore qu'il pourrait arriver qu'elle fût si continuellement divertie ailleurs que jamais elle ne s'en aperçût, on ne jouirait pas pour cela de la béatitude dont il est question, pour ce qu'elle doit dépendre de notre conduite, et cela ne viendrait que de la fortune.|Descartes, ''Lettre à Élisabeth'' (6 octobre 1645)}}
==== Pascal : le divertissement, fuite hors de notre condition ====
; Question travaillée : Le divertissement nous rend-il heureux ou nous empêche-t-il de penser à notre malheur ?
; Thèse : Tout le malheur des hommes vient de leur incapacité à demeurer en repos avec eux-mêmes ; le divertissement n'apporte pas le bonheur, il détourne l'esprit de la condition humaine, faible et mortelle.
; Notions : divertissement, repos, condition humaine, bonheur, illusion.
''Questions d'analyse'' :
* Pourquoi le roi sans divertissement est-il, selon Pascal, plus malheureux que ses sujets ?
* Pourquoi recherche-t-on le « tracas » et non pas le bien lui-même ?
* En quoi cette analyse remet-elle en cause l'idée d'un bonheur fondé sur l'activité ?
{{Citation bloc|Divertissement. Quand je m'y suis mis quelquefois à considérer les diverses agitations des hommes et les périls et les peines où ils s'exposent, dans la cour, dans la guerre, d'où naissent tant de querelles, de passions, d'entreprises hardies et souvent mauvaises, etc., j'ai découvert que tout le malheur des hommes vient d'une seule chose, qui est de ne savoir pas demeurer en repos, dans une chambre. Un homme qui a assez de bien pour vivre, s'il savait demeurer chez soi avec plaisir, n'en sortirait pas pour aller sur la mer ou au siège d'une place. On n'achètera une charge à l'armée si cher, que parce qu'on trouverait insupportable de ne bouger de la ville ; et on ne recherche les conversations et les divertissements des jeux que parce qu'on ne peut demeurer chez soi avec plaisir.
Mais quand j'ai pensé de plus près, et qu'après avoir trouvé la cause de tous nos malheurs, j'ai voulu en découvrir la raison, j'ai trouvé qu'il y en a une bien effective, qui consiste dans le malheur naturel de notre condition faible et mortelle, et si misérable, que rien ne peut nous consoler, lorsque nous y pensons de près.
Quelque condition qu'on se figure, si l'on assemble tous les biens qui peuvent nous appartenir, la royauté est le plus beau poste du monde ; et cependant, qu'on s'en imagine [un roi] accompagné de toutes les satisfactions qui peuvent le toucher, s'il est sans divertissement, et qu'on le laisse considérer et faire réflexion sur ce qu'il est, cette félicité languissante ne le soutiendra point, il tombera par nécessité dans les vues qui le menacent, des révoltes qui peuvent arriver, et enfin de la mort et des maladies qui sont inévitables ; de sorte que, s'il est sans ce qu'on appelle divertissement, le voilà malheureux, et plus malheureux que le moindre de ses sujets, qui joue et qui se divertit.
De là vient que le jeu et la conversation des femmes, la guerre, les grands emplois sont si recherchés. Ce n'est pas qu'il y ait en effet du bonheur, ni qu'on s'imagine que la vraie béatitude soit d'avoir l'argent qu'on peut gagner au jeu, ou dans le lièvre qu'on court : on n'en voudrait pas s'il était offert. Ce n'est pas cet usage mol et paisible, et qui nous laisse penser à notre malheureuse condition, qu'on recherche, ni les dangers de la guerre, ni la peine des emplois, mais c'est le tracas qui nous détourne d'y penser et nous divertit.|Pascal, ''Pensées'' (1670), fragment 139}}
==== Nietzsche : l'oubli, condition du bonheur ====
; Question travaillée : L'oubli est-il une condition du bonheur et de l'action ?
; Thèse : Le bonheur exige une part de non-historique : la capacité d'oublier le passé pour se tenir dans le moment présent ; l'excès de mémoire empêche d'agir et de vivre.
; Notions : mémoire, oubli, action, devenir, vie.
''Questions d'analyse'' :
* Pourquoi Nietzsche associe-t-il bonheur et capacité d'oublier ?
* Que signifie « sentir d'une façon non historique » ?
* En quoi un excès de mémoire serait-il nuisible à la vie ?
{{Citation bloc|Pour le plus petit comme pour le plus grand bonheur, il y a toujours une chose qui le crée : le pouvoir d'oublier, ou, pour m'exprimer en savant, la faculté de sentir, pendant que dure le bonheur, d'une façon non-historique. Celui qui ne sait pas se reposer sur le seuil du moment pour oublier tout le passé, celui qui ne se dresse point, comme un génie de victoire, sans vertige et sans crainte, ne saura jamais ce que c'est que le bonheur, et, ce qui est pire encore, il ne fera jamais rien qui puisse rendre heureux les autres. Imaginez l'exemple extrême : un homme qui ne posséderait pas du tout la faculté d'oublier, qui serait condamné à voir en toutes choses le devenir. Un tel homme ne croirait plus à sa propre essence, ne croirait plus en lui-même ; tout s'écoulerait pour lui en points mouvants pour se perdre dans cette mer du devenir ; en véritable élève d'Héraclite il finirait par ne plus oser lever un doigt. Toute action exige l'oubli, comme tout organisme a besoin, non seulement de lumière, mais encore d'obscurité. Un homme qui voudrait sentir d'une façon tout à fait historique ressemblerait à celui qui serait forcé de se priver de sommeil, ou bien à l'animal qui devrait continuer à vivre en ne faisant que ruminer, et ruminer toujours à nouveau. Donc il est impossible de vivre sans se souvenir, de vivre même heureux, à l'exemple de la bête, mais il est absolument impossible de vivre sans oublier. Ou bien, pour m'expliquer sur ce sujet d'une façon plus simple encore, il y a un degré d'insomnie, de rumination, de sens historique qui nuit à l'être vivant et finit par l'anéantir, qu'il s'agisse d'un homme, d'un peuple ou d'une civilisation.|Nietzsche, ''Considérations inactuelles'', II (1874), § 1}}
== Notes et Références ==
{{references|colonnes=2}}
[[Catégorie:Manuel de terminale de philosophie (livre)]]
{{Autocat}}
ojga22ip20kh8kr3vbma68ggqqzbef2
765720
765719
2026-05-01T19:58:18Z
PandaMystique
119061
/* 9. Le bonheur est-il une affaire de politique ? */
765720
wikitext
text/x-wiki
{{ManuelPhilo}}
Tout être humain semble désirer le bonheur. Mais dès qu'on cherche à dire ce qu'il est, ou par quels moyens l'atteindre, les réponses divergent. Le bonheur est-il un sentiment intérieur ou une vie réussie ? Dépend-il de nous ou des circonstances extérieures ? Faut-il satisfaire ses désirs, les limiter ou les transformer ? Peut-on être heureux dans l'injustice, la pauvreté ou l'illusion ? Ces questions, qui traversent toute l'histoire de la philosophie, montrent que le bonheur n'est pas une donnée immédiate de l'existence : ses contours varient selon la doctrine qui l'interprète, et chaque tradition en éclaire une face différente.
=== Qu'est-ce que le bonheur ? ===
Le mot « bonheur » vient du latin ''bonum augurium'', qui signifie « bon augure » ou « bonne chance ». À l'origine, le bonheur était donc lié à la chance, au hasard. Une partie de la tradition philosophique a précisément cherché à savoir si le bonheur pouvait dépendre de nous plutôt que d'une fortune favorable.
On confond souvent le bonheur avec des états proches qu'il faut pourtant distinguer. Le plaisir est une sensation agréable, souvent corporelle et passagère, comme manger quelque chose de délicieux ou écouter une belle musique. Dans l'usage courant, la joie désigne souvent une émotion vive mais ponctuelle ; certains philosophes, comme Spinoza, lui donnent toutefois un sens plus profond, comme on le verra plus loin. La satisfaction désigne le contentement qui suit la réalisation d'un désir précis. Le bien-être renvoie à un état général d'aisance physique et psychique. Le bonheur, lui, concerne la vie dans son ensemble : il dépasse l'instant et engage notre rapport à l'existence<ref>Aristote, ''Éthique à Nicomaque'', I, 7, 1098a, trad. J. Tricot, Paris, Vrin, 1990, p. 60-62.</ref>. Les philosophes anciens utilisent encore d'autres termes : la ''béatitude'' désigne un bonheur parfait, presque divin ; la ''félicité'' un bonheur stable et durable.
Cette première distinction conduit à une question : le bonheur est-il un état intérieur que l'on ressent, un jugement que l'on porte sur sa vie, ou un accomplissement objectif qu'on peut constater de l'extérieur ? Selon la réponse choisie, les conceptions philosophiques s'orientent dans des directions différentes.
=== Les grandes conceptions du bonheur ===
==== Le bonheur comme plaisir : l'épicurisme ====
Pour Épicure (341-270 avant J.-C.), philosophe grec de l'Antiquité, le bonheur se trouve dans le plaisir. Mais il ne s'agit pas de chercher tous les plaisirs n'importe comment. Épicure distingue trois types de désirs.
Il y a d'abord les désirs naturels et nécessaires, comme boire quand on a soif ou manger quand on a faim. Ces désirs doivent être satisfaits. Ensuite, les désirs naturels mais non nécessaires, comme manger des plats raffinés. Enfin, les désirs ni naturels ni nécessaires, comme vouloir devenir riche ou célèbre. Ces derniers désirs sont à éviter parce qu'ils sont sans limites et nous causent du tourment<ref>Épicure, ''Lettre à Ménécée'', § 127-128, dans ''Lettres et maximes'', trad. M. Conche, Paris, PUF, 1987, p. 219-221.</ref>.
Le bonheur selon Épicure, c'est l'''ataraxie'' : l'absence de trouble dans l'âme. C'est un état de tranquillité et de paix intérieure. Pour y parvenir, il faut limiter ses désirs et apprendre à ne plus craindre la mort ni les dieux. Le plaisir qu'Épicure recherche n'est donc pas l'excitation ou l'agitation, mais la sérénité qui accompagne l'absence de souffrance physique et l'absence de trouble moral<ref>Épicure, ''Maximes capitales'', I-IV, dans ''Lettres et maximes'', trad. M. Conche, Paris, PUF, 1987, p. 231-233.</ref>.
À cette conception modérée du plaisir s'oppose la position défendue par Calliclès dans le ''Gorgias'' de Platon. Pour Calliclès, le bonheur consiste à laisser ses désirs grandir le plus possible et à trouver les moyens de les satisfaire. La frugalité épicurienne lui apparaîtrait comme une vie d'esclave. Socrate lui répond que cette vie est celle d'un tonneau percé qu'il faut sans cesse remplir : elle ne connaît jamais le repos<ref>Platon, ''Gorgias'', 491e-494a, trad. M. Canto-Sperber, Paris, GF-Flammarion, 1987, p. 226-230.</ref>. Cette discussion ancienne montre que la question « faut-il satisfaire ou limiter ses désirs ? » se pose dès l'origine de la philosophie.
==== Le bonheur comme activité vertueuse : Aristote ====
Aristote (384-322 avant J.-C.) propose une autre conception du bonheur. Pour lui, le bonheur (qu'il appelle ''eudaimonia'' en grec) est le but suprême de la vie humaine, ce vers quoi tout le monde tend.
Mais qu'est-ce que le bonheur selon Aristote ? Ce n'est pas d'abord un état intérieur agréable. C'est une manière de vivre. Plus précisément, le bonheur consiste à réaliser la fonction propre de l'être humain, c'est-à-dire à exercer son intelligence et sa raison de manière excellente. Le bonheur consiste donc à vivre selon la vertu<ref>Aristote, ''Éthique à Nicomaque'', I, 7, 1098a, trad. J. Tricot, Paris, Vrin, 1990, p. 60.</ref>.
La vertu, chez Aristote, est une disposition acquise à bien agir, un juste milieu entre deux excès. Le courage, par exemple, est le juste milieu entre la lâcheté et la témérité. Une vie heureuse est donc une vie où l'on cultive ces vertus et où l'on agit avec raison.
Aristote insiste sur un point important : le bonheur n'arrive pas en un instant. C'est une activité qui se déploie sur toute une vie. On ne peut pas dire qu'une personne est heureuse après une seule journée agréable ; il faut considérer sa vie dans son ensemble<ref>Aristote, ''Éthique à Nicomaque'', I, 10, 1100a-1101a, trad. J. Tricot, Paris, Vrin, 1990, p. 73-77.</ref>.
Aristote ne réduit pourtant pas le bonheur à la seule vertu morale. Il reconnaît que la vie heureuse a aussi besoin de certains biens extérieurs : la santé, une situation matérielle suffisante, des amis, et même une certaine beauté physique. Surtout, l'homme étant un « animal politique », son bonheur ne se développe pleinement que dans une cité juste. Enfin, dans le livre X de l'''Éthique à Nicomaque'', Aristote présente la vie contemplative, consacrée à la connaissance, comme la forme la plus haute du bonheur<ref>Aristote, ''Éthique à Nicomaque'', X, 7-8, 1177a-1178a, trad. J. Tricot, Paris, Vrin, 1990, p. 506-512.</ref>. Il existe ainsi une tension à l'intérieur du texte aristotélicien : le livre I semble faire du bonheur la totalité d'une vie moralement accomplie en société, tandis que le livre X confère la priorité à la contemplation. Cette hésitation n'est pas une contradiction, mais l'indice d'une question philosophique difficile : la vie heureuse est-elle d'abord une vie d'action vertueuse, ou une vie de connaissance ?
==== Le bonheur comme sérénité : le stoïcisme ====
Les philosophes stoïciens, comme Épictète (50-125 après J.-C.) ou Marc Aurèle (121-180 après J.-C.), proposent une autre voie. Selon eux, le bonheur ne dépend pas des choses extérieures (richesse, santé, réputation) mais de notre rapport à elles.
Le stoïcisme repose sur une distinction : il y a les choses qui dépendent de nous (nos jugements, nos opinions, nos désirs) et celles qui ne dépendent pas de nous (la maladie, la mort, l'opinion d'autrui, les événements). Ce qui dépend de nous, Épictète l'appelle la ''prohairesis'' : la faculté de juger, de vouloir et de consentir. Pour atteindre la tranquillité, il faut accepter avec sérénité ce qui ne dépend pas de nous et concentrer notre effort sur l'usage droit de cette faculté de jugement<ref>Épictète, ''Manuel'', § 1, trad. P. Hadot, Paris, Le Livre de Poche, 2000, p. 33-35.</ref>.
Mais le stoïcisme ne se réduit pas à un changement d'attitude intérieure. Pour les stoïciens, le seul bien véritable est la vertu, et le seul mal véritable est le vice. Tout le reste, comme la santé, la richesse, la maladie ou la mort, n'est ni un bien ni un mal au sens propre : ce sont des « indifférents ». Ce qui rend une vie heureuse, c'est l'accord entre nos jugements, nos désirs et la raison qui ordonne le monde. Les passions, qui troublent l'âme, viennent de jugements erronés ; les corriger permet d'atteindre l'''apatheia''. Cette ''apatheia'' n'est pas l'absence de toute émotion : les stoïciens admettent au contraire des affects raisonnables, comme la joie du sage face au bien accompli. Ce qui disparaît, ce sont seulement les passions irrationnelles, qui naissent d'une mauvaise estimation de la valeur des choses<ref>Marc Aurèle, ''Pensées pour moi-même'', IV, 3 et VIII, 7, trad. M. Meunier, Paris, Garnier-Flammarion, 1964, p. 60-62 et p. 116-117.</ref>.
=== Les enjeux philosophiques du bonheur ===
==== Peut-on savoir ce qui nous rend heureux ? ====
Emmanuel Kant (1724-1804), philosophe allemand, soulève un problème : le bonheur est un concept indéterminé. Personne ne peut dire avec précision ce qui le rendrait parfaitement heureux. Nos désirs changent, et ce qui nous semble bon aujourd'hui peut ne plus nous satisfaire demain. Pour Kant, le bonheur est « un idéal de l'imagination, non de la raison »<ref>Kant, ''Fondements de la métaphysique des mœurs'', deuxième section, AK IV, 418, trad. V. Delbos, Paris, Vrin, 1980, p. 124.</ref>.
Cela ne veut pas dire que Kant méprise le bonheur. Il refuse seulement d'en faire le fondement de la morale. La loi morale ne peut pas être tirée de la recherche du bonheur, parce que le bonheur dépend d'inclinations sensibles et variables : on ne peut donc pas en faire une règle universelle. La morale doit reposer sur le devoir, c'est-à-dire sur le respect de la loi rationnelle.
Mais Kant n'oublie pas le bonheur. Il introduit l'idée du « souverain bien », qui désigne l'union de la vertu et du bonheur. Il ne s'agit pas d'une simple récompense morale, mais d'une exigence de la raison pratique elle-même : il appartient à la raison de penser comme possible un ordre dans lequel celui qui agit moralement bien recevrait aussi sa part de bonheur. Le bonheur n'est donc pas le principe de la morale, mais il en accompagne idéalement l'achèvement<ref>Kant, ''Critique de la raison pratique'', livre II, chap. II, AK V, 110-114, trad. F. Picavet, Paris, PUF, 1989, p. 119-124.</ref>.
==== Le bonheur dépend-il de nous ou de la chance ? ====
C'est une question ancienne. Si le bonheur dépend de circonstances extérieures (santé, richesse, hasard), nous ne sommes pas maîtres de notre bonheur ; nous sommes à la merci de la fortune.
Aristote reconnaît que certains biens extérieurs sont nécessaires au bonheur. On ne peut pas être pleinement heureux dans la misère ou la maladie. Mais la vertu reste l'élément principal du bonheur, parce qu'elle dépend de nous<ref>Aristote, ''Éthique à Nicomaque'', I, 9-10, 1099b-1100a, trad. J. Tricot, Paris, Vrin, 1990, p. 70-74.</ref>.
Les stoïciens, eux, soutiennent que le bonheur dépend de l'usage droit du jugement, parce que ce jugement est seul à nous appartenir vraiment. Spinoza (1632-1677) ouvre une autre voie. Pour lui, la joie n'est pas une simple émotion agréable : elle est définie comme le passage à une plus grande perfection, c'est-à-dire l'augmentation de la puissance d'agir. Le bonheur consiste à comprendre par la raison les causes des choses, à transformer les passions tristes (qui diminuent notre puissance) en passions joyeuses, puis en affects actifs. La connaissance adéquate de soi, du monde et de Dieu conduit à la « béatitude », qui est l'amour intellectuel envers la Nature et coïncide avec la liberté véritable<ref>Spinoza, ''Éthique'', V, prop. 32-42, trad. B. Pautrat, Paris, Seuil, 1988, p. 535-547.</ref>.
À l'opposé de cette intériorisation par la connaissance, certains penseurs insistent sur les conditions sociales et matérielles du bonheur. Karl Marx (1818-1883) montre que le travail salarié, lorsqu'il devient aliéné, prive l'ouvrier de la jouissance de ce qu'il produit, le sépare de son activité, des autres travailleurs et de lui-même. Dans une société d'inégalités, de travail contraint et de consommation, la simple bonne volonté individuelle ne suffit pas à rendre heureux : transformer la vie suppose aussi de transformer les conditions sociales du travail et de la richesse<ref>Marx, ''Manuscrits de 1844'', « Le travail aliéné », trad. J.-P. Gougeon, Paris, GF-Flammarion, 1996, p. 115-126.</ref>.
==== Le bonheur du plus grand nombre : l'utilitarisme ====
Au {{s|XIX}}, des philosophes anglais comme Jeremy Bentham (1748-1832) et John Stuart Mill (1806-1873) développent une théorie morale appelée ''utilitarisme''. Selon eux, une action est bonne si elle augmente le bonheur du plus grand nombre.
Bentham pense qu'on peut calculer le bonheur en mesurant les plaisirs et les peines selon plusieurs critères : intensité, durée, certitude, proximité, fécondité (probabilité d'engendrer d'autres plaisirs), pureté (faible probabilité de produire des peines) et nombre de personnes concernées. Pour lui, les plaisirs ne diffèrent pas par leur nature mais par ces dimensions quantitatives ; à intensité et durée égales, le plaisir d'un jeu simple peut donc équivaloir à celui d'une lecture savante<ref>Bentham, ''Introduction aux principes de morale et de législation'', chap. IV, trad. Centre Bentham, Paris, Vrin, 2011, p. 51-54.</ref>.
Mill n'est pas d'accord avec ce calcul purement quantitatif. Il introduit une différence qualitative entre les plaisirs : il existe selon lui des plaisirs supérieurs (intellectuels, moraux, esthétiques) et des plaisirs inférieurs (corporels, immédiats). « Il vaut mieux être un Socrate insatisfait qu'un imbécile satisfait », écrit-il : la qualité du plaisir compte autant que sa quantité<ref>Mill, ''L'Utilitarisme'', chap. II, trad. C. Audard, Paris, PUF, 2008, p. 51-54.</ref>.
L'utilitarisme soulève des questions difficiles. Peut-on vraiment comparer des plaisirs aussi différents qu'un repas, une amitié ou une lecture ? Peut-on additionner les bonheurs individuels pour obtenir un bonheur collectif ? Et surtout : est-il juste de sacrifier le bonheur d'une minorité au bonheur de la majorité, si le calcul l'exige ? Ces difficultés font que l'utilitarisme est à la fois une théorie politique forte et une doctrine très discutée.
==== Le bonheur est-il vraiment possible ? Le pessimisme ====
Certains philosophes ont une vision plus sombre. Arthur Schopenhauer (1788-1860) pense que le bonheur durable est une illusion. Selon lui, la vie humaine oscille entre la souffrance et l'ennui : quand nos désirs ne sont pas satisfaits, nous souffrons ; quand ils le sont, nous nous ennuyons et cherchons de nouveaux désirs<ref>Schopenhauer, ''Le Monde comme volonté et comme représentation'', livre IV, § 57, trad. A. Burdeau, Paris, PUF, 1966, p. 391-396.</ref>.
Pour Schopenhauer, le bonheur n'est jamais qu'un soulagement provisoire. La sagesse consiste à diminuer la souffrance en renonçant à ses désirs et en se tournant vers l'art ou la compassion.
Une critique d'un autre type vient de Sigmund Freud (1856-1939). Dans ''Le Malaise dans la culture'', il rappelle que la civilisation impose des renoncements aux pulsions individuelles, ce qui crée une tension permanente entre le désir d'être heureux et les exigences de la vie en société. Freud formule de manière ironique l'idée que le bonheur humain ne semble pas avoir été prévu par quelque ordre providentiel du monde : la formule est anti-providentialiste, et non l'aveu d'une croyance en un « plan de la création »<ref>Freud, ''Le Malaise dans la culture'', chap. II, trad. P. Cotet, R. Lainé et J. Stute-Cadiot, Paris, PUF, 2010, p. 19-22.</ref>.
==== Le bonheur face à l'absurde : Albert Camus ====
Albert Camus (1913-1960), écrivain et essayiste français, aborde le bonheur d'une manière originale. Dans ''Le Mythe de Sisyphe'', il évoque ce héros condamné par les dieux à rouler éternellement un rocher jusqu'au sommet d'une montagne, d'où il retombe aussitôt.
Cette situation paraît désespérée et absurde. Pourtant, Camus écrit : « Il faut imaginer Sisyphe heureux ». Comment cela ? Parce que Sisyphe prend conscience de sa condition et l'assume sans illusion. Il ne cherche plus dans le ciel ou dans une promesse de salut le sens qui lui manque. Il refuse l'espoir religieux ou métaphysique et choisit d'habiter pleinement sa tâche<ref>Camus, ''Le Mythe de Sisyphe'', Paris, Gallimard, 1942, p. 165-168.</ref>.
Pour Camus, le bonheur est possible même dans un monde absurde, c'est-à-dire un monde qui n'a pas de sens préétabli. Ce bonheur naît d'une lucidité, d'un refus du désespoir et d'une révolte qui maintient la vie intense, malgré l'absence de justification ultime.
=== Conclusion ===
Les conceptions du bonheur examinées dans ce chapitre ne se laissent pas réduire à une réponse unique. Elles dessinent toutefois trois grandes questions directrices.
D'abord : le bonheur est-il un état subjectif ressenti, ou une vie objectivement réussie ? Aristote et Camus, à des époques différentes, refusent de le réduire à un sentiment intérieur. Schopenhauer, à l'inverse, évalue négativement la structure affective du désir humain, tandis que l'utilitarisme cherche à mesurer les plaisirs et les peines pour fonder une politique du bien commun.
Ensuite : le bonheur dépend-il de nous ou des conditions extérieures ? Les stoïciens en font dépendre le bonheur de l'usage droit du jugement ; Spinoza, de la connaissance et de la puissance d'agir ; Aristote rappelle que la vie heureuse exige aussi des biens extérieurs, des amis et une cité juste ; Marx ou les penseurs de la justice sociale soulignent que la transformation du bonheur passe par celle des conditions matérielles et politiques.
Enfin : faut-il rechercher le bonheur directement, ou résulte-t-il d'autre chose ? Bentham et Mill en font le but explicite de l'action ; Kant pense au contraire qu'il faut viser le devoir, le bonheur n'étant qu'une espérance. Camus suggère qu'il vient par surcroît, à celui qui assume sa condition.
Réfléchir au bonheur ne consiste donc pas seulement à comparer des doctrines. C'est apprendre à articuler ces tensions, en lien avec les autres notions du programme : le désir, la liberté, la justice, le travail, l'État, la conscience.
== Sujets de dissertation ==
Cette collection propose seize sujets de dissertation philosophique portant sur la notion de bonheur, organisés selon différentes perspectives : métaphysique, éthique, politique et existentielle. Chaque question ouvre un ensemble de problématiques que tout penseur doit affronter pour comprendre en quoi consiste une vie bonne et comment l'atteindre.
=== 1. Faut-il philosopher pour bien vivre ? ===
Cette question d'ouverture pose un problème que les philosophes eux-mêmes se sont longtemps posé. Y a-t-il une nécessité intrinsèque à philosopher pour accéder au bonheur, ou la réflexion théorique constitue-t-elle simplement un chemin parmi d'autres ? Les anciens Grecs, notamment Aristote, tenaient que la vie heureuse consiste en l'exercice vertueux de l'âme, ce qui exige une certaine connaissance de ce qu'est la vertu. Cependant, nombre de gens vivent heureux sans jamais avoir lu un traité d'éthique. La question demande d'examiner si la philosophie est une condition du bonheur ou seulement un moyen parmi d'autres, et si le bien vivre suppose une compréhension explicite de ce qui rend la vie bonne.
=== 2. Le bonheur est-il un idéal inaccessible ? ===
Le bonheur parfait, total et perpétuel semble appartenir à l'ordre de l'utopie. Tout état heureux s'accompagne de limitations : la finitude humaine, la souffrance, l'expérience du deuil. Peut-on concevoir le bonheur autrement que comme un horizon jamais complètement atteint ? Certains courants philosophiques, notamment l'épicurisme, proposent une version plus modérée du bonheur comme absence de douleur plutôt que comme joie constante. D'autres, comme le stoïcisme, le conçoivent comme indépendant des circonstances extérieures. La question invite à réfléchir sur ce qui rend un idéal inaccessible et si cette inaccessibilité est un problème philosophique réel ou simplement le résultat d'une définition trop exigeante.
=== 3. Existe-t-il des critères du bonheur ? ===
Le bonheur est-il une notion univoque et bien déterminée, ou reste-t-elle relative à chaque individu ? Peut-on établir des critères objectifs permettant de juger qu'une personne ou qu'une vie est heureuse ? Aristote proposait que le bonheur réside dans l'exercice vertueux de nos capacités proprement humaines. Kant, lui, refusait de placer le bonheur au cœur de l'éthique, mais reconnaissait l'importance du « souverain bien » qui combine vertu et bonheur. La question demande s'il existe des critères universels du bonheur ou si chacun doit trouver ses propres repères. Elle touche aussi à la possibilité d'une mesure du bonheur et à ce que signifierait une telle mesure.
=== 4. Le bonheur consiste-t-il à faire tout ce qui nous fait plaisir ? ===
L'identification du bonheur au plaisir constitue une tentative de réponse immédiate et intuitive. Mais elle pose des problèmes : certains plaisirs semblent nuisibles à long terme, certains plaisirs entrent en conflit les uns avec les autres, et poursuivre tous ses désirs conduit souvent à l'épuisement ou à la culpabilité. Épicure lui-même, malgré sa réputation, recommandait une certaine frugalité dans la recherche du plaisir, privilégiant les plaisirs naturels et nécessaires. La question pousse à distinguer entre différents types de plaisirs et à interroger s'il existe une hiérarchie entre eux.
=== 5. Le bonheur est-il une somme de plaisirs ? ===
Cette formulation suggère une approche quantitative : le bonheur résulterait de l'accumulation ou de la maximisation des plaisirs. C'est essentiellement la position de l'utilitarisme classique, notamment chez Jeremy Bentham. Mais peut-on vraiment additionner des plaisirs hétérogènes ? Un plaisir intense et bref vaut-il mieux qu'une satisfaction durable mais moins intense ? John Stuart Mill introduisit la distinction entre plaisirs inférieurs et supérieurs, reconnaissant que certains plaisirs intellectuels ou moraux possèdent une qualité que d'autres ne possèdent pas. La question demande si l'approche mathématique peut saisir la nature du bonheur ou si celui-ci ne relève pas d'une autre logique.
=== 6. Y a-t-il une différence de degré ou de nature entre le bonheur et le plaisir ? ===
Le plaisir semble instantané, localisé, souvent corporel. Le bonheur paraît plus durable, plus global, plus profond. Mais s'agit-il d'une simple question d'intensité ou de durée (différence de degré), ou le bonheur appartient-il à un ordre différent (différence de nature) ? Peut-on accéder à un véritable bonheur en vivant une suite de plaisirs minimaux ? Inversement, peut-on être heureux en renonçant complètement au plaisir ? Cette distinction entre bonheur et plaisir constitue un carrefour où se rencontrent plusieurs traditions philosophiques, du platonisme au confucianisme.
=== 7. Le bonheur est-il un simple hasard ? ===
Cette question interroge la part de contingence et de maîtrise dans le bonheur. Sommes-nous maîtres de notre bonheur, ou celui-ci dépend-il de circonstances externes échappant à notre contrôle : notre tempérament naturel, notre milieu social, les événements imprévisibles ? Les Anciens parlaient de ''tyché'' (chance, fortune) comme d'une puissance qui échappe à la raison. Montaigne, relevant l'instabilité du destin humain, reconnaissait le poids de la contingence. Cependant, soutenir que le bonheur est purement aléatoire semblerait ôter toute responsabilité et tout sens à nos efforts. La question demande comment articuler la reconnaissance de notre dépendance aux circonstances avec une certaine forme de maîtrise ou d'autonomie.
=== 8. Le bonheur peut-il être le résultat d'une pratique ou d'un art de vivre ? ===
Contrairement à l'idée qu'il serait un simple hasard, cette perspective envisage le bonheur comme acquis par la discipline, la pratique et l'apprentissage. L'éthique aristotélicienne insiste sur la formation des vertus par la répétition des bonnes actions. Le stoïcisme propose un art de vivre fondé sur la distinction entre ce qui dépend de nous et ce qui ne dépend pas de nous. De nombreuses traditions non occidentales, du bouddhisme au taoïsme, offrent des pratiques censées conduire au bien-être ou à l'illumination. La question soulève la possibilité d'une « technique » du bonheur et ses limites : peut-on vraiment l'enseigner et l'apprendre comme on apprend un métier ?
=== 9. Le bonheur est-il une affaire de politique ? ===
Si le bonheur dépend largement des conditions sociales, économiques et politiques, alors sa réalisation ne peut pas être individuelle mais doit relever de la responsabilité collective. Platon, dans la ''République'', envisage un ordre politico-social destiné à produire l'harmonie et le bien-être. Aristote affirme que l'homme est un animal politique et que la vie heureuse s'épanouit dans la cité. Les penseurs utilitaristes du {{s|XIX}} proposaient que la politique vise à maximiser le bonheur du plus grand nombre. Cependant, la question de savoir si la politique doit poursuivre explicitement le bonheur reste contestée : ne risque-t-on pas de sacrifier les libertés individuelles à une conception collective du bien ? L'État ne risque-t-il pas, en poursuivant le bonheur, d'imposer à tous une conception unique de la vie bonne ?
=== 10. Le bonheur peut-il dépendre de nous ? ===
Cette question interroge le degré d'autonomie que nous possédons sur notre propre bonheur. S'il dépendait entièrement de nous, nous pourrions le produire à volonté, ce qui ne semble pas vrai. Mais s'il ne dépendait pas du tout de nous, l'effort et la responsabilité seraient illusoires. Le stoïcisme, notamment avec Épictète, distingue nettement entre ce qui dépend de nous (nos jugements, nos intentions) et ce qui ne dépend pas de nous (notre corps, les événements externes), et préconise de concentrer nos efforts sur ce qui nous appartient. Cette distinction peut-elle vraiment résoudre le problème ? Notre bonheur ne résulte-t-il pas toujours d'une combinaison complexe d'efforts personnels et de circonstances externes ?
=== 11. Y a-t-il un devoir d'être heureux ? ===
À première vue, le bonheur semble être ce que nous cherchons naturellement, pas une obligation morale. Cependant, plusieurs penseurs ont soulevé l'idée que nous avons des devoirs envers nous-mêmes de cultiver nos capacités et de mener une vie digne. Kant, tout en refusant de placer le bonheur au cœur de la morale, reconnaît que le « souverain bien » combine vertu et bonheur. On pourrait aussi avancer que nous avons un devoir envers les autres de ne pas nous laisser sombrer dans la misère, qui affecte ceux qui nous entourent. La question demande si le bonheur relève d'un droit, d'un devoir, ou simplement d'une aspiration naturelle sans caractère moral.
=== 12. Le bonheur est-il utopique ? ===
L'utopie désigne un lieu qui n'existe pas, un idéal irréalisable. Qualifier le bonheur d'utopique signifierait que nous ne pouvons que nous en rapprocher sans jamais l'atteindre vraiment. Mais certaines sociétés ou certaines périodes historiques semblent avoir produit des formes de bien-être général, même si aucune n'a réalisé une félicité absolue. La question demande si l'utopie du bonheur joue un rôle moteur utile dans l'organisation de nos sociétés, ou si elle nous détourne des réalisations possibles en nous promettant l'impossible. Elle s'interroge aussi sur ce qui distingue une utopie d'une aspiration légitime mais exigeante.
=== 13. La culture est-elle un gage de bonheur ? ===
La culture, au sens de raffinement intellectuel, de connaissance des arts, des sciences et des humanités, semble enrichir la vie. Cependant, elle peut aussi générer de nouvelles formes de malheur : culpabilité, conscience du malheur d'autrui, sentiment d'inadéquation face aux grands idéaux. Une personne peu instruite peut-elle être plus heureuse qu'un intellectuel perpétuellement inquiet ? La question rejoint le débat entre les plaisirs « inférieurs » et les plaisirs « supérieurs ». Elle demande aussi si le bonheur consiste davantage dans l'ignorance confortable ou dans l'autonomie de pensée qu'offre la culture, même au prix du trouble et du questionnement.
=== 14. Le bonheur des hommes dépend-il de l'augmentation des richesses ? ===
Cette question moderne s'impose avec force dans nos sociétés de consommation. Certaines études contemporaines suggèrent qu'au-delà d'un seuil où les besoins matériels sont satisfaits, l'augmentation des richesses n'améliore que marginalement le bien-être subjectif. Pourtant, la pauvreté constitue clairement un obstacle au bonheur. La question demande s'il existe un point d'équilibre : à quel niveau de richesse maîtrisée le bonheur atteint-il son optimum ? Elle interroge aussi la nature du désir de richesse : repose-t-il sur un besoin véritable ou sur une illusion entretenue par le désir de comparaison sociale ?
=== 15. Le bonheur n'est-il pas un état d'esprit ? ===
Cette affirmation suggère que le bonheur dépend avant tout de notre attitude face aux circonstances, plutôt que des circonstances elles-mêmes. Deux personnes en situation identique peuvent connaître des niveaux de bien-être très différents selon leur disposition d'esprit. Cette perspective rapproche le bonheur de la sérénité stoïcienne ou de l'équanimité bouddhiste. Cependant, dire que le bonheur relève d'un simple état d'esprit pourrait sembler réducteur ou même cruel : cela pourrait suggérer que celui qui souffre a seulement besoin de « changer d'attitude » plutôt que d'améliorer ses conditions matérielles. La question demande comment équilibrer la reconnaissance de l'importance de la perspective mentale avec celle des réalités concrètes.
=== 16. La recherche du bonheur nous pousse-t-elle à changer notre façon d'être ? ===
Poursuivre activement le bonheur nous oblige-t-il à transformer nos habitudes, nos valeurs, nos relations ? Si le bonheur ne s'obtient qu'au prix d'une profonde conversion intérieure ou d'un apprentissage exigeant, alors la question de savoir comment nous vivons devient centrale. De nombreuses traditions voient dans cette transformation de soi la condition du bien-être durable. Mais on peut aussi se demander si une telle exigence de changement perpétuel ne nous éloigne pas du bonheur plutôt que de nous en rapprocher. La question touche à l'authenticité : faut-il accepter qui nous sommes ou nous transformer ? Le bonheur suppose-t-il une acceptation de soi ou une acceptation créatrice de nos possibilités ?
=== Perspectives transversales ===
Ces seize questions forment un ensemble où plusieurs thèmes surgissent régulièrement :
* La relation entre plaisir et bonheur revient dans les questions 4, 5 et 6. Elle demande de distinguer l'immédiat du durable, le local du global.
* Le degré d'autonomie personnel apparaît dans les questions 7, 8 et 10. Il concerne notre responsabilité et notre pouvoir d'agir.
* Le contexte social et politique se manifeste dans les questions 9 et 14. Il soulève la question de savoir si le bonheur est individuel ou collectif.
* La nature du bonheur, qu'il s'agisse d'une sensation, d'un jugement ou d'un état, traverse en arrière-plan toutes ces questions.
* L'accès au bonheur, par la chance, la pratique, la réflexion ou la transformation, structure plusieurs de ces interrogations.
Ces dissertations invitent à explorer le bonheur non comme une notion simple, mais comme un carrefour où se rencontrent l'éthique, la métaphysique, la politique et l'existence quotidienne. Aucune réponse définitive ne peut clore ces questions ; chaque époque, chaque individu, doit les reposer en fonction de ses circonstances et de sa compréhension du monde.
== Textes d'étude ==
==== Épicure : le plaisir comme absence de trouble ====
; Question travaillée : Le bonheur consiste-t-il à satisfaire tous nos plaisirs ?
; Thèse : Le plaisir est le bien suprême, mais ce plaisir doit être compris comme absence de souffrance physique et absence de trouble moral, et non comme jouissance débridée.
; Notions : plaisir, désir, ataraxie, bien.
''Questions d'analyse'' :
* Pourquoi Épicure refuse-t-il certains plaisirs et accepte-t-il certaines souffrances ?
* Comment comprendre que « ne dépendre que de soi-même » est un grand bien ?
* En quoi cette conception du plaisir s'oppose-t-elle à l'image du débauché ?
{{Citation bloc|Le plaisir est le commencement et la fin d'une vie bienheureuse. Le plaisir est, en effet, considéré par nous comme le premier des biens naturels, c'est lui qui nous fait accepter ou fuir les choses, c'est à lui que nous aboutissons, en prenant la sensibilité comme critère du bien. Or, puisque le plaisir est le premier des biens naturels, il s'ensuit que nous n'acceptons pas le premier plaisir venu, mais qu'en certains cas, nous méprisons de nombreux plaisirs, quand ils ont pour conséquence une peine plus grande. D'un autre côté, il y a de nombreuses souffrances que nous estimons préférables aux plaisirs, quand elles entraînent pour nous un plus grand plaisir. Tout plaisir, dans la mesure où il s'accorde avec notre nature, est donc un bien, mais tout plaisir n'est pas cependant nécessairement souhaitable. De même, toute douleur est un mal, mais pourtant toute douleur n'est pas nécessairement à fuir. Il reste que c'est par une sage considération de l'avantage et du désagrément qu'il procure, que chaque plaisir doit être apprécié. En effet, en certains cas, nous traitons le bien comme un mal, et en d'autres, le mal comme un bien.
Ne dépendre que de soi-même est, à notre avis, un grand bien, mais il ne s'ensuit pas qu'il faille toujours se contenter de peu. Simplement, quand l'abondance nous fait défaut, nous devons pouvoir nous contenter de peu, étant bien persuadés que ceux-là jouissent le mieux de la richesse qui en ont le moins besoin, et que tout ce qui est naturel s'obtient aisément, tandis que ce qui ne l'est pas s'obtient malaisément. Les mets les plus simples apportent autant de plaisir que la table la plus richement servie, quand est absente la souffrance que cause le besoin, et du pain et de l'eau procurent le plaisir le plus vif, quand on les mange après une longue privation. L'habitude d'une vie simple et modeste est donc une bonne façon de soigner sa santé, et rend l'homme par surcroît courageux pour supporter les tâches qu'il doit nécessairement remplir dans la vie. Elle lui permet encore de mieux goûter une vie opulente, à l'occasion, et l'affermit contre les revers de la fortune. Par conséquent, lorsque nous disons que le plaisir est le souverain bien, nous ne parlons pas des plaisirs des débauchés, ni des jouissances sensuelles, comme le prétendent quelques ignorants qui nous combattent et défigurent notre pensée. Nous parlons de l'absence de souffrance physique et de l'absence de trouble moral. Car ce ne sont ni les beuveries et les banquets continuels, ni la jouissance que l'on tire de la fréquentation des mignons et des femmes, ni la joie que donnent les poissons et les viandes dont on charge les tables somptueuses, qui procurent une vie heureuse, mais des habitudes raisonnables et sobres, une raison cherchant sans cesse des causes légitimes de choix ou d'aversion, et rejetant les opinions susceptibles d'apporter à l'âme le plus grand trouble.|Épicure, ''[[Commentaire philosophique/Lettre à Ménécée|Lettre à Ménécée]]''}}
==== Sénèque : vivre selon la nature ====
; Question travaillée : Le bonheur peut-il dépendre des biens extérieurs ?
; Thèse : Vivre heureux, c'est vivre selon la nature et la raison, en faisant des biens extérieurs des « auxiliaires » et non des maîtres ; le souverain bien est l'harmonie de l'âme.
; Notions : nature, raison, vertu, souverain bien.
''Questions d'analyse'' :
* Pourquoi Sénèque distingue-t-il les biens extérieurs et l'âme ?
* Que signifie « être l'artisan de sa vie » ?
* Comment comprendre l'analogie entre l'esprit et le « monde » qui se concentre en soi ?
{{Citation bloc|La nature, en effet, est le guide qu'il faut suivre ; c'est elle que la raison observe et consulte. C'est donc une même chose que vivre heureux et vivre selon la nature. Ce que c'est, je vais le développer : cela consiste à conserver, avec soin et sans effroi, les avantages du corps et ce qui convient à notre nature, comme choses données pour un jour et prêtes à fuir ; à ne pas nous y soumettre en esclaves, et à ne pas nous laisser posséder par les objets étrangers ; à reléguer tout ce qui plaît au corps, tout ce qui lui survient accidentellement, comme dans les camps on place à l'écart les auxiliaires et les troupes légères. Que ces objets soient des esclaves, et non des maîtres ; c'est uniquement ainsi qu'ils sont utiles à l'esprit. Que l'homme de cœur soit incorruptible en présence des choses du dehors, qu'il soit inexpugnable, et qu'il n'attache de prix qu'à se posséder lui-même ; que d'une âme confiante, que préparé à l'une et à l'autre fortune, il soit l'artisan de sa vie. Que chez lui la confiance n'existe pas sans le savoir, ni le savoir sans la fermeté ; que ses résolutions tiennent, une fois qu'elles sont prises, et que dans ses décrets il n'y ait pas de rature. On comprend, quand même je ne l'ajouterais pas, qu'un tel homme sera posé, qu'il sera rangé, qu'en cela aussi, agissant avec aménité, il sera grand. Chez lui, la véritable raison sera greffée sur les sens ; elle y puisera ses éléments ; et en effet, elle n'a pas d'autre point d'appui d'où elle s'élance, d'où elle prenne son essor vers la vérité, afin de revenir en elle-même. Le monde aussi, qui embrasse tout, ce dieu qui régit l'univers, tend à se répandre au dehors, et néanmoins, de toutes parts il se ramène en soi pour s'y concentrer. Que notre esprit fasse de même, lorsqu'en suivant les sens qui lui sont propres, il se sera étendu par leur moyen vers les objets extérieurs ; qu'il soit maître de ces objets et de lui ; qu'alors, pour ainsi dire, il enchaîne le souverain bien. De là résultera une force, une puissance unique, d'accord avec elle-même ; ainsi naîtra cette raison certaine, qui n'admet ni contrariété, ni hésitation, dans ses jugements et dans ses conceptions, non plus que dans sa persuasion. Cette raison, lorsqu'elle s'est ajustée, accordée avec ses parties et, pour ainsi dire, mise à l'unisson, a touché au souverain bien. En effet, il ne reste rien de tortueux, rien de glissant rien sur quoi elle puisse broncher ou chanceler. Elle fera tout de sa propre autorité : pour elle, point d'accident inopiné ; au contraire, toutes ses actions viendront à bien, avec aisance et promptitude, sans que l'agent tergiverse ; car les retardements et l'hésitation dénotent le trouble et l'inconstance. Ainsi, vous pouvez hardiment déclarer que le souverain bien est l'harmonie de l'âme. En effet, les vertus seront nécessairement là où sera l'accord, où sera l'unité ; la discordance est pour les vices.|Sénèque, ''De la vie heureuse'' (vers 58 après J.-C.), chap. VIII}}
==== Descartes : vaut-il mieux être heureux dans l'illusion ou moins joyeux dans la vérité ? ====
; Question travaillée : Le bonheur peut-il reposer sur l'illusion ?
; Thèse : Le souverain bien réside dans l'exercice de la vertu, c'est-à-dire dans la possession des biens qui dépendent de notre libre arbitre ; la satisfaction d'esprit qui en découle vaut mieux qu'une gaieté fondée sur de fausses imaginations.
; Notions : vérité, illusion, libre arbitre, vertu, joie.
''Questions d'analyse'' :
* Pourquoi Descartes refuse-t-il d'identifier le souverain bien à la joie ?
* Que signifie distinguer le souverain bien et la satisfaction d'esprit ?
* Pourquoi une joie fausse laisse-t-elle, selon Descartes, une « amertume intérieure » ?
{{Citation bloc|Je me suis quelquefois proposé un doute : savoir s'il est mieux d'être gai et content, en imaginant les biens qu'on possède être plus grands et plus estimables qu'ils ne sont, et ignorant ou ne s'arrêtant pas à considérer ceux qui manquent, que d'avoir plus de considération et de savoir, pour connaître la juste valeur des uns et des autres, et qu'on devienne plus triste. Si je pensais que le souverain bien fût la joie, je ne douterais point qu'on ne dût tâcher de se rendre joyeux, à quelque prix que ce pût être, et j'approuverais la brutalité de ceux qui noient leurs déplaisirs dans le vin, ou les étourdissent avec du pétun. Mais je distingue entre le souverain bien, qui consiste en l'exercice de la vertu, ou, ce qui est le même, en la possession de tous les biens dont l'acquisition dépend de notre libre arbitre, et la satisfaction d'esprit qui suit de cette acquisition. C'est pourquoi, voyant que c'est une plus grande perfection de connaître la vérité, encore même qu'elle soit à notre désavantage, que l'ignorer, j'avoue qu'il vaut mieux être moins gai et avoir plus de connaissance. Aussi n'est-ce pas toujours lorsqu'on a le plus de gaieté qu'on a l'esprit plus satisfait ; au contraire, les grandes joies sont ordinairement mornes et sérieuses, et il n'y a que les médiocres et passagères, qui soient accompagnées du ris. Ainsi je n'approuve point qu'on tâche à se tromper, en se repaissant de fausses imaginations ; car tout le plaisir qui en revient ne peut toucher que la superficie de l'âme, laquelle sent cependant une amertume intérieure, en s'apercevant qu'ils sont faux. Et encore qu'il pourrait arriver qu'elle fût si continuellement divertie ailleurs que jamais elle ne s'en aperçût, on ne jouirait pas pour cela de la béatitude dont il est question, pour ce qu'elle doit dépendre de notre conduite, et cela ne viendrait que de la fortune.|Descartes, ''Lettre à Élisabeth'' (6 octobre 1645)}}
==== Pascal : le divertissement, fuite hors de notre condition ====
; Question travaillée : Le divertissement nous rend-il heureux ou nous empêche-t-il de penser à notre malheur ?
; Thèse : Tout le malheur des hommes vient de leur incapacité à demeurer en repos avec eux-mêmes ; le divertissement n'apporte pas le bonheur, il détourne l'esprit de la condition humaine, faible et mortelle.
; Notions : divertissement, repos, condition humaine, bonheur, illusion.
''Questions d'analyse'' :
* Pourquoi le roi sans divertissement est-il, selon Pascal, plus malheureux que ses sujets ?
* Pourquoi recherche-t-on le « tracas » et non pas le bien lui-même ?
* En quoi cette analyse remet-elle en cause l'idée d'un bonheur fondé sur l'activité ?
{{Citation bloc|Divertissement. Quand je m'y suis mis quelquefois à considérer les diverses agitations des hommes et les périls et les peines où ils s'exposent, dans la cour, dans la guerre, d'où naissent tant de querelles, de passions, d'entreprises hardies et souvent mauvaises, etc., j'ai découvert que tout le malheur des hommes vient d'une seule chose, qui est de ne savoir pas demeurer en repos, dans une chambre. Un homme qui a assez de bien pour vivre, s'il savait demeurer chez soi avec plaisir, n'en sortirait pas pour aller sur la mer ou au siège d'une place. On n'achètera une charge à l'armée si cher, que parce qu'on trouverait insupportable de ne bouger de la ville ; et on ne recherche les conversations et les divertissements des jeux que parce qu'on ne peut demeurer chez soi avec plaisir.
Mais quand j'ai pensé de plus près, et qu'après avoir trouvé la cause de tous nos malheurs, j'ai voulu en découvrir la raison, j'ai trouvé qu'il y en a une bien effective, qui consiste dans le malheur naturel de notre condition faible et mortelle, et si misérable, que rien ne peut nous consoler, lorsque nous y pensons de près.
Quelque condition qu'on se figure, si l'on assemble tous les biens qui peuvent nous appartenir, la royauté est le plus beau poste du monde ; et cependant, qu'on s'en imagine [un roi] accompagné de toutes les satisfactions qui peuvent le toucher, s'il est sans divertissement, et qu'on le laisse considérer et faire réflexion sur ce qu'il est, cette félicité languissante ne le soutiendra point, il tombera par nécessité dans les vues qui le menacent, des révoltes qui peuvent arriver, et enfin de la mort et des maladies qui sont inévitables ; de sorte que, s'il est sans ce qu'on appelle divertissement, le voilà malheureux, et plus malheureux que le moindre de ses sujets, qui joue et qui se divertit.
De là vient que le jeu et la conversation des femmes, la guerre, les grands emplois sont si recherchés. Ce n'est pas qu'il y ait en effet du bonheur, ni qu'on s'imagine que la vraie béatitude soit d'avoir l'argent qu'on peut gagner au jeu, ou dans le lièvre qu'on court : on n'en voudrait pas s'il était offert. Ce n'est pas cet usage mol et paisible, et qui nous laisse penser à notre malheureuse condition, qu'on recherche, ni les dangers de la guerre, ni la peine des emplois, mais c'est le tracas qui nous détourne d'y penser et nous divertit.|Pascal, ''Pensées'' (1670), fragment 139}}
==== Nietzsche : l'oubli, condition du bonheur ====
; Question travaillée : L'oubli est-il une condition du bonheur et de l'action ?
; Thèse : Le bonheur exige une part de non-historique : la capacité d'oublier le passé pour se tenir dans le moment présent ; l'excès de mémoire empêche d'agir et de vivre.
; Notions : mémoire, oubli, action, devenir, vie.
''Questions d'analyse'' :
* Pourquoi Nietzsche associe-t-il bonheur et capacité d'oublier ?
* Que signifie « sentir d'une façon non historique » ?
* En quoi un excès de mémoire serait-il nuisible à la vie ?
{{Citation bloc|Pour le plus petit comme pour le plus grand bonheur, il y a toujours une chose qui le crée : le pouvoir d'oublier, ou, pour m'exprimer en savant, la faculté de sentir, pendant que dure le bonheur, d'une façon non-historique. Celui qui ne sait pas se reposer sur le seuil du moment pour oublier tout le passé, celui qui ne se dresse point, comme un génie de victoire, sans vertige et sans crainte, ne saura jamais ce que c'est que le bonheur, et, ce qui est pire encore, il ne fera jamais rien qui puisse rendre heureux les autres. Imaginez l'exemple extrême : un homme qui ne posséderait pas du tout la faculté d'oublier, qui serait condamné à voir en toutes choses le devenir. Un tel homme ne croirait plus à sa propre essence, ne croirait plus en lui-même ; tout s'écoulerait pour lui en points mouvants pour se perdre dans cette mer du devenir ; en véritable élève d'Héraclite il finirait par ne plus oser lever un doigt. Toute action exige l'oubli, comme tout organisme a besoin, non seulement de lumière, mais encore d'obscurité. Un homme qui voudrait sentir d'une façon tout à fait historique ressemblerait à celui qui serait forcé de se priver de sommeil, ou bien à l'animal qui devrait continuer à vivre en ne faisant que ruminer, et ruminer toujours à nouveau. Donc il est impossible de vivre sans se souvenir, de vivre même heureux, à l'exemple de la bête, mais il est absolument impossible de vivre sans oublier. Ou bien, pour m'expliquer sur ce sujet d'une façon plus simple encore, il y a un degré d'insomnie, de rumination, de sens historique qui nuit à l'être vivant et finit par l'anéantir, qu'il s'agisse d'un homme, d'un peuple ou d'une civilisation.|Nietzsche, ''Considérations inactuelles'', II (1874), § 1}}
== Notes et Références ==
{{references|colonnes=2}}
[[Catégorie:Manuel de terminale de philosophie (livre)]]
{{Autocat}}
dh309gybl29p3r66lbhgqmwczfqlcjr
Essai pour un modèle de psychisme objectif
0
83689
765750
764929
2026-05-02T00:15:36Z
~2026-26674-53
123650
/* La résolution des souffrances, attribut des objets subconscients. */ Correction de pallier. On pallier quelque chose, on ne pallie pas "à" quelque chose (c'est comme dire "je mange à une pomme" au lieu de "je mange une pomme")
765750
wikitext
text/x-wiki
{{Page de garde|titre=Le miroir brisé|description=
''Essai pour un modèle de psychisme objectif''
Docteur Denis-Serge Clopeau
|cdu=
* {{CDU item|6|61}}
|versions=
{{Moteur}}
{{Version imprimable}}
{{version PDF|Miroirbrisé.pdf}}
}}
[https://upload.wikimedia.org/wikipedia/commons/6/65/Miroirbris%C3%A9.pdf cf version pdf avec sa page de remerciements]
Le titre de l’essai sera ressenti peut être comme intrigue pour ce qui est du miroir brisé et c’est vrai que son explication ne surgira que dans les dernières lignes de cet essai.
En ce qui concerne le sous titre «essai pour un psychisme objectif» il sautera aux yeux comme une prétentieuse ambition. Comment un domaine aussi vaste, mystérieux pourrait s’imposer à l’esprit sans recours à discussion ou interprétation. Je partage cette critique et chacun conclura cette petite provocation sur son propre jugement. Le vrai contenu de l’essai tend à décrire les rouages du psychisme comme un mécanisme de construction d’objets psychiques, mais aussi d’identification de leurs attributs, de leur relation dans le domaine conscient et subconscient autant dans l’état mental qualifié de sain que dans celui de pathologique. A toute fin utile vous remarquez que les pages de gauches (dans la version PDF) laissent tout la place pour disposer du moyen immédiat de toute critique et annotation. Personnellement j’ai toujours regretté de ne pas disposer de ce simple moyen d’appropriation de la chose lue. Remercions les inventeur du Wiki d'offrir le moyen de discussion individuelle ou collective, une vrai révolution dans le partage des connaissance ou des imaginaires.
== Sommaire ==
{{/Sommaire}}
== Confidence ==
D’où je parle, d’où je pars …. ce qui manque souvent au lecteur et qui pourtant est indispensable pour éclairer sa critique.
Voici mes réflexions dans un domaine que j’explore attentivement, depuis un instant précis par ses circonstances, mais dont la date n’est pas définie à un an près. Le point de repère est l’instant extraordinaire du début de cette expérience, où la révélation, s’est produite alors que je passais juste sous la frondaison d’une glycine en fleur et à l’odeur merveilleusement envoûtante, débordant des grilles d’un jardin, dans une petite rue d’un des 3 parcours me ramenant du lycée vers 17 h, au sortir du cours du musique. Au 3{{ème}} étage de mon lycée Lakanal où dans une salle légèrement mansardée exposée plutôt à l’ouest et aux carreaux du 19e siècle à faces non parallèles déversant en arcs en ciel le soleil déclinant, nous avions achevé le cours par l’écoute sur le tourne disque portable modèle éducation nationale , d’une musique qui m’avait emporté déjà assez loin. J’avais 13 ou 14 ans et j’étais souvent seul, aussi la contemplation musicale était mon rituel le plus fréquent.
À l’heure où j’écris, dans ma 67{{ème}} année, l’envie de livrer mon expérience me poursuit depuis la soixantaine. Ma vie professionnelle m’a contraint de bon gré à approfondir mes réflexions de jeunesse, et à les organiser pour venir en aide à mes patients dont je recevais régulièrement les plaintes, les souffrances, les confidences. J’ai aussi bien sûr profité des acquis de mes études initiales qui ont été longues et qui ont connu de nombreux échecs avant le couronnement final dont le thème était très orienté vers la haute technologie, autre de mes sujets d’intérêt.
Pour en revenir au sujet de l’essai il est notoire que si je n’ai réussi la majorité de mes certificats qu’à la deuxième présentation, parmi mes succès immédiats il y a eu le {{g|bloc}}. Dans ces années 1975, ce bloc, avait mauvaise réputation dans toutes les promotions : énorme, touffu, inutile, incompréhensible, baratin etc etc. Je l’ai donc abordé avec appréhension bien que déjà prévenu contre les préjugés. J’ai lu l’énorme polycopié de plus de 1000 pages, dont beaucoup de photocopies de livres en réduction, qui parlait de psychiatrie avec sa symptomatologie, sa nosologie, ses thérapies dont quelques stratégies de soutien psychologique vouées à intégrer l’exercice médical général, de quelques éléments de droits … OUF. Effectivement j’ai du m’y reprendre à plusieurs fois pour comprendre et pour m’inscrire en faux contre les préjugés dévalorisants, courants dans les rangs des collègues. Je me rappelle avoir rempli quelques blancs et versos libres, avec mes remarques personnelles. Le jour de l‘ épreuve, j’ai choisi parmi les thèmes libres celui qui consistait à expliquer une situation de souffrance psychologique décrite de façon assez littéraire. J’y ai introduit mes concepts d’ontogénie, d’{{g|angoisse primitive résolue par l’angoisse conceptuelle mais dont l’invasion menace devant toute situation inconnue}}, en fait une part de ce je développe dans la suite.
<blockquote>digression ....... [[Essai pour un modèle de psychisme objectif/modèle épistémologique|un modèle mais à comprendre au sens épistémologique]]</blockquote>
Ma note, et avec une grande surprise, m’a placé en tête du palmarès ce qui m’est arrivé dans deux matières seulement. Fort de cette onction universitaire je me considérais assez compétent pour assurer une aide efficace aux patients. Oui bien sûr, il faut excuser sa niaiserie à la bonne volonté ! Dans les cas les plus académiques je remerciais mes maîtres de m’avoir donné les idées claires sur la distinction entre psychose et névrose et leurs typologies, pour savoir décider d’adresser les patients vers les confrères psychiatres, de façon documentée, ou prescrire le soutien psychologique.
Mais j’ai vite constaté les limites des compétences à ma disposition et aussi celles des autres soignants en matière de soutien psychologique. Aussi je suis reconnaissant à deux stages spécifiquement dédiés à la communication et à deux autres à la Programmation Neurolinguistique qui m’ont ouvert de nouveaux horizons. De ces sources variées j’ai produit après 1 an et demi d’appropriation en 1994 (ma véritable installation comme généraliste commence en 1990) mon propre protocole empruntant à la PNL en complétant d’apports neurophysiologiques mais excluant toute implication physique ou intimiste dans les processus «d’ancrage», laquelle je réfute sous le qualificatif de «posture du gourou». Ce dernier point est crucial de mon point de vue critique, face à toute démarche psychothérapeutique qui donne un rôle interventionniste au thérapeute. Dans certaines écoles visant un public de « manager », de vendeurs, de cadres militaires etc, vous trouverez sur internet des permis d’intrusions, d’assujettissements, de dominations, de manipulation, aussi odieux dans leur forme que dans leurs objectifs et maléfiques pour l'autonomie mentale des personnes ciblées. Je recommande donc la plus grande circonspection en la matière.
Mon protocole par contre, suit un schéma essentiellement pédagogique, sécurisé par une hiérarchie des objectifs clairement exposés aux patients. « Nous allons commencer par une leçon de chose puis des exercices visant à vous permettre d’évoquer vos moments préférés, sereins et néanmoins banals sans valeur intime particulière ». « Si le besoin d’aborder avec moi des souffrances persiste, ce sera après un entraînement et une maîtrise que vous aurez acquise avec mon aide d’abord sur des situations banales….. je n’aime pas l’odeur de l’eau de javel, où le bruit des tondeuses à gazon ».
Cette prévention contre un abord thérapeutique direct d’une souffrance souvent exprimée clairement par le patient comme : « enfant j’ai été battu par mes parents, ou j’ai perdu un enfant, j'ai été violé , mon conjoint me trompe, ou mon supérieur hiérarchique me harcèle" etc sera expliqué dans l’essai.
Donc la première motivation est de fournir un modèle clair, et donc j’espère facilement critiquable des fonctions psychiques, autant pour une appropriation personnelle par le lecteur en donnant des pistes pour l’ introspection, que pour aider à la compréhension d’autrui. Le souffrant pourra donc aussi y trouver un confort dans le «connais toi même». Enfin mes consœurs et confrères qui reconnaîtront la problématique soulevée y trouveront au besoin une formulation soumise à leur propre appropriation et critique. Abordons les concepts, car il s’agit d’un modèle qui sort du cadre académique en tout cas à mon niveau de connaissance .
Je tente de suivre un plan progressif qui vise à expliquer parallèlement les mécanismes conscients et subconscients, ce qui amène à quelques redites, qui je l’espère profiteront à une pédagogie de la répétition dont j’ai moi même bien profité. Je m’appuie sur des connaissances dont les validations n’ont pas toutes le même niveau. Je suis bien conscient que mon écrit pêche par un manque notoire de bibliographie, il ne s’agit que d’un essai et les lecteurs sont invités à laisser leur esprit critique en éveil. Pour pallier ce défaut, je compte beaucoup sur la curiosité du lecteur pour le butinage également critique d’internet que l’époque moderne nous offre. Comme je ne pratique pas la fausse modestie, je dis aussi que ce modèle contient des outils qui ont profité à beaucoup de patients qui m’ont consultés dans les circonstances variées de ce merveilleux métier de médecin généraliste. Je me rappelle bien sûr de quelques échecs non-surmontés sans doute car la présentation didactique déstabilise ceux pour qui, le psychisme doit nécessairement être abordé comme un domaine obscur et mystérieux, sur un divan dans la peine et l’ombre. C’est hélas une conviction que deux consultations ne suffisent pas toujours à ébranler d’autant qu’elle est fortement diffusée dans le corpus des certitudes socialement admises.
Voilà, à ceux qui poursuivent encore la lecture, je conseille la plus grande décontraction. Il me semblerait étonnant que j’arrive à me faire comprendre à première lecture. D’autant que malgré un effort sincère, je n’ai pas pu éviter quelques va et vient et autres digressions qui j’espère prendront leur juste place dans l’esprit de ceux qui reliront les passages {{g|du coq à l’âne}}.
== L’angoisse primitive, l’ontogénie, le JE , l’angoisse conceptuelle et subconsciente, le premier monde construit. ==
Commençons par l’explication de ces termes dans l’acception que je me suis forgée au fil de mes introspections et de la modélisation que j’ai construite pour aborder les phénomènes psychologiques. J’ai eu très jeune, cette intuition «que ce qui est, n’est qu’un cas particulier de ce qui peut être», et j’en fais même une devise de mes réflexions philosophiques. Toutefois ce qui «est» n’est pourtant pas fortuit et répond sans doute à un objectif justifié. Cette intuition est devenue une révélation assez mystérieuse, en quelques pas sous la frondaison de la glycine. Une question, un oukase presque s’est imposé à ma jeune conscience. «acceptes tu l’inconnu, l’incertitude, sans garantie de profit quelconque, ou bien décides tu de t’y soustraire et d’en perdre la curiosité»?. Ce jour là, j’ai choisi la voie angoissante qui m’a accompagné pendant 150 mètres jusqu’à un sursaut lorsque mon chemin à croisé le train de la ligne de Sceaux dans son prolongement jusqu’à Robinson, à cet instant où je me trouvais sous le pont métallique en poutre H. Voilà c’était fait, je connaissais le chemin qui s’ouvre aux curieux, entre le fait et le possible, entre le certain et le tout. Cette occasion rare de reconnaître l’angoisse primitive, pré-conceptuelle, que je pose comme instigatrice de notre construction, notre ontogénie psychique m’a été donnée dans ces quelques minutes. Cette expérience m’a fait connaître un cheminement généralement profondément occulté dans notre subconscient. C’est un objet inclassable par essence, puisque l’inconnu qui entoure le nourrisson, ne trouve en lui aucune classe préétablie. Cette dimension m’accompagne depuis, je la respire. Je la fréquente chaque jour ou presque, elle m’est familière. Voilà en tout cas la première expérience qui m’a valu d’entrevoir cette forme d’angoisse très particulière, sans doute insupportable dans une situation commune mais qui ce jour là, dans la méditation qui m’accompagnait souvent, m’a semblé «naturelle» bienveillante. Depuis cette familiarité l’a rendue confortable, voire essentielle à mon bien être, en prenant la forme d'une curiosité fondamentale. Les années passent, cette découverte ontogénique, ne s’est jamais éloignée, m’a aidé en cas de difficulté où les échecs, déconvenues, souffrances ont croisé ma route. Et je me suis mis à introspecter continûment mon fondement psychologique. Puisque que la personne que je pense être, n’est qu’un cas particulier de ce qu’elle pourrait être, comment s’est t’elle formée tout de même ?
Sans me rappeler précisément comment ma réflexion s’est condensée en la matière, la forme qu’elle a fini par prendre m’a paru tellement limpide que j’en fait un fondement solide. Et j’en viens au modèle décrit dans la suite.
La première heure de vie est passionnante à observer. Hélas peu de personnes ont cette occasion avec une certaine distance. Ma première fonction étant l’oxyologie, nous disons aujourd’hui urgentiste, médecin de Samu, vous le devinez ce loisir de la distance n’a pas été mon lot quotidien. Au contraire dans mes interventions comme intervenant dans l’urgence néonatologique au lit de la parturiente et de la couveuse du prématuré, réparties dans les petites maternités des Côtes d’Armor et principalement la nuit. Aussitôt arrivé, obtenir le dossier, les dernières info depuis l’appel, la préparation du plateau technique, les rappels des protocoles à l’équipe, tout ça dans le meilleurs des cas. Souvent c’était beaucoup plus direct, sur la sonde d’aspiration, l’épicrânienne, le capteur de PO2 trans-cutané, l'intubation, l'ambu, le ventilateur, les lampes à infrarouge, le scope etc. . Mais dans les meilleurs des cas, c’était un moment d’émerveillement, tout était fait par l’équipe, la nature avait bien fait les choses. Quelques compliments rassurant aux heureux parents et je pouvais prendre un peu de distance.
<blockquote>digression ....... [[Essai pour un modèle de psychisme objectif/néonatologie et angoisse primitive|la néonatologie comme indice de l'angoisse primitive]]</blockquote>
Fréquemment dans ces cas le bébé, se met assez rapidement à crier, il s’agite, il fronce, même sur la chaleur du sein de sa mère. Bon allez le ''dextro'' est un peu bas et selon les circonstances il va recevoir la solution à son malaise. Au mieux le sien de la mère où déjà suinte le précieux colostrum ou en cas d’empêchement technique quelques ml de glucosé à 10% dans un biberon à bonne température. Mais le voilà qui crie de plus belle, le contact du téton ne le calme absolument pas, les premiers jets de lait déclenchés par la libération hypophysaire de l’ocytocine déclenchée par les cris, ne le calment pas non plus. Le réflexe de déglutition fonctionne, mais même après les premières déglutitions l’enfant n’est toujours pas satisfait! Que ce passe t’il? Ce nourrisson serait t’il démuni du moindre raisonnement? Ben oui bien sûr, nous savons depuis longtemps que l’être humain fait partie des mammifères les moins équipés à la naissance. Cette souffrance du nourrisson dans sa première heure de vie est démonstrative de «l’angoisse primitive». Sait il ce qu’il est entrain de vivre ? ...non. En rien, ni la cause, ni le moyen, ni même le résultat ne lui sont connus.
Voilà ce qu’est {{g|l’angoisse primitive}} absolument universelle pour les êtres humains en construction. Cette angoisse va être le climat de toute cette construction jusqu’à ce que dans chaque situation, l’enfant, puis l’adolescent et le jeune adulte ait pu transformer la situation inconnue en objet conscient ou et subconscient capable de répondre à l’urgente question du devenir et de l’invariant des réponses. Le deuxième jour le nourrisson est déjà beaucoup plus «raisonnable», la mémoire des séquences de ses premières heures le dispense de cris inutiles, et fatigants. Dès qu’il sent le lait dans sa bouche, son parti est pris, il tête avec ardeur. Puis le troisième jour, les cris cessent dès que l’odeur du sein se rapproche. L’olfaction, un des canaux les plus précoces et puissant est à l’œuvre avec une connexion mono axonale directe au rhinencéphale du cerveau primitif lequel est connecté à de multiples régulateurs physiologiques. Il est même possible de constater qu’un linge imprégné de l’odeur de la mère aura un effet calmant pour l’impatience du nourrisson…. Transitoire car bientôt la supercherie est démasquée par l’enfant et pas question de le tromper sur ce coup là. Plus tard avec le bruit d’un biberon agité, la voix des parents, et avec la première détection des images floues, l’apaisement sera de plus en plus anticipé, il sera même possible d’observer les traits, le chant, de la réjouissance avant la satisfaction réelle du besoin. Quelque chose de nouveau, une acquisition s’est donc opérée. Un observateur attentif voire musicien notera que les cris et pleurs d’un bébé, d’un enfant changent très rapidement lors de ses premières «frustrations» , apprentissage. Je suppose une connexion neurochimique complexe entre l’«aire du cri» et celle des objets psychiques forgés hors de la gangue primitive, de l'angoisse primitive, par les coups des épreuves successives.
La rapidité fascinante de ces acquisitions doit nous interpeller. Si ce petit cerveau encore immature fournit un tel effort c’est que «l’angoisse primitive» est sans doute insupportable. Il lui faut un palliatif immédiat. La construction d’objets capables de la circonscrire, de la prévenir, de la sublimer. Alors «l’angoisse primitive» s’effacera devant une angoisse beaucoup plus acceptable, qui sera «l’angoisse objective et même conceptuelle», celle qui tient dans les mots parfois les plus effrayants certes mais des mots connus, des objets psychiques reproductibles, prévisibles, invariants.
Cette construction urgente, indispensable de tels objets finissent par former un monde, que je qualifie de «premier monde construit». Passez le film d’une existence et vous trouvez que ce monde touche à tout. D’abord s’identifier comme autonome de l’environnement. Le haut, le bas, la bouche, le ventre, les bords du berceau, les images «utiles», le déplacement, éviter de se cogner, donc pouvoir distinguer le JE physique du NON-JE physique. Bien sûr toute situation totalement inconnue tombe sous le joug de «l’angoisse primitive» et devra être «résolue» dans l’urgence. Ce premier monde construit prend donc une valeur immense, le seul îlot viable dans un océan d’inconnus, pas question de le lâcher ou même de le mettre en doute, sinon c’est revenir à la case départ, la terrible «angoisse primitive».
L’ontogénie humaine est donc assemblée par une forge infernale et universelle. Bien entendu les objets construits dans l’urgence sont rapidement influencés par l’environnement général et social en particulier. La place de la personne, du «JE» lui même dans ce «premier monde» construit connaît donc des formes différentes et en partie déterminées par la manière dont les situations inconnues se présentent. C’est déjà l’éducation. Ce qui importe ici, c’est de se rappeler que si l’on admet un déterminisme par l’éducation, il n’est toutefois pas possible de réduire ce «JE» et ce «premier monde construit» à l’action éducative. La caractéristique essentielle de ces objets est leur justification vitale. C’est la contrainte de l’ontogénie humaine. Il faut aboutir à tout prix à un premier monde efficace pour faire disparaître l’angoisse primitive au profit d’angoisses conceptuelles: peur de se cogner, de manquer, de mourir etc. Ainsi l'être humain trouve sa sérénité.
Ce premier monde construit sera donc ce qui «est» et toute remise en cause de son monopole sera anéantie par l’interdiction de se RE-trouver devant l’angoisse primitive. C’est la raison pour laquelle, poser que ce qui «est» n’est qu’un cas particulier des possibles est plutôt rejeté dans les conversations habituelles. C’est là notre handicap ontogénique, la limite intrinsèque de l’imagination.
S'il est intellectuellement possible de poser cette proposition, elle sera écartée par notre filtre psychologique préconscient, pour maintenir les invariants du premier monde construit. "Je ne saurais mettre de distance avec ces objets construits «vitaux» qu’à la condition d’une sécurisation exceptionnellement réalisée et d’une curiosité téméraire". Dans les autres cas une discussion philosophique effleurera la question existentielle, mais ne modifiera pas les croyances du JE. On dit souvent la nature revient au galop. Il faut entendre que le premier monde construit imposera son monopole car il est lié dans le subconscient à la pérennité du JE et de ses invariants, de son intégrité.
Une fois le JE constitué dans le premier monde construit, l’angoisse primitive est résolue. Puis l’être social s’agite dans les relations avec d’autres personnes et un environnement moins immédiatement vital, où ce sont des angoisses conceptuelles qui sont motrices de la construction d’objet. Les angoisses conceptuelles peuvent découler d’une construction personnelle, peur des araignées mais elles sont surtout socialement transmises par le langage social. En exemple la peur de maladie transmissible est particulièrement élaborée, conceptuelle, mais implique le JE et le SOI ce qui fait la difficulté d’une bonne appropriation.
[[Fichier:Ontogénie.png|vignette|schéma illustrant le processus ontogénique dans "le modèle de psychisme objectif"]]
Jusqu’à présent nous avons parlé d’un JE élaboré sous la contrainte d’une «angoisse primitive dont l’ampleur dépend de l’environnement. Par exemple les études psychosociologiques rapportent que les enfants qui ont grandi dans un climat de violence familiale, ou une guerre ont une personnalité fortement perturbée. Lorsque «l’angoisse primitive» est exacerbée par la violence, la constitution du JE s’arrête se bloque. Il se produit un hiatus constitutionnel. Par exemple l'enfant victime de maltraitances sexuelles ne pourra pas construire ses objets psychiques relatifs à son ontogénie sexuelle. Ainsi nous comprenons que l’exposition de la personne à un évènement sexuel la confrontera d’emblée à «l’angoisse primitive». Ces situations douloureuses entraînent une forme d’évitement, ou autre réaction insolite. Son JE n’aura pas pu se construire sur cette inconnue qui lui a été infligée violemment. Alors c’est le hiatus qui encoche la courbe de croissance du JE.
Nous verrons les conséquences de ces hiatus de façon quasiment graphique lors des processus de régressions pour fusion qui sont sans doute les phénomènes les plus complexes jalonnant la vie normale d’un être humain.
<blockquote>digression ....... [[Essai pour un modèle de psychisme objectif/JE et NonJE|JE et NonJE ligne de front contre l'angoisse primitive]]</blockquote>
== les outils et les objets ==
L’homme est souvent décrit par ses capacités, ses acquis. L’appropriation, la fabrication d’outils, qui sont aussi des objets mais avec la capacité de transformer d’autres objets font partie de toutes les fresques paléontologiques . Ces outils ne sont pas toujours matériels. En arithmétique l’addition par exemple comme opérateur est un objet symbolique, agissant sur des objets opérandes. C’est un objet-outil symbolique conscient. Ajoutons que nous verrons aussi des objets outils subconscients produisant des «opérations subconscientes».
Chacun pratique cette interdépendance avec l’outil qui étend l’être jusqu’à ressentir que sans les outils il n’est plus rien, qu’il perd son image humaine. C’est même plus fort que ça, puisque sans une palette d’outils ce sentiment de dépersonnalisation devient angoissant. La feuille blanche sans crayon, sans gomme, sans «inspiration» est un exemple simple. Cette situation par rapport aux outils est donc générale, des premiers âges, jusqu’au handicap de la vieillesse, des plus anciens métiers aux plus récents avec une relation à l’objet de plus en plus indirecte, complexe, abstraite.
<blockquote>digression ....... [[Essai pour un modèle de psychisme objectif/viol d'enfant viol d'adulte|différence des séquelles dans le cas d'un viol d'enfant et d'adulte]]</blockquote>
L’interaction objet / outil est essentielle dans l’appréhension de l’un comme de l’autre. L’objet est associé aux outils qui l’extrait, le façonne, le transporte, et réciproquement, que serait un outil sans destination vers un ou des objets. Et oui Il en va de même par rapport à la construction de notre psyché ! Le nouveau né, dispose déjà de quelques outils. Alors on peut considérer que la sensibilité tactile encore frustre, par expérience successive, l’amène à distinguer son propre corps de l’environnement, puis à hiérarchiser, mémoriser, reconnaître et l’un et l’autre et leur relation, avec une acuité, une anticipation croissante. De l’inconnu émerge le prévisible, puis le sentiment de sécurité, voire de puissance comme sur la simple pâte à modeler.
Je renvois ici à mon concept «d’angoisse primitive». Ce mécanisme d’appropriation, de perfectionnement dans l’usage des outils est indissociable de l’ontogénie (constitution du JE) et de la construction du Soi (relationnel, social). Les outils disponibles conditionnent la construction du JE et du Soi. L’homme sort de cette analyse comme un être par essence social. Au delà des premières expériences sensorielles des premières minutes de vie, l’intervention des outils conditionne, rend possible, configure sa personne, son identité, ses acquisitions conscientes et subconscientes par les expériences de l’éducation, ou fortuites, personnelles, inopinées. C’est bien en effet la vie sociale, avec les parents, voisins, école, etc qui fournit les objets outils et donne l’exemple de leur usage, ou de leur mésusage, ou de leur interdiction, et produit les objets en résultant.
Il faut entendre que cette définition très large du mot «objet» contient une connexion entre le vécu personnel, intime, et les relations sociales plus ou moins structurées, découlant de l’usage d’outils dans un sens très général. Ce fait explique pourquoi si beaucoup d’expériences humaines sont identiques, elles forment des objets non identiques, divergents, voire incompréhensibles de l’un à l’autre. Selon l’ordre d’appropriation des outils, les objets qui constituent, le JE et le Soi, des uns et des autres seront différents. Il y a donc une grande dispersion des personnes sur un fond universel des mécanismes, donc l'utilité d'une modèle. Voilà sans doute le premier défi de la communication. Par exemple l’empathie qui est très répandue s’appuie sur l’expérience commune et universelle de certaines joies ou souffrances relativement à des expériences très répandues, voire intégrées à l’éducation, comme le doudou, au point que le ressenti est «synchronisé» d’emblée entre l’enfant et les parents premiers initiateurs sociaux.
<blockquote>digression ....... [[Essai pour un modèle de psychisme objectif/outils objets lien symbolique| ouils objets psychiques et liens symboliques]]</blockquote>
''A contrario'' l’incompréhension est reconnue par la société, qui dans le meilleur des cas propose la tolérance et le dialogue pour la dissoudre. Dans ce cas si l’on veut généraliser, c’est l’expérience partagée de la tolérance et du dialogue (des outils) qui débouche sur une empathie, non pas à propos d’un objet commun cette fois, mais secondaire à cette démarche réciproque de la mise en œuvre d’outils. C’est alors cette œuvre commune qui devient l’objet de l’empathie, un objet symbolique, un lien symbolique subconscient.
<blockquote>digression ....... [[Essai pour un modèle de psychisme objectif/cytologie et communication humaine|un comment la cytologie et la physique des échanges membranaires ouvre une réflexion sur la communication humaine]]</blockquote>
Les outils sont donc indispensables à la construction des objets dans la définition étendue qui précède, allant du capteur sensoriel cutané, l’outil empathie et le vélo comme exemple d’objet devient à son tour outil. Si nous considérons que la personne est le résultat de la mémorisation d’expériences découlant de son interaction avec l’environnement et de l’usage d’outil, et si ce résultat aboutit à ce Je et ce Soi , comme collection d’objets , alors vient la question de qu’est ce que la liberté? En effet la description ci dessus est mécanique, systématique et pourrait faire douter que la personne humaine dispose de créativité, d’imagination et d’autres facultés auto-génératrices non liées directement à la socialisation. Et pourtant ces facultés ne font aucun doute, c’est donc que d’autres mécanismes existent et dépassent ce cadre.
<blockquote>digression ....... [[Essai pour un modèle de psychisme objectif/sémiologie du hiatus ontogénique|une sémiologie du hiatus ontogénique]]</blockquote>
L’empathie met déjà la puce à l’oreille, car les «objets» impliqués dans cette expérience sont les personnes elles mêmes. «l’outil» de cette empathie est en fait une relation symbolique de similitude, d’équivalence, entre des expériences partagées lors de l’ontogénie ou édification du JE. Il y a donc là un outil d’un nouveau genre (ici je référerai volontiers au concept de neurones miroirs, j'interpelle le lecteur pour qu'il partage un lien efficace). Il ne s’agit pas d’une interaction entre une personne et un environnement plus ou moins concret mais cette fois entre deux personnes qui mobilisent leurs acquis ( JE, SOI et leurs objets) par une relation symbolique qui est comme l’outil. C’est donc une interaction purement psychologique. Comme cette interaction est très universelle, elle peut être considérée comme constitutionnelle. Je qualifierai ces objets constitutifs du Je et du Soi de «psychologiques». L’empathie apparaît comme l’ outil psychologique, dont la fonction est d’obtenir, un lien symbolique entre objets subconscients acquis par plusieurs personnes.
<blockquote>digression ....... [[Essai pour un modèle de psychisme objectif/enseignement de l'empathie aux soignants|l'enseignement de l'empathie aux soignants]]</blockquote>
Dans le droit fil, la créativité, l’imagination, l’intuition trouvent leur place comme outil agissant à partir de , ou sur des objets psychiques pour en produire d’autres. Et la merveille c’est que l’artiste, le poète ou l’amoureux ou le chercheur traduisent ces relations symboliques en objets «classiques» par des outils usuels pour les exposer aux autres.
<blockquote>digression ....... [[Essai pour un modèle de psychisme objectif/psychisme auto-controlable|l'être humain et son apprentissage de l'auto-contrôle]]</blockquote>
== La mémoire, les objets. ==
Tous les objets psychiques forment t’ils un ensemble homogène comme des bibelots sur une étagère dont l’extrême variété fait abandonner tout espoir de classification?
Pour faire simple une distinction entre objets conscients et objets subconscients est assez facile à éprouver. Je propose d’argumenter à propos des différences de types, et de contenu des objets conscients d’une part et subconscients d’autre part. Il va de soi que pour qu’un objet existe il faut qu’il persiste en mémoire. Je propose d’argumenter des points communs et des différences entre les processus mémoriel des objets conscients et subconscients. En même temps on peut reconnaître que le purement conscient et le purement subconscient n’est pas toujours évident.
<blockquote>digression ....... [[Essai pour un modèle de psychisme objectif/premier monde construit et incommunicabilité| retour sur le premier monde construit et les circonstances de l'incommunicabilité]]</blockquote>
J’argumenterai que les évocations des objets conscients et les invasions des objets subconscients expliquent l’instabilité mémorielle des uns et des autres. J’illustrerai, l’influence des invasions des objets subconscient dans le préconscient, sur le devenir des objets conscients et des objets subconscients eux mêmes.
Avançons dans la définition de ces qualificatifs. Comme exemple simple, les tables de multiplication sont des objets conscients, comme un vélo, une casserole etc. Une caractéristique commune de ces objets, c’est qu’on s’en rappelle, qu’on peut les évoquer facilement, et même les communiquer à autrui. Une certaine familiarité avec soi même, ou des descriptions littéraires permettent de prendre conscience (oui c’est un paradoxe qui va s’éclaircir) que ces objets comportent aussi des attributs subconscients. Juste comme exemple, le vélo est pour bon nombre un rappel profond, de liberté , d’émancipation, de gestion du risque, d’optimisme qui ne revient à l’esprit que dans un état mental particulier, éventuellement recherché. Si les attributs conscients du vélo découlent d’un apprentissage plus ou moins savant, ses attributs subconscients comme l’émancipation assez générale pour déboucher sur une empathie, sont parfois contrariés. Des chutes, non compensées par les soins ou la compassion donnent lieu pour certaines personnes à une association, un lien symbolique: vélo entraîne douleur et échec. Ces attributs subconscients majoritairement partagés comme ici l’émancipation manqueront à l’objet du «malchanceux». C’est un cas fréquent où une empathie éprouvée de façon fréquente, peut se trouver en échec et conduire à un sentiment d’incommunicabilité de la personne «malchanceuse» par rapport à un groupe social majoritairement «chanceux».
C’est un domaine où la topographie cérébrale prend un sens fonctionnel, avec son cortège de modulation des neuromédiateurs et des hormones. Les connaissances sur la topographie fonctionnelle cérébrale remontent à des travaux cliniques depuis le 19{{ème}} siècle et sont éclairés par des imageries fonctionnelles alimentant la neuroscience moderne. Ainsi telle aire a été identifiée comme celle du langage, telle autre de la motricité ou de la sensibilité avec une telle précision qu’une sorte de projection dystrophique mais reconnaissable, du corps sur la «coupole» corticale, est décrite comme l{{’}}''homoculus''. Je ne suis pas du tout à jour des recherches en neuroscience, j’en préviens le lecteur qui voudrait trouver ici une quelconque référence en ces domaines. Je recommande la lecture d’articles à jour sur ces questions, à ma connaissance les données des études cliniques anciennes sont plutôt consolidées par la neuroscience actuelle avec une finesse accrue et un champ de recherche de plus en plus vaste comme toujours en science. A noter que les imageries modernes vont jusqu’à contribuer à l’étude des troubles dépressifs, des schizophrénies et bien sûr des démences entre autres.
Ces découvertes invitent à une conceptualisation structurée des objets.
<blockquote>digression ....... [[Essai pour un modèle de psychisme objectif/notion de classe d'objets|la notion de classe d'objets et d'outils psychiques]]</blockquote>
Puis les études de cas déficitaires ont permis de décrire des syndromes psychiques liés à des altérations topographiquement définies entraînant des tableaux reproductibles, le syndrome frontal, pariétal etc. Mais c’est surtout la grande révolution de la biochimie et de son observation dynamique qui permet un bond considérable dans la compréhension de l’activité cérébrale et y compris des phénomènes psychologiques normaux ou pathologiques.
Nous revoilà dans le substratum de l’objet psychique. Le conscient est installé quelque part dans le cerveau et le subconscient ailleurs. Il y a des relations, d’association, des liens fonctionnels, symboliques entre les deux mondes de même qu’entre objets d’un même monde. La lecture d’articles de Wikipédia (pour les plus accessibles) permettra de critiquer ces définitions succinctes. Mais pourquoi réinventer le fil à couper le beurre quand le voisin en dispose d’un tout neuf? Ainsi donc nous disposons de connaissances certaines sur l’influence de molécules naturelles: hormones, endorphines, neuromédiateurs, molécules «simples» comme le glucose, les acides aminés et même certains acides gras sur l’état mental ressenti, observé, déclenché etc. Bien sûr là aussi il y a des cas rudimentaires comme les conséquences de l’alcoolémie, celles de l’œstrus, ou de l’intoxication au monoxyde de carbone pour donner des exemples extrêmement disparates pouvant servir comme porte de recherche car il faut absolument voir large.
D’autres cas sont encore plus raffinés avec une compétition entre facilitation_inhibition entre plusieurs groupes chimiques, dont l’effet est exprimé par la personne, qui par entraînement ou contrainte ou interdit, va enclencher des réactions, des conduites, des anticipations de rétrocontrôle, ou d’enchaînement quasi préprogrammés impliquant ces molécules. Pour approfondir et détailler nous trouverons de nombreux exemples: lutte contre l’endormissement, contre le froid, influence de la nervosité, la colère, des pulsions sexuelles ou alimentaires, des addictions, de l’ennui, les céphalées etc etc .
Dans ce modèle je pose que si les mécanismes sont universels, leurs aboutissement va différer entre les personnes selon leurs antécédents cumulés dans le Je et le Soi. En particulier la conclusion satisfaisante ou non de ces mécanismes va pondérer l’objet par un facteur de «récompense» (dopaminergique,sérotoninergique) ou l’absence de ce {{g|climat biochimique}}, et influer lourdement sur le désir de reproduire ou d’éviter ces situations. Ici il faut explorer le vaste champ des addictions comme le tabagisme ou de phobie comme peur de l’eau. Ces exemples banals pour montrer ce qui peut advenir en matière alimentaire ou sexuelle ou d’apprentissage dans des pathologies lourdes.
Un objet conscient ou subconscient contient donc au moins un attribut, une couleur, sa qualification comme favorable ou à rejeter. Nous verrons donc que toutes évocation entraînera une invasion du préconscient avec ce filtre. c'est la voie principale de modification des acquis suivants.
== Et la mémoire dans tout ça? ==
Et bien là aussi la topographie et la biochimie expliquent la différence entre la mémoire immédiate, la mémoire à long terme, la facilitation ou l’inhibition d’évocation des connaissances, des évènements conscients d’une part et subconscients par ailleurs et des deux à la fois. La mémoire est donc une fonction de base du cerveau psychique, c’est le minimum syndical d’une certaine manière, c’est le statut figé (en première approximation) de l’objet. Elle représente le procès verbal d’un apprentissage, d’un évènement, et de leur «climat biochimique» sérotinino-dopaminergique en particulier.
Mais il faut aussi prendre en compte sa remise en conscience par une évocation plus ou moins facile ou spontanée et plus ou moins transformée la encore par le contexte biochimique.
Comme exemple si je cherche 2 fois 2, ça viendra immédiatement. Si je cherche à me rappeler ma première chute de vélo, forte chance que plein d’autres évocations surgissent et m’égarent dans le calendrier de mon existence et dans le ressenti douloureux de la chute. Ai je été ramassé avec empathie, avec des soins, avec des reproches, des encouragements, une histoire drôle, la menace d’hospitalisation, un vélo brisé ou indemne et j’en passe. Récemment il a été démontré que l’objet mémorisé n’était pas inaltérable et que les évocations répétées pouvaient le transformer en fonction du «climat biochimique» et des liens symboliques induit à l’instant de l’évocation qui peuvent se constituer après l’évènement. Il faut donc admettre que la mémoire remanie régulièrement les objets, leur climat neurochimique, et donc les liens symboliques avec d'autre objets ou outils.
Ces remaniements seront conscients lors d’un apprentissage intellectuel, avec comme exemple simple l’acquisition d’un sens enrichi pour un mot déjà connu. Toujours dans le domaine conscient, le trou de mémoire sera particulièrement intéressant à étudier tant il dépend du contexte neurochimique, et des processus d’invasion à l’œuvre dans le préconscient, c’est le cas du «trac» qui sera éventuellement résolu en mettant à profit des invasions bienfaisantes.
<blockquote>digression ....... [[Essai pour un modèle de psychisme objectif/remaniement mémoriel et manipulation d'opinion|les remaniements mémoriels et la manipulation de l'opinion]]</blockquote>
De là il est facile d’entrevoir que le remaniement mémoriel des objets subconscients sera mis à jour, lorsque l’introspection permettra de repasser le film du vécu.
Toujours comme exemple, le contenu subconscient du vélo avant et après la chute.
Ce qui est facile dans un cas simple, empathique, apparaîtra plus complexe face à des traumatismes plus graves et intimes, conduisant à une situation d’incommunicabilité.
C’est le moment de glisser une référence connue à des manipulations traumatisantes comme les «sérum de vérité», les techniques de propagande et de conditionnements, de suggestion, qui hélas se pratiquent jusque dans les boutiques de charlatan où les cellules de torture.
Une référence positive par contre ira au chimiothérapie documentée de certains syndromes post-traumatiques ou en encore à la galvano-thérapie moderne de certaines psychoses.
Voilà qui illustre que le remaniement mémoriel est en fait courant et pourquoi sa connaissance par un patient lui même, et l’effet d’un exercice mental dont il a la maîtrise peut conduire à un effet salutaire pourvu que les effets contraires soient prévenus par un protocole éprouvé.
C’est le moment de prendre conscience que les objets conscients et subconscients se distinguent aussi par leurs structures mémorielles en plus de leurs outils d’acquisition. Il me paraît intéressant de concevoir la notion d’objet d’une manière moderne. La théorie des ensembles objets définit les objets comme éléments de classe d’équivalence. Voilà un terme savant, d’accord, mais un exemple épargne la complexité apparente. Un objet qui a 2 roues, sur lequel on peut s’installer, et avancer en pédalant est un vélo puisqu’il possède tous les attributs de la classe vélo. Cette analogie rudimentaire entre objets et mathématique est connectée à la psychologie. A ma connaissance Piaget décrit que l’un des processus d’apprentissage fondamental de l’enfant est «l’analyse généralisatrice». L'analyse crée une classe et y place en même temps les objets pour généraliser.
Bien sûr l’esprit humain généralise ce mécanisme qui semble incontournable, comme «inscrit en dur» dans notre cortex. Il construit des classes mères ou filles, les secondes héritant des premières en y ajoutant de nouveaux attributs. Ce mécanisme fondamental permet une arborescence très performante, économique pour les processus d’évocation mémorielle des objets conceptuels et d’ailleurs il est systématiquement utilisé par les pédagogues. En science chaque spécialité crée une arborescence à sa convenance où plus justement selon les outils qu’elle mobilise.
L’arborescence issue de «l'analyse généralisatrice" des objets conscients, et de leur mémorisation, et de leur évocation semble être un modèle efficace. A ma connaissance il n’y pas à ce jour un substratum neuronal et biochimique de ce modèle. Notons toutefois que tous ces processus conscients sont fortement influencés par le contexte social, par la pollution des stimuli comme les bruits parasites, par l’état psychologique général, par son climat biochimique, qui contribuent au filtre préconscient comme je le décrit dans mon «protocole». En exemple une personne, convaincue par le mépris qu’elle n’est pas capable de comprendre ou d’apprendre, exposée à l’objet subconscient «mésestime de soi», n’apprendra effectivement rien. L’inhibition est aussi redoutable que la stimulation est efficace, d’où le concept révolutionnaire de {{g|pédagogie du succès}}.
Si le climat d’acquisition d’un objet conscient est assez facilement organisable celui d’un objet subconscient l’est beaucoup moins. La pédagogie veillera dans le premier cas , mais point de mise en situation vraiment organisée pour le premier baiser, pour rester simple. C’est une allusion sur l’implication du filtre préconscient dans la constitution des objets conscients mais plus particulièrement pour les objets subconscients.
== Et alors quelles différences avec les objets subconscients ? ==
Il faut préciser un point crucial du modèle, ce filtre qui s’intercale entre les évènements et l’activité psychique, c’est le concept du préconscient. Ce modèle s’appuie d’abord sur un constat facile à admettre y compris dans l’activité consciente. La quantité d’information, de stimuli qui se présente à nos organes sensoriels (nous parlerons d’un organe non-sensoriel, «intérieur» plus tard) est tellement importante, qu’un traitement exhaustif de ces informations épuiserait immédiatement notre machine neurochimique.
En effet cette machine n’a pas de capacité infinie, à l’instar de ses réactions enzymatiques, elle est saturable et c’est donc un filtre de réjection qui protège la machine de la surchauffe. Un exemple extrême, qui montre les conséquences d'un déficit de se filtre est donné par l'hyperalgie du syndrome thalamique, et ses douleurs insoutenables. Dans le cadre physiologique le capteur visuel est une belle démonstration. La réactivité (et son corollaire la période réfractaire) des photorécepteurs garantit, que par la saturation biochimique, la captation de stimuli si leur fréquence dépasse une certaine valeur sera ignorée, rejetée. Ainsi les données physiques seront disponibles un temps suffisant et sans parasite pour que le cortex occipital en particulier, ait le temps de les analyser. De plus en fonction des circonstances, intérêt, urgence, procédure de survie, la fréquence de réjection varie. En cas de chute de vélo, le film est enregistré à plusieurs fois les 25 images secondes, et il est possible de la ré-évoquer au ralenti. Ce phénomène est aussi connu en cas d’agression lorsque son évocation n’est pas bloquée par les mécanismes que nous aborderons. C’est le syndrome post-traumatique.
=== Le filtre préconscient est donc adaptatif mais surtout perturbable et modulable. ===
Pour souffler un peu, un cliché qui rappelle que toute activité neurochimique est saturable : {{g|plus et ça bloque}}.
De plus une fois franchi le filtre de réjection, les stimuli considérablement moins nombreux vont faire l’objet d’un nouveau filtrage.
C’est en fait l’amorce du classement qui pour l’objet conscient relève de l’analyse généralisatrice et qui pour l’ objets subconscient sera surtout marqué par son agrégation avec son contexte neurochimique et humoral.
Alors se présentent plusieurs cas :
* Soit l’évènement interpelle l’activité consciente, c’est un discours, une image signifiante. Il est alors présenté à la machine intégrative, arborescente, décrite ci-dessus puisqu’il est d’emblée classable. Ex... je vois un vélo.
* Soit l’évènement est anticipé, connu, banal ou considéré comme tel et il sera exclu de l’analyse consciente car il ne l’interpelle pas. Par exemple le bruit du vent dans les arbres. Le subconscient pourra donner ou non lieu à un classement dans les catégories subconscientes où les classes ont une forme différente par rapport aux classes {{g|conceptuelles}} identifiables dans l’activité consciente. Nous décrirons ces classes subconscientes plus loin.
* Soit l’évènement est brutal, et/ou non-anticipé, imprévu, et/ou inimaginable, ou terrorisant, toutes circonstances qui déclenchent un blocage du processus préconscient, il ne pourra pas être classé. Les exemples les plus courants sont les agressions, les accidents, les viols, et la maltraitance subie dans l’enfance. Au fil des travaux, cette situation a été qualifiée de traumatisme, d’autant qu’elle inaugure une situation bien étudiée aujourd’hui désignée par syndrome post-traumatique. Ce blocage est topographiquement défini par l’implication de l’hippocampe, des modifications hormonales à action générale de «qui-vive» (ex adrénaline,) de stress (hypercorticisme), de dysrégulation hypophysaire, jusqu’à des modifications des structures cérébrales observables dans les recherches par imagerie médicale. Ce drame psychique se prolonge par une altération des fonctions neurochimiques habituelles. Le filtre préconscient est sidéré bloqué. Sorti de cette phase de sidération il est perturbé, conduisant à un épuisement neurochimique pouvant perturber donc toutes les fonctions et acquisitions: apprentissage, sommeil, sensation de bonheur, libido, élan vital etc.
<gallery>
Fichier:STRESS ET DEPRESSION 1.webp
Fichier:STRESS ET DEPRESSION 2.webp
Fichier:STRESS ET DEPRESSION 3.webp
Fichier:STRESS ET DEPRESSION 4.webp
</gallery>
La situation peut se chroniciser au-delà des 3 mois et le fonctionnement psychique s’en trouve déformé indéfiniment.
C’est le handicap post-traumatique.
D’où l’importance reconnue aujourd’hui des conséquences d’une absence ou d’une mauvaise prise en charge initiale du syndrome traumatique.
Le classement :
Il faut souligner que la forme arborescente que prend le classement des objets conscients est un modèle solide, éprouvé en psychologie de l’apprentissage, avec l’analogie des ensembles, des classes d’équivalence et des héritages. Encore l’exemple du vélo est facile et tout le monde comprend alors ce qu’est un vélo-moteur, un vélo qui {{g|hérite}} d’un moteur.
Le classement des objets subconscients n’est pas superposable à ce modèle. L’évènement bienfaisant du berceau douillet s’enrichira naturellement de celui du lit douillet et sans doute de la «doudoune» pour donner un exemple de portée populaire. La contemplation de l’arbre en face de la chambre avec son feuillage changeant, les bruits qu’il émet à la fois dépendant de l’état du feuillage et du vent, et de la myriade des pénombres projetées, remplira le vaste coffre au trésor des émotions bucoliques et du sentiment d’harmonie.
Ce qui est remarquable dans cette mémorisation outre sa structure «agrégative» c’est son énorme capacité de stockage sensoriel. Le flux de donnée stockée est incomparablement supérieur à celui des objets conscients et donc la puissance de leurs invasions sera d’autant plus grande. Cette hyper-définition sensorielle de l’objet subconscient est d’ordre physiologique. Comme si ce classement assez simple, sans les raffinements nécessaires aux concepts, laissait notre énergie psychique disponible pour une acquisition massive multi-piste à grande vitesse d’acquisition. Il en résulte que l’objet subconscient est massif, global. Les pistes de l’enregistrement sont chacune connectée directement à un organe sensoriel. Ce caractère massif rend bien compte de l’effet de son évocation, à l’image de la madeleine de Proust, où une effluve discrète déclenche une remise en situation encore plus prégnante que le vécu lui même.
Je désignerai cette situation par le mot {{g|invasion}}.
Le stimulus déclenchant étant comme une {{g|gâchette}}.
Il faut rappeler une fois de plus que l’objet comporte dans ses attributs, sa pondération propre entre le «plateau» récompense, satisfaction, gratification, jouissance et celui punition, frustration, culpabilisation, souffrance et leurs attributs biochimiques. Ici il faut souligner que «l’invasion» entraînera la restitution de ce contexte amplifiée par sa répétition à l'image des démonstration de Pavlov. Cette remarque doit attirer l’attention sur la dangerosité des déclenchements d’invasions, circonstancielles ou par sollicitations volontaires. Une incitation à l’évocation d’un objet subconscient qui contiendrait un attribut «souffrance» va renforcer l’attribut souffrance donc l’aggraver.
Nous verrons qu’il est possible de fournir les outils ayant l’effet inverse. Retenons qu’avant toute manipulation par soi même ou avec l’aide d’un tiers, d’un objet subconscient, il faut absolument que le sujet enfile une {{g|combinaison de protection}}. Cette combinaison et la manière de l’enfiler, réclame une compétence à la portée de chacun, pourvu qu’en plus d’une conception claire de la nature des objets en causes, comme je l’espère l’exposé actuel y contribue, deux techniques bien réglées d’évocation soient réalisées.
Ce sont les techniques d’évocation associative et dissociative selon le {{g|protocole}} en pièce jointe à cet essai (ce protocole empreinte à la Programmation Neurolinguistique en se distinguant radicalement de certains de ses enseignements que je qualifie de dangereux, en particulier les ancrages avec intervention physique du praticien).
De même que nous avons vu le rapport constitutionnel et réciproque entre objet et outil que ce soit dans l’activité consciente comme subconsciente, nous venons de voir que l’objet possède une structure mémorielle qui varie en fonction de la nature de l’objet et du contexte de sa survenue. Nous avons vu les différences des processus mémoriels d’un point de vue structurel, l’arborescence du conscient versus l’agrégation, fusion du subconscient, mais aussi la différence fondamentale entre les contenus de la mémorisation des objets conscients prédestinés à la communication, à la prévision, au calcul , et les contenus des objets subconscients dont la destination nous échappent par définition mais qui constituent la plus grande part de la psyché. Cette dernière affirmation a été historiquement souvent combattue, voire réprimée par de nombreuses sociétés sans doute pour couper l’individu d’une source de motivation non contrôlable par la norme, comme l’empathie, l’inspiration, dans l’espoir aussi de mobiliser la totalité de l’énergie psychique au profit du collectif ou du pouvoir, en niant la personne et son histoire particulière.
Cette amputation qui continue dans l’époque médiatique, conduit une immense proportion des personnes à lutter contre des mécanismes neurophysiologiques et donc à se tourner le dos à elles mêmes. D’un point de vue pratique il est facile d’envisager qu’il est illusoire d’obtenir d’une petite part de notre psychisme conscient, qu’il maîtrise sa part majoritaire subconsciente, non conceptuelle, et son cortège biochimique induit.
== La manipulation des objets et les opérations entre les objets. ==
Partant du modèle du classement par équivalence des objets. Nous pouvons observer que des opérations entre ces objets deviennent possibles et même assez systématiques.
Pour ce qui est des objets conscients, un grand nombre d’entre eux se retrouvent qualifiés de concept. Pour exemple des objets chiffres vont se prêter à des opérations, et des relations de comparaison. C’est le fameux 2 plus 2. Mais les simples mots d’un vocabulaire se trouvent combinés dans la langue, dans un discours non prédéfini à l’avance, sauf pour les perroquets, mais en suivant une syntaxe. Voici donc des objets conscients, en mémoire, classés, combinables, pondérables etc. Donc la manipulation des objets conscients et les opérations sont indissociables de l’activité humaine perçue par tout un chacun. Cette activité cérébrale fait autant l’objet d’étude biologique que psychologique avec une convergence chaque jour plus affirmée. La (les) fameuse dyslexie est typique de ce point de vue. Longtemps classée comme débilité ou trouble caractériel, puis handicap, puis génétique elle est présentée avec des mécanismes de plus en plus raffinés, y compris ses imageries fonctionnelles cérébrales comme une particularité non rédhibitoire à l’apprentissage et peut être parfois avantageuse.
Pour ce qui est des objets subconscients il faut faire appel à des considérations bien moins communes. Admettre la présence d’objets subconscients est un fait récent, sauf à considérer que la méditation, les transes, les prières, les superstitions, les possessions, référaient au monde de l’invisible y compris au sein même des personnes. Ce subconscient est donc une mise au jour d’un fonctionnement cérébral inhérent au moins à la nature humaine.
Nous avons vu que ces objets, issus de l'agrégation des stimuli foisonnants, malgré le filtre de réjection, mobilisent la plus grande part de l’activité cérébrale Nous avons vu que les interactions entre ces objets sont nombreuses et qu’elles émergent parfois sous des formes imprévisibles. Pour exemple, La simple sensation de s’être «lever du bon pied» ou à l’inverse de «voir les choses en noir» qui se succèdent sans explications évidentes. Entre une sensation de bien être total et la tension insurmontable d’un syndrome post-traumatique, point de doute il se passe des choses et il faut essayer de comprendre.
Depuis la classique description de la madeleine de Proust et des flash post-traumatiques les indices se multiplient. Ces objets subconscients envahissent l’activité cérébrale à partir d’un stimulus qui peut être banal, évènement «gâchette». L’odeur déclenche l’invasion de la madeleine avec tout son contexte, lieu, personnes présentes, lumière de la salle, couleur de la nappe, crépitement du foyer, voix entendues etc . A un instant, une perception sensorielle par un seul canal sensoriel, déclenche l'invasion d’un événement complexe impliquant tous les canaux sensoriels y compris un canal non supporté par un organe sensoriel qui transmet une sensation de bonheur, le climat {{g|dopaminergique}}.
Cet exemple est démonstratif. L’objet subconscient est «global», c’est un duplicata qui toutefois connaître des remaniements complexes au fil de ses ré-évocations. Il est d’une extrême définition, il envahit totalement la personne sans intervention de calcul, de volonté. C’est «l’invasion». C’est comme un réflexe pavlovien de notre activité la plus évoluée.
L’artiste nous fait découvrir cette invasion reproductible et heureuse par un discours littéraire. Comme ce récit est facilement compris et qu’il renvoie à des situations semblables pour le lecteur, il faut y voir une invitation empathique. À noter que l’objet subconscient contient tellement d’informations, qu’avec l’entraînement qui convient, son évocation reproduit une situation approfondissant son évaluation consciente. Et voilà qu’un élément de la situation enregistrée mais non prise en compte à son origine revient au premier plan. Cette redécouverte est tellement puissante qu’elle renforce la pondération satisfaction d’une situation bénéfique. Pour exemple chaque fois que je ré-évoque selon mon protocole la situation où je me laisse traîner par mon bateau à voile en pleine mer, portant harnais et sous la vigilance de ma femme, cette invasion renforce sa valeur de bien être.
Voilà donc les caractéristiques des objets subconscients qui se dessinent: résultats d’un enregistrement multi-sensoriel à haute définition, classés en fonction de charges satisfaction_répulsion, liées à un "climat" neurochimique complexe mais certain, capables de produire non pas un souvenir mais une «invasion» qui peut produire au fil de ses répétitions un renforcement de sa charge satisfaction_répulsion.
<blockquote>TRES IMPORTANT ....... [[Essai pour un modèle de psychisme objectif/préconscient et objet gâchette|Illustration de "l' organe psychique", PRE-CONSCIENT et OBJET GÂCHETTE]]</blockquote>
Ces invasions sont donc capables de produire un «climat neurochimique» qui va fondamentalement influencer les futures acquisitions psychiques (conscientes ou subconscientes). Dans les circonstances communes ces invasions expliquent bien les sensations générales d’optimisme, ou d’irritabilité que chacun éprouve et reconnaît dans son existence et dont la banalité traduit la bénignité sauf à considérer qu'elles se pérennisent dans un mode obsessionnel.
Mais dans les cas de souffrances psychologiques, les potentialités des invasions dans le préconscient, expliquent les fortes perturbations des objets acquis sous l’emprise des invasions toxiques. Le filtre des réjections est perturbé, le filtre du préconscient soumis à une invasion «douloureuse» perturbera le classement et la mémorisation de l’évènement.
D'une part le filtre de réjection devient perméable, moins efficace, il laisse passer plus de stimuli comme pour mieux prévoir et parer à la situation traumatisante. C’est l’état de qui-vive, de phobie, des démarches d’évitement. Ce filtre se met à laisser passer des bruits en fait sans intérêt, rejette certain contact anodin, déclenche des fuites devant certaines images pourtant banales etc. Comme nous l’avons vu, la détérioration du filtre expose à l’épuisement neurochimique par surcharge en stimuli. L’épuisement conduit à l’état morbide en particulier la dépression {{g|bio-chimique}}.
D'autre part le filtre préconscient du classement est perturbé. Le climat de souffrance s’installe dans le préconscient fréquemment et durablement. Les évènements devant donner lieu à l’acquisition d’objets subconscients satisfaisants, gratifiants sont recouverts par le vert de gris, la morosité, et ceux qui hélas sont pénibles et frustrant cheminent sans entrave vers leur agrégat mémoriel délétère.
C’est alors que la manipulation, la combinaison entre objets s’opère, cette fois sous le règne de l'invasion toxique, c'est le "parasitage".
Concernant les objets conscients, nous avons exposé qu’un objet conscient, présente une nature conceptuelle, prend sa place dans une arborescence mémorielle construite sur le modèle de l’analyse généralisatrice, possède des attributs opératoires. Nous avons même suggéré que l’intuition du poète, du chercheur relevait d’une capacité à créer des liens nouveaux entre ces objets créant du même coup un nouvelle arborescence et du même coup de nouveaux liens opératoires entre les objets. Ces facultés sont sans doute liées à certaine phase du sommeil. Cet apport encore neurophysiologique contredit l’idée que seul l’effort soit gage de succès et de performance. Au contraire tout concorde dans la physiologie. C’est la qualité de la décontraction du muscle qui annonce la performance de la contraction, pour des raisons biochimiques démontrées. C’est sans doute la performance des sommeils de l’être humain qui lui permet ses performances conceptuelles et subconscientes.
Et alors concernant les objets subconscients?....
À ce jour, mise à part les perturbations du sommeil consécutives à tout objet subconscient déclencheur d’épuisement neurochimique, je ne connais pas de démonstration sur l’importance du repos pour l’établissement des liens symboliques entre objets subconscients. Toutefois rappelons nous que le lien symbolique d’homologie bien suggéré dans les empathies nous met sur la voie. Aussi admettre que des liens symboliques s’établissent entre objets subconscients est envisageable. Et je tente d’en confirmer la vraisemblance. Le langage étant d’abord un jeu de symbole, l’idée de solliciter les liens symboliques avec les objets subconscients par un usage particulier du langage est l’objectif central que je retiens de la Programmation Neuro Linguistique.
<blockquote>digression ....... [[Essai pour un modèle de psychisme objectif/concernant une dyslexie| une dyslexie et sa solution]]</blockquote>
Un constat intéressant dans cette voie est d’observer que si parfois une invasion comporte une indication temporelle, le plus souvent cette dimension est estompée, voire absente. Pour reprendre l’expérience du vélo, tout s’agrège en mémoire comme si ces expériences n’avaient plus de date. Ce fait extraordinaire pour une capacité comme la mémoire qui contient dans sa définition, la résistance au temps qui passe, témoigne d’une caractéristique particulière à la mémoire du subconscient. Elle n’est pas attachée au temps, au contraire elle semble s’en affranchir. Ceci explique le coté massif des invasions. Les sensations de chaque évènement fusionnent avec celles d’évènements distants. Ce mécanisme fait que le vélo ou le faire- du-vélo, «subconscient» va s’enrichir d’éléments fortement pondérés «positivement» dans l’échelle des satisfactions pour les jours de beau temps et de vacances, alors qu’il peut être dévalorisé par trop d’expériences sous la pluie ou la tempête.
Ces cumuls ne sont pas le produit d’une addition des séquences mais d’une fusion des séquences. Ce travail de fusion s’opère pendant le sommeil c’est le plus probable. Nous savons qu’un sommeil non physiologique, pathologique, va entraîner l’amnésie des faits récents, la caricature la plus désastreuse en étant le «lendemain de cuite». Nous devons donc admettre que les liens symboliques entre objets subconscients s’opèrent pendant le sommeil. Il nous reste à concevoir que ces liens ne sont pas prédéterminés par une stratégie consciente comme celle bien codifiée de la répétition de la récitation avant d’aller au lit. (Ici je suggère pour mémoire, d'explorer l'intérêt de faire enfiler sa combinaison de survie à un traumatisé avant qu'il ne s'endorme, un exemple de ce qui peut être conçu comme une urgence thérapeutique). Ces liens symboliques sont hors du champ de la conscience, par contre les invasions qui en découlent s’imposeront, avec toute leur puissance massive, à l’être humain sans égard pour la confiance qu’il porte à son monde conceptuel conscient.
<blockquote>digression ....... [[Essai pour un modèle de psychisme objectif/détail d'un recouvrement|la technique du recouvrement une technique thérapeutique]]</blockquote>
La stratégie s’étaye petit à petit. L’invasion par un objet subconscient est d’une puissance telle que l’activité consciente est littéralement écrasée. Les liens symboliques entre objets subconscients s’opèrent pendant le sommeil et donc le climat de ce sommeil est déterminant sur la création de ces liens et donc leurs propres «climats» . Les outils de ces liens ne sont pas univoques au sens ou le lien d’homologie bien identifié dans l’empathie ne donne pas toujours le même résultat pour chacun. La contradiction entre objets, la dévalorisation d’un objet, ou sa mise en valeur, est éprouvée lors des invasions. Hélas ces phénomènes quotidiens sont exclus du champ de l’activité consciente autant par les mécanismes sollicités que par la négligence ou le rejet social à leur encontre.
C’est ainsi que la norme sociale, expose la majorité des êtres humains à l’ignorance d’eux mêmes, une incompréhension qui conduit à un sentiment d’impuissance, d’angoisse, faute de reconnaître à la fois les objets et les outils mobilisés dans ces invasions. La méconnaissance des outils et des objets reproduit le stade de l’angoisse primitive donc par quasi réflexe, entraîne le rejet du Je et du Soi du champ de la conscience.
<blockquote>digression ....... [[Essai pour un modèle de psychisme objectif/humanisme et modèle de psychisme objectif|Comment le modèle de psychisme objectif peut contribuer à l'émancipation des êtres humains]]</blockquote>
Au contraire une bonne leçon de chose, et la pratique de l’introspection sous protection de la combinaison de protection dont la personne est maîtresse, en autonomie et surtout dans son intimité, permet de maîtriser ces invasions dans toutes leurs ampleurs, leurs connexions et leur puissance, pour y puiser sérénité, force, explication, et finalement résolution des souffrances. L’introspection d’une souffrance, ne doit être envisagée que sous cette protection, au risque certain de la voir ravivée par son évocation. L’exploration d’une plaie se fait en urgence, mais dès lors qu’une cicatrice commence, son exploration est un geste qu’il ne faut entreprendre que sous condition de connaître la présence, la nature, la position d’un corps étranger, son trajet et d’opérer alors sous anesthésie et asepsie parfaite. Dans les autres cas, le patient demande une récupération fonctionnelle plus qu’une restauration formelle. C’est donc la personne elle même qui construira son adaptation, pourvu qu’elle dispose des outils de cette réforme.
== La résolution des souffrances, attribut des objets subconscients. ==
Quelques cas cliniques de ma pratique.
Cas 1 :<span id="étrange"></span> Ce cas est fait pour troubler le lecteur qui aurait perçu dans cet essai une tentative d’exposé ramenant tout à la psychologie. Un adolescent de 14 ans m’est adressé par sa mère pour trouble du comportement. Il évoque qu’il veut se venger, se défendre d’agressions qu’il aurait subi. Nous commençons donc par proposer au patient de considérer que de se plaindre à 14 ans c’est normal, que l’âge le plus heureux de la vie n’est sans doute pas pour tout le monde la jeunesse etc. Il en vient à la confidence qu’il est agressé régulièrement par des gens qu’il ne saurait reconnaître et que c’est généralement lorsqu’il range sa mobylette.
Alors je m’attache à lui faire décrire ce qui précède et ce qui suit l’agression ….. et là c’est la confusion. Je le rassure sur l’étrangeté qui lui saute aux yeux, et sur le fait qu’il y a une explication à ces «flash». La brutalité de la vision, la régularité des circonstances, son absence de témoin, son étrangeté inachevée, sa période de récupération, m’ont interpellé. Merci mes maîtres, mon premier diagnostic qui sera confirmé est une épilepsie temporale partielle. Pour un généraliste c’est une rencontre exceptionnelle et même pour un neurologue hospitalier ce n’est pas une observation quotidienne dans cette forme. Je l’adresse en neurologie avec l’anamnèse et l’hypothèse soulevée d’épilepsie temporale avec hallucination conduisant à une névrose de persécution. Après deux électroencéphalogrammes le diagnostic est confirmé, le traitement adapté fait disparaître les «crises» et mon accompagnement convainc le jeune patient qu’il a eu une réaction normale, intelligente à une génération d’images de sensations anarchiques auxquelles il a donné un sens.
Les sensations étaient sans fondement objectif, liées à l’activité neuronale paroxystique et anarchique de son lobe temporal, mais son effort à leur donner un sens découlait d’une intelligence normale. Il a été guéri de son épilepsie très particulière et en même temps les doutes qu’elle avait fait naître sur sa santé mentale sont effacés. Voilà l’exemple glorieux, issu de ma pratique pour illustrer que la souffrance psychologique n’est pas toujours consécutive à une histoire psychologique. Il convient d'être circonspecte avant de se "lancer" dans des consultation spécialisé sans l'avis du médecin généraliste. Il en va de même pour d'autre spécialité quand un ORL est sollicité pour un bouchon de cérumen historique tout à fait du ressort de l'otoscopie du généraliste qui pratiquera son extraction attentive.
Cas 2 : C’est même un cas courant dans les addictions de tous ordres où c’est le trouble fonctionnel neurochimique qui crée la souffrance psychologique en détruisant le circuit de traitement des objets conscients et subconscients. Comme anecdote instructive et pour le moins originale, c’est une intoxication chronique au monoxyde de carbone qui a finalement expliqué l’humeur dépressive d’une famille appelant désespérée le régulateur du SAMU que j’étais, pour des symptômes dépressifs, touchant plusieurs membres de la famille, dans ce début d’hiver, sans évènement particulier, hors des céphalées bizarres. J’ai demandé l’intervention à domicile des sapeurs pompiers qui ont démontré le dysfonctionnement de la chaudière gaz mal entretenue du fait des difficultés financières de la famille. Un enchaînement sociologique en quelque sorte avec intoxication au monoxyde de carbone. Il faudra bien entendu poursuivre le bilan socio-économique qui à lui seul est dépressiogène. Une anecdote, pour toujours élargir une vision parfois trop systématiquement psychopathologique.
Cas 3 : Ce sont toutes les démences dégénératives variées, vasculaires, «séniles» qui toutes entraînent des souffrances par dysfonction des fonctions psychologiques et psychiques, troubles de mémoire, qui au bout du compte ré-expose la personne à l’»angoisse primitive» mais cette fois sans l’énergie psychique du nourrisson, de l’enfant à l’adulte jeune l’ayant résolu. C’est la destruction neuronale. C’est la destruction des liens symboliques, et l’invasion anarchique d’autres. La personne rentre en lutte comme elle peut. Le tout contribuant à un épuisement final et après des accès de révolte et d’agressivité parfois suicidaire à une apathie, puis une vigilance vacillante et l’extinction. Toutes ces souffrances sont directement liées à une altération des processus biochimiques et une altération anatomique au point qu’elles sont aujourd’hui prédictibles biologiquement et en imagerie médicale.
Cas 4 : un syndrome post-traumatique simple est celui d’un jeune chauffeur de poids lourd, victime d’un accident de renversement de son véhicule sur un rond point. L’accident est spectaculaire, c’est un gros porteur. L’enquête de gendarmerie rapporte une surcharge et un défaut de répartition de charge cause de l’accident et les enregistreurs de bord disculpent le patient. Il est en incapacité totale psychique, deux côtes fracturées, dorsalgie, sommeil très perturbé, invasions visuelles et auditives jour et nuit. Syndrome dépressif, perte d’estime de soi, perte d’appétit, de libido. Il était heureux jusqu’à cet instant, avec une petite fille adorable, une femme aimante et des passions artistiques remarquables.
La {{g|combinaison de protection}} anxiolytique est mise en place en usant de l’évocation méthodique d’une situation banale de sa vie de sculpteur dont le climat biochimique est sûrement bénéfique. Par répétition, cette invasion positive se renforce au point qu’en 2 semaines le sommeil et le reste se normalisent. Le patient prend confiance dans la démarche. Il faut maintenant désamorcer les invasions qui persistent sur les gâchettes de certains bruits ou angles lumineux. Ce sont ces fameuses séquences enregistrées à 200 images/secondes avec un son et une acuité incroyable qui passe en boucle dans l’hippocampe. Le patient apprend à bien enfiler tranquillement sa combinaison de protection, il s’entraîne en consultation à différentes techniques de recouvrement à propos d’objets subconscients de très faible valeur négative. Il prolongera avec cette expertise les exercices chez lui et reviendra guéri en 1 mois capable de reprendre le volant sans trouble invasif. C’est un résumé d’un travail méthodique évoqué ci dessus et détaillé dans le document «protocole », mais au bout du compte le patient est autonome et capable de régler d’autres problèmes par lui même. Il est {{g|équipé}}.
Cas 5 : Une femme de 47 ans est en deuil depuis 7 ans de sa fille de 19 ans décédée dans un accident. Sa vie n’est plus qu’une plaie. Elle a pourtant un entourage familial très affectueux, et des médecins et des psychologues dévoués. Rien n’y a fait, tout est gris, sans avenir, morne. Ici c’est une souffrance sans réelle solution qu’il faut soulager, c’est la vie qui continue qu’il faut libérer de l’entrave de la tristesse. La première consultation est consacré à la «leçon de chose» adaptée. Elle repart de la première consultation avec «devoir maison» pour la semaine suivante: faire une liste de 2 ou 3 situations banales mais paisibles pour elle. Je lui propose de travailler sur l’évocation en mode associatif d’une visite dans la grande librairie du centre ville qui se trouve dans sa liste. Tous les canaux sensoriels sont sollicités méthodiquement, en suivant la méthode presque scolaire, en respectant les silences (20 secondes minimum) si essentiels à l’invasion du préconscient par le subconscient. Plusieurs éléments dominent l’évocation: le contact avec l’épaisse moquette, l’image des livres en rayon et brutalement un long silence puis {{g|j’ai l’odeur du livre, de l’encre}}.
Elle ressort dans une sérénité qu’elle n’avait pas connu depuis 7 ans. Bien sûr quelques séances de plus pour qu’elle devienne experte en «invasion positive» et qu’elle complète le tableau …. d’ailleurs cette odeur d’encre est liée au premier prix de récitation qu’elle a reçu de sa maîtresse, après un succès applaudi par ses camarades, elle qui était si timide! En cherchant elle avait 8 ans sans doute …. d’ailleurs il lui semble entendre très distinctement la voix de cette maîtresse dont subitement elle se surprend à dire le nom. Impossible de tout détailler, mais il faut comprendre que cette personne était désormais capable en toute circonstance en disposant de, ou même en évoquant l’odeur de l’encre de déclencher une invasion plus puissante que la tension de son chagrin, et qui lui transfusait la sérénité, et la confiance. Sa famille l’a retrouvé {{g|comme avant}} et la vie continue.
Cas 6 : Plus complexe un homme de 48 ans, consulte très excité, se plaint de sa femme.
Au bout de quelques consultations aux motifs variés, d’une hypertension récente à quelques sinusites allergiques, il lâche qu’il a une «double vie», que sa femme l’a appris et que ça se passe mal. Son expression libre témoigne qu’il veut être libre, refaire sa vie, repartir. Alors je lui demande depuis quand il se trouve dans cette situation.
En fait il a perdu un de ces collègues du même age il y 1 an. Par ailleurs il décrit son attachement à sa vie de famille, les fêtes de familles. Il se sent surtout mal, déchiré entre des objectifs contradictoires. Alors par systématisme je lui propose de remplacer le recours aux anxiolytiques par une thérapie dont il aurait lui même le contrôle. Ça tombe bien il constate que ses performances sexuelles «ne sont plus comme avant». En revenant de sa quête d’objets disons positifs, je trouve dans sa liste un évènement ancien et personnel. Une virée en mob avec un copain dans ses 16 ans?
J’hésite à l’orienter vers cette exploration plutôt inhabituelle, mais finalement je considère cette évocation comme assez pertinente pour la circonstance. Commençons pas le canal tactile, les vibrations de l’engin, les trépidations des petites routes, jusque dans le guidon etc puis la pression du vent, le flottement de la chemise etc puis le canal auditif le bruit du "moulin" et «Victor attends moi à droite» .<br />
Voilà je suis rassuré, toujours après le silence sans préjugé du pêcheur à la ligne , il vient de s’entendre appeler son camarade perdu de vue et dont le prénom ne lui revenait pas. Et oui je suis content il a bien trouvé l’enregistrement multi-piste de son subconscient et tout y passe, les odeurs, les images , les couleurs, tout, tout et ce sentiment de liberté, d’émancipation obtenue à l’arrache auprès de parents plutôt réticents, sentiment de maîtrise de l’avenir, de facilité dans ce canal encore à peine évoqué du «monde intérieur» etc. En effet sur l’enregistrement multi-piste, il y a la piste du climat biochimique particulier, des hormones et des neuromédiateurs «qui font du bien».
Mon protocole n’y échappe jamais. Voilà le patient habituellement plutôt convaincu de consumérisme, de réussite financière et sociale qui trouve sa sérénité dans l’évocation de l’avenir ressenti à 16 ans et fidèlement restitué par son subconscient. Les séances s’enchaînent renforçant son ressourcement, il se sent plus normal, ne fait plus de référence négative à sa femme. Je lui suggère qu’il n’a sans doute plus besoin de venir me voir pour ce motif. Pour ma part, j’ai fait une hypothèse sur ce cas que je lui ait soumise par les circonvolutions qui conviennent à sa personne particulière. Pour faire court, un tableau assez classique. Une personne qui à 50 ans rencontre l’évidence de sa finitude à l’occasion par exemple du décès d’un proche comparable, ici un collègue ami.
Alors s’opère un lien symbolique entre deux objets subconscients. D’une part le JE établi pour juguler l’insupportable «angoisse primitive» et assurer la pérennité du sentiment d’exister, et d’autre part le lien empathique avec une personne qui par sa disparition fait surgir la faiblesse, passée sous silence, du JE, sa finitude. Face à ce profond conflit, non anticipé par une connaissance du subconscient, les velléités du JE pour se distancier de cette évidence de finitude se multiplient ……«Je veux changer de vie, la refaire, changer de maison, de voiture , de femme ». Cette crise est reprise en compte socialement, crise de la 40 aine ou de la 50 aine et son cortège de décisions radicales, irrépressibles au nom d’une définition de la liberté dont on perçoit mal les contours.
La démarche entreprise a contribué dans un bon nombre de cas à désamorcer ce conflit en fait majeur dès lors qu’il implique les couches fondamentales du JE. Les motifs de chamboulement s’estompent, c’est l’occasion de reformuler le JE, d’y faire admettre l’objet finitude. Alors le SOI n’est plus miné, il pourra continuer ses fonctions intégratrices habituelles. Il n’était pas question dans cette histoire d’un désamour découlant de conflits larvés antérieurs plus ou moins conscients, mais d’un mécanisme subconscient, entre objets eux mêmes subconscients.
Ce type de conflit a été estompé, mis à jour, et finalement résolu par une introspection dans la combinaison de protection de l’adolescent en mobylette. Pour faire court, la finitude de la petite vadrouille a intégré au JE la finitude de la vie et ainsi s’est éteinte la pulsion de vouloir passer outre, par l’illusion de la renaissance. Je parle ici d’un tableau courant que tous les praticiens reconnaîtront même si l’ignorance de son mécanisme l’a fait classer dans les accidents banals de la vie.
Cas 7 : L’ amour maternel entravé. Comment pallier un hiatus ontogénique pour rétablir la voie de la régression - fusion?
Une femme de 32 ans, d’une profession médicale dont je suis les enfants et qui me consulte pour elle même pour une banale allergie saisonnière, se présente un jour, plus réservée et surtout je lui trouve un air triste. Ainsi lors de la consultation, je l’interroge sur sa fatigue. Le dialogue s’installe et elle me confie sa déception à ne pas ressentir d’amour maternel comme elle l’envisageait. Cette souffrance dure donc depuis 6 ou 7 ans âge de son premier enfant. Elle en a 2 qui vont bien et sont bien sympathiques, son couple est heureux. Elle n’a parlé à personne de ce qui la tenaille douloureusement. J’entreprends alors un exposé assez rapide et adapté à sa formation avec schéma à l’appui pour lui faire entrevoir dans le modèle, comment l’amour maternel s’installe. La fusion avec l’enfant s’opère au niveau du JE et non pas seulement du SOI. Il s’en suit une forme de parcours dans le sens anti-temporel sur le plateau du SOI, puis sur la courbe en S du JE seul substrat sur lequel peut s’opérer la réelle fusion.
Et la question vient naturellement, y a t’il eu un ou des évènements ayant produit un hiatus dans la construction du JE? Elle a connu une enfance sans maltraitance évidente mais le fait que ses parents se soient séparés de façon conflictuelle l’a confiée autour de sa 10ème année à sa grand-mère maternelle très aimante et protectrice.
Elle s’étonne de la forme graphique que prend l’exposé, je la sens dubitative. Aussi je lui prescris la première étape du protocole: retrouver 2 ou 3 situations que lui font du bien. L’objectif? Toujours le même que le patient dispose assez vite d’un exercice favorable à la sérénité. Là dessus elle est d’accord pour essayer et lors de deux séances suivantes car elle a de vraies aptitudes à l’exercice elle se trouve confortée par l’évocation du tricot.
Alors je reprends mes schémas et elle comprend ses sensations éprouvées, d’une angoisse terrible dans les jours qui ont suivi la naissance de son premier enfant. Elle décrit bien cette paralysie qui l’a saisie alors qu’elle se sent émue, transformée par la naissance et la proximité avec son bébé. Ce blocage très intériorisé est conçu comme un échec qu’elle n’a pas surmonté et elle a continué sa vie dans l’attention et l’affection sans failles à ses enfants mais toujours dans une frustration qu’elle ne s’explique pas. En ayant tracé sous ses yeux une courbe du JE avec la profonde encoche correspondant à son déracinement affectif, elle comprend que sa régression n’a pas pu se poursuivre car elle l’entraînait vers le hiatus mis à jour.
Alors s’était un retour brutal à la confrontation avec l’angoisse primitive et l’insurrection de son JE qui lui interdisait d’aller plus loin pour établir la fusion avec l’enfant. Tout s’éclaire mais que faire ?
page suivante, vous trouverez le graphique de la {{g|régression}} offrant la possibilité ou non d’une fusion dans le JE en fonction de la continuité du JE ontogénique ou de la «réparation» de cette continuité au dessus du hiatus grâce à la construction d’un «pont tibétain» Prenez le temps de le mémoriser dans le détail. C’est une tentative de modélisation psychologique qui vise d’une part à faire toucher du doigt une réalité complexe et bien sûr subconsciente, mais aussi à proposer une ouverture sur une réparation ontogénique.
[[Fichier:Régression.jpg|vignette|voici le schéma qu'il faut mémoriser en détail ]]
Donc plusieurs relectures sont indispensables à une bonne critique et une appropriation des concepts. Bien entendu si le modèle fonctionne, ce ne peut être au stade de mes connaissances, une preuve qu’il soit seul à pouvoir aider de tel patient. je n’expose ce que j’ai pratiqué avec la prudence systématique de mon modèle.
Le pont tibétain.
Rappelons nous, ce dont est capable notre subconscient. Il stocke des objets massifs en quantité de données et est capable de les agréger par de là leurs caractéristiques temporelles. Ainsi dans un autre cas je vous avais livré l’histoire de cette patiente surmontant le deuil de sa fille (de dimension fusionnelle avec son JE) par une invasion autour de l’odeur de l’encre de librairie qui reliait des évènements aussi distants que la remise de son prix de récitation dans son enfance et de ses visites régulières dans la grande librairie.
<blockquote>LE PONT TIBÉTAIN ....... [[Essai pour un modèle de psychisme objectif/pont tibétain| la réparation du continuum ontogénique pour combler le hiatus ontogénique]]</blockquote>
Cet exemple fait comprendre comment l’analogie avec le pont tibétain m’ait apparu. Au dessus du hiatus d’un JE accidenté, le patient peut construire un pont au mieux multifilaire pourvu qu’il trouve une agrégation d’objets subconscients enjambant temporellement ce hiatus.
Finalement c’était simple, partant de son ''hobby'' pour les lainages tricotés, elle retrouve méthodiquement l’évocation des pompons qu’elle confectionnait elle même suivant les conseils affectueux de sa grand-mère et depuis le plus jeune age. Ces pompons à eux seuls formaient souvent des doudous. De plus ils étaient devenus sa madeleine de Proust incarnant l’amour paisible de sa grand-mère.
Un peu de travail et la patiente disposait d’un pont tibétain envahissant et bienfaiteur au dessus du hiatus de son JE. Le parcours manquant dans son ontogénie où l’angoisse primitive restait non résolue, était maintenant confortablement franchi par le pont continu d’une guirlande de pompons à toute épreuve. Dès lors la régression pourra s’opérer sans blocage. La patiente m’a averti qu’elle était libérée de sa frustration et que sa relation avec son mari s’était aussi enrichie.
Remarquons encore que nous n’avons pas fait d’analyse psychologique des souffrances, des disputes de ses parents, ni même de ces 7 dernières années de frustration. Au contraire nous avons enjambé au plus vite le hiatus du JE, succinctement défini, sans nous intéresser ni à sa profondeur, ni à sa largueur. Nous nous sommes concentrés sur les moyens de jeter par dessus, notre pont tibétain qui comme chacun sait, se moque de la profondeur du précipice enjambé. Encore une fois ce n’est pas la souffrance qu’il faut principalement évoquer en consultation, mais tout ce qui peut barrer la route à son invasion. Vous reconnaissez une fois encore l’attention portée à un protocole bien réglé. D’abord confectionner avec le patient sa combinaison de protection sur mesure. Lui apprendre comment l’enfiler en tout lieu et en un instant. L’aboutissement de cette démarche permet d’aller jusqu’à combler un hiatus ontogénique par une évocation répétée et consolidée d’un objet subconscient alimenté par des expériences survenues avant et se prolongeant après le traumatisme.
Le patient prend conscience de cette réparation de ces objets crées consciemment, et par invasions répétées trouve leur réplique dans le subconscient. il en dispose en autonomie complète et étendra l’usage de ses nouvelles compétences comme il en décidera et selon ses besoins. La prudence s’impose puisque cette sorte de prothèse va trouver sa place dans le subconscient du patient. Il faudra qu'il en garde la mémoire dans son dossier.
Cas 8 : agression sexuelle contre un enfant, traumatisme d’enfant souffrance d’adulte.
Ces traumatismes cumulent dramatiquement à la fois un hiatus ontogénique touchant en particulier l'image de soi et l'altération des outils d'acquisition de l'ontogénie par un parasitage des circuits neuro-humoraux dit de la "récompense". De plus, c’est un fait régulier que l’enfant agressé est victime d’auto-culpabilisation de sa petite personne.
Le délabrement fonctionnel se complique de conflit entre objet subconscient dans la phase de construction du premier monde construit. Il va s'établir une infirmité croissante. La libération de la parole de l’enfant est difficile et le silence couvre les années suivantes. Le parasitage du préconscient par l’invasion du sentiment de culpabilité conduit à la souffrance croissante avec ses conséquences fonctionnelles.
Comment comprendre et faire reculer les conséquences des effets de plusieurs décennies d'invasions toxiques aboutissant à une ontogénie pathologique et un soi parasité ?
Ici il s’agit d’une petite fille agressée sexuellement entre 7 et 11 ans lors de rituel survenant chaque été lors de promiscuité de deux semaines avec deux garçons plus âgés de 3 ans. C’est 25 ans plus tard qu’elle peut révéler ces traumatismes tenus sous silence. Elle qui était décrite si heureuse et rayonnante, décrite par ses enseignants comme à l’aise à tout propos, toujours entourée d’ami(e)s de copains et copines, d’activité associatives, et de succès scolaires etc. Depuis la fin de l'adolescence elle a connu des échecs sentimentaux et pris conscience de souffrances, perturbantes, avec symptomatiquement des troubles du sommeil majeur.
Elle a tenté plusieurs prises en charge thérapeutique. Nous comprenons qu’elle est en souffrance depuis très longtemps. Nous comprenons que comme enfant, elle ne pouvait disposer d’aucun outil pour résorber un tel traumatisme. Nous comprenons que dans ce contexte l’énoncé des souffrances ne peut survenir spontanément. Elle est arrivée à bout de force dans son effort pour surmonter silencieusement les conflits développés dans son subconscient depuis le traumatisme de l’enfance.
Les séquelles se sont profondément implantées depuis 25 ans . Sa vie est comme entravée. Il est urgent de mettre fin à l’extension du malheur.
D’abord l’explication des mécaniques psychiques déclenchées par ces agressions, et du silence maintenu et de ses conséquences va amener à une forme de cicatrisation fonctionnelle de cette plaie ouverte. Pourvu que le silence et l’ombre cessent, la mécanique du malheur peut être stoppé, l'objet d'auto-culpabilisation est ici le moteur infernal qu'il faut disloquer d'urgence.
L’{{g|explication}} pour la victime amène à exposer ce qui est connu des stimulations «vitales» (alimentation, sexe) et du circuit de la «récompense». Le mot « récompense » évoque bien que le système nerveux répond à certains évènements par une action biochimique visant à inscrire l’évènement comme bénéfique et donc en favoriser son renouvellement. Cette action est puissante car elle vise à perpétuer les fonctions vitales autant pour l’individu que pour l’espèce. C’est le cas en particulier pour l’alimentation et l’activité sexuelle.
<blockquote>CONTESTATION DES MOTS ....... [[Essai pour un modèle de psychisme objectif/des mots à recadrer|retour sur l'usage des mots à propos des viols et des viols d'enfants ! quand il faut comprendre circuit de la soumission au lieu de circuit de la "récompense"]]</blockquote>
Ce mot de {{g|récompense}} devient totalement incongru, face aux effets délétères sur l'ontogénie découlant de la perversion de ce système. Cette perversion est flagrante dans le cas des maltraitances sexuelles. L’explication de l’effet délabrant des agressions sexuelles sur enfant tient dans cette perversion «neurochimique». L’agression sexuelle, le viol, est un traumatisme catastrophique car elle détourne les outils neurophysiologique permettant la constitution ontogénique et va induire la production d'objets subconscients toxiques: image de soi, JE sexuel, auto-culpabilisation. Son mécanisme est particulièrement pervers, car il utilise le mécanisme neurochimique de «récompense» pour soumettre la victime à l’agresseur. Nous parlons ici d’un agresseur qui présente à sa victime une succession d’expériences qui va de la plus banale caresse au viol physique. Les premiers attouchements sont présentés sous le jour du jeu, de la découverte, voire de l’émancipation et conduisent à activer une excitation sexuelle graduelle qui enclenche physiologiquement le circuit de la «récompense». Ainsi se développe chez la victime de «l’initié» une tolérance et une attente neurochimique qui submerge sa vigilance armée par des avertissements et des interdits plus ou moins transmis par l’éducation. L’action progressive et maline de l'agresseur met en scène une forme de consentement de la victime. C’est cette «tolérance» qui est avancée par l’agresseur de l’enfant pour se disculper du résultat, en arguant du soit disant consentement de la victime.
En effet l’ignorance de la victime sur les mécanismes mis en jeu pour la soumettre, l'expose d'autant à la puissance du mécanisme enclenché. Il est alors facile de comprendre combien l’agression sexuelle contre enfant est facilitée, d’autant qu’elle peut se développer dans un milieu considéré non dangereux comme le milieu familial, associatif, religieux où la première méfiance est levée et où l’enfant est «pris par surprise».
Bien entendu l’enfant est ignorant de ce que son circuit dopaminergique permet d’inscrire dans sa mémoire subconsciente, mais il vivra dans un conflit impossible entre son circuit de la «récompense» et la construction de sa personne. Car bien sûr, cette sexualité non délibérée, pervertie, va entraver, perturber, celle qu’il voudra établir dans le reste de sa vie. C’est alors que la gravité de cette agression s’impose avec encore plus de conséquence qu’un viol contre une personne disposant, déjà dans ce domaine, d’un référentiel pour son système de récompense.
C’est un cas manifeste de ce que j’appelle par ailleurs un hiatus ontogénique. Ce hiatus comporte une lacune de la construction du JE à propos de la réponse à l’angoisse primitive dans le champ sexuel. Ce hiatus est d’autant plus sévère qu’il touche non seulement à la construction des objets subconscients venants habituellement constituer la base de l’image du corps sexuel dès l’enfance mais aussi à la déformation du circuit de la «récompense» qui est impliquée tout au long de la vie dans le SOI. Dans le modèle plusieurs objets subconscients sont produits avec en premier lieu un «sentiment de culpabilité» très invasif sur le préconscient. Ces invasions parasiteront le vécu postérieur.
<blockquote>digression ....... [[Essai pour un modèle de psychisme objectif/hasard et aléa|Hasard et Aléa, réflexion philosophie personnelle]]</blockquote>
<blockquote>LE PREMIER REFLEXE !..... [[Essai pour un modèle de psychisme objectif/la combinaison de protection|LE SOUFFRANT ET SA COMBINAISON DE PROTECTION]]</blockquote>
Et pourquoi le silence ?
C’est un fait général, l’enfant maltraité en particulier sexuellement, garde le silence. Chercher les raisons de ce silence semble ardu. Encore une fois son explication doit prendre en compte la nature des objets subconscients créés lors de ces agressions et liés au circuit de la «récompense ».
<blockquote>LE PARADOXE AFFECTIF..... [[Essai pour un modèle de psychisme objectif/paradoxe affectif|l'enfant maltraitant qui refuse l'affection]]</blockquote>
Quatre facteurs se conjuguent pour permettre la compréhension :
# La perception des agressions est rendue confuse dans le subconscient de l’enfant du fait du climat neurochimique. Leur résurgence renvoie vers le puissant système de {{g|récompense}}. Sous l'influence de ce système les faits perdront leur objectivité, la sidération complète l'incapacité mnésique objective et donc la dénonciation.
# Les interdits transmis par l’éducation, et la société en général, où la personne est décrite comme responsable d’elle même, renvoient vers un sentiment de culpabilité, injustement endossé par la victime. C’est la honte de ne pas avoir la bonne image, la maîtrise de soi
# La crainte d’être incompris, de la perte d’estime, du rejet et de perdre son SOI d'aillerus encore non atteint dans l'enfance où c'est le JE qui est construction..
#:<blockquote>CONTRIBUER A LA PÉDAGOGIE SEXUELLE ....... [[Essai pour un modèle de psychisme objectif/socio psychologie préventive| quelques éléments psychosociaux à prendre en compte]]</blockquote>
# La pulsion sexuelle va s’exprimer à l’adolescence avec force et donner l’élan à une appropriation, individuelle qui peut en cas de fusion bénéfique combler le hiatus ontogénique. Mais ces circonstances palliatives seront entravées le plus souvent puisque la régression-fusion au dessus d’un hiatus ontogénique, comme nous l’avons vu, est empêchée sans réparation préalable, comme celle du {{g|pont tibétain}}.
À défaut le silence va occulter les échecs dont la responsabilité est une nouvelle fois endossée par la victime.
Voilà donc une explication des destructions et dissimulations cumulatives, consécutives à une maltraitance sexuelle sur l’enfant. La réparation s’opérera en pleine connaissance de ces mécanismes et de façon méthodique.
J’insiste sur la faille constitutionnelle neurophysiologique du système de récompense. Elle explique la grande reproductibilité de ce type de maltraitance contre les enfants par des agresseurs dont l’histoire révèle qu’ils reproduisent un schéma acquis par eux lors des maltraitances qu’il ont eux mêmes subies ou dont ils ont été témoins. Cette contagion est d’autant plus forte qu’elle se produit en milieu fermé dont le cercle familial est l’archétype comme les sectes, les groupes et associations etc .
Que l’agresseur soit lui même enfant ne change pas le mécanisme morbide. La «tolérance» a conduit à l’aggravation de l’agression d’année en année sur 4 ans de 7 à 11 ans. Toujours dans le silence, elle a su seule dire «NON» à l’agresseur alors que le mal extrême s’accomplissait.
Ce long rappel des mécanismes impliqués chez la victime, démontre bien combien le sentiment de culpabilité qui en découle est injuste. Hélas ils annoncent la double peine d’être victime puis de s’en martyriser, comme chez tous les enfants maltraités.
En effet après le traumatisme de l’agression, le silence perdure. Alors aucun secours n’est entrepris, aucun soutien salutaire, ni suivi compétent n’est organisé. Le silence s’explique par le conflit entre les invasions subconscientes et les préventions éducatives à propos de la propriété exclusive de son sexe et par conséquent à mesure que cette éducation se complète l’auto-culpabilisation se renforce. Au fil du temps une aggravation du sentiment de culpabilité s’opère face à des parents aimés et aimants, ignorant les souffrances de la victime. Le sentiment de culpabilité pour cause de silence s’accentue donc, et un objet subconscient va lier le regard aimant par exemple des parents, à ce sentiment de culpabilité. Le lien symbolique entre affection et invasion du sentiment de culpabilité s'enracine. L’affection déclenche paradoxalement une invasion toxique.
Cet objet subconscient d’auto-culpabilisation, par nature invasive, étend son territoire, et sa présence dans le préconscient devient récurrent et perenne.
Dès lors les processus de communication et de fusion seront {{g|parasités}} :
Les manifestations d’affections sont ressenties gênantes, évitées, voire repoussées, car elles galvanisent la dissimulation et donc l’auto-culpabilisation, comme un cercle vicieux.
L’Incommunicabilité s’établit comme une défense subconsciente dès lors que l’objectif est le silence. La personne s’approchant involontairement de cette défense est vécue comme un agresseur contre l’effort de dissimulation devenu constitutif du préconscient.
Alors que le malaise de l’adolescent et du jeune adulte s’aggrave, la distanciation vis à vis en particulier des aimants est une barrière qu’il est conduit à consolider. Ce phénomène parasitera pré-consciemment le ressenti des rapprochements affectifs. Voilà décrit le mécanisme subconscient qui impose la distanciation de l’aimant pour éviter l’invasion culpabilisante.
Il découle de cette souffrance chronique une censure affective croissante. L’affection d’autrui devient comme un miroir renvoyant l’image de l’enfant culpabilisé, cette image parasitée devient intolérable pour la victime elle même qui se résignera au renoncement affectif pour y échapper. La rupture des liens affectifs revient à briser ce miroir pour mettre fin à son reflet.
Les explications qui précèdent, permettent de comprendre par quel mécanisme s’établit la souffrance. Comme nous savons, cette analyse, cette explication, de type conceptuelle est incapable de dissoudre la souffrance, elle même constituée d’un amoncellement subconscient par 25 ans d’invasion et de parasitage du préconscient.
L’organisation de la souffrance.
I) Mécanisme de la mise sous silence. Il s’agit d’un enfant ayant subi une agression sexuelle. Dans le texte précédent «l‘explication» nous avons mis au jour:
a) que l’agression est souvent «tolérée» sur une longue période par le fait qu’elle utilise une activation pervertie du système neurochimique dit de «récompense»
b) qu’elle génère en même temps un sentiment de culpabilité, lié au conflit entre les objets subconscient des agressions subies sous influence du système neurochimique de récompense et les objets subconscients constituants du Je sexuel et finalement du Soi sexuel, influencé par l’éducation et plus généralement la socialisation. (L’implication de l’éducation sera abordée plus loin)
c) que dans un tel contexte, le silence est maintenu par un enfant (et même souvent un adulte) qui ne dispose d’aucun outil, d’aucune distance introspective pour échapper à cette mécanique morbide.
II) Conséquences du silence
Rappelons nous que dans le modèle, les objets subconscients sont dotés de caractéristiques agrégatives, et d’une capacité d’invasion du préconscient. Les invasions sont déclenchées par des situations «gâchette». Certaines vont toucher toutes les victimes et en l’occurrence toute situation mobilisant le Je et le Soi sexuel meurtris, portant des cicatrices invalidantes. D’autres «gâchettes» sont liées aux modalités spécifiques de l’agression, ce sont les «flash» liés aux lieux, aux bruits, aux odeurs, aux contacts etc et au «monde intérieur» comme l’estime de soi, et le contexte biographique. Donc la souffrance ne s’arrête pas avec l’agression, elle se prolonge et même s’accentue au fil des invasions récurrentes qui sont inévitables en l’absence de soins compétents. Le silence induit donc la «double peine» pour la victime car il entraîne l’absence de soin et en conséquence l’extension du traumatisme initial.
Le silence va alors compliquer les objets subconscients:A Parasitage du Je et du SoiComme dit plus haut, la période sans soin produira des invasions récurrentes qui parasiteront l’agrégation des nouveaux évènements relatifs au Je et au Soi sexuel de l’adolescent. Ainsi le préconscient, parasité par l’invasion toxique de culpabilisation, avec une force croissante, empêchera la constitution normale de tout objet subconscient de cette sphère.
Nous pouvons prendre l’image d'un bruit parasite qui nous empêche de profiter d’une musique pourtant à notre goût et en définitive ne nous apporte pas de bien être. L’image du Soi sera donc altérée. Le vécu sexuel est «automatiquement «parasité» par l’invasion du le sentiment de culpabilité et le circuit de récompense entravé. Dans le cas d’une agression contre un enfant, selon le modèle c’est le JE qui sera marqué d’un hiatus, ce qui empêchera les régressions-fusions et donc entraînera la frustration affective.
A Perturbation secondaires, indirectes:
1 D’ordre temporelle
a) dans le futur, la suite, de l’évènement traumatique
Le modèle montre comment un objet subconscient donc de type agrégatif va grossir au fil du temps. C’est aussi le cas du sentiment de culpabilité, installé par l’agression, et qui va s’agréger à d’autres situations où le Je et le Soi se trouveront en échec ou meurtris. L’enfant puis l’adulte connaîtra une invasion du préconscient par l’objet subconscient de culpabilité dans chacune de ses situations sexuelles et affectives en particulier. La victime endosse une culpabilité suite à toute difficulté, échec, frustration dans lesquels elle n’a même pas de responsabilité. La plaie va donc aussi s’élargir, avec des liens symboliques de culpabilité entre objets subconscients. Les invasions de culpabilité vont donc devenir pérennes. C’est la «double peine» pour l’innocente victime.
b) dans le passé de l’évènement traumatique
La caractéristique de non-temporalité dans la mémorisation des objets subconscients (cf essai psychisme) conduit à un nouveau risque. Ce flou temporel explique la puissance des invasions. Nous nous rappelons que l’odeur de l’encre si bénéfique dans le cas présenté dans « l’essai psychisme objectif» est un cumul d’expériences vécues tout au long de sa vie mais qui ne révèle sa stratification temporelle que lors d’un exercice mental précis. Le grand risque est que l’ évocation d’un moment T-x survenant en présence du préconscient envahi par le sentiment de culpabilité constitué au temps T, soit à son tour parasité par la dimension culpabilité_frustration.
Cette explication schématique explique comment le parasitage dû à l’évènement T peut parasiter des objets antérieurs à l’agression.
La plaie peut donc s’étendre dans les deux sens de l’axe du temps. L’agression altère donc non seulement l’avenir de la victime, mais aussi son histoire psychique antérieure à l’agression.
2 D’ordre spatial
Par la caractéristique agrégative des objets subconscients, le sentiment de culpabilité si injustement subconsciemment inscrit chez la victime va sortir de la sphère sexuelle et s’étendre à d’autres sphères. En effet le silence lui même va devenir objet de culpabilité en particulier vis à vis des intimes, des aimants d’une manière général. C’est un fait connu que le silence consiste pour la victime à tenter de mettre une barrière en elle-même, à ne pouvoir exprimer sa souffrance pour elle-même. C’est aussi un fait général que le silence maintenu en face d’un intime ou d’un aimant est source d’un nouveau sentiment de culpabilité. Les situations affectives, sollicitant les régressions-fusions à l’instar l’exemple à propos de l’amour maternel, vont déclencher une invasion du préconscient par l’objet subconscient «culpabilité de dissimuler, de tenir le silence etc».
Ainsi va s’établir une «gâchette» , ici la relation affective, où l’invasion négative du préconscient par le sentiment de culpabilité va devenir de plus en plus puissant et récurrent. Le parasitage de la vie affective va donc se généraliser et rendre cette sphère comme un objet de souffrance en lui même. Le conduite d’évitement vis à vis de la souffrance conduit à l’évitement affectif, voire la distanciation affective. Nous pouvons parler d’enkystement de la victime dans sa souffrance.
En conclusion nous voyons que le traumatisme initial, directement responsable d’une meurtrissure dramatique va se compliquer faute de soins d’une invalidité fonctionnelle beaucoup plus étendue.
Ainsi après deux décennie d’ignorance, jusqu’à la révélation faite par l’adulte issu de l’enfant meurtri, tout explique la distanciation affective ressentie par les aimants. L’enfant n’a pas pu se libérer de l’objet «sentiment de culpabilité» et donc l’adulte de l’objet subconscient «perte d’estime de soi» ce qui impose une «conviction préconsciente» d’être «non-aimable». Les aimants voulant s’inscrire en faut en face de cette état subconscient rencontrent les barrières de défense, l’incompréhension et la souffrance s’étend. La souffrance s’aggrave. La vraie cicatrisation vient par la neutralisation et la dissolution des agrégats parasités et accumulés durant ce long silence et més-jugement de soi même.
III Soin après rupture du silence.
<br />Nous voyons que même une fois le silence rompu, les soins doivent prendre en compte ce qui s’est construit dans le subconscient au fil des années. Les parasitages peuvent se retrouver dans des sphères variées mais la sphère affective est impactée dans tous les cas. La priorité exposée c’est d’abord de faire obstacle aux invasions du sentiment de culpabilité en y opposant à force égale une invasion d’estime de soi, de mérite d’être aimé.
Ici le protocole proposé sera sollicité à son maximum. En effet l’objectif est d’abord de maîtriser toute invasion par le sentiment de culpabilité , puis par les techniques de recouvrement de «déparasiter» les objets subconscients.
Comme tout au long du modèle, on observe que dès que le patient s’approprie le modèle et le schéma du protocole, il trouve un soulagement. Je souligne qu’une vertu recherchée par ce modèle, est de démontrer au patient qu’il sera acteur de ses soins. Cette prise de conscience est essentielle. En effet à la la suite de l’entraînement pédagogique pendant les consultations, pour apprendre les techniques de recouvrement, les nombreux objets parasités pour la plupart intimes seront manipulés par le patient lui même. Le pédagogue thérapeute ne sera impliqué que si le patient souhaite un soutien en cas de difficulté.
Ainsi les anciens enfants maltraités éprouvent une difficulté particulière à retrouver les évènements heureux de leur existence. Voilà pourquoi la protection du préconscient est inaugurale dans la démarche de soin.
J’ai tenté une mise en perspective du cheminement psychique. Les explications sont là pour éclairer le conscient et aider à faire entrevoir pourquoi le seul discours ne peut dissoudre la souffrance.
Une conclusion essentielle est que la résolution des souffrances psychiques ne peut découler de l’activité du seul conscient. Une démarche éprouvée s’exprime dans le « protocole» mais d’autres voies sont connues et pertinentes à la condition préalable qu’elles commencent par une étape de protection contre les invasions pathogènes. Cette condition est incontournable, l’ignorer est délétère, je pense l’avoir démontré.
IV la prévention:
C’est sur cette influence que l’éducation doit progresser. Dans le texte «explication» à propos de maltraitance et viol d’enfant la conclusion engage à ne pas se satisfaire du message que le sexe est une affaire strictement personnel y compris relativement au parent. La conduite éducative résumée par «seul(e) toi peut toucher ton sexe, c’est toi seul(e) qui en fait la toilette» ne suffit pas à prémunir l’enfant des manipulations perverses et agressives. Cette conduite participe à la constitution du conflit entre tolérance induite par perversion du «système de récompense et référence éducative. C’est ce conflit psychique insoluble dans le silence qui l’impose pourtant à l’enfant envahi par l’objet «sentiment de culpabilité». Cette conduite éducative est donc une barrière factice, et elle contribue au "sentiment de culpabilité" lorsqu'elle est détournée.
Ce message très partiel entoure cette zone du corps d’un voile énigmatique sans identifier clairement aux yeux de l’enfant innocent les dangers contre lesquels on tente de le mettre en garde. S’il fait fasse à une intrusion, il comprendra l’aspect transgressif de la situation mais il n’aura pas appris à désobéir aux dominants. Il faut insister auprès des enfants sur les mots de l’indignation et de la dénonciation comme sur ceux des consignes préventives.
Conclusion
Voici donc décrits quelques cas cliniques qui veulent mettre à l'épreuve et en même illustrer le modèle de psychisme objectif. J'ai choisi un progression dans la complexité des cas afin de laisser au modèle plusieurs occasions de se défendre. Je reste naturellement conscient qu'il faudra que je l'abandonne un jour pour un autre sans hâte quand il aura montré précisément ses limites face des acquis de la neuroscience encore inconnus pour moi. Ce modèle sert aussi de référence pour établir une action thérapeutique dont le trait essentiel est qu'il doit absolument respecter la dignité, l'autonomie et l'intimité du patient. Et pour conclusion je veux insister sur un acquis essentiel de cette modélisation du conscient et du subconscient pour un abord thérapeutique dont le véritable acteur est le patient lui même.
L’introspection du subconscient est une activité salutaire, pourvu qu’elle s’appuie sur une connaissance pratique de sa structure et de ses attributs et pourvu qu’elle suive toujours une stratégie de protection en amont, contre les invasions toxiques.
Aussi une psychothérapie, centrée sur la souffrance elle même, est de mon point de vue, formellement contre-indiquée. Réclamer au fil des consultations une répétition et un approfondissement des souffrances sans avoir fait enfiler au patient «sa combinaison de protection» est assimilable à l’exploration d’une cicatrice d’ampleur inconnue, à l’aveuglette, sans planche anatomique, ni anesthésie ou asepsie.
Se placer d’emblée dans le domaine intime de la personne entraîne le patient vers une nudité qui contrevient à sa dignité, et va entraîner le praticien vers la «posture de gourou».
D’abord ne pas nuire dit la déontologie du soignant. D’abord s’équiper d’une bonne anatomie, d’une physiologie démontrée, d’une bonne hémostase, d’une bonne anesthésie, de bons outils et d’une préparation aseptique du patient. L’éthique médicale et sa jurisprudence condamne désormais tout acte médical qui ne serait pas discuté avec un patient dûment informé des causes, des conséquences, des thérapies envisageables et de leur suite. Cette norme fait partie de l'obligation de moyen du au patient. Cette évolution est fondamentale, salutaire, elle conduit à reconnaître la personne du patient comme acteur de lui même jusqu’aux circonstances de son décès. Cette contrainte contribue à guider le soignant vers une posture autocritique qui lui donne la rampe du savoir authentique,celui qui se discute.
J'espère que cet essai contribue à une prise en charge du psychisme respectueuse de ces principes. Le protocole en addendum expose des techniques générales largement abordées dans ce qui précède.
En tout cas j'espère que les pages de gauche de cet essai et du protocole sont marquée par la libre expression critique et complémentaire, des lecteurs et lectrices, gage d'un véritable acquis, prouvant par là, que ce qui est n'est qu'un cas particulier de ce qui peut être, et qu’un miroir brisé reste un miroir utile.
== Protocole de soin découlant du modèle de psychisme objectif ==
===Ici commence la leçon de chose...===
- Le conscient est représenté par une part franchement minoritaire de l'activité neuronale. Il contient des objets nettement figurés, les concepts. Cette représentation veut introduire le fait qu'un recours exclusif au conscient pour la pas compréhension envisageable.
[[Fichier:PNL1 8.jpg|vignette]]
- Le subconscient est figuré comme disposant de la plus grande part de la masse et de l'activité neuronale. Il contient des objets mal circonscrits, "poreux" à des degrés divers.
Ce schéma n'a pas de démonstration neurophysiologique. Il tente de schématiser les définitions plus complètes données dans l'essai du "miroir brisé".
Ce schéma introduit une nouvelle notion. Il s'agit des objets subconscients en particulier dont la propension à l'invasion est marquée par une limite poreuse, pointillée. Il faudra identifier ceux qui sont marqués par "-" comme responsable d'invasion "toxique".
Ceci pour rappeler que, comme nous le verrons dans ce protocole, de tels objets peuvent se retrouver circonscrits de façon hermétique par une succession de recouvrements bien conduits, ce qui leur fait perdre leur pouvoir toxique.
Ici se retrouve figurée la position fonctionnelle du préconscient, propre au modèle présenté. Le préconscient n'est pas un stade flou du conscient mais une unité fonctionnelle, un filtre actif, paramétré par le contexte neurophysiologique d'une part, par une réjection physiologique d'autre part, et par une réjection psychique de bas niveau comme dans le cas de la sidération traumatique.
C'est donc dans ce préconscient que se joue le destin des objets, qu'ils viennent de l'environnement actuel ou qu'ils viennent de processus d'invasion d'objets déjà en mémoire.
[[Fichier:PNL1 7.jpg|vignette]]
Ces deux derniers alinéas sont cruciaux pour la compréhension du modèle. Il convient de bien comprendre ce que l'on y admet comme postulat. La démonstration dépendra de la confirmation par les neurosciences qu'il existe une ou des aires associatives impliquées dans la création des objets psychiques. Ce postulat n'est donc déjà pas une fantaisie exotique, mais colle avec l'image que l'on nous propose actuellement du fonctionnement sensoriel par exemple.
La notion d'invasion du préconscient est donc une façon simple d'expliquer les perceptions différentes d'un individu à l'autre en fonction des contextes et antécédents. Ces invasions expliquent également très bien comment une évocation se produisant dans un préconscient déjà occupé par une autre, par exemple toxique, va remanier l'objet avant qu'il ne retourne en mémoire.
Ce rôle dévolu au préconscient explique simplement le constat clinique de fluctuation mémorielle, d'occultation secondaire, ou d’exacerbation morbide.
Comme expliqué dans l'essai, les réarrangements des objets ne sont pas généralisables. Nous en venons à entrevoir la probable extrême personnalisation des objets en particulier subconscients. C'est l'occasion de répéter pourquoi les apprentissages qui suivent s'attacheront à ne proposer que des travaux pratiques avec les objets les plus banals et "universels" possibles.
Vouloir dérouler l’écheveau intime est un geste interdit par ce modèle, seul le patient lui-même pourra en être initiateur dès lors qu'il se sera approprié les étapes qui suivent.
<blockquote>précision ....... [[Essai pour un modèle de psychisme objectif/invasion involontaire ou organisée|Remarque à propos d'invasion]]</blockquote>
Voilà bien le premier objectif du protocole. La réalisation de cet objectif résout la plupart des plaintes exposées par les patients, en terme de troubles adaptatifs, bien entendu dès lors que la cause iatrogène a été écartée.
Ainsi les conséquences d'un surmenage ne peuvent être sérieusement résolues sans recours à l'arrêt de travail, la redéfinition de la fiche de poste, et une reconsidération ergonomique, transport, alimentation, éclairage, condition du sommeil et autres charges mentales. Il est médicalement hors de question de se servir des techniques du protocole comme d'un cache-misère pour tenter de repousser la symptomatologie de l'épuisement.
L'objectif de la prise en charge doit donc être bien élucidé avec le patient, dans une prise de conscience globale socio-physiologique.
[[Fichier:PNL1x6.jpg|vignette]]
L'image du cauter sur la jambe de bois est bien utile à garder dans la mémoire du soignant comme une bêtise sans excuse pour un professionnel.
- Le pédagogue qui initie le protocole est idéalement médecin puisque, comme nous l'avons vu, ce qui semble de nature psychique peut parfaitement découler directement d'un dysfonctionnement organique, et donc l'art du diagnostic médical est inaugural de toute prise en charge.
Une fois les causes médicales écartées, le pédagogue pourra être un soignant pédagogue entraîné, initié par exemple par cette lecture.
Nous sommes donc dans la deuxième consultation, après la leçon de chose et le devoir maison consistant à identifier les objets psychiques pré-sentis par le patient comme bienfaisants et, nous insistons, banals.
[[Fichier:PNL1 5.jpg|vignette]]
C'est le soignant qui travaille devant le patient en pratiquant l'exercice pour de bon, puisqu'il s'agit d'une situation banale que lui-même connaît. Par exemple le petit-déjeuner et sa tartine grillée.
Il démontre la méthode rigoureuse:
- Avec le lever de rideau:
J'ai la chaleur du lit sur mon corps...... 20 secondes de silence au moins en expliquant qu'un débutant devra laisser encore plus de temps pour que "l' invasion sensorielle tactile" se produise. j'ai le contact du carrelage sous mes pieds .......... silence, et ainsi de suite pour tous les canaux.
- Y succède la situation bienfaisante identifiée par le souffrant comme ici le banal petit-déjeuner.
j'ai le bruit de la bouilloire ....... j'ai l'odeur du café ...... j'ai le reflet du café ....... j'ai le contact de la cuillère....... j'ai la résistance du miel dans le pot ....... avec toujours ce long silence indispensable pour "laisser le subconscient s'exprimer".
[[Fichier:PNL1 6.jpg|vignette]]
Il faut bien considérer que cet énoncé semblera à tout lecteur comme à l'attente d'une découverte extraordinaire comme d'une rusticité décevante. Et pourtant cette rusticité, faite de phrases "anti-littéraires" est la condition de cette découverte. En effet si la connexion entre objets conscients et langage est consubstantielle, elle est la découverte étonnante de la PNL pour ce qui concerne les objets subconscients.
Deux choses sont donc essentielles à enseigner et s'approprier. Passez à côté et vous n'atteindrez jamais l'objectif.
La première est que la sollicitation d'un objet subconscient par un des canaux sensoriels ou du "climat neurophysiologique" ne doit rien comporter qui puisse motiver l'activation de l'intelligence conceptuelle.
Voilà l'explication de la forme parfaitement élémentaire des phrases. "j'ai l'odeur du café" serait volontiers rectifié par "je sent le café". Eh bien c'est ce qu'il ne faut pas faire, car la moindre référence à un verbe spécifique activera probablement la machine de décryptage linguistique, propre de l'intellect humain et de son activité consciente. Il faudra donc respecter scrupuleusement le dépouillement linguistique prescrit.
La deuxième chose essentielle, c'est la pause, le blanc, le vide qui doit suivre chaque invitation à un canal quelconque à renvoyer ce qu'il a enregistré. Au moins 20 secondes peut paraître long, mais c'est un minimum surtout pour un apprenti qui doit penser plutôt à une minute.
D'ailleurs lors des premiers exercices, beaucoup d'ouvertures de canal resteront muettes, plus pour certains patients que d'autres. C'est pourquoi j'ai choisi que la première séance soit une démonstration commentée mais effective du soignant, du pédagogue devant le patient.
Vous comprendrez pourquoi il est essentiel que la situation bienfaisante choisie soit d'un ordre des plus banals. Il s'agit de travaux pratiques d'acquisition d'une technique.
L'objectif est de démontrer et d’entraîner le patient à la découverte du phénomène invasif, puisque au bout de 2 ou 3 séances il se sentira effectivement envahi par la "vraie" odeur du café et de la tartine grillée par exemple. L'acuité ressentie est la confirmation qu'il s'agit bien d'une invasion par un objet subconsient.
Bien-sûr les situations banales choisies peuvent être très variées, dans une palette banale déjà large: marcher en forêt ou ailleurs, se coucher sur une serviette de plage dans le sable, une promenade à vélo, caresser un chien etc....Le choix de ce matériel de travaux pratiques sera bien-sûr fait dans la liste que le patient présente après son premier travail maison.
La situation exploitée tiendra compte peut-être du flaire du soignant. Par exemple s'il s'agit d'aider un étudiant en difficulté pour une prise de parole à l'oral, une situation de sérénité où le canal auditif est prégnant sera tout indiqué et donc l'évocation de l'écoute d'une musique pourra être d'emblée pertinente. En tout cas c'est l'apprentissage de la technique qui a la priorité.
Moi-même qui faisais partie des sceptiques, bien campé dans la rationalité, j'ai dû me plier à cette quasi-discipline sportive, comme de respecter les consignes du prof d'éducation physique qui impose un placement strict des appuis pour faire une simple roulade. Bien-sûr ma devise,"ce qui est n'est qu'un cas particulier des possibles", m'a poussé à cette exploration.
Chacun va trouver, dans la décontraction de cette lecture, l'occasion d'un lâcher prise indispensable.
<blockquote>précision ....... [[Essai pour un modèle de psychisme objectif/il faut commencer en amont|Remarque à propos d'invasion]]</blockquote>
La démonstration par le soignant pédagogue inaugurera la suite des exercices à domicile par le patient comme devoir maison. Il faut insister sur l'absence de préjugés quand aux premiers résultats, c'est le processus habituel de tout apprentissage. Lors de la séance suivante le pédagogue observera l'exercice réalisé par le patient devant lui. Bien évidemment de nombreuses rectifications s'imposeront.
les encouragements présideront
- ne dîtes pas "je sens le poids de mon dos dans le sable" mais "j'ai le contact de mon dos sur le sable" puisqu'il faut faire la chasse à tout ce qui motiverait l'activité de l'intellect.
- laissez la pause s'écouler, s'écouler .........
et ainsi de suite, pour voir consolidée la technique de base, encouragée par la découverte de la réponse du subconscient. Si par exemple le canal "j'ai le bruit du café versé (dans le bol)" a été ouvert, vous pourrez encourager le patient à essayer de décrire le "peuplement" du canal auditif lors de cet évocation en mode associatif. Le patient, après avoir surmonté en quelque sorte sa surprise, pourra exprimer que ce "bruit" est en fait comme une musique d'un raffinement que la vie quotidienne gomme par l'urgence. Oui l'analyse quasi spectrale d'un son est possible lors de l'évocation car le subconscient enregistre bien plus de données que le cerveau conscient (sauf à considérer l'expertise d'un ingénieur du son ou d'un musicien concentré à priori sur les harmonies)
Au fil des exercices et de leur contrôle en séance, le patient, spontanément ou avec l'aide des calibrations rapportées par le soignant, découvre le caractère particulièrement invasif de tel objet ou tel canal. Cet élément "gâchette" évoqué dans l'essai fonde par la répétition ce qu'on nomme un ancrage.
Le rôle de l'ancrage bien rôdé est de mettre à la disposition du patient qui l'a mis à jour un raccourci vers une invasion bienfaitrice, protectrice. La combinaison de ces invasions parfois initiées par un rappel d'ancrage constitue la combinaison de protection qui est mise en avant dans le modèle pour un psychisme objectif.
L'exemple le plus universel de l'ancrage est celui que l'enfant et son entourage construit autour du doudou. Il est flagrant de constater l'effet immédiat de réassurance, voir d'invulnérabilité que l'enfant puise dans le contact avec son doudou qui d'ailleurs est largement exploité en urgence par les parents emphatiquement entraînés dans une angoisse alors vite résolue.
Bien-sûr, les combinaisons de protection dont nous avons l'ambition ici seront beaucoup plus spécifiques, personnalisées, et adaptées aux souffrances du patient. Il sera fondamentalement acteur de cette combinaison, en étant propriétaire exclusif de cette combinaison dont finalement le soignant sera simple témoin, même s'il a pu suggérer ouvertement telle ou telle opportunité signalée par la calibration.
Alors disposant de cette combinaison de protection, le souffrant aura souvent résolu le processus d'épuisement psychique qui l'a fait consulter. En effet dans de nombreux cas de la "vie de fou" qui caractérise l'époque moderne, où le cerveau est sursollicité par 3 téléphones, une radio, une télévision, la conduite d'engin stressant, les nuits sans repos, les vacances suractives, les conflits de toutes sortes, le seul fait de comprendre notre fonctionnement et les moyens de le modérer est la solution attendue. Heureusement les causes de souffrances psychiques tiennent souvent du dépassement du domaine de fonctionnement pour lequel notre cerveau est construit depuis quelques dizaines de milliers d'années. Parfois encore le seul fait d'avoir acquis cette protection permet au patient d'alléger sa charge morale et ainsi de prendre la maîtrise sans aide spécifique.
Dans d'autres cas, ce sont des phénomènes invasifs toxiques qu'il faudra apprendre à circonscrire, à refroidir comme l'image d'un cœur nucléaire, puis à reclasser sur l'étagère des mauvais souvenirs dûment étiquetés et ayant perdu leurs capacités incontrôlables d'invasion toxique.
Dans cet objectif toujours dans la conduite de travaux pratiques, un nouvel apprentissage débute avec à chaque séance une séquence rigoureuse.
Avant tout, enfiler la combinaison de protection.
Puis seulement et à propos toujours de situations invasives dont le caractère mineur et banal aura été établi, commencera l' évocation en mode dissociatif. Cette fois les phrases rudimentaires ouvrant les canaux de l'objet désagréable banal comme le bruit du camion poubelle à 5 heures du matin seront introduites cette fois par "c'est moi qui ai le corps tendu....." suivi de ce fameux silence laissant la parole au subconscient, "c'est moi qui ai le bruit du choc des poubelles", "c'est moi qui ne retrouve plus le sommeil" et ainsi de suite pour chaque canal.
À l'issue de ces exercices, le patient va expérimenter une mise à distance, un filtrage de l'objet agressif par le préconscient ancré dans la protection. Il va prendre de l'assurance vis à vis de cet effet protecteur.
Puis qu’ici c'est le bruit des poubelles qui est la cause du réveil brutal, l'ancrage protecteur, la combinaison de protection devra comporter une sensation sonore dont l'évocation en mode canal sonore est particulièrement apaisante. Ainsi l' évocation en mode dissociatif du bruit des poubelles sera amorti, absorbé par le canal de la combinaison puissamment envahi par le bruit blanc d'un champ de blé mûr sous la brise thermique par exemple. Voilà ce qu'est le recouvrement d'un objet agressif par la combinaison de protection et son ancrage sonore.
Dans l'essai pour un psychisme objectif, nous reconnaissons le rôle dévolu au préconscient. L'invasion protectrice qui inaugure toute autre évocation en mode dissociatif va protéger les canaux sensoriels mais aussi imposer son climat neurochimique. L'évocation en mode dissociatif est donc soumise à cette couverture de protection. Comme nous le savons, tout rappel mémoriel va donner lieu, surtout dans le domaine des objets issus du subconscient, à une nouvelle mémorisation, mais cette fois influencée par les canaux et le climat neurochimique de la combinaison de protection. Ce remaniement mémoriel circonstancié va conduire à circonscrire l'objet toxique et lui faire perdre ses liaisons gâchettes, au point que le bruit des poubelles sera d'emblée mixé en quelque sorte, filtré, amorti par celui de la brise sur le champ de blé.
Cette fois c'est bien d'une thérapie mémorielle dont il s'agit, et une fois cet exercice maîtrisé sur la situation banale, il pourra être entrepris pour d'autres objets spécifiques aux souffrances du patient.
Bien entendu, dès lors qu'il s'agit de choses plus personnelles, le pédagogue ne pourra pas jouer la démo devant le patient. Voilà pourquoi le souffrant doit s'être approprié parfaitement les techniques sur les objets de travaux pratiques, pour se retrouver en autonomie dans la maîtrise dissociative des invasions toxiques qu'il voudra circonscrire dans son intimité.
Remarquons que le soignant pourra au mieux anticiper les besoins du patient, en l'aidant à lister les caractéristiques pertinentes de sa combinaison de protection et de ses ancrages protecteurs en fonction des invasions toxiques que le patient pressent. L'exemple du bruit de poubelles conduira le soignant à guider le patient vers une protection particulièrement puissante pour le canal auditif.
Donc la composition de la combinaison de protection, dès lors que l'on engage une thérapie aussi complexe que dans les cas 7 et 8 de cet 'essai pour un psychisme objectif, va nécessiter une concertation fine avec un soignant expérimenté et restant imprégné par la prudence de ses propositions relativement à un patient qui par définition ne peut disposer à ce stade d'une clarification complète de ses souffrances. L'expérience apporte un constat trivial. Il faut que le patient dispose d'une combinaison très solide et pluri-compétente, ainsi que d'une procédure d'interruption de toute évocation qui serait responsable de mal-être.
Comme abordé dans l'essai, les objets ne sont pas strictement isolés les uns des autres, les liens symboliques établis sans doute physiologiquement pendant le sommeil mêlent les climats neurochimiques d'objets dont l'association n'est pas reproductible entre individu. La encore l'expérience ne dispense pas de la circonspection et du respect du dernier mot laissé à la réflexion et l'intuition du patient.
Dans l'exemple 7, nous avons vu comment une évocation d'objets distants sur l'axe temporel permet d'établir au sein du préconscient envahi bénéfique-ment par le climat neurochimique de l'affection de la grand-mère un objet symbolique très puissant agrégeant la manipulation des lainages avec le comblement d'un hiatus ontogénique. Le retentissement bénéfique de ce comblement ontogénique permet d'ouvrir la voie au processus complexe de la régression-fusion entravé depuis plusieurs années. C'est bien le hiatus, de part la mise à nue de l'angoisse primitive, qui entravait la régression-fusion indispensable à l' établissement de l'amour maternel que cette mère s'attendait à éprouver.
Ce résultat est donc l'aboutissement du choix judicieux de l'ancrage lainage, en s'appliquant particulièrement sur son lien symbolique avec le canal du monde intérieur "sérénité, amour". Le préconscient a renvoyé dans la suite des objets ontogéniques celui qui constitue le pont tibétain.
Le modèle proposé tient donc ses promesses pour guider et clarifier l'ensemble de cette réparation.
Dans le cas 8, un écueil supplémentaire s'est constitué du fait de l' objet agressif la gravité de initial avec en particulier un canal neurochimique perverti. Ce canal de la récompense perverti a été dupliqué et agrégé aux évènements affectifs et sexuels d'une ontogénie interrompue, puis d'un SOI en souffrance. Puis par la constante de la double peine, le sentiment de culpabilité constant chez l'enfant maltraité a rendu par association symbolique les objets d'affection et d'amour comme gâchette d'invasion toxique insupportable.
Ces invasions toxiques récurrentes puisque déclenchées par les contacts affectifs se sont mêlées aux évocations d'objets divers dont le remaniement mémoriel a conduit au parasitage de leur climat neurochimique. Par exemple tel objet vécu initialement comme heureux a subi ce remaniement mémoriel pour devenir toxique à son tour. Nous avons vu donc que l'on va constater une contagion pour des évènements non directement liés à l'affect.
Le parasitage peut toucher aussi bien des évènements antérieurs à l'agression que des évènements plus logiquement postérieurs. Ce parasitage par les aléas des invasions concomitantes dans le préconscient touchera également des objets indépendants des symboles affectifs. Le patient va souffrir d'une amputation de ses objets bienfaisants par leur mutation en objets toxiques. L'image du miroir brisé rend compte de cette mémoire douloureusement perturbée, disloquée.
L'application du modèle dans une telle situation est productive d'une vision claire des objectifs attendus de l'application du protocole.
Cette application est précédée cette fois par les explications libératoires du sentiment de culpabilité, dont la résolution par un discours superficiel risquerait d'être le fameux cauter sur jambe de bois. Il reste à organiser les objectifs du protocole dans ce contexte complexe.
L'urgence est de trouver des objets non parasités pour constituer une combinaison de protection spécifique dans le domaine affectif, estime de soi, sérénité et de ses ancrages confortables. Bien évidemment, comme le protocole le prescrit, aucune étape, en particulier les travaux pratiques sur des objets banals bienfaisants de la vie courante, n'est escamotée. La situation impose plus qu'ailleurs que le patient s'approprie le modèle puisque cette fois c'est sa propre circonspection dans l'évaluation de l'état parasité ou non des objets qui va assurer la puissance de sa combinaison de protection face aux évocations dissociatives thérapeutiques variées qui apportent la réparation fonctionnelle. Avant une réparation de type ontogénique la priorité va au déparasitage des objets ayant subi un remaniement mémoriel toxique. Viendra ensuite la réparation ontogénique par un pont tibétain.
+
Le modèle et le protocole conduisent à un enchaînement cohérent et éprouvé dans les cas les plus complexes, enkystés. C'est le caractère pédagogique de la démarche qu'il faut retenir. À l'instar de la pertinence du modèle qui trouve sa confirmation à mesure que le patient peut se l'approprier, le protocole dépend dans chaque cas de la place prééminente que prend le patient dans son application.
[[Fichier:PNL1 10.jpg|vignette]]
La double flèche grise entre l'objet négatif et le préconscient figure l'intervention d'une évocation en mode dissociatif. Cette forme graphique désigne le remaniement qui s'opère dans un préconscient préalablement envahi par la combinaison de protection.
Dans la proposition "c'est moi qui ai l'odeur, le contact, le son etc", il y a la protection d'une vision indirecte à travers le filtre de la combinaison de protection. Le patient en quelque sorte se repasse un film dont il est réalisateur, se mettant en scène lui-même. Cette posture est rendue possible face à une situation toxique grâce à la protection filtrante de ses ancrages protecteurs déjà parfaitement rodés. Ce metteur en scène est en quelque sorte derrière une caméra filtrante et lui-même dans sa combinaison de protection.
[[Fichier:PNL1 9.jpg|vignette]]
Ce travail ayant abouti, l'objet toxique est figuré avec une limite continue, imperméable. Cette représentation tente de figurer la perte du potentiel invasif spontané de l'objet en question. Nous avons vu qu'il s'agit donc d'un remaniement mémoriel d'un objet subconscient par recouvrement des différents canaux, et en particulier par une modification du contexte neurochimique associé.
L'évocation en mode dissociatif, sous protection de la combinaison adéquate, permet donc de modifier les données stockées, leur charge émotionnelle, et donc en fait le contexte neurochimique enregistré dans l'objet.
L'objet traité ne disparait pas de la mémoire, il est remanié, circonscrit, son contexte neurochimique est modifié et, si sa résurgence survient, il aura perdu en toxicité, en contagiosité. Je résume en disant que le patient rangera l'objet sur l'étagère des mauvais souvenirs.
conclusion
Le modèle de psychisme objectif, prolongé par son protocole de prise en charge en médecine générale, s'adresse donc à la fois aux praticiens qui cherchent des pistes pour la prise en charge des nombreuses souffrances qui leur seront confiées et aux patients qui cherchent à comprendre une démarche de soin argumentée.
J'espère que cet essai sera utile, et en particulier par les reformulations, les critiques, références bibliographiques que la lectrice, le lecteur aura inscrites dans les espaces libres des pages de gauche (de la version pdf).
Pour des raisons de responsabilité et d'éthique, je renouvelle des consignes que j'ai faîtes miennes.
- Ne pas suivre une posture de gourou hélas répandue et délétère pour le souffrant.
- Commencer toute prise en charge par la constitution d'une combinaison protection, ce qui sera suffisant dans la majorité des cas. Toute démarche qui propose une prise en charge directe de la souffrance est selon moi dangereuse.
- Dès que des objets intimes devront être manipulés, c'est le patient qui doit passer maître de ses choix. Le soignant doit apporter des conseils de bon sens. Il faut commencer par combinaison de la protection adaptée, puis choisir l'épine la moins douloureuse, et finir par le pire. Un soignant expérimenté pourra donner des conseils plus détaillés en fonction des données de la calibration et de l'anamnèse.
- Il faut accepter de revenir en arrière dans le protocole car, si une invasion douloureuse, c'est que la combinaison de protection n'est pas justement composée ou que simplement la fatigue impose la récupération, car, ne l'oublions jamais, le cerveau est le support du psychisme. C'est un organe biochimique fatigable. Nul ne saurait aller contre un état d'épuisement en n'instaurant pas d'abord une récupération biochimique qui viendra avec la mise à l'abri du surmenage, des agressions et des pollutions médiatiques.
Bien entendu, un modèle comme celui présenté ne prétend pas détenir la vérité. Comme tout modèle il présente des concepts argumentés et des opérations décrites qui se justifient par l'étendue des situations qu'il permet d'appréhender. La pédagogie en matière de psychisme devrait être aussi centrale dans l'éducation à l'hygiène de vie que le lavage des mains dans l'hygiène des repas.
Tout être humain devrait pouvoir se représenter son fonctionnement psychique afin de se comprendre lui-même et de pouvoir mieux comprendre les autres. Par le modèle de psychisme objectif chacun peut disposer d'un miroir de sa psyché et de certains moyens de prévenir sa dislocation et d'obtenir sa réparation.
Les limites du modèle sont claires. La genèse des objets décrits, ainsi que leurs relations et les processus de remaniement mémoriels forment un système rationnel.
Par le jeu de leurs combinaisons les objets forment des tableaux qui peuvent devenir complexe voire incompréhensible sans recours au modèle. Les psychoses sont en principe hors du champ de cet essai, de mon point de vue, car elles relèvent de la psychiatrie et de ses spécialistes. Ce que j'appelle l'hygiène psychique par contre est son champ d'application jusqu'à la névrose où ce modèle peut contribuer à une juste compréhension psychopathologique et donc à l'organisation des soins.
Bonne santé et bonheur à chacun et à tous.
== LE PROTOCOLE REGLE POUR LA MEDECINE GENERALE DANS LE MODELE DE PSYCHISME OBJECTIF ==
<blockquote>LE PREMIER OBJECTIF..... [[Essai pour un modèle de psychisme objectif/protocole1]]</blockquote>
<blockquote>LE DEUXIÈME OBJECTIF..... [[Essai pour un modèle de psychisme objectif/protocole2]]</blockquote>
<blockquote>LE TROISIÈME OBJECTIF..... [[Essai pour un modèle de psychisme objectif/protocole3]]</blockquote>
<blockquote>LE QUATRIÈME OBJECTIF..... [[Essai pour un modèle de psychisme objectif/protocole4]]</blockquote>
<blockquote>LE CINQUIÈME OBJECTIF..... [[Essai pour un modèle de psychisme objectif/protocole5]]</blockquote>
<blockquote>LE SIXIÈME OBJECTIF..... [[Essai pour un modèle de psychisme objectif/protocole6]]</blockquote>
<blockquote>LE SEPTIÈME OBJECTIF..... [[Essai pour un modèle de psychisme objectif/protocole7]]</blockquote>
Et voici UN LIEN DU FICHIER POUR EXPOSER LA DEMARHE AU PATIENT ( la dernière diapo est animée par la barre d'espace) [https://drive.google.com/file/d/1aXmGoN8RORB9F2Cybxb3yTiNjvZP6jOY/view?usp=sharing] attention pour voir le contenu avec les images il faut le télécharger pour l'ouvrir avec Libre Impress... ce lien est externe car wiki common refuse les fichiers .ODP .... ce fichier est libre d'accès
Postface
La déclaration des droits de l'homme de 1948 contient beaucoup de traits révolutionnaires à mes yeux et nous devons nous réjouir qu'elle soit citée en préambule de certaines constitutions. De même le préambule à la fondation de l'Organisation Mondiale de la santé pose une définition de la santé très novatrice, et qui me sert de référence dans ce domaine depuis le début de mes études de médecine
La première inclut ce que l'on désigne par les droits créances. Ainsi elle reconnaît à toute personne humaine une créance dès sa naissance auprès du reste de l'humanité pour répondre à un certain nombre de besoins fondamentaux comme le logement, la nourriture, l'éducation, la sûreté, la santé. Hélas les états ont réussi à convaincre que ces exigences écrites et signées étaient des utopies trop coûteuses pour les finances des plus riches, et en définitive aucun à ma connaissance n'a ratifié ces textes. Nous observons actuellement la déroute intellectuelle de ces pragmatiques de comptoir face aux pandémies et au dérèglement climatique où leur culpabilité est notoire. La fondation de l'OMS repose sur une conception de la santé universelle où tout est abordé, avec de mon point de vue un génie non dépassé à ce jour. La santé mentale et affective y est décrite comme un droit universel.
Cet essai souhaite contribuer à un droit trop superficiellement abordé, celui de disposer des moyens de se comprendre et de comprendre les autres. Bien entendu l'outil linguistique est un préalable dans l'exercice de ce droit et rejoint le droit à l'éducation. J'en profite pour situer la place qui devrait revenir à une langue spécifiquement faite pour la communication comme la langue espéranto, reconnue par l'UNESCO, dont chacun peut disposer avec efficacité et gratuitement.
La contribution de cet essai est de donner matière à réflexion sur la manière de permettre à chaque être humain de s'approprier son fonctionnement psychique. Comme pour d'autres domaines une pédagogie efficace est cruciale. En s'appuyant sur certains acquis, l'essai propose de lever le voile, d'objectiver un domaine trop souvent laissé en friche, où l'être humain perd sa liberté dans le silence de l'inconscience collective.
Aux soignants je confie l'usage de cette pédagogie en espérant les aider dans ce domaine difficile, et les autres je les invite à une exploration de la psyché.
[[Catégorie:Psychologie]]
6haj7w46eg4xz18wdslchhw3g9dwyp0