Circuits et architecture des ordinateurs

Problème à signaler:


Télécharger Circuits et architecture des ordinateurs



★★★★★★★★★★1 étoiles sur 5 basé sur 1 votes.
1 stars
1 votes

Votez ce document:

 

Circuits et architecture des ordinateurs

 

Année 2011/2012

Université Paris Diderot

Olivier Carton

Version du 21 déc. 2011

 Licence Creative Commons


 


Circuits et architecture des ordina

teurs                                                                 1 Circuits et architecture des ordinateurs en M1

1  Circuits et architecture des ordinateurs en

.

Cours référencé sur le site de l’Université Numérique Ingénierie et Technologie (Unit)

Rattrapage du cours annulé le mardi 6 décembre de 8h30 à 10h30 en salle 270F

Cours le lundi en salle 470E (halle aux farines) de 13h30 à 15h30

Travaux dirigés (tkgate version 1.8.7) vendredi en salle 473F ou 447C de 8h30 à 10h30 (Pierre Letouzey)

Ce support de cours en PDF

Processeur LC3

Années 2006/2007, 2007/2008, 2008/2009, 2009/2010 et 2010/2011

Présentation du cours

Cours n° 1 : historique et représentation des données galeries de photos entiers entiers signés

Cours n° 2 : représentation des données (suite), transistors, portes réels (norme IEEE 754) caractères (ASCII et Unicode) logique de Boole table de vérité tableaux de Karnaugh

portes logiques (inverseur, nand, nor)

Cours n° 3 : additionneurs circuits élémentaires additionneurs semi-additionneur additionneur complet

additionneur par propagation de retenue (ripple-carry adder) calcul des indicateurs soustraction

Cours n° 4 : additionneurs (suite) additionneur par anticipation de retenue (carry-lookahead adder) additionneur récursif additionneur hybride

additionneur par sélection de retenue

Cours n° 5 : mémoire mémoire statique/mémoire dynamique

1 Circuits et architecture des ordinateurs en M1

bascule D mémoire 4 × 3 bits

Cours n° 6 : circuits séquentiels et architecture générale d’un micro-processeur principe des circuits séquentiels construction d’une guirlande cas d’un automate fini modèle de von Neumann unité de contrôle unité de traitement mémoire

Cours n° 7 : description du LC-3 registres organisation de la mémoire jeu d’instructions du processeur LC-3

chemins de données du LC-3

Cours n° 8 : programmation en assembleur du LC-3 longueur d’une chaîne mutiplication non signée, signée et logarithmique addition 32 bits

Cours n° 9 : appels de sous-programmes, pile appels de sous-programme

sauvegarde des registres tours de Hanoï

Cours n° 10 : appels systèmes et interruptions entrées/sorties appels systèmes interruptions

Cours n° 11 : autres architectures processeurs 80x86 comparaison CISC/RISC architecture IA-64

Cours n° 12 : pipeline principe étages réalisation

Cours n° 13 : gestion de la mémoire mémoires associatives mémoire virtuelle mémoires cache

Examen : mercredi 11 janvier de 15h30 à 18h30 en salle 575F

Historique                                                                                                                                                                     2 Historique

2  Historique

2.1  Historique général

Quelques dates clés

500 av JC apparition des bouliers et abaques

1632 invention de la règle à calcul

1642

Pascal invente la

1833 machine de Babbage

1854 publication par Boole d’un ouvrage sur la logique

1904 invention du tube à vide

1937 article d’Alan Turing sur la calculabilité : machines de Turing

1943 création du ASCC Mark 1 (Harvard - IBM) : Automatic Sequence-Controlled Calculator

1946    construction de l

1947    invention du transistor (Bell)

1955 premier ordinateur à Transistors : TRADIC (Bell)

1958 premier circuit intégré (Texas Instrument)

1964 langage de programmation BASIC

1965

G. Moore énonce la loi qui porte son nom :

1969 système d’exploitation MULTICS puis UNIX (Bell)

1971    premier microprocesseur : 4004 d’Intel (4 bits, 108 KHz, 2300 transistors)

1972    microprocesseurd’Intel (8 bits, 200 KHz, 3500 transistors)

1973    langage C pour le développement d’UNIX

1974    premier microprocesseur Motorola : 6800 (8 bits)

1974 microprocesseur 8080 d’Intel

2.2 Historique des micro-processeurs

2.2  Historique des micro-processeurs

2.2.1  Références

Histoire des micro-processeurs de 1971 à 1996

Collection de micro-processeurs

Autre collection de micro-processeurs

Histoire des premiers micro-processeurs

2.2.2  Principaux micro-processeurs

Intel 4004

1971, 4 bits, 108 KHz, 2300 transistors

Intel 8008

1972, 8 bits, 200 KHz, 3500 transistors

Intel 8080

1974, 8 bits, 6000 transitors

