Verrouillage des multiplicateurs et des fréquences chez Intel

(Partie 2/2) 

De Willy STOPHE

Les configurations des multiplicateurs du Pentium II

Tous les circuits intégrés de tous les niveaux de complexité possèdent des compteurs d'instruction. En effet, avant d’utiliser réellement une puce, vous devez écrire dans ces compteurs d'instruction pour configurer la puce. On peut comparer ces compteurs d'instruction à des arguments de ligne de commande (Exemple, avec les commandes DOS, une chaîne de caractères après que le nom de programme est présente (toujours une par défaut) pour indiquer comment vous voulez que le programme que vous lancez se comporte). Les compteurs d'instruction sont exactement pareils. Toutes les fois que vous allumez votre CPU, vous avez besoin de les initialiser, pour cela certains bits sont placés dans les compteurs d'instruction pour déterminer comment la puce va se comporter.

Vous manipulez ces bits dans le compteur d'instruction en appliquant les bonnes tensions sur les broches d'entrée au bon moment. Dans la plupart des circuits intégrés, et particulièrement dans la plupart des CPU, il n'y a aucune broche dédiées à cette tache. En effet, il n’est pas possible d’avoir un groupe de broches dont leurs seuls buts dans la vie seraient d'écrire dans un compteur d'instruction, car vous n’y accédez seulement que pendant la configuration de la puce et le reste du temps elles seraient inutilisées. Pour ce faire, il faut multiplier le travail de quelques broches par deux. Ce que vous faites, c’est désigner une broche (appelons la : RESET#) à la surveillance. Toutes les fois qu'il faut configurer la puce, vous faites le faites savoir à la puce en activant la broche RESET#. Quand le CPU reconnaît l’activation de la broche RESET#, il arrête tout ce qu'il fait et changent quelques broches de leurs fonctions normales et leur colle le compteur d'instruction. Ainsi pendant que la broche RESET# sera activée, ces broches spéciales vous laisseront écrire dans le compteur d'instruction. Quand la broche RESET# sera de nouveau inactive, tout reviendra à la normale et ces broches iront de nouveau à leurs travaux précédents. De cette façon, vous pouvez écrire dans le compteur d'instruction seulement quand vous avez besoin, et vous ne gaspillez pas de broches.  

D’après Intel, tous les agents présents sur le bus système nécessitent un ensemble de bits en lecture / écriture, ceci pour leur permettre de les initialiser correctement pour les opérations. Le Pentium II, comme n'importe quel autre agent du bus, rend donc ces bits disponibles au programmeur. Les bits particuliers qui nous intéressent sont à l'adresse 2Ah dans le Model Specific Register (MSR). Les bits 25 à 22 de MSR 2Ah indiquent au CPU quel multiplicateur utiliser pour le PLL.

La table suivante montre comment les valeurs des bits dans ce registre se traduisent en taux d'horloge:

MSR 2Ah [25:22]

Ratio fréquence cœur CPU / Bus système

0010

4

0011

2

0101

7/2

0110

9/2

0100

2

Tableau 1. Registre de configuration de la famille de processeur Pentium II.

Le registre MSR est en lecture seule, ainsi vous ne pouvez pas simplement changer le multiplicateur d'horloge toutes les fois que vous en avez envie. Il n’y a seulement qu’une façon de changer ce qu’il y a dans ce registre, il faut attendre le signal actif (niveau bas) de la broche RESET #. Toutes les fois que la broche RESET # passe à la position 0, le Pentium II prend quatre bornes qui font normalement autres choses, et les emploie pour initialiser le multiplicateur d'horloge. Les quatre broches choisies sont A20M #, IGNNE #, LINT[1 ] et LINT[0 ]. Toutes les fois que la RESET # passe à 0, les quatre broches permettent de changer le multiplicateur d'horloge du Pentium II.

Voici une table qui détermine quels signaux vont sur quelles broches pour produire les différents ratios :

Ratio fréquence Bus système / cœur CPU

LINT[1]

LINT[0]

A20M#

IGNNE#

1/2

Bas (0)

Bas (0)

Bas (0)

Bas (0)

1/4

Bas (0)

Bas (0)

Haut

Bas (0)

2/7

Bas (0)

Haut

Bas (0)

Haut

2/9

Bas (0)

Haut

Haut

Bas (0)

1/2

Haut

Haut

Haut

Haut

