« Fonctionnement d'un ordinateur/Les mémoires cache » : différence entre les versions

Contenu supprimé Contenu ajouté
Ligne 338 :
En complément à deux, on a <math>- K = \overline{K} + 1</math>. En injectant dans l'équation précédente, on a :
 
: <math> A + B + \overline{K} + 1 = 0 </math>
 
En réorganisant les termes, on a :
 
: <math> A + B + \overline{K} = - 1 </math>
 
Il suffit d'utiliser un additionneur ''carry-save'' pour faire l'addition des trois termes. et ajouterRappelons qu'un comparateurtel avecadditionneur -1.fournit Or,deux -1résultats esten codésortie avec: unune nombresomme dontcalculée toussans propager les bitsretenues sontet àles 1retenues en complémentquestion. Notons que les retenues sont à décaler d'un/deux cran, vu qu'elles sont censée s'appliquer à la colonne suivante. En notant la somme S et les retenues R, on a:
 
: <math> AS + B(R +<< \overline{K}1) = 111- \cdots1 </math>, le décalage d'un cran à gauche étant noté <math><< 1111111</math>.
 
Ensuite, -1 est codé avec un nombre dont tous les bits sont à 1 en complément à un/deux.
Mais le -1 en sortie de l'additionneur ''carry-save'' est représenté avec deux nombres : une somme S et des retenues R, telle que le résultat est égal à <math>S + R << 1</math>, avec << 1 un décalage d'un cran à gauche.
 
: <math>S + (R << 1) = 111 \cdots 111111</math>
 
[[File:Sum + retenue add.png|centre|vignette|upright=2|Sum + retenue add]]
 
Un simple raisonnement nous permet de savoir si le résultat est bien -1, sans faire l'addition <math>S + (R << 1)</math>. En effet, on ne peut obtenir -1 que si la somme est l'inverse des retenues : un 0 dans le premier nombre correspond à un 1 dans l'autre, et réciproquement. En clair, on doit avoir <math>\overline{S} = R << 1</math>. IlPour vérifier cela, il suffit de faire un simple XOR entre la somme et les retenues décalées d'un cran,. avantOn dea fairealors une comparaison avec -1.:
 
: <math>S \oplus (R << 1) = 111 \cdots 111111</math>
 
La comparaison avec -1 se fait avec une porte ET à plusieurs entrées. En effet, la porte donnera un 1 seulement si tous les bits d'entrée sont à 1, ce qui est ce qu'on veut tester.
 
Au final, l'additionneur pour l'addition adresse + décalage est remplacé par un additionneur carry-save suivi d'une couche de portes XOR et d'un comparateur avec une constante, ce qui économise de circuits et améliore les performances.