Les secrets du PAT
By Samuel D.. - 16/05/2003
Sommaire:

PAT Gelsinger

 

Le PAT : Fonctionnement Exact

 

Maintenant que nous vous avons expliqué le fonctionnement d'un registre et comment on configure un Northbridge, passons au PAT. Comme nous l'avons vu sur la page précédente, il y a de TRÈS fortes chances pour que le PAT soit activable/activé par un des registres du Northbridge. Bien sur, ce paramètre étant un des plus sensibles, il n'y a quasiment aucune chance qu'il soit localisé dans le Device0. Par contre, le Device6 ou mieux (pire) encore, le Device6/MMR est un emplacement de choix, qui le mettrait a l'abris des bidouilleurs. Nous avons donc recherché pendant plusieurs jours l'emplacement exact des registres PAT dans le Northbridge. Pour ce faire, nous avons utilisé un BIOS de pré-série fourni avec une des cartes que nous avons reçue d'un constructeur (pas de publicité) qui proposait clairement l'option d'activer ou désactiver le PAT. Ensuite, il nous suffit de dumper le Device0 / Device6 et Device6/MMR avec le PAT activé. Reboot, un tour dans le bios pour désactiver le PAT et re-Dump. Bien que nous n'ayons modifier QUE cette information, de multiples différences existaient dans les dumps. Après de longues investigations, nous avons remarqué que l'activation du PAT semblait intimement liée aux bits Bus0/Fun0/Dev6: Reg43~40 [1:0]. D'autre part, ces deux bits semblent également liés aux bits Bus0/Fun0/Dev0 : RegC8~C7 [1:0] ainsi qu'a un étrange bit sur Bus0/Fun0/Dev6(MMR): Reg68~6B [14]. Bref, un mix horrible entre le Device0, le Device6 et le Device6/MMR. Bien sur, les datasheets indiquent les bits Device6 et Device6/MMR que nous avons trouvés en tant que "Intel Reserved". Tiens donc... Pour le Bus0/Fun0/Dev0 : RegC8~C7 [1:0], il s'agit du registre MCHCFG et les bits 0 et 1 définisse la fréquence de bus (400, 533 ou 800), lié au PAT. Les deux bits restant permettent donc de connaitre à coup sur l'état du PAT :

 

** Localisation du PAT **

=> Bus0/Fun0/Dev6: Reg43~40 [1:0] <=

=> Bus0/Fun0/Dev6(MMR): Reg68~6B [14] <=

 

Aprés une autre batterie de test, nous avons confirmé ces résultats sur toute une série de carte mère testées. Il en résulte que si ces valeurs sont 001, le PAT est activé, par contre, si on a 111 où 110, le PAT est désactivé. Ce qui nous donne :

 

** Etat d'activation du PAT **

Bus0/Fun0/Dev6: Reg43~40 [1:0]
Bus0/Fun0/Dev6(MMR): Reg68~6B [14]
Valeur du registre virtuel
Etat du PAT
00
0
000b
N/A
00
1
001b
ACTIVE
11
0
110b
DESACTIVE
11
1
111b
DESACTIVE

 

Nous avons maintenant en main les informations techniques nécessaires pour comprendre les mécanismes de fonctionnements du PAT. Pour tester le fonctionnement "de référence", nous ne pouvions que utiliser des cartes au dessus de tout soupçons : Des cartes Intel. Nous avons donc testé le comportement du PAT avec une D875PBZ et une D865GBL. Les résultats sont....surprenant et expliquent bien des choses.

Commençons d'abord, avec ces deux cartes configurées en mode FSB800 QDR (200 Mhz réel).

  • FSB800

Voyons l'état des registres sur une carte i875P :

 

----------------------

 

Aprés un rapide calcul, on obient :

Intel i875P FSB800
Dev6 Offset 40-43 [1:0] : 40 65 10 04 -> 04106543h -> 000000100000100000110010101000000b -> 00b
MMR Offset 6B-68 [14] : 71 71 30 20 -> 20307171h -> 000100000001100000111000101110001b -> 1b
Status : 001b => PAT Actif