Tableau 2. Ratio fréquence Bus système / cœur CPU. (Du manuel du réalisateur de processeur du Pentium II)

 
Tout ca pour en arriver où ? Nous avons le rôle du PLL et celui des différentes broches citées ci-dessus. Appliquons l’ensemble pour comprendre comment le CPU est cadencé. Sur l’image ci dessous, on distingue les deux parties présentes, à gauche le chipset de la carte mère et à droite le CPU. Au milieu toutes les broches déjà citées connectés grace au slot 1.

Figure 2. Configuration du processeur Pentium II.

 
Et c’est justement sur cet ensemble que va jouer Intel pour bloquer la fréquence du multiplicateur.

Comment Intel verrouille t’il le multiplicateur du Pentium II ?

C’est vraiment la question que tout le monde se pose. Il n’y pas trente-six milles possibilités.

Intel peut placer des broches dont leur but est de configurer le multiplicateur d'horloge. C’était vrai pour les Pentiums de type socket 7. En effet, le Pentium 1er du nom possédait deux bornes prévu à cet effet (je sais que j’ai dit cela était stupide, mais Intel l'a fait). Tout ce qu’il y avait à faire, c’était invalider une de ces broches et les multiplicateurs d'horloge étaient limités à deux valeurs. Cependant, le Pentium II ne possède aucune broche dédiée au multiplicateur d'horloge. Et si vous invalidez les broches A20M #, IGNNE #, LINT[1 ] ou LINT[0 ], vous aurez des gros ennuis, parce que ces broches réalisent beaucoup d'autres affaires importantes.

Une autre option consiste à câbler le multiplicateur d'horloge dans le PLL. Mais j'ai mentionné plus haut pourquoi cette technique ne sera pas choisi. Intel veut pouvoir prendre deux puces de la même plaque et les vendre à différentes vitesses; vous ne pourrez pas le faire si vous avez câblé le multiplicateur dans le PLL.

Cela nous laisse pas beaucoup d’autres alternatives pour bloquer le multiplicateur ; il faut introduire un Circuit de Verrouillage des Multiplicateurs (CVM) entre le chipset et les broches du CPU donc sur le Slot 1. Le CVM serait présent, invisible du système pendant l'exécution normale. Aussi longtemps que la RESET# reste inactive, le CVM laisse passer les signaux sur les broches A20M #, IGNNE #, LINT[1 ] et LINT [0] sans interférence. Le CVM surveille la broche RESET#; et quand celle-ci est active, il rentre en action. Il va bloquer tous les signaux provenant des broches A20M #, IGNNE #, LINT[1 ] et LINT[0 ] (donc provenant du chipset) et imposer son propre multiplicateur (comprenez ses propres bits) sur ces broches jusqu'à ce que la broche RESET# redevienne inactive. Et le tour est joué, il est impossible d'introduire dans le PLL un autre multiplicateur que celui programmé dans le CVM. L'image suivante montre le système décrit ci-dessus.

Figure 2. Circuit de verrouillage du multiplicateur du processeur Pentium II.

Attention, Intel ne libère aucun détail sur la façon dont il verrouille les multiplicateurs de ses CPU ainsi vous ne trouverez tout ceci dans aucun manuel d'Intel. Pourtant tout ce que je viens de dire est la seule chose qui me paraisse correct et ceci pour deux raisons principales.

D'abord, c'est la seule chose qui semble raisonnable. C’est la seule façon pour Intel de bloquer le multiplicateur du Pentium II sans détruire le bénéfice de fabrication des CPU (voir plus haut pour le câblage) .

Et puis parce que certaines personnes en Allemagne ont déjà réalisé un circuit de dérivation qui ignore ce verrouillage. Cependant ces gens n'étaient pas des amateurs, qui voulaient gagner quelques % de puissance; ils enlevaient l'enveloppe de fonction, ils appliquaient le circuit de dérivation, remettaient l'enveloppe, et revendaient les puces à des fréquences d'horloge plus élevées.

 Et le verrouillage du bus, c'est pour quand ?

Si Intel a réussi à bloquer le multiplicateur du CPU, il reste encore pour les overclockeurs à jouer sur la fréquence du bus pour posséder un PC plus puissant que celui acheté au départ. Mais Intel veut mettre fin à l'overclocking en verrouillant le bus à l'entrée du CPU.

