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

Contenu supprimé Contenu ajouté
Ligne 71 :
La '''CMOS RAM''' mémorise la date exacte à la seconde près. Son nom nous dit qu'elle est fabriquée avec des transistors CMOS, mais aussi qu'il s'agit d'une mémoire RAM. Mais attention, il s'agit d'une mémoire RAM ''non-volatile'', c'est à dire qu'elle ne perd pas ses données quand on éteint l'ordinateur. Nous expliquerons plus bas comment cette RM fait pour être non-volatile. La ''CMOS RAM'' est adressable, mais on y accède indirectement, comme si c'était un périphérique, à savoir que la CMOS RAM est mappée en mémoire. On y accède via les adresses 0x0007 0000 et 0x0007 0001 (ces adresses sont écrites en hexadécimal). Elle mémorise, outre la date et l'heure, des informations annexes, comme les paramètres du BIOS (voir plus bas).
 
L''''horloge temps réel''' est un circuit qui compte les secondes, voire les millisecondes ou les microsecondes. Dans ce qui suit, nous la noterons RTC, ce qui est l'acronyme du terme anglais ''Real Time Clock''. Elle contient des ''timers matériels'' (''hardware timer''), à savoir des compteurs/décompteurs dont le rôle est de compter les cycles d'horloge. La RTC est cadencée par l’horloge de 32KHz générée par l’oscillateur à Quartz, et chaque ''timer'' peut compter/décompter un certain nombre de cycles. Chaque ''timer'' est initialisé avec un certain nombre de cycles, et il émet une interruption à direction du processeur quand ce nombre de cycles est écoulé. Les ''timers'' sont configurables, ce qui permet de préciser après combien de cycles il faut compter avant d'émettre une nouvelle interruption. On peut ainsi préciser s'il faut émettre une interruption après 32 cycles d'horloge, tous les 50 cycles, après 29 cycles, etc.
 
Les ''timers'' peuvent fonctionner en '''mode une fois''' et en '''mode répétitif'''. En mode une fois, le compteur/''timer'' s'arrête une fois qu'il a atteint le nombre de cycles configuré. On doit le réinitialiser manuellement, par l'intermédiaire du logiciel, pour l'utiliser une nouvelle fois. Le rôle de ce mode est de compter pendant une certaine durée. En mode répétitif, le ''timer'' se réinitialise automatiquement avec la valeur de départ, ce qui fait qu'il reboucle à l'infini. Il permet d'émettre une interruption tous les 50 cycles d'horloge, tous les 34 cycles, etc. Concrètement, le mode répétitif génèredivise desla fréquencesfréquence d'entrée, alors que le mode une fois compte durant une durée fixe avant de s'arrêter.
 
La RTC a plusieurs rôles, mais le principal est de générer une interruption toutes les millisecondes, soit à une fréquence de 1KHz. Cela permet au processeur de mettre à jour la date exacte, mais aussi de compter des durées plus courtes, comme le ''ping'' (le temps de latence d'un réseau, pour simplifier), le temps de rafraichissement de l'écran, ou bien d'autres choses. A ce propos, c'est la raison pour laquelle il est impossible de dépasser les 1000 FPS sur les jeux vidéos Windows et Linux. L'interruption en question, l'IRQ8, est utilisée pour mesurer le temps dans les jeux vidéos, compter la durée d'une frame, et sert de ''timing'' pour démarrer le calcul d'une nouvelle image. La fréquence de 1 KHz est obtenue en divisant la fréquence de l’oscillateur à Quartz par 32. Pour cela, la RTC émet une interruption tous les 32 cycles de l'horloge. Elle est initialisée avec un nombre de cycles égal à 32 et fonctionne en mode répétitif.