Bref, rien que du trés logique. Sur cette carte de référence, le PAT est bien actif sur l'i875P en mode FSB800/DDR400. Passons maintenant sur la carte Intel i865G (strictement identique à l'i865PE, mais avec un core graphique intégré). Voyons le Device6 puis le Device6/MMR :

 

----------------------------

Cette fois, nous avons donc :

Intel i865G FSB800
Dev6 Offset 40-43 [1:0] : 43 65 10 04 -> 04 10 65 43 -> 000000100000100000110010101000011 -> 11b
MMR Offset 6B-68 [14] : 71 02 30 20 - > 20 30 02 71 -> 000100000001100000000001001110001 -> 0b
Status : 110b => PAT Désactivé

Encore une fois, rien que du trés logique, puisque le PAT est, selon Intel, une solution strictement reservée au Canterwood :

C'est faux. Et nous allons le prouver ici.

 

  • FSB533

Fort de ces connaissances, voyons maintenant l'état des registres en mode FSB533 sur notre carte i865G (pas i875P, i865G !) :

 

-----------------

D'ou, synthèse :

 

Intel i865G FSB533
Dev6 Offset 40-43 [1:0] : 40 65 00 04 -> 04 00 65 40 -> 000000100000000000110010101000000 -> 00b
MMR Offset 6B-68 [14] : 71 62 30 20 -> 20 30 62 71 -> 100000001100000110001001110001 -> 1b
Status : 001b => PAT Actif

 

Eh oui ! le PAT est bien actif sur une carte i865G d'Intel en mode FSB533 !!! Alors qu'il ne l'est plus en mode FSB800 ! Sur i875P, le résultat est identique :

 

Intel i875P FSB533
Dev6 Offset 40-43 [1:0] : 40 65 00 04 -> 04006540h -> 000000100000000000110010101000000b -> 00b
MMR Offset 6B-68 [14] : 71 71 30 20 -> 20307171h -> 000100000001100000111000101110001b -> 1b
Status : 001b => PAT Actif

 

En fait, et c'est là ou Intel ment dans ses informations, c'est que le PAT est automatiquement activé sur tout les chipset i875P mais également i865PE et i865G. La seule différence entre l'i875P et l'i865 étant que, en mode DDR400/FSB800, le PAT est désactivé sur l'i865. Et non, comme le dit Intel, activé uniquement sur l'i875P en mode DDR400/FSB800. En y regardant de plus prêt, cela revient effectivement au même, sauf que, marketing aidant, on a fait passer une fonction DESACTIVEE dans l'i865PE comme une fonction ACTIVEE dans l'i875P.

Techniquement parlant, le PAT se contente même peut-etre de RAJOUTER de la latence mémoire sur l'i865PE en mode FSB800/DDR400 alors que, sur i875P, le mode de fonctionnement mémoire bénéficie, en mode FSB800/DDR400, des mêmes avantages qu'en mode FSB533. C'est la théorie défendue par Xbitlabs. Par soucis de clareté et à la lumière des informations que nous avons découvertes, nous avons refait leur schéma :

 

 

Voici donc la vérité sur le PAT. Comme quoi, encore une fois, le marketing a failli prendre le dessus sur la technique. Ceci dit, Intel indique bien que seul l'i875P supporte le PAT et c'est en partie exact. l'i875P est le seul a supporter le PAT en mode FSB800/DDR400. En fait, les contraintes techniques font en sorte que le PAT ne puisse fonctionner jusqu'en FSB800/DDR400 que sur certains chipsets. Et ces chipsets sont les i875P. Pour les i865PE, ce sont des chipsets dont Intel a décrété que le PAT ne pourrait pas fonctionner au dessus du mode FSB533/DDR333.

 

Suite ( PAT & i865PE : Asus Howto )

Fermer