Qualcomm backtracks from Apple A7 marketing gimmick comments
techhive.com
techhive.com
Qualcomm's knee jerk reaction to press that praises Apple's platform is to point out the obviously premature move to 64 bit mobile chips, since Apple does not buy Qcomm SOCs and competes with Samsung, Qcomm's biggest customer. After a little critical thinking, Qualcomm realizes that it too will shortly be selling 64 bit mobile chips because now Samsung will want to match apple spec for spec, as most Android OEMs typically do.
--------------------------- As whether the move was a "gimmick" or not: The move to 64 bit would have been premature if Microsoft or an Android OEM had done it, but Apple made the right call for a few reasons:
(the obvious) - ARM v8 is a new ISA, and porting 32-bit ARM kernel code to the new ISA just to abandon it in a few years would be foolish
(musing)- Apple's OS people now only have to worry about one kernel code base when writing non-assembly, non performance critical code.
(speculation) - Apple may consider switching some of their traditionally x86 lineup to use lower power ARM chips in the intermediate future (2-4 years) and is giving itself that option by getting their kernel ready for ARM 64.
(way out there) - Apple may be planning to use their mobile chips in ultra low power server clusters, and they had to port the kernel to 64 bit before that was an option.
This allows the obj-c runtime to smuggle significantly more information inline in the `isa` pointer on ARM64 than on ARM32 or x86-64 (via pointer tagging): http://www.sealiesoftware.com/blog/archive/2013/09/24/objc_e... http://www.mikeash.com/pyblog/friday-qa-2013-09-27-arm64-and...
(amongst other things, 19 bits of the pointer are now used to hold the object's reference count, for any object with less than half a million references an incref or decref is just an atomic increment or decrement of this field, instead of an indirection through a global refcount table with a bunch of locks involved)
Why wouldn’t inline reference counts (as an extra 32 bit word in the object struct) be just as effective on a 32 bit architecture?
Apple’s tagged pointer tricks are just making the best of a bad situation.
iOS and Mac OS X have shared most of the kernel code for years. I doubt this makes any difference.
This is an annoying piece of misinformation that always rears its ugly head in 64-bit discussions. There are many ways to address more than 4GB of memory, going 64-bit is far from the only option.
Still, 64-bit memory addressing does have advantages in terms of garbage collection, mmaping files, etc even if the phone has less than 1 GB of RAM.
So it isn't a huge deal. It's the overall package that adds up to a much faster SOC.
It's a subtle distinction that can be hard to communicate, but while "64-bit" is not all that interesting, "moving to 64-bit" is in this case.
A lot of the improvement wouldn't be possible without the new architecture. In theory, you could do a new 32-bit architecture that has all the same benefits, but that would be terribly pointless.
Really, it's not just the SOC.
As described in @mikeash's piece, the 64-bit address length has allowed Apple to inline some per-object information (like reference counts) with object pointers, which is a big win in some key operations (2x faster object creation/destruction), which could sometimes make a big difference at the application level.