Even better Intel® Atom™ Processor optimizations with the Intel® C++ Compiler

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.

For more complete information about compiler optimizations, see our Optimization Notice.

2 comments

Top
robert-mueller-albrecht (Intel)'s picture

Dear UX-Admin,

I am sorry if I may not have worded my blog entry clearly enough. Like with any architecture and processor generation it makes sense to optimize as best as possible. In embedded and consumer electronics applications that tend to be closed systems this may even mean targeted optimization.

If you want to have the benefit of optimization for the Intel(R) Atom(Tm) Processor while maintaining full compatibility and standard optimization for other platforms you can simply pick /QaxSSE3_ATOM (Microsoft Windows*) or -axSSE3_ATOM (Linux*) options.

If you decide not to specifically optimize for the Intel(R) Atom(TM) Processor you may encounter a performance penalty, but your code will still run and be compatible. If you prefer to stay with the GNU* GCC compiler of your choice you can do so too.

My post was on how to tweak that extra bit of performance out of the platform.

Thanks, Rob

anonymous's picture

"The Intel(R) Atom(TM) 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(R) Atom(TM) Processor. Only then will you be able to take full advantage of the power savings and the fullexecution performance of this micro architecture."

Do you realize that this means *failure* in hardware engineering? Why? Because it is completely and totally impractical to optimize one's software just for one special type of a processor with special features from one single manufacturer. It'd be different if the "special" meant multi core, which is generic enough, but "special" in this particular context means "found nowhere else".

So this is a failure by intel HW engineers to make the special features "JustWork(SM)", without the software developer having to worry about developing special code, or having to use special tools, to take advantage of the new hardware functionality.

I don't even understand, how could you possibly expect people to develop their software specifically for intel processors, like intel is the only manufacturer in the world!?! That's just outrageous!

Add a Comment

Have a technical question? Visit our forums. Have site or software product issues? Contact support.