While working on our Haswell piece, I've been religiously checking the Geekbench and GLBenchmark results browsers to see if anyone ran either benchmark and decided to tap upload. This usually happens before every major smartphone launch, but in the case of the iPhone 5 the details these applications can give us are even more important.

Yesterday we confirmed that Apple is using its own custom designed ARM based CPU cores in its A6 SoC. Apple opted not to design in a vanilla ARM Cortex A9 likely to avoid relying on pure voltage/frequency scaling to improve performance, and chose not to integrate a Cortex A15 likely because of power consumption concerns as well.

There's absolutely no chance of Apple sending us a nice block diagram of the A6 CPU cores, so we have to work with what clues we can get elsewhere. Geekbench is particularly useful because it reports clock speed. Why does clock speed matter? Because, if reported accurately, it can tell us a lot about how the A6's CPU design has improved from an IPC standpoint. Remember that clock speed doesn't matter, but rather the combination of clock frequency and instructions executed per clock that define single threaded performance.

Apple iPhone 5 Models iPhone 5 Model GSM/EDGE Bands WCDMA Bands CDMA 1x/EVDO Rev.A/B Bands LTE Bands (FCC+Apple) A1428 "GSM" 850/900/1800/1900 MHz 850/900/1900/2100 MHz N/A 2/4/5/17 A1429 "CDMA" 850/900/1800/1900 MHz 850/900/1900/2100 MHz 800/1900/2100 MHz 1/3/5/13/25 A1429 "GSM" 850/900/1800/1900 MHz 850/900/1900/2100 MHz NA 1/3/5 (13/25 unused)

A short while ago, Geekbench results for a device identifying itself as an iPhone5,2 appeared. Brian believes this is likely the A1429 Verizon device (A1428 being iPhone 5,1) - perhaps one presampled to a reviewer looking to test their luck.

MacRumors appears to be first on the scene, having been tipped by an employee at PrimateLabs (the creators of Geekbench). I need to preface the rest of this post with a giant caution sign: I have no inside knowledge of whether or not these results are legitimate. They seem believable, but anything can happen. The rest of this post is simply my initial thoughts on what these mean, should the results be accurate. Update: The first iPhone 5 reviews are out and this Geekbench data looks accurate.

Cache sizes haven't changed, which either tells us Apple isn't feeling as generous with die size as perhaps it once was or that working sets in iOS are still small enough to fit inside of a 1MB L2. I suspect it's mostly the latter, although all microprocessor design is a constantly evaluated series of tradeoffs (often made through giant, awesomely protected spreadsheets).

The first real change is clock speed. Apple clocked its A4 and A5 CPU core(s) at 800MHz, although these Geekbench results point to a 25% increase in frequency at 1GHz. Some of the headroom is likely enabled by the move to 32nm, although it's very possible that Apple also went with a slightly deeper pipeline to gain frequency headroom. The latter makes sense. We've seen conservative/manageable increases in pipeline depth to hit frequency targets and improve performance before.

The fairly low clock speed also points to an increase in IPC (instructions executed per clock) over the Cortex A9 design. As I mentioned in our A6 analysis post, simple voltage/frequency scaling is a very power inefficient way to scale performance. A combination of IPC and frequency increases are necessary. If these results are accurate and the CPU cores are only running at 1GHz, it does lend credibility to the idea of a tangibly wider design.

It's also unclear if Apple is doing any sort of dynamic thermal allocation here, ala Intel's Turbo Boost. You can't get more power constrained than in a smartphone, and power gating is already common within ARM based SoCs, so that 1GHz value could be under load for both cores. A single core could run at higher frequencies for short bursts.

The next thing that stood out to me was the memory data:

Geekbench Comparison Memory Performance iPhone 4S iPhone 5 (unconfirmed) Scaling Read Sequential ST 0.32 GB/s 1.78 GB/s 5.63x Write Sequential ST 0.86 GB/s 1.35 GB/s 1.57x Stdlib Allocate ST 1.44 Mallocs/s 1.92 Mallocs/s 1.33x Stdlib Write 2.7 GB/s 6.06 GB/s 2.24x Stdlib Copy 0.55 GB/s 2.26 GB/s 4.13x

Geekbench Comparison Stream Performance iPhone 4S iPhone 5 (unconfirmed) Scaling Stream Copy 0.42 GB/s 1.9 GB/s 4.55x Stream Scale 319 MB/s 994 MB/s 3.11x Stream Add 0.59 GB/s 1.39 GB/s 2.34x Stream Triad 377 MB/s 1019 MB/s 2.70x

It's well known that ARM's Cortex A9 doesn't have the world's best interface outside of the compute core and its memory performance suffered as a result. If this data is accurate, it points to significantly overhauled cache and memory interfaces. Perhaps an additional load port, deeper buffers, etc...

