« Fonctionnement d'un ordinateur/La carte mère, chipset et BIOS » : différence entre les versions

Contenu supprimé Contenu ajouté
Ligne 69 :
L'horloge temps réel a une fréquence de 1 KHz dans les PCs, mais la durée est différente sur les PC non-x86. La fréquence de la RTC est proportionnelle à la fréquence fournie par le générateur d'horloge. En effet, la fréquence de la RTC est fournie en multipliant la fréquence de l'horloge par N, N dépendant de la RTC considérée. Pour expliquer comment la RTC fait, prenons l'exemple d'un PC, où la RTC a une fréquence de 1 KHz, et l'horloge a une fréquence de 32 KHz. La RTC émet une interruption tous les 32 cycles de l'horloge. Pour cela, la RTC contient un compteur qui compte le nombre de cycles écoulés depuis la dernière interruption RTC. Quand ce nombre de cycles comptés atteint 32, la RTC émet une nouvelle interruption et remet à zéro son compteur.
 
Mais l'émission d'une nouvelle interruption toutes les millisecondes n'est pas la seule utilité de la RTC. Les RTC actuelles contiennent non seulement de quoi faire cela, mais aussi de quoi compter d'autres durées. La RTC contient donc un ou plusieurs ''timers matériels'' (''hardware timer''), des circuits qui comptent à une certaine fréquence. Un de ces ''timer'' est dédié aux interruptions RTC, qui ont lieu toutes les millisecondes, mais elsles autres ''timers'' émettent des interruptions à des intervalles différents, configurables par l'utilisateur ou le système d’exploitation. Par exemple, on peut vouloir générer une interruption à une fréquence différente, en plus l'interruption à 1 KHz. Comme autre exemple, on peut vouloir émettre une interruption à une heure bien précise tous les jours. Hé bien, il est possible de configurer un des ''timer'' de la RTC de manière à ce qu'il fasse cela ! Les fonctions de Windows ou de certains logiciels se basent là-dessus, comme celles pour baisser la luminosité à une heure précise, passer les couleurs de l'écran en mode nuit, certaines notifications, les tâches planifiées, et j'en passe.
 
Chaque ''timer'' est composé d'un compteur/décompteur cadencé à une certaine fréquence, souvent la fréquence fournie par le générateur de fréquence. Avec un ''timer'' basé sur un compteur, le compteur est initialisé à 0, est incrémenté à chaque cycle d'horloge, puis émet une interruption quand sa valeur atteint une valeur précise. Pour un décompteur, c'est la même chose, sauf que le décompteur est initialisé à sa valeur initiale, est décrémenté à chaque cycle, et envoie une interruption quand il atteint 0. Pour que les ''timers'' soient configurables, on doit pouvoir préciser combien de cycles il faut compter avant d'émettre une nouvelle interruption. On peut ainsi préciser s'il faut émettre une nouvelle interruption tous les 32 cycles d'horloge, tous les 50 cycles, tous les 129 cycles, etc. Pour cela, il suffit de préciser le nombre de cycles à compter/décompter dans un registre dédié, qui sert à initialiser le compteur/décompteur.