Motorola 6800 (Photos avec boitier plastique et boitier céramique)

1974, 8 bits, 2Mhz, 7000 transistors

MOS Technology 6502

1975, 1 MHz, 8 bits

Zilog Z80

1976, 2Mhz, 8 bits

Intel 8086

1978, 16 bits

Motorola 6809

1978, 8 bits

Intel 8088

1979, 16 bits

Motorola 68000

1979, 16 bits, 68000 transistors

Pentium

1993, CISC

PowerPC

1993, RISC

Sparc

1995, RISC

2.2.3  Généalogie des micro-processeurs

Historique                                                                                                                        2.2.3 Généalogie des micro-processeurs

 

2.2.3 Généalogie des micro-processeurs

Généalogie des micro-processeurs

2.2.3.1  Sources

iAPX 432

Intel i860

Intel i960

Itanium

Core

Core 2

Motorola

IMP-16

DEC (T-11)

ARM

PA-RISC (wikipedia)

PA-RISC (openpa)

RISC

MIPS

PowerPC

DEC alpha

SPARC

National 320xx

Comparatif de quelques architectures


3 Représentation des données

3  Représentation des données

Dans un ordinateur, toute l’information est sous forme de bits qui sont regroupés en octets. Il faut donc qu’il y ait un codage de cette information. Ce codage dépend bien sûr du type des données. Cette partie décrit les codages les plus utilisés pour les types de base, c’est-à-dire les entiers, les nombres flottants et les caractères.

3.1  Entiers

3.1.1 Entiers positifs

Les entiers positifs sont toujours codés en base 2. Une suite bk-1 ,…,b0 de k bits représente l’entier n donné par la formule suivante. n = ?i=0 k-1 bi 2i .

Avec k bits, on peut donc représenter tous les entiers de l’intervalle 0 … 2k -1. Le nombre de bits utilisés pour coder les entiers dépend de la machine. C’est encore très souvent 32 bits mais l’apparition des micro-processeurs 64 bits rend le codage 64 bits de plus en plus fréquent.

3.1.2  Big endian/Little endian

Cette caractéristique décrit dans quelle ordre sont placés les octets qui représentent un entier. Dans le mode big endian les octets de poids fort sont placés en tête et occupent donc des emplacements mémoire avec des adresses plus petites. Dans le mode little endian, les octets de poids faibles sont au contraire placés en tête. Dans le cas d’entiers de 32 bits, il existe encore des modes mixtes. Cette terminologie provient du livre Les voyages de Gulliver de J. Swift.

 

Big et little endian

Le mode big endian accélère les opérations qui nécessitent de regarder en premier les bits de poids forts comme la recherche du signe, la comparaison de deux entiers et la division. Au contraire le mode little endian favorise les opérations qui commencent par les bits de poids faible comme l’addition et la multiplication.

3.1.3 Codage BCD (Binary Coded Decimal)

Big endian

Mixed endian

Little endian

Motorola 68xx, 680x0

IBM

Hewlett-Packard

SPARC

Motorola PowerPC Silicon Graphics MIPS

Intel

DEC VAX

3.1.3  Codage BCD (Binary Coded Decimal)

Il s’agit d’une représentation surtout utilisée dans les premiers temps de l’informatique. La représentation BCD d’un entier n est obtenue de la manière suivante. L’entier n est écrit en décimal puis chaque chiffre décimal entre 0 et 9 est ensuite codé sur 4 bits. Il faut donc (k+1)/2 octets pour coder un nombre ayant k chiffres décimaux. Le seul intérêt de cette représentation est de faciliter l’affichage en base 10 de l’entier. Certains processeurs possédaient quelques instructions spécifiques pour traiter, en particulier pour l’addition, les entiers codés en BCD.

3.1.4  Entiers signés

Il existe plusieurs façons de coder les entiers signés. La représentation avec un bit de signe est la plus simple mais elle a trop d’inconvénients pour être utilisée en pratique. La représentation biaisée est uniquement utilisée pour le codage des exposants des flottants. La représentation en complément à 2 est utilisée par tous les ordinateurs car elle facilite de nombreuses opérations.

3.1.4.1  Représentation avec un bit de signe

Dans cette représentation, le bit de poids fort indique le signe du nombre avec la convention 0 pour positif et 1 pour négatif. Les bits restants sont utilisés pour coder la valeur absolue du nombre comme un nombre positif. Cette représentation semble la plus naturelle mais elle n’est pas utilisée en pratique car elle souffre de nombreux défauts dont le principal est de compliquer les additions et soustractions. En effet, pour additionner deux nombres codés de cette façon, il est nécessaire de faire une addition ou une soustraction suivant que ces deux nombres sont du même signe ou de signes différents.

Avec k bits, cette représentation permet de représenter tous les entiers de de l’intervalle -2k-1 +1 … 2k-1 -1. L’entier 0 a alors deux codages.

 

