The Intel® Atom™ Processor is a new generation of low-power processors. Their unique design makes it recommendable to optimize your applications specifically for performance on the Intel® Atom™ Processor. Only then will you be able to take full advantage of the power savings and the fullexecution performance of this micro architecture.
The most obvious difference to other Intel® processors is that the Intel® Atom™ Processor has an in-order instruction scheduler. This implies that instructions are fed into the instruction pipeline in exactly the order as they are fed to it by the binary code of your application. No instruction re-ordering is done at the processor level. As a result the processor is considerably more sensitive to instruction latencies and dependency stalls caused by poor instruction scheduling by the compiler of your choice.
Furthermore you may want you compiler to be more conservative when it comes to picking specific
microcode instructions or atomic instructions depending on the memory access latency or risk for
dependency stalls a specific instruction brings with it.
Lastly the simplified math instruction handling on the Intel® Atom™ processor makes for additional power savings, but it also means that the compiler has to give extra attention to the specific code generated so as to not impact execution speed of your code.
By simply using the optimization switch /QxSSE3_ATOM (Microsoft Windows*) or -xSSE3_ATOM (Linux*) you can ensure that the generated code gets optimized specifically for the Intel® Atom™ Processor with specific optimizations targeting this unique microarchitecture. The Intel® C++ Compiler focuses on
- in-order scheduler instruction pipeline modelling
- Memory access address generation optimization taking advantage of LEA instructions
- Use of movbe instruction for endianness data swapping
- Vectorization and automatic generation of concurrent loop execution using SIMD instructions
- Balancing of the use of atomic instructions and microcode to minimize latencies
Taking the architectural properties to heart the Intel® C++ Compiler is able to help you get the best performance out of your Intel® Atom™ Processor based platform.
If you'd like to ensure that your code also runs on other platforms you can always pick the option /QaxSSE3_ATOM (Microsoft Windows*) or -axSSE3_ATOM (Linux*), which enables detection of the underlying platform upon execution and will revert to code optimized for a standard platform if the Intel® Atom™ Processor is not detected.
Please check out the article you can fine at /en-us/articles/atom-optimized-compiler for more details on the compiler optimizations for the Intel® Atom™ Processor. I would like to encourage you to give the Intel® C++ Compiler 11.0 in the Intel® C++ Software Development Tools for Intel® Atom™ Processor (http://www.intel.com/software/products/mid) a try and see for yourself what it can do to improve application performance and end-user exeperience of your application even more.
Looking forward to your feedback after you gave it a try.
As always - the opinions expressed on this site are mine alone and do not necessarily reflect the opinions or strategies of Intel Corporation or its worldwide subsidiaries. Please alo note that any comments I make in this blog entry refer to the Intel® C++ Compiler in version 10.1 and 11.0 and do not reflect statemtns about future releases.