Thanatos Lair <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... )

CLIQUE MOI

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


Retour au menu principal


Copyright © Thanatøs

2000 - 2008