Représentation avec bit de signe sur 3 bits

3.1.4 Entiers signés

3.1.4.2  Représentation biaisée

Cette représentation est utilisée pour le codage des exposants des nombres flottants. Avec k bits, cette représentation permet de représenter tous les entiers de l’intervalle -2k-1 … 2k-1 -1. Chaque entier n de cet intervalle est codé par le codage de n + 2k-1 comme un entier positif.

 

Représentation biaisée (avec un biais de 4) sur 3 bits

3.1.4.3  Représentation en complément à 2

Cette représentation est la plus importante car c’est elle qui est utilisée dans les ordinateurs. Malgré son apparente complexité, elle simplifie de nombreuses opérations sur les entiers.

Avec k bits, cette représentation permet de représenter tous les entiers de de l’intervalle -2k-1 … 2k-1 -1. Les entiers de 0 à 2k-1 -1 sont codés comme les nombres positifs. Le bit de poids fort de leur représentation est donc toujours 0. Un nombre négatif n de l’intervalle -2k-1 … -1 est représenté par le codage de n+2k (qui appartient à l’intervalle 2k-1 …2k -1) sur k bits.

Dans la représentation en complément à 2, les représentations dont le bit de poids fort est 0 sont utilisées par les nombres positifs. Au contraire, les représentations dont le bit de poids fort est 1 sont utilisées par les nombres négatifs. Le bit de poids fort se comporte donc comme un bit de signe. Ceci facilite le test de signe d’un entier signé.

3.1.4 Entiers signés

 

Représentation en complément à 2 sur 3 bits

3.1.4.3.1  Calcul de l’opposé

Étant donné un entier n positif ou négatif représenté en complément à 2, l’algorithme suivant permet de calculer la représentation en complément à 2 de son opposé -n. Ceci est bien sûr possible pour toutes les valeurs de l’intervalle -2k-1 … 2k-1 -1 sauf pour -2k-1 dont l’opposé n’est plus dans l’intervalle.

L’algorithme est le suivant. Soit n’ la représentation en complément à 2 de n. L’algorithme comporte les deux étapes suivantes qui utilisent des opérations présentes dans tous les micro-processeurs et facilement réalisables avec des portes logiques.

1.    Calculer le complément bit à bit de n’.

2.    Ajouter 1 au résultat de l’étape précédente.

Pour expliquer cette algorithme, on remarque que le complément bit à bit de m donne la différence entre le nombre écrit avec que des 1 et n’, c’est-à-dire la valeur 2k -n’-1. Le résultat de l’algorithme est donc 2k -n’. Le tableau ci-dessous permet de vérifier que quel que soit le signe de n, l’algorithme donne le bon résultat. Soit n un entier positif ou négatif et soit n’ son codage en complément à 2.

Nombre n

Codage n’ de n

Résultat

Nombre codé

0 ? n ? 2k-1 -1

n’ = n

2k -n’ = -n

-n

-2k-1 +1 ? n ? -1

n’ = n+2k

2k -n’

-n

n = -2k-1

n’ = 2k-1

n’ = 2k-1

n

3.1.4 Entiers signés

3.1.4.3.2  Calcul de la somme

Un des grands avantages de la représentation en complément à 2 est de faciliter les additions et soustractions. En effet, l’addition de deux nombres m et n se fait simplement en additionnant leur représentations m’ et n’.

Le tableau ci-dessous récapitule les différents cas de l’addition suivant les signes des opérandes. Soient m et n deux entiers signés représentés sur k bits. On distingue donc les trois cas : le cas m et n positifs, le cas m positif et n négatif et le cas m et n négatifs. Le quatrième cas est omis du tableau car il est symétrique du cas m positif et n négatif. Pour chacun des cas, on donne les codages respectifs m’ et n’ de m et n, puis on distingue à nouveau deux sous-cas suivant la valeur de la somme m’+n’. Le résultat de l’addition de m’ et n’ n’est pas nécessairement m’+n’ puisque m’+n’ peut être supérieur à 2k et ne pas s’écrire sur k bits. Le résultat de cette addition est m’+n’ si 0 ? m’+n’ ? 2k -1 et m’+n’-2k si 2k ? m’+n’ ? 2k+1 -1.

Nombre m

Codage m’

Nombre n

Codage n’

Cas

Résultat

Nombre codé

Ck

Ck-1

Commentaire

m positif 0 ? m ?

2k-1 -1

m’ = m

n positif 0 ? n ?

2k-1 -1

n’ = n

0 ? m’+n’ ?

2k-1 -1

m’+n’

m+n

0 0

Résultat positif

2k-1 ? m’+n’

? 2k -2

m’+n’

m+n-2k

0 1

Débordement car m+n ? 2k-1

m positif 0 ? m ?

