« Fonctionnement d'un ordinateur/Les circuits de génération d'aléatoire » : différence entre les versions

Contenu supprimé Contenu ajouté
Ligne 27 :
La première technique utilise un simple compteur qui s'incrémente à chaque cycle d'horloge. Si on a besoin d'un nombre aléatoire, il suffit d'aller lire le contenu de ce registre, et de l'utiliser directement comme résultat. Si suffisamment de temps s'écoule entre deux demandes, et que le temps entre deux demandes est irrégulier, le résultat semblera bien aléatoire.
 
Autre solution, un peu plus fiable : utiliser ce qu'on appelle la '''dérive de l'horloge'''. Il faut savoir qu'un signal d'horloge n'est jamais vraiment très précis. Une horloge censée tourner à 1 Ghz ne tournera pas en permanence à 1Ghz exactement, mais verra sa fréquence varier de quelques Hz ou Khz de manière irrégulière. Ces variations peuvent venir de variations aléatoires de température, des variations de tension, des perturbations électromagnétiques, ou à des phénomènes assez compliqués qui peuvent se produire dans tout circuit électrique (comme le shot noise). L'idée consiste à prendre au moins deux horloges et d'utiliser la dérive des horlogehorloges pour les désynchroniser. On peut par exemple prendre deux horloges : une horloge lente et une horloge rapide, dont la fréquence est un multiple de l'autre. Par exemple, on peut choisir une fréquence de 1 Mhz et une autre de 100 Hz : la fréquence la plus grande est égale à 10000 fois l'autre. La dérive d'horloge fera alors son œuvre : les deux horloges se désynchroniseront en permanence, et cette désynchronisation peut être utilisée pour produire des nombres aléatoires. Par exemple, on peut compter le nombre de cycles d'horloge produit par l'horloge rapide durant une période de l'horloge lente. Si ce nombre est pair, on produit un bit aléatoire qui vaut 1 sur la sortie du circuit. Pour information, c'est exactement cette technique qui était utilisée dans l'Intel 82802 Firmware Hub.
 
===Aléatoire généré par la tension d'alimentation===