<RTFM>
IS HyperThreaded ?
Mis à jour le 22/02/2005
Comment Détecter en 20 Bytes si son CPU est HyperTread
Problème : Eviter la grouille dans son audit de parc à cause de Mr Intel qui multiplie les CPU comme Jesus les Ptis Pains
Solution : Détecter ce Holigan d'Hyper Treading
L'idée de base étant de mettre ERRORLEVEL à 1 en sortant si le CPU est HyperTreadable
Le
soucis étant de rester rapide et petit, je n'ai,malheureusement pas
trouvé une solution autre que de demander au cpu lui meme...Donc
Monsieur Intel a cette magnifique instruction CPU nommée CPUID ( opcode
0FA2 ) qui permet de poser plein de question a son CPU et si on lui
pose la question avec EAX à 1, ( pour les pauvres ames qui n'on jamais
fait d'assembleur et qui pense que c'est magique et qu'il ne faut pas y
toucher ci joint un petit lien pour expliquer comment cela marche ) Les
autre on reprend...
Donc.. je disait, si EAX=1 et qu'on lance
CPUID, on se retrouve avec le Bit 28 de EDX qui est a 1 si le CPU est
capable de faire de L'hypertreading Attention ca Veut pas dire pour
autant que l'hyperTreading est actif
Ce qui résume donc ce misérable code à :
;Teste si le CPU est hyperTreadé
;Retourne errorlevel 1 si il l'est
;Compilation :
;nasmw isht.asm -o isht.com -f bin
[global main]
main:
xor eax,eax ; Met eax a 1 en 4 bytes, 1 Byte de moins que mov eax,1
inc al
cpuid ; on apelle cpuid
shr edx,28 ; décale le bit 28 ( bit ht en 1er position)
and dl,1 ; Nettoye les bit autour
mov al,dl ; Resultat en code de sortie
mov ah,4ch ; Code Exit via interruption Dos
int 21h ; ByeBye a l'ancienne
; (c) Thanat0s 2005 - 20 Octets..
Donc Pour la compilation, Deux options
1) avec Nasm l'assembleur Free...
mettre le text ci dessus dans un fichier nommé isht.asm et lancer
nasmw isht.asm -o isht.com -f bin
2 ) A la paluche avec Debug, après tout il y a que 20 Bytes à encoder... ceux qui on connus le CPC et ses long listing
n'auront pas peur, et en plus c'est un des rare programme que vous pourrez Faxer.
debug
E 100
( puis tapoter cela, un espace entre chaque valeurs )
66 31 C0 FE C0 0F A2 66 C1 EA 1C 80 E2 01 88 D0 B4 4C CD 21 puis enter
RCX
14
N isht.com
W
quit
3) Le .Com tout fait ( Feignasse... )
Et Voila pouvez vous éclater dans vos scripts les + fous:
S:\nasm>isht.com
S:\nasm>echo %ERRORLEVEL%
1
Annexe:
L'hyperTreading Sans ta mere
L'assembleur le moins chez du marché
Comment y marche ce cPU ?? les Bases de l'assembleur
2000 - 2008