Les considérations à propos du processeur Intel® Atom™

Lors d'un portage vers une plate-forme netbook, on remarque une amélioration rapide dans les ressources disponibles, plus particulièrement dans la puissance du CPU Intel® Atom™ La question primordiale que se posent la plupart des développeurs est donc « comment puis-je exploiter toute cette puissance ? ». Explorons maintenant plusieurs aspects clés dont il faut tenir compte lorsqu'il s'agit d'utiliser cette nouvelle performance du CPU.

Pour ceux qui viennent du monde des téléphones mobiles avec processeurs ARM*/RISC intégrés, cantonnés dans la plage des 600 MHz, non seulement le processeur Intel® Atom™ fournit une fréquence d’horloge plus rapide, mais il apporte des fonctionnalités supplémentaires qui permettent de bénéficier aussi bien de toute la puissance brute de traitement que de la faible consommation d'énergie, dont raffolent nos clients. Et tout comme le fameux processeur Intel® Pentium®, le processeur Intel® Atom™ se décline en de nombreux modèles.

Le fait que la plate-forme netbook consiste en plusieurs modèles de processeurs Intel® Atom™ est un point capital à prendre en considération pendant le portage. Pour réussir le portage de notre application, il est essentiel que nous utilisions au maximum le potentiel du processeur Intel® Atom™ tout en étant attentif aux pièges qui jalonnent la voie et risquent de nuire aux performances.

Demandes d''informations détaillées sur le CPU

Avant d'en venir à la partie réactive de cet article, nous devons savoir avec quoi nous avons travailler. Il est important de bien établir que nous travaillons avec un processeur Intel® Atom™, d'en définir son modèle et sa vitesse de fonctionnement. Il existe plusieurs manières de récupérer ces détails. Sous Windows, nous disposons des possibilités suivantes.

  • Méthode avec la plate-forme SDK _cpuid
  • Utilisez WMI (Windows Management Instrumentation)
  • Effectuez l'extraction via le registre

Vous trouverez ci-dessous un exemple simple sur la manière d'extraire le modèle du processeur, la famille et l'exécution pas à pas avec la méthode _cpuid dans Visual Studio* 2008 :

#include <stdio.h>
#include "cpuid.h"

void main(void)
{
    _p_info info;

    _cpuid(&info);

    printf("v_name:\t\t%s\n", info.v_name);
    printf("model:\t\t%s\n", info.model_name);
    printf("family:\t\t%d\n", info.family);
    printf("stepping:\t%d\n", info.stepping);
}

_cpuid() 

Détails : http://msdn.microsoft.com/en-us/library/hskdteyh%28VS.80%29.aspx

Le téléchargement inclut : http://download.microsoft.com/download/B/A/D/BADA8219-9761-498D-85B4-4565C28F4DB8/crt/cpuid.zip.exe