2k-1 -1

m’ = m

n négatif

-2k-1 ? n ? -1

n’ = n +

2k

2k-1 ? m’+n’

? 2k -1

m’+n’

m+n

0 0

Résultat négatif car |m| < |n|

2k ? m’+n’ ?

2k +2k-1 -1

m’+n’-2k

m+n

1 1

Résultat positif car |m| > |n|

m négatif

-2k-1 ? m ? -1

m’ = m

+ 2k

n négatif

-2k-1 ? n ? -1

n’ = n +

2k

2k ? m’+n’ ?

2k +2k-1 -1

m’+n’-2k

m+n+2k

1 0

Débordement car m+n < -2k-1

2k +2k-1 ? m’+n’ ? 2k+1 -1

m’+n’-2k

m+n

1 1

Résultat négatif

3.1.4.3.3  Exemple de calculs de somme

On se place avec k = 3 bits. Les nombres représentables en compléments à deux sont donc les entiers de -4 à 3. La table ci-dessous donne pour chaque paire de représentation, la somme et sa valeur. Les valeurs des deux retenues C2 et C3 sont codées par la couleur du fond. Les couleurs jaune et rouge correspondent aux débordements, c’est-à-dire à C2 ? C3 = 1.

C2 = 0

C2 = 1

C3 = 0

C3 = 1

C3 = 0

C3 = 1

       

3.1.4 Entiers signés

+

100

-4

101

-3

110

-2

111

-1

000

0

001

1

010

2

011

3

100

-4

000

0

001

1

010

2

011

3

100

-4

101

-3

110

-2

111

-1

101

-3

001

1

010

2

011

3

100

-4

101

-3

110

-2

111

-1

000

0

110

-2

010

2

011

3

100

-4

101

-3

110

-2

111

-1

000

0

001

1

111

-1

011

3

100

-4

101

-3

110

-2

111

-1

000

0

001

1

010

2

000

0

100

-4

101

-3

110

-2

111

-1

000

0

001

1

010

2

011

3

001

1

101

-3

110

-2

111

-1

000

0

001

1

010

2

011

3

100

-4

010

2

110

-2

111

-1

000

0

001

1

010

2

011

3

100

-4

101

-3

011

3

111

-1

000

0

001

1

010

2

011

3

100

-4

101

-3

110

-2

3.1.4.4  Extension signée et non signée

Avec toutes les représentations étudiées, un nombre signés ou non qui peut être représenté sur k bit peut encore être représenté avec k+h bits pour tout h ? 0. On étudie ici comme calculer cette représentation sur k+h bits pour la représentation des nombres non signés et pour la représentation en complément à 2 des nombres signés.

3.1.4.4.1  Extension non signée

Soit un nombre n positif ayant bk-1 …b0 comme représentation non signée sur k bits. La représentation non signée de n sur k+h bits est simplement la représentation 0…0bk-1 …b0 obtenue en ajoutant h chiffres 0 devant la représentation à k bits.

 

Extension non signée de k bits à k+h bits d’un entier

3.2 Nombres en virgule fixe

3.1.4.4.2  Extension signée

Soit un nombre n positif ou négatif ayant bk-1 …b0 comme représentation en complément à 2 sur k bits. Si n est positif, la représentation en complément à 2 de n sur k+h bits est la représentation 0…0bk-1 …b0 obtenue en ajoutant h chiffres 0 devant la représentation à k bits. Si n est négatif, la représentation en complément à 2 de n sur k+h bits est la représentation 1…1bk-1 …b0 obtenue en ajoutant h chiffres 1 devant la représentation à k bits. Dans les deux cas, la représentation de n sur k+h est bk-1 bk-1 …bk-1 bk-2 …b1 b0 obtenue en ajoutant h copies du bit de poids fort bk-1 devant la représentation sur k bits.

 

Extension signée de k bits à k+h bits d’un entier

3.1.4.5  Comparaison des représentations

Représentation

Avantages

Inconvénients

avec bit de signe

représentation naturelle intervalle symétrique changement de signe facile

2 représentations pour 0 comparaison difficile addition difficile

biaisée

comparaison facile véritable différence

représentation de 0 intervalle non symétrique addition difficile

en complément à 2

représentation de 0 bit de signe comparaison facile

addition et soustraction semblables

intervalle non symétrique

3.2

3.3

La norme IEEE 754 définit des codages des nombres en virgule flottante sur un format de 32 bits appelé simple précision (déclaré par float en C), un format de 64 bits appelé double précision (déclaré double en C) et un format de 80 bits appelé précision étendue (déclaré long double en C). Elle définit aussi les opérations arithmétiques usuelles (+,-,×,/,?) et les arrondis à effectuer pour

3.3 Nombres en virgule flottante ces opérations. Par contre, elle ne normalise pas les fonctions mathématiques comme exp, log, sin, cos, …. L’intérêt principal de cette norme est d’avoir des comportements identiques des programmes sur des machines différentes.

