VIA C3 1.2 GHz (C5P)
By Steven M. - 20/09/2004
Sommaire:

 

 

Under/Over-Clocking

 

 

Voici venu le temps tant attendu de l'overclocking, sport internationalement reconnu :) Rappelons qu'il existe deux moyens d'overclocker un processeur: augmenter son FSB ou augmenter son multiplicateur. VIA ayant eu la bonne idée de ne pas fixer le multiplicateur ni vers le bas ni vers le haut nous n'allons pas nous priver d'utiliser cette dernière méthode. A l'instar d'AMD et de son PowerNow! ou Intel avec son SpeedStep, VIA a également équipé le core C3 de fonctions de gestion d'énergie appelées PowerSaver (ex LongHaul). C'est grâce à cette fonction influant sur le multiplicateur que nous allons overclocker notre C3.

Sous linux il existe un driver permettant de changer le multiplicateur à la volée sans problème, mais ce n'est pas le cas sous windows...il nous a donc fallu faire appel à nos amis les MSR (Machine Specific Register) qui sont au CPU ce que le BIOS est à la carte-mère: un moyen de le configurer. Les modifications directes de registres n'étant pas vraiment superbement documentées, nous avons dû faire de multiples tests durant presque une journée pour trouver quel registre modifier et surtout quoi y mettre! Ceci a en grande partie été possible grâce au code source du driver linux PowerSaver. Nous avons découvert qu'il faut modifier le contenu du registre 0x110A afin d'accéder aux multiplicateurs voulus. Dans le code source du driver on peut trouver ce bout de code intéressant:

 

/* VIA C5P. */
static int __initdata longhaul4c_clock_ratio[32] = {
100, /* 0000 -> 10.0x */
160, /* 0001 -> 16.0x */
40, /* 0010 -> 4.0x */
90, /* 0011 -> 9.0x */
95, /* 0100 -> 9.5x */
-1, /* 0101 -> RESERVED */
45, /* 0110 -> 4.5x */
55, /* 0111 -> 5.5x */
60, /* 1000 -> 6.0x */
70, /* 1001 -> 7.0x */
80, /* 1010 -> 8.0x */
50, /* 1011 -> 5.0x */
65, /* 1100 -> 6.5x */
75, /* 1101 -> 7.5x */
85, /* 1110 -> 8.5x */
120, /* 1111 -> 12.0x */
100, /* 0000 -> 10.0x */
110, /* 0001 -> 11.0x */
120, /* 0010 -> 12.0x */
90, /* 0011 -> 9.0x */
105, /* 0100 -> 10.5x */
115, /* 0101 -> 11.5x */
125, /* 0110 -> 12.5x */
135, /* 0111 -> 13.5x */
140, /* 1000 -> 14.0x */
150, /* 1001 -> 15.0x */
160, /* 1010 -> 16.0x */
130, /* 1011 -> 13.0x */
145, /* 1100 -> 14.5x */
155, /* 1101 -> 15.5x */
-1, /* 1110 -> RESERVED */
120, /* 1111 -> 12.0x */
-2,
};

 

Ceci nous permet de savoir quel code binaire correspond à quel multiplicateur! Il reste cependant un problème: le code 0001 par exemple peut correspondre à un multiplicateur de 16x ou de 11x selon ce tableau, il faut donc encore trouver un moyen de les différencier, c'est ce que nous allons voir par la suite.

Pour modifier notre MSR, il est d'abord utile d'analyser ce qu'il contient grâce à un utilitaire programmé par Franck, voyons ceci...


Ce qui nous intéresse est la partie EAX du registre 0x110A. Ce registre est composé de 32 bits ici affichés en hexadécimal. Voici sa structure en détail avec ce qui nous intéresse marqué en rouge...

Valeur hexa. 0 0 0 0 8 0 F 0
Valeur binaire 0000 0000 0000 0000 1000 0000 1111 0000
Numéro des bits 31 à 28 27 à 24 23 à 20 19 à 16 15 à 12 11 à 8 7 à 4 3 à 0
Ce qui nous interesse - - - Contient la valeur du nouveau multiplicateur en hexa. Permet de choisir entre les hauts et bas multiplicateurs A mettre à 1 pour effectuer un changement A effacer lors d'un changement -

 

Une fois ces informations trouvées, il devient assez aisé de changer le multiplicateur de notre C3, les étapes décomposées à effectuer sont :

  1. Mettre les bits 7 à 4 à la valeur hexadécimale 0
  2. Mettre les bits 11 à 8 à la valeur hexadécimale 1
  3. Mettre les bits 15 à 12 à la valeur hexadécimale 8 si l'on veut accéder aux multiplicateurs présents dans le premier bloc du code source linux et à 4 pour accéder aux multiplicateurs dans le deuxième bloc du code source.
  4. Mettre la valeur binaire convertie en hexadécimal correspondant au nouveau multiplicateur dans les bits 19 à 16

Comme un exemple vaut tous les textes, voici ce que donne la commande permettant de mettre le multiplicateur à 11x:

 

 

Suite à ces expérimentations, nous avons tenté d'arriver à la fréquence maximale supportée par notre C3. Comme on peut le voir sur les screenshots ci-dessous le maximal obtenu avec un FSB de 133MHz est de 1474MHz à 1.55V (les tensions affichées sur le screenshot sont de 0.05V supérieures à ce qui a été fixé dans le BIOS) et notre meilleur score est de 1515MHz avec un FSB à 100MHz cette fois mais dans cette configuration la machine n'est pas complètement stable. Une augmentation de la tension pourrait sûrement corriger ceci mais nous n'avons pas voulu risquer la destruction du processeur. Ceci représente tout de même un gain de 27% environ, on peut dire merci à l'allongement du pipeline. L'underclocking peut être réalisé avec un multiplicateur minimal de 4x de la même manière et vers le haut le maximum est limité à 16x. Au passage on peut remarquer que la sale habitude prise par certains constructeurs de systématiquement overclocker un peu leurs cartes mères au niveau du FSB ne date pas d'aujourd'hui. Parlons de l'overclocking par FSB justement! Il ne nous a guère été possible de dépasser les 138MHz avec notre type de RAM ce qui conduit à une misérable vitesse finale de 1242MHz, à oublier donc.

 

 

En réalité l'overclocking d'un C3 n'a que peu d'intérêt car elle ne fait qu'accroître la chaleur dégagée tout en n'augmentant pas les performances de manière fantastique. Ce C3 dégageant 18W à pleine charge, il n'est malheureusement pas possible de le faire fonctionner totalement en passif à moins de disposer d'un radiateur monstrueux. Lors de nos tests avec un radiateur de PIII Tualatin de taille respectable, la température s'est élevée jusqu'à 65° en l'espace de 5 minutes suite à quoi nous n'avons pas tenté le diable en voulant aller plus loin...Il n'en reste pas moins que le C3 chauffe très peu comparativement à ses concurrents et se contentera d'une faible ventilation dont le but doit juste être d'éviter la formation d'une "bulle" de chaleur autour du radiateur.

 

Suite ( Conclusion )

Fermer