Head to head: x86 vs ARM

In this new monthly fea­ture, Jeremy Laird pits two com­pet­ing techs in a head-to-head bat­tle to de­cide which one is su­pe­rior.

APC Australia - - Technotes -

Mi­crosoft is at it again, rolling out an ARM­com­pat­i­ble ver­sion of Win­dows, this time with em­u­la­tion ca­pa­bil­i­ties to sup­port legacy 32-bit x86 apps. How well that em­u­la­tion works re­mains to be seen. But it begs the age-old ques­tion of how the ri­val CPU ar­chi­tec­tures com­pare, and what the fu­ture holds. Are ARM chips still the choice for mo­bile ef­fi­ciency? Is x86 still the ob­vi­ous per­for­mance play? Will the swarm of ARM chip mak­ers de­vour ev­ery form fac­tor cur­rently dom­i­nated by x86? Or can In­tel fi­nally make a suc­cess­ful phone chip?


Re­mem­ber when RISC ver­sus CISC was the bat­tle of the ages? Even to­day, In­tel’s chips and the up­start bat­tal­ions of ARM pro­ces­sors align ac­cord­ing to this par­a­digm, with x86 CPUs still CISC (or com­plex in­struc­tion set com­put­ing), and ARM rep­re­sent­ing the van­guard of RISC (or re­duced in­struc­tion set com­put­ing).

But, in prac­tice, it’s a moot point. That’s be­cause ever since the Pen­tium Pro (and AMD’s K5), x86 pro­ces­sors have re­ally been RISC chips in­ter­nally, and have re­lied upon a mi­crocode trans­la­tion layer to han­dle the x86 CISC in­struc­tion set. What’s more, over time, x86 cod­ing has co­a­lesced around a rel­a­tively small num­ber of com­monly used in­struc­tions. All of which means that the old di­vides that saw x86 chips re­quire rel­a­tively com­plex com­pil­ers, along with com­plex in­struc­tion sched­ul­ing and de­cod­ing hard­ware, and thus a higher tran­sis­tor count for a given the­o­ret­i­cal per­for­mance ca­pa­bil­ity, not to men­tion lim­i­ta­tions on in­struc­tion pipe­lin­ing, no longer fully ap­ply. CISC ar­chi­tec­tures, such as ARM, have like­wise be­come more com­plex, with sup­port for float­ing point math, vir­tu­al­i­sa­tion and hard­ware cryp­tog­ra­phy. In short, RISC ver­sus CISC is no longer the cru­cial ques­tion.


It sim­ply doesn’t mat­ter.


If RISC ver­sus CISC is no longer a cru­cial met­ric, there is still a di­vide be­tween x86 and ARM that maps to sim­i­lar ter­ri­tory: x86 re­mains a rel­a­tively com­plex in­struc­tion set; ARM rel­a­tively sim­ple.

Take ARMv8, the lat­est ARM in­struc­tion set. All ARMv8 in­struc­tions are 32-bit (un­less in 16-bit thumb mode), and with that comes the usual trade-off of fixed-length in­struc­tion en­cod­ing. On the other hand, x86 has vari­able length in­struc­tions and sup­ports any­where from 8 to 120 bits.

So x86 de­coders are rel­a­tively big and com­plex, ARM de­coders small and sim­ple. That means x86 has an in­her­ent ad­van­tage in terms of in­struc­tion den­sity, while an ar­guably ‘purer’ CISC ar­chi­tec­ture like ARM runs up against in­struc­tion-de­pen­dent lim­i­ta­tions when it comes to op­ti­mi­sa­tions per­tain­ing to pipe­lin­ing and par­al­leli­sa­tion.

In the end, it’s com­plex­ity ver­sus sim­plic­ity, and com­plex­ity wins in the pure per­for­mance stakes, pro­vided you have suf­fi­cient tran­sis­tors and power. In a mod­ern desk­top or server con­text, where tran­sis­tor counts now mea­sure in bil­lions, and sup­ply­ing on­go­ing power isn’t a fun­da­men­tal lim­i­ta­tion, x86 still has a clear per­for­mance ad­van­tage.


x86, for now.


What’s good for x86’s goose is also good for ARM’s gan­der. By that, we mean that very much the same at­tributes and qual­i­ties that give x86 CPUs the edge in terms of pure per­for­mance play to ARM’s strengths as a mo­bile pro­ces­sor.

Ad­mit­tedly, x86 and ARM have con­verged quite dra­mat­i­cally. If you com­pare the likes of, say, Ap­ple’s re­cent CPU cores (in iPads and iPhones) with those of In­tel, they look re­mark­ably sim­i­lar from the prover­bial 1,000 feet.