Le codage d’un nombre est inspiré de la notation scientifique comme -1.5 × 10+3 . Chaque nombre est décomposé en trois parties : signe, exposant et mantisse. Le signe est codé par le bit de poids fort. Ensuite un certain nombre de bits sont consacrés à l’exposant et le reste à la mantisse. La table ci-dessous donne le nombre de bits de chacun des éléments dans les différents formats.

Encodage

Signe s

Exposant e

Mantisse m

Valeur d’un nombre

Simple précision

32 bits

1 bit

8 bits 1?e?254

23 bits

(-1)s × 1.m ×2e-127

Double précision

64 bits

1 bit

11 bits 1?e?2046

52 bits

(-1)s × 1.m ×2e-1023

Précision étendue

80 bits

1 bit

15 bits 1?e?32766

64 bits

(-1)s × 1.m ×2e-16383

Dans la table ci-dessus, la formule 1.m doit être interprétée de la façon suivante. Si les bits de la mantisse sont b1 b2 …bn , on a

1.m = 1 + b1 /2 + b2 /22 + b3 /23 + … + bn /2n

Soit l’exemple en simple précision 101111110101100…0 (0xbf580000 en hexadécimal). Il se décompose en le signe s = 1, l’exposant e = 01111110 = (126)10 et la mantisse m = 1010100…0. La valeur de 1.m = 1+1/2+1/8+1/16 = 1,6875. La valeur du nombre est donc -1,6875 × 2-1 = -0,84375.

Les fonctions C suivantes permettent de considérer un flottant comme un entier et inversement afin par exemple d’afficher le codage hexadécimal d’un flottant. Il n’est pas possible d’utiliser les cast directement sur les valeurs car cela effectuerait une conversion. On utilise au contraire un cast sur les pointeurs.

// On suppose sizeof(int) == sizeof(float) int float2int(float f) {   int* p = (int*) &f;   return *p; }

float int2float(int n) {   float* p = (float*) &n;   return *p; }

int main(void) {   // Float --> hexa   printf("%08x\n", float2int(-0.84375));

  // Hexa --> float

printf("%g\n", int2float(0xbf580000)); }

Si le nombre de bits consacrés à l’exposant est k, la valeur de l’exposant e vérifie 0 < e < 2k -1. Les valeurs 0 et 2k -1 sont réservées pour des valeurs spéciales.

3.4 Caractères

La norme prévoit quatre types d’arrondi : vers 0, vers +?, vers -? ou au plus près. En théorie, l’utilisateur a le choix de l’arrondi mais aucun des langages de programmation actuels ne permet de le choisir effectivement.

Les valeurs spéciales qui peuvent être représentées sont données par la table ci-dessous dans le cas de la simple précision.

Signe

Exposant

Mantisse

Valeur

Commentaire

0

0

0

0

unique représentation de 0

s

0

m ? 0

(-1)s × 0.m ×2-126

nombres dénormalisés

0

255

0

+?

résultat de 1/0

1

255

0

-?

résultat de -1/0

0

255

m ? 0

NaN

Not a Number : résultat de 0/0 ou ?-1

Dans le cas de la simple précision, les valeurs maximales sont ± (2-2-23 )×2127 ? 2128 . La plus petite valeur positive représentable est 2-23 × 2-126 = 2-249 (nombre dénormalisé).

3.4  Caractères

3.4.1  Codage ASCII

Le codage ASCII affecte un code sur 7 bits aux principaux caractères mais pas aux caractères accentués. Il existe des extensions plus ou moins standards pour coder les caractères accentués sur un octet comme le codage

3.4.2  Codage UNICODE

Le codage Unicode permet de manipuler tous les caractères possibles. Il affecte en effet un code 32 bits à tous les caractères de toutes les langues. Il faut cependant faire attention au fait que les codes ne sont pas manipulés explicitement pour éviter que chaque caractère occupe 4 octets. On utilise un format de codage dont le plus répandu est le format

4 Transistors et portes logiques

4  Transistors et portes logiques

On explique dans cette partie le fonctionnement schématique d’un transistor ainsi que la façon de réaliser des portes logiques avec des transistors.

4.1  Semi-conducteurs

Les trois semi-conducteurs utilisés dans la fabrication des composants électroniques sont les suivants :

le silicium Si utilisé majoritairement, le germanium Ge, l’arséniure de gallium AsGa.

En plaçant ces différents éléments dans la table des éléments chimiques (cf. figure ci-dessous), on constate que ces éléments sont proches. Ces semi-conducteurs sont formés d’éléments ayant 4 électrons de valence sur la dernière couche comme le silicium ou le germanium ou d’un mélange d’éléments ayant 3 et 5 électrons de valence comme le gallium et l’arsenic.

 