Si vous voulez utiliser WMI, voici un exemple avec WMI dans .NET (C#):

using System.Management

public void DisplayCPUDetails()
{
    ManagementClass mgmt = new ManagementClass("Win32_Processor");
    ManagementObjectCollection objCol = mgmt.GetInstances();
    
    // Loop through all processors
    foreach (ManagementObject obj in objCol)
    {
        Response.WriteLine("ID",obj.Properties["ProcessorId"].Value.ToString());
        Response.WriteLine ("DeviceID",obj.Properties["DeviceID"].Value.ToString());
        Response.WriteLine ("Socket", obj.Properties["SocketDesignation"].Value.ToString());
        Response.WriteLine ("Manufacturer", obj.Properties["Manufacturer"].Value.ToString());
        
         // Clean up
        obj.Dispose();
    }
}

Détails WMI : http://msdn.microsoft.com/en-us/library/hskdteyh%8VS.85%29.aspx

Remarque : Bien que la plate-forme cible pour le programme Intel AppUpSM soit effectivement le netbook équipé du processeur Intel® Atom™, nous voulons inclure les autres processeurs pour qu'ils puissent exécuter notre code. Dans beaucoup de cas, certains font tourner une application avec le SDK Intel AppUp(SM) intégrée sur un processeur non-Atom (débogage, test d'acceptation par l'utilisateur, etc.). Si le point de vue technique vous est important, vous voudrez peut-être notifier l'utilisateur que votre application est censée tourner sur un processeur Intel® Atom™ et qu'elle ne se comportera peut-être pas comme prévu sur son ordinateur.

LigneSup du processeur Intel® Atom™

Il est important de noter qu'il existe de nombreux modèles du processeur Intel® Atom™. Ces modèles vont du 800 MHz au 2,13 GHz avec beaucoup de fréquences intermédiaires. Je vais ignorer une longue table de modèles et me fier au site officiel Web d'Intel pour ces détails. Ce qui est capital à saisir, c'est que les performances disponibles peuvent varier considérablement d'un cas à l'autre selon le processeur Intel® Atom™ dont dispose votre client dans son netbook. Si votre application est gourmande en processeur, pensez à ajouter une clause de non-responsabilité ou des conditions requises dans vos métadonnées dans la boutique d'applications Intel AppUpSM. Vous préviendrez ainsi l'insatisfaction de vos clients, que vous transformerez en clients informés et contents.

Liste des CPU Intel® Atom™ : http://ark.intel.com/ProductCollection.aspx?familyID=29035

Comportement adaptatif

En rendant votre application consciente du processeur sur lequel elle tourne, vous avez libéré tout le potentiel lui permettant de réagir en fonction du processeur détecté et donc d'améliorer l'expérience de l'utilisateur. Qu'est-ce qui devrait changer dans le comportement de votre application si elle s'exécute sur un netbook équipé d'un processeur plus lent ? Que pourrait faire votre application avec un processeur plus rapide (pensez multi-threading, encodage de meilleure qualité, etc.) ?

Nous ne pouvons tout de même pas attendre les mêmes performances pour un netbook basé Intel® Atom™ que pour un PC haut de gamme. Nous devons être attentifs à l'expérience de l'utilisateur dans la mesure où elle s'applique aux capacités de chaque modèle de processeur Intel® Atom™. Mais l'inverse est également vrai : nous sommes nombreux à disposer d'une plus grande puissance de traitement et nous devons exploiter cette puissance quand cela est possible.

Un bon exemple serait une application qui exécute une conversion de médias. Le codeur sous-jacent comporte de nombreux paramètres, dont chacun affecte les résultats en sortie et la charge processeur. Si l'activation du paramètre XYZ ralentit de cinq fois l'application sur le processeur Intel® Atom™ modèle 123, nous pouvons modifier cela de manière proactive et spectaculairement améliorer l'expérience de notre utilisateur.

Ensemble de fonctionnalités dynamiques

Nous voulons tous que notre application puisse être performante pour nos clients. En garantissant une expérience réactive pour l'utilisateur, nous pouvons être certains d'avoir des clients loyaux et satisfaits. Que faire lorsque le processeur est le goulot d'étranglement pour une fonctionnalité particulière ?

Plutôt que de restreindre notre base clients potentiels en refusant à des clients l'accès à notre application parce qu'ils ne répondent pas aux conditions requises en termes de processeur, nous pouvons permettre à notre application de s'adapter aux ressources processeur disponibles grâce à un jeu restreint de fonctionnalités. Nous limitons voire excluons la fonctionnalité incriminée sans aucune incidence sur la convivialité globale de nos applications.

Un exemple type de cette technique serait une application qui permettrait à l'utilisateur de choisir la fréquence dans laquelle une fonction est exécutée. Nous limiterions alors les possibilités à un ensemble plus réaliste d'options pour les processeurs Intel® Atom™ moins rapides.

Décharger les cycles sur la GPU

Aussi efficace et puissant que soit le processeur Intel® Atom™, nous ne devons pas oublier qu'il s'agit quand même d'une ressource limitée. Bien que l'on soit limité à un seul processus et/ou à une seule application à la fois sur la plupart des plates-formes mobiles, le netbook se comporte comme n'importe quel autre ordinateur portable sur lequel vous partagez des ressources à n'importe quel moment.

Des quantités de volumes ont été écrits sur la manière de produire du code optimisé et je soutiens pleinement ce sujet car il est étroitement lié à la satisfaction des clients. Lorsque vous envisagez le portage de votre application sur la plate-forme netbook, pensez à décharger sur la GPU le maximum du travail du processeur. La GPU excelle dans les opérations qu'elle prend en charge et du coup vous libérerez une précieuse puissance du processeur. En déchargeant du travail sur la GPU, vous destinerez à l'utilisateur une expérience tout en douceur et votre application ne sera pas qualifiée de « goinfre en ressources ».

Ressource GPU : http://appdeveloper.intel.com/fr-fr/blog/2010/01/20/optimize-your-game-intel-integrated-graphics-adapters

Remarque : Nous tentons souvent d'utiliser un modèle d'événement aux formes standard dans nos applications ((MouseDown, LostFocus, etc) pour l'animation et la fonctionnalité glisser-déplacer. Soyez prudent lorsque vous déplacez des contrôles sous forme programmatique car un trop grand nombre d'appels à this.Invalidate() provoquera des problèmes de performances du processeur. Vous pouvez pallier ce risque si vous pouvez utiliser DirectX*, OpenGL* ou même WPF* et ses fonctionnalités d'animation intégrées.

0
Étiquettes: