« 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''. LaElle RTCcontient estdes relié''timers aumatériels'' processeur(''hardware surtimer''), uneà entréesavoir d’interruption,des etcompteurs/décompteurs sondont le rôle est de générercompter uneles interruptioncycles à intervalle régulierd'horloge. LeLa processeurRTC saitest ainsicadencée quepar depuisl’horloge lade dernière32KHz interruption provoquéegénérée par lal’oscillateur RTCà Quartz, ilet chaque s'est'timer'' écouléepeut unecompter/décompter duréeun biencertain précise,nombre fixe, toujours lade mêmecycles. SurChaque les PC x86 actuels, l'horloge'timer'' tempsest réelinitialisé génèreavec uneun interruptioncertain toutesnombre lesde millisecondescycles, ceet quiil donneémet une fréquenceinterruption deà 1direction KHz. Cela permet audu processeur dequand mettrece à jour la date exacte, mais aussinombre de comptercycles des durées plusest courtesécoulé. ParLes exemple, c'est utile pour mesurer des temps courts, comme le ''pingtimers'' (lesont temps de latence d'un réseauconfigurables, pource simplifier),qui pourpermet compterde des fréquences comme lepréciser tempscombien de rafraichissementcycles deil l'écran,faut oucompter bienavant d'autresémettre chosesune commenouvelle l'ordonnancementinterruption. desOn processus.peut Aainsi cepréciser propos, cs'est la raison pour laquelle il estfaut impossibleémettre deune dépasserinterruption lesaprès 100032 FPScycles sur les jeux vidéos Windows et Linux. Ld'interruption en questionhorloge, l'IRQ8, est utilisée pour mesurer le temps danstous les jeux50 vidéoscycles, compteraprès la29 durée d'une framecycles, et sert de ''timing'' pour démarrer le calcul d'une nouvelle imageetc.
 
Les ''timers'' matériels peuvent compter de deux manières différentes,fonctionner appeléesen '''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 lale nombre de limitecycles configuréeconfiguré. 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ère des fréquences, alors que le mode une fois compte durant une durée fixe avant de s'arrêter.
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 divisant 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. Di autrement, 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.
 
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.
Mais l'émission d'une nouvelle interruption toutes les millisecondes n'est pas la seule utilité de la RTC. Les RTC actuelles contiennent d'autres compteurs afin de compter d'autres durées. Ces compteurs qui comptent à une certaine fréquence sont appelées des ''timers matériels'' (''hardware timer''). Un de ces ''timer'' est dédié aux interruptions RTC, qui ont lieu toutes les millisecondes, mais les 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.
 
MaisOutre l'émissionle d'une nouvelle interruption toutes les millisecondes n'est pas la seule utilité de la RTC. Les RTC actuelles contiennent d'autres compteurs afin de compter d'autres durées. Ces compteurs qui comptent à une certaine fréquence sont appelées des ''timers matériels'' (''hardware timer''). Un de ces ''timer'' est dédié aux interruptions RTC,de quifréquence ont1 lieu toutes les millisecondesKHz, mais les d'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érentede 60 Hz, enpour plusgérer le rafraichissement de l'interruptionécran, àou une fréquence de 1 KHzHz pour compter les secondes. Comme autre exemple, on peut vouloir émettre une interruption à une heure bien précise tous les jours. Hé bien, ilce estqui possibledemande 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.
 
Les ''timers'' matériels peuvent compter de deux manières différentes, appelées '''mode une fois''' et '''mode répétitif'''. En mode une fois, le compteur/''timer'' s'arrête une fois qu'il a atteint la limite configurée. On doit le réinitialiser manuellement, par l'intermédiaire du logiciel, pour l'utiliser une nouvelle fois. 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. Concrètement, le mode répétitif génère des fréquences, alors que le mode une fois compte durant une durée fixe avant de s'arrêter.
 
===La source d'alimentation de la RTC et de la CMOS RAM===