ATOM Processor Considerations

When porting to the netbook platform one observes a vast improvement in the available resources, namely in the sheer power of the ATOM CPU. Top of the list for most developers is "How can I take advantage of all of that power?”. Let us go down a similar path in exploring several key aspects to consider when it comes down to utilizing this new found CPU performance.

Coming from mobile phone devices with embedded ARM*/RISC processors in the 600MHz range, the Intel® Atom™ processor provides not only a faster clock speed but a host of additional features giving it the raw processing power as well low power consumption our customers enjoy. Just as there are many models of the famous Pentium® processor, the same holds true for the Intel® Atom™ offering.

As the netbook platform consists of multiple Intel® Atom™ processor models it is a prime area to consider during our porting process. It is essential to the success of our ported application that we utilize the Intel® Atom™ processor to it's fullest potential while being mindful of performance pitfalls along the way.

Querying for CPU details

Before we get down to the reactionary portion of this article, we need to know what we have to work with. It is important to establish that we are indeed working with an Intel® Atom™ processor, what model and what speed it is operating at. These details may be retrieved in a number of ways; In Windows we have the following options.

  • Platform SDK _cpuid method
  • Utilize WMI (Windows Management Instrumentation)
  • Retrieve via the registry

Below is a simple example of how to extract the processor model, family and stepping using the _cpuid method in 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() 

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

Download Includes: http://download.microsoft.com/download/B/A/D/BADA8219-9761-498D-85B4-4565C28F4DB8/crt/cpuid.zip.exe

If you prefer to use WMI, here is an example using WMI in .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();
    }
}

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

Note: While the target platform for Intel® AppUpSM programs is indeed "Intel® Atom™ Netbooks", we do not want to exclude other processors from being able to execute our code. There are plenty of instances where one may be running an Intel® Atom™ SDK integrated app on a non Intel® Atom™ CPU (Debugging, User Acceptance Testing, etc.). If you have concerns from a technical standpoint you may wish to notify the user that your application is expecting an Intel® Atom™ processor and may not behave as expected on their computer.

Intel® Atom™ processor Lineup

It is important to note that there are many models of the Intel® Atom™ processor. They range from 800 MHz to 2.13 GHz and many speeds in between. I will omit a lengthy table of models and instead refer to the official Intel website for those details. What is key, is that the available performance may very by a noticeable amount depending upon which particular Intel® Atom™ CPU your customer has in their netbook. If your application is processor intensive consider adding a disclaimer or recommended requirements details to your meta data in the Intel® AppUpSM store. This will further prevent unsatisfied customers and set expectations resulting in informed and happy customers.

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

Adaptive behavior

By making your application processor aware you have opened up the potential to react according to the detected CPU details and improve the user experience. What should change in your applications behavior if ran on a netbook with a slower CPU? What could your application do with a faster CPU (Think multi-threading, higher quality encoding and the like).

We simply can not expect the same performance from our Intel® Atom™ powered netbooks as a high end desktop workstation. We must pay attention to the user experience as it applies to the performance capabilities of each Intel® Atom™ processor model. The converse is also true; for many of us we have much more processing power at our disposal and we must take advantage of it as use cases allow.

A good example of this would be an application that performs media conversion. The underlying encoder has many parameters, each affecting the output and CPU load. If enabling XYZ parameter causes our application to take 5 times as long on the 123 model Intel® Atom™ processor, we can proactively modify this and drastically improve the experience for our user.

Dynamic feature set

We all want our application to perform it's best for our customer. By ensuring a responsive user experience we garner loyal and satisfied customers. What do we do when the CPU is the bottleneck for a particular feature?

Rather than narrowing our potential customer base by denying customers access to our application based upon CPU requirements, we can enable our application to adapt to the available CPU resources with a restricted feature set. We limit or exclude the offending functionality without impacting our applications overall usability.

A prime instance of this technique would be in an application which allows the user to choose the frequency in which a function us executed. We would limit the available settings to a more realistic set of options for the lower speed Intel® Atom™ CPUs.

Offload cycles to the GPU

As efficient and powerful as the Intel® Atom™ CPU is, we must remember that it is a limited resource. Where as in most mobile platforms you are restricted to a single process, and/or one application at a time the netbook behaves as any other laptop where you are sharing resources at all times.

There have been volumes written on how to write optimized code, and I fully support that topic as it correlates to satisfied customers. When considering your newly ported application on the netbook platform, be diligent in offloading as much CPU work over to the GPU. The GPU is adept in the operations that it supports, and you will free up valuable CPU processing power in the process. By offloading work to the GPU you will end up with a smooth user experience, and an application that will not be referred to as a "resource hog".

GPU Resource: http://appdeveloper.intel.com/en-us/blog/2010/01/20/optimize-your-game-intel-integrated-graphics-adapters

Note: Many times we tend to make use of the standard forms event model in our applications (MouseDown, LostFocus, etc) for animation and drag and drop functionality. Exercise caution when moving controls around on the form programmatically, too many calls to this.Invalidate() will cause CPU performance issues. This can be mitigated if you have the development resources to make use of DirectX*, OpenGL*, or even WPF* and its build in animation features.

3.333335
Average: 3.3 (3 votes)