Personnellement je ne crois pas en l'avenir "proche" du verrouillage de bus. Un processeur à bus verrouillé signifie que celui-ci ne fonctionnera pas au-dessus d'une certaine fréquence du cœur du CPU. Le problème avec le verrouillage de la fréquence de bus est clair: les CPU d'aujourd'hui ne savent pas vraiment à quelle fréquence ils sont cadencés. Ils n'ont simplement aucun moyen de le connaître. Ils fonctionnent juste à un certain multiplicateur d'une certaine fréquence qu'ils obtiennent par la broche BCLK# (voir plus haut). Si vous voulez mettre un verrouillage de bus sur le CPU, vous devez ajouter des circuits pour détecter la fréquence actuelle de bus et arrêter les process en cours si cette fréquence excède une certaine valeur.

Imaginons à quoi un tel circuit ressemblerait. Le circuit de détection de fréquence devrait produire une impulsion de référence avec une fréquence prédéterminer et comparer cette fréquence à la fréquence actuelle de bus. Si la différence entre la fréquence de bus et la fréquence de référence est trop importante, alors le circuit arrêterait le CPU. Mais la vraie question est : comment produire cette fréquence de référence? Ben, à moins de coller un morceau de quartz le CPU, il faut utiliser un oscillateur basé sur des transistors... (Ooups ! voir plus haut). Donc vous ne pouvez pas détecter la fréquence actuelle du bus sans la comparer à une fréquence de référence, et vous ne pouvez pas produire cette fréquence de référence sans tomber dans les genres de problèmes qui vous ont incité à mettre l'horloge sur la carte mère en premier lieu. C'est un cercle vicieux. Le verrouillage de bus dont je viens juste de tracer les grandes lignes montre les obstacles qui se présentent pour avoir un CPU à bus vérrouillé.

La seule solution pour verrouiller le bus est une coopération entre le chipset et le CPU pour déterminer la vitesse du bus entrant dans le cœur du noyau. Le CPU informerait le chipset à quelle vitesse de bus il veut être cadencé, et le chipset suivrait uniquement ses ordres. Un air de déjà vu ? Ca ne serait pas le système SEL 100/66# d'Intel. Petit rappel; Quand vous mettez le CPU dans le slot, le chipset contrôle la broche SEL 100/66 # pour voir s' il est bas (0) ou haut. S' il est bas, il sait qu'il faut placer la vitesse de bus à 66MHz. S' il est haut, il place la vitesse de bus à 100MHz. Le chipset BX tient la broche SEL 100/66# à la position haute par défaut. Sur un CPU de bus à 66MHz (par exemple le Celeron 266), la broche SEL 100/66# est court-circuitée directement pour rectifier la fréquence. Ainsi lorsque vous mettez le CPU dans le slot, il court-circuite la broche SEL 100/66 # pour la mettre en position basse (0). Le chipset BX détecte que la broche SEL 100/66 # est passé à 0 et coopère en envoyant une fréquence de bus à 66MHz. En fait, si vous avez une carte mère qui ne joue pas le jeu (comme l'ABIT BH6, oh bah tiens c'est ma carte mère), puis vous ne devez pas vous inquiéter de ce signal. La carte mère BH6 ignore d'elle-même la broche SEL 100/66 # et place la vitesse de bus que vous voulez. Voir aussi l'article de Tom à ce sujet. Pour terminer sur le verrouillage du bus, je dirais qu'Intel a déjà commencé à chercher un moyen de verrouiller ce bus, mais que pour l'instant aucun système n'est fiable (entendez par là, qu'il n'a pas été cracké).

 Conclusion

En conclusion, j'espère vous avoir éclairci sur le fonctionnement et les interconnexions du CPU et de l'horloge.

Pour des informations plus détaillées sur ce sujet, vous pouvez lire les manuels d'Intel dans la bibliographie ci-dessous. Si vous avez plus d'informations sur le circuit de verrouillage du multiplicateur d'Intel, vous pouvez vous sentir libre de m'écrire.

Pour le verrouillage de bus si quelqu'un a quelque chose à me proposer, qu'il n'hésite pas je suis ouvert à toute proposition (c'est juste que je ne pense pas que ce soit probable actuellement). Si vous pouvez me démontrer une méthode faisable pour vérrouiller le bus, je l'éditerai ici.

Comme toujours, sentez-vous libre de m'écrire pour toutes corrections et/ou clarifications. J'ai déjà fait des erreurs avant et je suis sur que vous etes très calé, mais si vous me tombez dessus pour une erreur technique, je ne vous accorderais aucun crédit.

 

Précédente Accueil Remonter