L'odinateur code et manipule l'information à l'aide du binaire et d'expressions booléennes. Comment ces manipulations se font-elles au niveau du matériel électronique ?
Le transistor est un composant électronique essentiel du monde informatique actuel.
Il a été inventé en 1947 par les Américains John Bardeen, William Shockley et Walter Brattain des Laboratoires Bellnote. Ils ont reçu le prix Nobel de physique en 1956.
Le transistor remplace les tubes à vide qui existaient auparavant. Ainsi, l'ENIAC (Electronic Numerical Integrator And Computer) construit en 1945 était le premier ordinateur entièrement électronique. Il utilisait 17 468 tubes à vide et pesait 30 tonnes !
Initialement, les transistors étaient utilisés à l'unité.
Avec les progrès de la miniaturisation, les transistors sont désormais installés sur des circuits intégrés. Les processeurs au coeur de nos ordinateurs sont construits ainsi : le Qualcomm Snapdragon 8cx / SCX8180 sorti en 2018 contient 8,5 milliards de transistors !
Cette augmentation du nombre de transistors dans les circuits intégrés est appelée loi de Moore. Cette observation affirme que le nombre de transistors dans les circuits intégrés double tous les deux ans.
Le transistor permet de conditionner le passage d'un courant électrique entrant à l'existence d'un autre influx électrique :
Tout seul, un transistor permet de faire passer ou non du courant. On peut néanmoins en agencer plusieurs afin de créer des portes logiques (logic gates en anglais).
Celles-ci correspondent aux opérateurs booléens vu dans le cours sur les Valeurs booléennes.
Etudions la porte $AND$
Le collecteur (le courant d'entrée) arrive par Vcc
. $A$ et $B$ sont deux entrées, chacune reliée à un transistor. Ceux-ci sont en série.
Pour que la sortie Out
soit alimentée, il faut donc que $A$ et $B$ fassent passer du courant. Dans ce cas, les deux transistors transmettent le courant d'entrée et la sortie est alimentée.
Pour la porte $OR$ :
Cette fois-ci, les transistors sont placés en parallèle. Si $A$ laisse passer le courant, celui-ci alimente immédiatement la sortie, peu importe la valeur de $B$.
Si $A$ n'est pas alimenté mais $B$ l'est, le courant passe vers le sortie.
Si, ni $A$ ni $B$ ne sont alimentés, le courant n'est pas transmis : la sortie reste à $0$.
Voici pour information les montages des portes $NOT$ et $NAND$ :
Le diagramme ci-dessous présente différentes portes logiques ainsi que leurs représentations schématiques :
Ces schémas permettent de symboliser de nouvelles portes logiques :
$A$ | $B$ | $C$ | $Résultat$ |
---|---|---|---|
$0$ | $0$ | $0$ | $1$ |
$0$ | $0$ | $1$ | $1$ |
$0$ | $1$ | $0$ | $1$ |
$0$ | $1$ | $1$ | $1$ |
$1$ | $0$ | $0$ | $0$ |
$1$ | $0$ | $1$ | $0$ |
$1$ | $1$ | $0$ | $0$ |
$1$ | $1$ | $1$ | $1$ |
On peut, à l'aide de ces portes logiques, additionner des nombres en binaire.
On se souvient qu'en binaire :
Si l'on ne tient compte que du chiffre des unités de la dernière ligne, on reconnaît la table de vérité du $XOR$ :
On peut donc construire un circuit faisant l'addition de deux bits à l'aide de cette porte. Il faut juste teni compte de la dizaine. Celle-ci n'apparaît que pour $1+1=10$ : on reconnaît la table du $AND$.
Ainsi, le circuit half-adder faisant l'addition de deux bits en renvoyant le résultat (sum) et la retenue (carry) est le suivant :
Une fois que l'on a additionné les deux premiers bits, on doit additionner les deux suivants (A et B) en tenant compte de la retenue de la somme précédente (celle du half-adder, noté _Cin sur le schéma). C'est le circuit full-adder qui renvoie le résultat de la somme (sum) et la retenue (_Cout):
Donc si l'on souhaite additionner deux nombres entiers de $8$ bits, on doit combiner :
La dernière retenue permet d'indiquer un dépassement de capacité (overflow).
Tous les exemples de circuits précédents sont dits combinatoires : la sortie ne dépend que des entrées.
Il existe aussi des circuits dits séquentiels dans lesquels la sortie dépend de l'entrée et de l'état actuel du circuit.
Ce type de circuit permet de sauvegarder des données : imaginons un circuit qui se "souvienne" de sa sortie précédente. Si c'était un "$0$" et qu'on lui propose désormais un "$0$" en entrée, il ne change rien. Par contre, si on lui propose un "$1$", il change d'état.
Ce type de circuit est une bascule. C'est ce type de circuit (et ses versions évoluées) qui permet de stocker l'information dans la mémoire vive de l'ordinateur.
Les bascules RS (pour Reset et Set) peuvent être construites à l'aide de portes $NOR$ ou $NAND$. Observons le cas $NAND$
Il y a deux entrées :
Il y a deux sorties qui contiennent des valeurs opposées (0/1 ou 1/0) afin d'assurer le fonctionnement du circuit. C'est la sortie Q qui fait office de mémoire.
Dans le détail on a :
On voit que les sorties se reconnectées aux entrées : cela permet d'assurer la mémoire du circuit.