Topologie du Processor Core

mercredi 12 mars 2014Par : CyrIng

x2topology

Le programme x2topology énumère la topologie du processeur Core.
La collecte des informations relatives à chaque coeur s’appuie sur des appels itératifs à l’instruction CPUID.

Illustrations

  • Topologie avec l’Hyperthreading et 4 x Coeurs activés.
    topology-with-htt-4xcores
  • Topologie avec l’Hyperthreading désactivé et 4 x Coeurs activés.
    topology-without-htt-4xcores
  • Topologie avec l’Hyperthreading et 2 x Coeurs activés.
    topology-with-htt-2xcores
  • Topologie avec l’Hyperthreading désactivé et 1 seul Coeur activé.
    topology-without-htt-1xcore

Mise en oeuvre

Les instructions pour la compilation du code source et l’exécution du programme sont détaillées dans le wiki:

  1. Télécharger le code source x2topology.c
  2. Compiler la source avec gcc pour Linux
  3. Exécuter le programme
    ./x2topology

    via le script Shell, sur l’ensemble des coeurs,

    ./x2topology.sh

x2topology_np

x2topology_np.c est une nouvelle version du programme qui effectue une affinité des Coeurs au moyen d’un appel à la fonction pthread_setaffinity_np()

topology_np-with-htt-4xcores

L’algorithme est le suivant:

  1. Obtenir le nombre maximum de Coeurs au sein du Processeur dans le registre EAX, position des bits [31-26], en retour de la fonction 04h de l’instruction CPUID. Ce nombre sera désigné ThreadCount.
  2. Allouer, à la dimension ThreadCount, un tableau de la structure des données.
  3. Boucler de 0 (zéro) à ThreadCount (exclut), en créant une fonction thread au moyen de pthread_create().
    Les caractéristiques de cette fonction seront passées en argument, en particulier l’indice du tableau sur lequel la fonction portera son traitement.

    1. Au sein de la fonction thread, commencer par un changement d’affinité sur le numéro de CPU qui est recupéré des arguments d’appel.
    2. Si l’affinité est validée, c.à.d. pthread_setaffinity_np() retourne 0, alors invoquer la fonction 0Bh de CPUID sur 2 niveaux :
      1. au niveau Thread du Processeur, valeur 1 dans le registre ECX
      2. au niveau Core, valeur 2 dans ECX
      • la collecte est terminée, dès lors que les registres EAX et EBX ont la valeur 0 en sortie de la fonction 0Bh du CPUID.
      • Pour tout niveau validé (Thread et Core), ranger dans le tableau, à l’indice du numéro CPU, les valeurs de Topologie :
        1. l’identifiant étendu APIC
        2. l’identifiant APIC du Core
        3. l’identifiant APIC du Thread
  4. Boucler à nouveau de 0 à ThreadCount pour y attendre la fin de traitement des fonctions thread en appelant pthread_join()




XFreq 0.17-1

dimanche 16 février 2014Par : CyrIng

Version 0.17-1

  • Amélioration apportée au calcul des coefficients Turbo.
  • Gestion des icônes et buttons.
  • Ajout d’un Widget Dump de registres MSR.

xfreq_17-1





XFreq : une Widget Core i7 pour Linux

mardi 14 janvier 2014Par : CyrIng

[ Nightly Build ]
Version 0.16 : nouveau, une fenêtre « All-in-One » est activable avec l’option ‘-D 1′ en ligne de commande.

  • Optimisation du thread de lecture des MSR.
  • Spécialisation d’un TSC par coeur logique CPU.
  • Ajout de Processor features dans System Information.
  • Affichage des seuils de température: Threshold #1 & #2

xfreq_16


Version 0.15 : Deux nouveaux Widgets sont disponibles; tandis que le Widget Core est agrémenté d’un Wallboard.

  • C-states
  • Température

xfreq_15-Core

xfreq_15-CStates

xfreq_15-Temps

Désormais le Widget System Information rassemble les détails du Processeur, de la RAM et du BIOS.

xfreq_15-SysInfo

Le reste des nouvelles fonctionnalités est affichée dans le Menu.

xfreq_15-Menu


Version 0.12 : Améliore le calcul des coefficients de fréquence en faisant usage des compteurs de performance.

Version 0.11 : 3 nouvelles pages de spécifications sont ajoutées ( Processeur, RAM, BIOS ).
Une aide est par ailleurs disponible depuis [F1]
Version 0.10 : double buffering ; optimisation des lectures MSR
xfreq_10
Version 0.08 ajoute l’affichage des températures Core DTS.

La feuille de route du développement d’ X-Freq est à consulter sur le FTS





Widget XFreq

dimanche 22 décembre 2013Par : CyrIng

  • Le widget XFreq affiche les fréquences des coeurs CPU du processeur i7
  • Programmée en multithread pour la XLib, la boucle évènementielle X-Window est distincte du thread de calcul des fréquences.
  • Compiler le code source puis exécutez le en tant que root
    # xfreq 0 0 250 150 9x15 0x1010f0 0x00ffff 15 5