Thus, whether it’s x86 or ARM, you’ll see the boxes along­side out-oforder ex­e­cu­tion, 64-bit mem­ory ad­dress­ing and even 6-wide in­struc­tion is­su­ing checked for both ar­chi­tec­tures. What’s more, in the real world, if you com­pare, for in­stance, the first Ap­ple iPad Pro, with its dual-core ARM pro­ces­sor, to a 12-inch su­per-thin MacBook, and its dual-core x86 chip, you’ll find they trade blows in ba­sic per­for­mance met­rics.

Re­mem­ber, how­ever, that this par­tic­u­lar com­par­i­son is at the mar­gins where x86 and ARM over­lap — the most pow­er­ful ARM ar­chi­tec­ture ver­sus the weak­est full-power In­tel Core chip. The more mo­bil­ity you re­quire, the more ARM’s fun­da­men­tal sim­plic­ity gives a power ef­fi­ciency ad­van­tage.


ARM, with ef­fi­cient ease.

“Sup­port for legacy code is an­other x86 ad­van­tage. All x86 chips must sup­port the orig­i­nal 16-bit reg­is­ters and in­struc­tions.”


Much of this comes down to what kind of soft­ware you run. In the­ory, pretty much any app can be coded for ei­ther ar­chi­tec­ture. How­ever, there are dif­fer­ences that give x86 an ad­van­tage.

For starters, part of the com­plex­ity of x86 in­cludes sup­port for in­struc­tion ex­ten­sions that im­prove per­for­mance in cer­tain work­loads. We’re deal­ing here with that mid­dle ground be­tween true gen­eral-pur­pose pro­cess­ing and fixed-func­tion hard­ware ac­cel­er­a­tors.

Adding a small fixed-func­tion en­gine to an ARM SoC, per­haps for video de­cod­ing, is sim­ple. But the added com­plex­ity and tran­sis­tor count of x86 pro­ces­sors al­lows for the ad­di­tion of pro­gram­mable vec­tor in­struc­tion sets, such as MMX and AVX, that can be used for a broad range of work­loads. It makes x86 more flex­i­ble for ex­tract­ing a lot of per­for­mance from a wide range of code.

Sup­port for legacy code is an­other x86 ad­van­tage. All x86 chips must sup­port the orig­i­nal 16-bit reg­is­ters and in­struc­tions. ARMv8 ar­chi­tec­tures, on the other hand, only sup­port ARMv7 or AArch32 code across ex­cep­tion bound­aries. Sim­ply put, not only is there more ex­ist­ing x86 code to choose from, but x86 runs old code faster and bet­ter.


It’s x86’s great­est strength.


As things stand, nei­ther x86 nor ARM dom­i­nates the whole land­scape. For power, x86 has the edge, for ef­fi­ciency and porta­bil­ity, ARM is the ob­vi­ous choice. But will it al­ways be this way?

For a while, it looked as though In­tel wanted to in­sert x86 into ev­ery form fac­tor and ap­pli­ca­tion. It cre­ated the Atom pro­ces­sor to take on ARM in phones and other ul­tra­mo­bile de­vices. Mean­while, ARM chip mak­ers, such as Qual­comm, have been in­creas­ing pure pro­cess­ing power and even cre­at­ing prod­ucts for server com­put­ers. In­deed, Mi­crosoft ported Win­dows Server for ARM ar­chi­tec­tures, though it hasn’t yet been re­leased for re­tail, and it’s hav­ing a sec­ond crack at sup­port­ing client ARM ma­chines with a Win­dows OS.

That said, In­tel has pulled out of the phone mar­ket, and nar­rowed its am­bi­tions for Atom to high­per­for­mance tablet PCs. And ARM’s server strat­egy is far from proven, as are ARM client PCs. Who would have guessed that In­tel would fail so mis­er­ably in its ef­forts to move into ARM’s ter­ri­tory? For the fore­see­able fu­ture, the built-in ad­van­tages of x86 and ARM will make them very hard to budge from their re­spec­tive strongholds.


A small edge to ARM.

“The more mo­bil­ity you re­quire, the more ARM’s fun­da­men­tal sim­plic­ity gives a power ef­fi­ciency ad­van­tage.”

For pure per­for­mance, x86 has a clear edge.

Ap­ple’s lat­est ARM chips are more com­pa­ra­ble to In­tel’s Core M pro­ces­sors.

Newspapers in English

Newspapers from Australia

© PressReader. All rights reserved.