Une partie de la table des éléments

4.1.1  Semi-conducteur intrinsèque

Dans un cristal de silicium pur, les atomes forment 4 liaisons de covalence avec 4 voisins. Il remplissent ainsi la dernière couche en partageant les électrons.

 

Cristal de silicium

Dans la figure ci-dessus, le cristal est représenté en plan mais il faut bien sûr imaginer ce cristal dans l’espace. La maille élémentaire du réseau est représentée à la figure ci-dessous.


4.1.2 Semi-conducteurs dopés

 

Réseau dans l’espace

Au zéro absolu, c’est-à-dire à la température 0°K, la structure du cristal est stable et le silicium n’est pas conducteur du courant électrique. Lorsque la température augmente, les électrons possèdent une énergie supplémentaire qui provoque la rupture de certaines liaisons de covalence. Certains électrons deviennent libres (cf. figure ci-dessous) et le silicium est alors peu conducteur, d’où le nom de semi-conducteur.

 

Électron libre

4.1.2  Semi-conducteurs dopés

Le silicium est dopé en introduisant des impuretés dans le cristal. On distingue deux types de dopage suivant la nature des éléments ajoutés au silicium. On parle de semi-conducteur de type n lorsque le dopage est réalisé avec des éléments ayant 5 électrons de covalence comme le phosphore, l’arsenic et l’antimoine. L’atome avec 5 électrons de covalence forme 4 liaisons de covalence et garde un électron qui est alors relativement libre (cf. figure ci-dessous).

4.2 Diode

 

Silicium dopé n avec un électron libre

On parle de semi-conducteur de type p lorsque le dopage est réalisé avec des éléments ayant 3 électrons de covalence comme le bore, l’aluminium et le gallium. L’atome avec 3 électrons de covalence ne peut former que 3 liaisons de covalence. Il y en quelque sorte un trou d’électron (cf. figure ci-dessous).

 

Silicium dopé p avec un trou

4.2

Une jonction entre un semi-conducteur de type n et un semi-conducteur de type p est appelée une diode. La partie de type n est appelée cathode et la partie de type p est appelée anode. Le courant électrique ne peut passer à travers une diode que dans un seul sens comme l’évoque son symbole en forme d’entonnoir.

 

Diode

Le principe de fonctionnement de la diode est le suivant. Les électrons libres du semi-conducteur de type n ont tendance à aller boucher les trous du semi-conducteur de type p. Il en découle une diffusion des électrons de la région dopée n vers la région dopée p. Chaque électron qui se déplace laisse un ion positif dans la région n. Il s’ensuit donc un champ électrique de rappel vers la région n qui conduit à un équilibre. Dans cet équilibre, il y a une zone, appelée zone de charge d’espace qui ressemble à du silicium non dopé et où il y a en outre un champ électrique.

4.3 Transistors

Si on applique une tension positive à la cathode et négative à l’anode, les électrons sont attirés vers le bord de la cathode et les trous vers le bord de l’anode. La zone de charge d’espace s’étend et la diode n’est pas conductrice. Si on contraire, on applique une tension positive à l’anode et négative à la cathode qui est supérieure au champ à l’équilibre, les électrons peuvent circuler de la cathode vers l’anode et la diode est conductrice.

4.3

Le transistor est la brique avec laquelle sont construits les circuits électroniques tels les micro-processeurs. La technologie actuellement utilisée pour fabriquer les micro-processeurs est la technologie MOS (Metal-Oxide-Semiconductor). Il existe deux types de transistors MOS : les transistors de type n et les transistors de type p. Les micro-processeurs actuels utilisent des transistors des deux types. On parle alors de technologie CMOS (Complementary Metal-Oxide-Semiconductor).

4.3.1  Fonctionnement

Un transistor possède trois broches appelées drain, grille et source. Pour d’autres types de transistors, elle sont aussi appelées collecteur, base et émetteur. Dans le cas des transistors MOS, le drain et la source jouent des rôles (presque) symétriques et sont (pratiquement) interchangeables. Un transistor se comporte comme un interrupteur électrique entre la source et le drain qui serait commandé par la grille. Le dessin ci-dessous illustre de manière imagée la façon dont fonctionne un transistor.

 

Fonctionnement imagé d’un transistor

4.3.2 Composition

Le comportement d’un transistor n-MOS est le suivant. Si la grille est mise à une tension de 2.9V, la source et le drain sont connectés. Si au contraire, la grille est mise à une tension de 0V, le circuit entre la source et le drain est ouvert. Le fonctionnement d’un transistor p-MOS est l’inverse. Le drain et la source sont connectés lorsque la tension appliquée à la grille est 0V.

4.3.2  Composition

