• Aucun résultat trouvé

Annexe technologique contingente : les circuits CMOS

Dans le document Architecture, Système, Réseau 1 Protopoly (Page 37-42)

3.7.1 Transistors et processus de fabrication

Règles du jeu du CMOS :

— Un transistor est, en gros, un interrupteur, commandé par un fil de commande qui arrive sur sa “grille” (gate). Voir les figures 3.14 et 3.15 ci-dessous.

— On a deux types de transistor, le transistor normal (qui s’appelle NMOS pour N-type Metal Oxide Silicium), qui est passant quand on met la grille à 1 et ouvert sinon, et le transistor-dessiné-avec-un-rond-sur-la-grille (qu’on appelle PMOS mais je refuse de m’en souvenir), que c’est le contraire.

— Pour de sordides raisons électroniques, le NMOS marche bien (i.e. conduit bien le courant) quand il est relié à la masse (ou à un autre NMOS relié à la masse), alors que le PMOS c’est le contraire : il aime bien être relié à l’alimentation positive.

— du coup il faut les assembler de telle manière que les 1 logique produits par un circuit viennent à travers des PMOS, alors que les 0 logiques doivent être produits par des NMOS.

3.7.2 Portes de base

FIGURE3.14 – Un dessin d’inverseur pompé sur Wikipedia. Vdd cela veut dire +5V (pour une certaine valeur de 5) et Vss cela veut dire la masse.

Vdd Vdd

A B

A

B

Vss

Out

FIGURE3.15 – A votre avis, c’est quoi comme porte ?

Illustration du fait que brancher deux sorties ensembles, c’est mal : ben, on voit bien que cela fait un joli court-circuit de l’alimentation à la masse, qui fait assez vite fondre les transistors sur le chemin...

3.7.3 Vitesse, surface et consommation

Sans entrer dans les détails, voici ce qui se passe dans un circuit composé de transistors bran-chés entre eux :

— La grille d’un transistor (gate) se comporte comme un condensateur : il faut charger et décharger ce condensateur pour le faire commuter. Les entrées d’une porte CMOS de base (inverseur, nand ou nor) sont toutes connectées à des grilles : pour faire basculer ces portes, il faut charger ces condensateurs.

— Par conséquent, lorsqu’on connecte une sortie ànentrées (fan-out den), on divise le cou-rant qu’est capable de produire la sortie entre lesnentrées, et on multiplie donc par n le temps qu’il faut pour charger cesnentrées (donc faire basculer les transistors corres-pondants, donc faire passer l’information). Typiquement, dans un circuit, on accepte un fanout de 4 maximum, au-delà c’est mal.

— La connexion entre la source et le drain du transitor se comporte comme une résistance, assez faible quand le transistor est passant, et élevée quand il est bloqué.

3.7. ANNEXE TECHNOLOGIQUE CONTINGENTE : LES CIRCUITS CMOS 39

— Plus la grille est large, plus elle présente une capacité en entrée élevée, c’est-à-dire plus il faut du courant pour la faire basculer, mais plus elle peut laisser passer de courant entre la source et le drain.

— Autrement dit, un transistor plus large est plus rapide du point de vue de sa sortie (il peut passer plus de courant pour charger plus vite les transistors suivants) mais plus lent du point de vue de son entrée (il faut plus de temps pour le charger pour le faire basculer).

Tout cela se mord la queue. Heureusement, une chouette technique (Logical Effort) permet de modéliser la vitesse d’un circuit CMOS en fonction de la taille des transistors, et ensuite d’opti-miser cette vitesse en dérivant ce qu’il faut pour chercher quand la dérivée s’annule.

Chapitre 4

Memoriser l’information

Enchainement des calculs, accumulateur. Même à l’intérieur d’un calcul, on a des “retenues” : ce qu’on retient.

4.1 Vue abstraite des organes de mémorisation

4.1.1 Le registre ou mémoire ponctuelle

Voici le registre sur front, ou Flip-Flop1(on verra pourquoi ce nom rigolo un peu plus bas) :

Ck

s

e

FIGURE4.1 – Symbole pour un registre sur front montant

Il y a mémorisation de l’entrée e sur front montant (changement de valeur de 0 à 1) de l’entrée Ck.

Notez le triangle sur l’entrée d’horloge indique que ce signal porte une information tempo-relle, pas une donnée.

Une information d’instant sera toujours donnée par un changement de valeur, qu’on appelle un front (soit montant, soit descendant).

C’est pour cela que j’ai dessiné le front sur le registre. On peut évidemment aussi construire des registres sur front descendant.

Mettons 8 registres en parallèle, avec la même entrée d’horloge : on obtient un registre 8 bits.

Par extension, les mémoires de travail dans le processeur sont appelées des registres. Exemple : le Pentium a 4 registres entiers et 8 registres flottants alors que l’Itanium a 128 de chaque.

4.1.2 Mémoires adressables

Les opérations de base qu’on peut faire avec une mémoire adressable sont

— lire la donnée à l’adressea. Dans ce cas il faut donner l’information d’adresse à la mémoire, et elle répond par l’information contenue dans la cellule visée.

1. Dans la vraie vie (c’est-à-dire sur Wikipedia) vous trouverez souvent le terme “bascule D” pour ce registre. Je n’aime pas pour la raison détaillée dans la prochaine note de bas de page. Toutefois, vous voila prévenus.

41

— écrire une donnéedà l’adressea. Dans ce cas on doit donner à la mémoire les informations d’adresse et de donnée, et un instant à partir duquel le contenu de la mémoire est changé.

On appelle aussi la mémoire adressable RAM(random access memory), parce que c’est plus court.

Moralement, la lecture d’une mémoire est une fonction combinatoire des entrées, alors que l’écriture demande un fil d’horloge (qui porte une information de temps). C’est donc très diffé-rent.

En pratique toutefois, quand on construit une mémoire, on s’arrange pour offrir la même interface en lecture et en écriture. Typiquement on a un bus d’adresses, un bus de données, un fil d’horloge, et un signalR/W. Au front montant de l’horloge,

— en cas de lecture (siR/W = 1) le contenu de la case adressée est transféré sur le bus de données,

— en cas d’écriture (si R/W = 0) le contenu du bus de données est transféré dans la case adressée.

4.1.3 Mémoires à accès séquentiel : piles et files

Pile ou LIFO(last in, first out) Les primitives sont :

— empiler(info) ajoute un étage

— dépiler()

enlève un étage : destruction de la donnée dans la pile

— test pile vide

File ou FIFO(first in, first out) Les primitives sont :

— insérer(info)

— extraire() – avec destruction

— test file vide

On appele aussi la file : tampon oubuffer.

Remarque : les pile et files, conceptuellement, sont de capacité infinie... Si on les réalise, leur capacité sera sans doute finie, et il faudra ajouter le test “pile/file pleine”.

4.1.4 Mémoires adressables par le contenu

Analogie avec le dictionnaire. On ne veut pas retrouver l’information qu’on connait déjà (le mot) mais une autre information qui y est associée (définition). En général, on a dans une mé-moire adressable par le contenu des couples (clé, valeur).

Primitives :

— rechercher(clé)

— insérer(clé, valeur)

arbitrage si clé est déjà présent

— supprimer(clé)

Il y a des variations suivant les stratégies de remplacement, et en général en fonction de la manière dont on les construit.

Normalement vous verrez l’implémentation de ces choses là en logiciel. Je présenterai les implémentations matérielles quand j’en aurai besoin (elles sont plus rares).

Dans le document Architecture, Système, Réseau 1 Protopoly (Page 37-42)