Consideraciones sobre el procesador ATOM

Al realizar la migración a la plataforma de netbook se observa una amplia mejora en los recursos disponibles, concretamente en la potencia de la CPU de ATOM. El primer elemento de la lista para la mayoría de desarrolladores es: "¿Cómo puedo aprovechar toda esta potencia?”. Sigamos una ruta similar al explorar varios aspectos esenciales que tener en cuenta cuando se trata de utilizar este nuevo rendimiento de la CPU que ha descubierto.

El procesador Intel® Atom™ procede de dispositivos telefónicos móviles con procesadores ARM*/RISC incorporados en la gama de 600 MHz y proporciona, no sólo una velocidad de reloj más rápida, sino un conjunto de características adicionales que proporcionan potencia de proceso pura así como un bajo consumo, que nuestros clientes apreciarán. Del mismo modo que hay muchos modelos del famoso procesador Pentium®, lo mismo es aplicable a la oferta de Intel® Atom™.

Dado que la plataforma de netbook se compone de varios modelos del procesador Intel® Atom™, es un área primordial que tener en cuenta durante el proceso de migración. Es esencial para el éxito de nuestra aplicación migrada que utilicemos el procesador Intel® Atom™ en su potencial máximo, sin perder de vista las caídas de rendimiento que pueden encontrarse por el camino.

Consulta de detalles de la CPU

Antes de llegar a la parte reactiva de este artículo, tenemos que saber con qué debemos trabajar. Es importante establecer que estamos trabajando con un procesador Intel® Atom™, qué modelo y con qué velocidad funciona. Estos detalles se pueden recuperar de diversas maneras; en Windows tenemos las opciones siguientes.

  • Método de plataforma SDK _cpuid
  • Utilizar WMI (Windows Management Instrumentation)
  • Recuperar mediante el registro

Más abajo verá un ejemplo simple de cómo extraer el modelo de procesador, familia y niveles, utilizando el método _cpuid en 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() 

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

Descarga de archivos de inclusión: http://download.microsoft.com/download/B/A/D/BADA8219-9761-498D-85B4-4565C28F4DB8/crt/cpuid.zip.exe

Si prefiere utilizar WMI, este es un ejemplo de uso de WMI en .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();
    }
}

Detalles de WMI: http://msdn.microsoft.com/en-us/library/aa394373%28VS.85%29.aspx

Nota: Mientras que la plataforma de destino para programas Intel AppUpSM es efectivamente "Netbooks Intel® Atom™", no queremos excluir que otros procesadores puedan ejecutar nuestro código. Hay muchas instancias en que puede ejecutarse una aplicación integrada con el SDK Intel® Atom™ en un procesador que no sea Intel® Atom™ (depuración, pruebas de aceptación de los usuarios, etc.). Si tiene dudas desde el punto de vista técnico, tal vez desee notificar al usuario que su aplicación espera utilizar un procesador Intel® Atom™ y podría no tener el mismo comportamiento en su equipo.

Contenido del procesador Intel® Atom™

Es importante tener en cuenta que hay muchos modelos del procesador Intel® Atom™. Abarcan desde 800 MHz a 2,13 GHz y muchas velocidades intermedias. Omitiré una larga tabla de modelos y, en su lugar, le remito al sitio web oficial de Intel para ver esos detalles. Lo que es fundamental es que el rendimiento disponible puede variar de manera notable, en función de qué CPU Intel® Atom™ concreta tiene el cliente en su netbook. Si su aplicación realiza un uso intensivo del procesador, piense en agregar una declaración de exención de responsabilidad o detalles sobre los requisitos recomendados en los metadatos de la tienda Intel AppUpSM. Esto ayudará a evitar que haya clientes insatisfechos y establecerá expectativas que darán como resultado unos clientes felices y bien informados.

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

Comportamiento adaptativo

Al hacer que el procesador de aplicaciones lo note, ha abierto el potencial de reacción según los detalles detectados de la CPU y mejorará la experiencia de los usuarios. ¿Qué debe cambiar en el comportamiento de sus aplicaciones si éstas se ejecutan en una netbook con una CPU más lenta? ¿Qué puede hacer su aplicación con una CPU más rápida (piense en un proceso con varias líneas de ejecución, mayor calidad de la codificación y cosas similares)?

No podemos esperar el mismo rendimiento de nuestros netbooks basados en Intel® Atom™ que de una estación de trabajo de sobremesa de gama alta. Debemos prestar atención a la experiencia de los usuarios aplicada a las prestaciones de rendimiento de cada modelo de procesador Intel® Atom™. Lo contrario también es cierto; muchos de nosotros tenemos mucha más potencia de proceso a nuestra disposición y debemos aprovecharla cuando se presente la oportunidad.

Un buen ejemplo de ellos sería una aplicación que realice la conversión de archivos de medios. El codificador subyacente tiene muchos parámetros, y cada uno de ellos afecta a la salida y a la carga de la CPU. Si habilitar el parámetro XYZ causa que nuestra aplicación tarde 5 veces más en ejecutarse en el procesador Intel® Atom™ modelo 123, podemos modificarlo para mejorar drásticamente la experiencia de nuestro usuario.

Conjunto de características dinámicas

Todos queremos que nuestra aplicación proporcione el mejor rendimiento a nuestros clientes. Al asegurar una reacción rápida en la experiencia de usuario, conseguimos unos clientes leales y satisfechos. ¿Qué debemos hacer si la CPU es el cuello de botella de una función determinada?

En lugar de estrechar nuestra base potencial de clientes denegándoles el acceso a nuestra aplicación según los requisitos de la CPU, podemos habilitar nuestra aplicación para que se adapte a los recursos disponibles de la CPU con un conjunto de funciones restringido. Limitaremos o excluiremos la funcionalidad problemática sin que ello afecte a la usabilidad general de nuestras aplicaciones.

Un ejemplo básico de esta técnica sería una aplicación que permitiese al usuario elegir la frecuencia con que se ejecutará una función. Limitaríamos los ajustes disponibles a un conjunto de opciones más realista para aquellas CPU Intel® Atom™ de menor velocidad.

Descargar ciclos a la GPU

Por eficiente y potente que sea la CPU Intel® Atom™, debemos recordar que es un recurso limitado. Mientras que en la mayoría de plataformas móviles está limitado a un solo proceso y/o una aplicación cada vez, el netbook se comporta como cualquier otro equipo portátil en el que se comparten recursos en todo momento.

Se han escrito muchos volúmenes sobre cómo escribir código optimizado y estoy totalmente a favor de este tema, porque está relacionado con el número de clientes satisfechos. Al examinar la aplicación recién migrada a la plataforma de netbook, sea diligente descargando tanto trabajo de la CPU como pueda en la GPU. La GPU es adecuada en las operaciones que admite, y en este proceso liberará una potencia de proceso de la CPU muy valiosa. Al descargar trabajo en la GPU, obtendrá una experiencia de usuario positiva y una aplicación que no será calificada como "devoradora de recursos".

Recurso de GPU: http://appdeveloper.intel.com/es-es/blog/2010/01/20/optimize-your-game-intel-integrated-graphics-adapters

Nota: Muchas veces tendemos a utilizar el modelo de evento de formularios estándar en nuestras aplicaciones (MouseDown, LostFocus, etc) para las funciones de animación y de arrastrar y soltar. Sea precavido al mover controles en el formulario de manera programática, ya que un exceso de llamadas a this.Invalidate() causará problemas de rendimiento de la CPU. Esto puede mitigarse si tiene los recursos de desarrollo necesarios para utilizar DirectX*, OpenGL*, o incluso WPF* y su compilación en las funciones de animación.

0