Un transistor est formé de deux jonctions np obtenues en intercalant une couche p (respectivement n) entre deux couches n (respectivement p). Le transistor de type n correspond aux trois couches n-p-n et le transistor de type p aux couches p-n-p. Il y a en outre une grille en métal au début de la technique MOS mais maintenant faite en polysilicium. Cette grille est séparée de la couche intermédiaire par une fine couche d’oxyde de silicium SiO2 isolant. Le potentiel appliqué à la grille permet de modifier l’état de la couche intermédiaire.

 

Transistors n-MOS et p-MOS

4.3.3  Principe de fonctionnement

On considère un transistor de type n. Si aucune tension n’est appliquée à la grille, les deux jonctions np et pn se comporte comme des diodes en opposition et aucun courant ne peut passer entre la source et le drain. Si au contraire une tension positive est appliquée à la grille, les électrons chargés négativement s’accumulent dans le substrat dans la zone près de la grille. La région du substrat près de la grille va alors se comporter comme un semi-conducteur dopé n (cf. figure ci-dessous). Le courant peut alors passer entre la source et le drain.

 

4.4 Conventions dans les schémas

Formation d’un tunnel n dans le substrat

4.4  Conventions dans les schémas

Dans tous les schémas du cours, on adopte la convention qui est illustrée à la figure suivante. Si un fil s’arrête a une intersection avec un autre fil, les deux fils sont connectés. Si par contre, deux fils se croisent, il n’y a pas connexion des deux fils sauf si l’intersection est matérialisée par un gros point.

 

Convention des connexions aux intersections

4.5  Portes not, nand et nor

La porte la plus simple est la porte not de la négation. Elle prend en entrée une valeur x qui vaut 0 ou 1 et elle sort la valeur 1-x. La table de vérité de cette porte est donnée ci-dessous.

Entrée

Sortie

I

¬I

0

1

1

0

La porte not peut être réalisée en logique CMOS par un circuit constitué de deux transistors, un de type n et un de type p. Ce circuit est appelé inverseur. L’inverseur ainsi que son symbole sont représentés à la figure ci-dessous.

 

Schéma et symbole de l’inverseur

La porte nand prend en entrée deux valeurs 0 ou 1. La sortie vaut 0 si les deux entrées valent 1 et elle vaut 1 si au moins une des deux entrées vaut 0. La table de vérité est donnée ci-dessous.

4.5 Portes not, nand et nor

Entrées

Sortie

A

B

¬(A ? B)

0

0

1

0

1

1

1

0

1

1

1

0

Un circuit pour réaliser la porte nand en logique CMOS est donné ci-dessous. Il est constitué de quatre transistors dont deux n-MOS et deux p-MOS.

 

Schéma et symbole de la porte nand

La porte nor prend en entrée deux valeurs 0 ou 1. La sortie vaut 0 si au moins une des entrées vaut 1 et elle vaut 1 si les deux entrées valent 0. La table de vérité est donnée ci-dessous.

Entrées

Sortie

A

B

¬(A ? B)

0

0

1

0

1

0

1

0

0

1

1

0

Un circuit pour réaliser la porte nor en logique CMOS est donné ci-dessous. Il est constitué de quatre transistors dont deux n-MOS et deux p-MOS. C’est le circuit dual du circuit de la porte nand. Les deux transistors p-MOS qui était en parallèle dans le circuit de la porte nand sont en série dans le circuit de la porte nor. Au contraire, les deux transistors n-MOS qui était en série dans le circuit de la porte nand sont en parallèle dans le circuit de la porte nor.

4.6 Portes or et and

 

Schéma et symbole de la porte nor

4.6  Portes or et and

Si dans le schéma de la porte nor, chaque transistor n-MOS est remplacé par un transistor p-MOS et inversement, on obtient un schéma qui donne théoriquement une porte or. Pourtant, le circuit de la porte or n’est pas réalisé de cette manière. Cela provient du fait que la source et le drain des transistors ne jouent pas des rôles complètement symétriques. Pour des raisons de consommation, les connexions avec le 0 sont toujours commandées par des transistors de type n et les connexions avec le 1 par des transistors de type p.

Les circuits des portes and et or sont respectivement obtenus en combinant un circuit de la porte nand et nor avec un inverseur.

La porte and prend en entrée deux valeurs 0 ou 1. La sortie vaut 1 si les deux entrées valent 1 et elle vaut 0 sinon. La table de vérité est donnée ci-dessous.

Entrées

Sortie

A

B

A ? B

0

0

0

0

1

0

1

0

0

1

1

1

 

Schéma et symbole de la porte and

4.7 Portes nand et nor à trois entrées

La porte and pourrait théoriquement être aussi réalisée par le schéma ci-dessous qui comporte moins de transistors. Ce schéma n’est cependant pas utilisé en pratique. Dans ce schéma, la sortie est reliée au 1 par des transistors n et au 0 par des transistors p. Ceci induit une consommation excessive par rapport au schéma précédent.

 

Mauvais schéma d’une porte and

La porte or prend en entrée deux valeurs 0 ou 1. La sortie vaut 0 si les deux entrées valent 0 et elle vaut 1 sinon. La table de vérité est donnée ci-dessous.

Entrées

Sortie

A

B

A ? B

0

0

0

0

1

1

1

0

1

1

1

1

 

Schéma et symbole de la porte or

4.7  Portes nand et nor à trois entrées

On peut bien sûr réaliser une porte nand à trois entrées en combinant deux portes nand à deux entrées. Il est plus économique en nombre de transistors de réaliser directement cette porte. C’est la même chose pour la porte nor à trois entrées.

4.8 Portes and et or à entrées multiples

 

Schéma et symbole de la porte nand à 3 entrées

 

Schéma et symbole de la porte nor à 3 entrées

4.8  Portes and et or à entrées multiples

Les schémas des portes nand et nor à trois entrées peuvent être généralisés pour obtenir des schémas pour des portes nand et nor à un nombre quelconque d’entrées. Pour des raisons technologiques, ces portes ne sont pas réalisées de cette façon. Il est préférable de construire des portes à un grand nombre d’entrées en combinant plusieurs portes à 2 ou 3 entrées.

Des circuits pour les portes and ou or à entrées multiples peuvent être construits en utilisant un arbre constitué de portes and ou or respectivement. La construction d’un circuit pour une porte à k entrées peut être faite de manière récursive. Si k vaut 1 ou 2, le circuit est évident. Si k est supérieur à 2, on construit d’abord deux circuits ayant respectivement ?k/2? et ?k/2? entrées. Les sorties des ces deux circuits sont ensuite envoyées sur une dernière porte and ou or. On vérifie par récurrence que le nombre de portes d’un tel circuit est exactement k-1 et que sa profondeur (nombre maximal de portes mises en cascade) est ?log2 (k)?.

Pour k = 4, on obtient le premier circuit représenté à la figure ci-dessous. Pour économiser les transistors, chaque bloc de trois portes and ou or peut être remplacé par deux portes nand et une porte nor ou l’inverse. On obtient ainsi le second circuit représenté à la figure ci-dessous. Il existe d’autres

4.9 Porte xor

circuits comme le troisième représenté à la figure ci-dessous qui réalisent une porte and à 4 entrées. Ce circuit est cependant à éviter car il augmente le temps de latence en raison de sa plus grande profondeur.

 

Schémas de portes and à 4 entrées

En appliquant le procédé ci-dessus pour k = 16, puis en remplaçant chaque bloc de trois portes and par deux portes nand et une porte nor, on obtient le circuit ci-dessous qui a 10 portes nand et 5 portes nor. Ce circuit est particulièrement régulier car k est une puissance de 2.

 

Schéma d’une porte and à 16 entrées

4.9  Porte xor

La porte xor permet de réaliser la fonction ou exclusif qui s’avère très utile pour construire les additionneurs. Comme toutes les autres fonctions booléennes, elle se réalise avec les portes and et or ou bien encore nand et nor. Il faut la considérer comme une abréviation pour un petit circuit très utile.

4.9 Porte xor

Entrées

Sortie

A

B

A ? B

0

0

0

0

1

1

1

0

1

1

1

0

 

Schémas et symbole de la porte xor

5 Circuits élémentaires

5  Circuits élémentaires

Les décodeurs et multiplexeurs sont des circuits relativement élémentaires mais très souvent utilisés. Il s’agit de deux briques de base pour la construction de circuits plus élaborés. Ils sont en particulier présents dans chaque circuit mémoire. Un décodeur y décode l’adresse et active la ligne correspondante. Un multiplexeur permet d’y sélectionner la bonne sortie lors d’une lecture.

5.1  Décodeurs

Un décodeur k bits possède k entrées et 2k sorties. La sortie dont le numéro est donné par les entrées est active (valeur 1) alors que toutes les autres sorties sont inactives (valeur 0).

Le décodeur 1 bit a donc une seule entrée A0 et deux sorties S0 et S1 . La table de vérité des sorties S0 et S1 est la suivante.

Entrée

Sorties

A0

S0

S1

0

1

0

1

0

1

On remarque que la sortie S0 est la négation de l’entrée A0 alors que la sortie S1 est égale à A0 . On a donc le circuit suivant avec un seul inverseur.

 

Schéma et symbole d’un décodeur 1 bit

Le décodeur 2 bits a deux entrées A0 et A1 ainsi que quatre sorties S0 , S1 , S2 et S3 . La table de vérité des quatre sorties en fonction des deux entrées est la suivante.

Entrées

Sorties

A1

A0

S0

S1

S2

S3

0

0

1

0

0

0

0

1

0

1

0

0

1

0

0

0

1

0

1

1

0

0



3068