Also pay close attention to peak bandwidth utilization. The 4S had 6.4GB/s of theoretical bandwidth out to main memory, the 5 raises that to 8.5GB/s. In the Stdlib write test the 4S couldn't even hit 50% of that peak bandwidth. The iPhone 5 on the other hand manages to hit over 70% of its peak memory bandwidth. I will say that if these numbers are indeed faked, whoever faked them was smart enough not to violate reality when coming up with these memory bandwidth numbers (e.g. no 95% efficiency numbers show up). It's also clear that these results aren't a simply doubling across the board over the 4S, lending some credibility to them.

Some of the largest performance improvements promised by the Geekbench data appear here in the memory results. It's whatever work Apple did here that helped enable the gains in the integer and floating point results below:

Geekbench Comparison Integer Performance iPhone 4S iPhone 5 (unconfirmed) Scaling Blowfish ST 10.7 MB/s 23.4 MB/s 2.18x Blowfish MT 20.7 MB/s 45.6 MB/s 2.20x Text Compress ST 1.21 MB/s 2.79 MB/s 2.30x Text Compress MT 2.28 MB/s 5.19 MB/s 2.27x Text Decompress ST 1.71 MB/s 3.82 MB/s 2.23x Text Decompress MT 2.84 MB/s 5.60 MB/s 2.67x Image Compress ST 3.32 Mpixels/s 7.31 Mpixels/s 2.20x Image Compress MT 6.59 Mpixels/s 14.2 Mpixels/s 2.15x Image Decompress ST 5.32 Mpixels/s 12.4 Mpixels/s 2.33x Image Decompress MT 10.5 Mpixels/s 23.0 Mpixels/s 2.19x Lua ST 215.4 Knodes/s 455 Knodes/s 2.11x Lua MT 425.6 Knodes/s 887 Knodes/s 2.08x MT Scaling 1.90x 1.92x

On average we see around 2.2x scaling from the 4S to the 5 in Geekbench's integer tests. There's no major improvement in multicore scaling, confirming what Geekbench tells us that we're looking at a two core/two thread machine.

The gains here are huge and are likely directly embodied in the performance claims that Apple made at the iPhone 5 launch event. Many smartphone workloads (under Android, iOS and Windows Phone despite what Microsoft may tell you) are still very CPU bound. Big increases in integer performance will be apparent in application level improvements.

Don't be surprised to see greater than 2x scaling here even though Apple only promised 2x at the event. Remember that what you're looking at is raw compute tests without many of the constraints that apply to application level benchmarks. While Apple has used benchmarks in the past to showcase performance, all of its performance claims at launch were application level tests. Those types of tests are more constrained and will show less scaling. That being said, I am surprised to see application level tests that were so close to the 2.2x average scaling we see here. Apple could have moved to faster NAND/storage controller here as well, which could help most if not all of these situations.

Geekbench Comparison Floating Point Performance iPhone 4S iPhone 5 (unconfirmed) Scaling Mandelbrot ST 223 MFLOPS 397 MFLOPS 1.77x Mandelbrot MT 438 MFLOPS 766 MFLOPS 1.74x Dot Product ST 177 MFLOPS 322 MFLOPS 1.81x Dot Product MT 353 MFLOPS 627 MFLOPS 1.77x LU Decomposition ST 171 MFLOPS 387 MFLOPS 2.25x LU Decomposition MT 348 MFLOPS 767 MFLOPS 2.20x Primality ST 142 MFLOPS 370 MFLOPS 2.59x Primality MT 260 MFLOPS 676 MFLOPS 2.59x Sharpen Image ST 1.35 Mpixels/s 4.85 Mpixels/s 3.59x Sharpen Image MT 2.67 Mpixels/s 9.28 Mpixels/s 3.47x Blur Image ST 0.53 Mpixels/s 1.96 Mpixels/s 3.68x Blur Image MT 1.06 Mpixels/s 3.78 Mpixels/s 3.56x MT Scaling 1.96x 1.92x

The floating point benchmarks show "milder" scaling in the first few tests (sub-2x) but big scaling in the latter ones. My guess here is we're seeing some of the impacts of increased memory bandwidth at the end there. If you look at our iPhone 5 hands-on video you'll see Brian talking about how super fast the new flyover mode in iOS 6 Maps is on the 5 compared to the 4S. That's likely due in no small part to the improved memory interface.

Although Geekbench is cross platform, I wouldn't recommend using this data to do anything other than compare iOS devices. I've looked at using Geekbench to compare iOS to Android in the past and I've sometimes seen odd results.

I'm sure we'll learn a lot more about the A6 SoC over the coming days/weeks.