Apple's Swift: Pipeline Depth & Memory Latency

Section by Anand Shimpi

For the first time since the iPhone's introduction in 2007, Apple is shipping a smartphone with a CPU clock frequency greater than 1GHz. The Cortex A8 in the iPhone 3GS hit 600MHz, while the iPhone 4 took it to 800MHz. With the iPhone 4S, Apple chose to maintain the same 800MHz operating frequency as it moved to dual-Cortex A9s. Staying true to its namesake, Swift runs at a maximum frequency of 1.3GHz as implemented in the iPhone 5's A6 SoC. Note that it's quite likely the 4th generation iPad will implement an even higher clocked version (1.5GHz being an obvious target).

Clock speed alone doesn't tell us everything we need to know about performance. Deeper pipelines can easily boost clock speed but come with steep penalties for mispredicted branches. ARM's Cortex A8 featured a 13 stage pipeline, while the Cortex A9 moved down to only 8 stages while maintining similar clock speeds. Reducing pipeline depth without sacrificing clock speed contributed greatly to the Cortex A9's tangible increase in performance. The Cortex A15 moves to a fairly deep 15 stage pipeline, while Krait is a bit more conservative at 11 stages. Intel's Atom has the deepest pipeline (ironically enough) at 16 stages.

To find out where Swift falls in all of this I wrote two different codepaths. The first featured an easily predictable branch that should almost always be taken. The second codepath featured a fairly unpredictable branch. Branch predictors work by looking at branch history - branches with predictable history should be, well, easy to predict while the opposite is true for branches with a more varied past. This time I measured latency in clocks for the main code loop:

Branch Prediction Code
  Apple A3 (Cortex A8 @ 600MHz Apple A5 (2 x Cortex A9 @ 800MHz Apple A6 (2 x Swift @ 1300MHz
Easy Branch 14 clocks 9 clocks 12 clocks
Hard Branch 70 clocks 48 clocks 73 clocks

The hard branch involves more compares and some division (I'm basically branching on odd vs. even values of an incremented variable) so the loop takes much longer to execute, but note the dramatic increase in cycle count between the Cortex A9 and Swift/Cortex A8. If I'm understanding this data correctly it looks like the mispredict penalty for Swift is around 50% longer than for ARM's Cortex A9, and very close to the Cortex A8. Based on this data I would peg Swift's pipeline depth at around 12 stages, very similar to Qualcomm's Krait and just shy of ARM's Cortex A8.

Note that despite the significant increase in pipeline depth Apple appears to have been able to keep IPC, at worst, constant (remember back to our scaled Geekbench scores - Swift never lost to a 1.3GHz Cortex A9). The obvious explanation there is a significant improvement in branch prediction accuracy, which any good chip designer would focus on when increasing pipeline depth like this. Very good work on Apple's part.

The remaining aspect of Swift that we have yet to quantify is memory latency. From our iPhone 5 performance preview we already know there's a tremendous increase in memory bandwidth to the CPU cores, but as the external memory interface remains at 64-bits wide all of the changes must be internal to the cache and memory controllers. I went back to Nirdhar's iOS test vehicle and wrote some new code, this time to access a large data array whose size I could vary. I created an array of a finite size and added numbers stored in the array. I increased the array size and measured the relationship between array size and code latency. With enough data points I should get a good idea of cache and memory latency for Swift compared to Apple's implementation of the Cortex A8 and A9.

At relatively small data structure sizes Swift appears to be a bit quicker than the Cortex A8/A9, but there's near convergence around 4 - 16KB. Take a look at what happens once we grow beyond the 32KB L1 data cache of these chips. Swift manages around half the latency for running this code as the Cortex A9 (the Cortex A8 has a 256KB L2 cache so its latency shoots up much sooner). Even at very large array sizes Swift's latency is improved substantially. Note that this data is substantiated by all of the other iOS memory benchmarks we've seen. A quick look at Geekbench's memory and stream tests show huge improvements in bandwidth utilization:

Couple the dedicated load/store port with a much lower latency memory subsystem and you get 2.5 - 3.2x the memory performance of the iPhone 4S. It's the changes to the memory subsystem that really enable Swift's performance.

 

Apple's Swift: Visualized Six Generations of iPhones: Performance Compared
Comments Locked

276 Comments

View All Comments

  • rarson - Wednesday, October 17, 2012 - link

    Car bumpers are not made of aluminum.

    Aluminum oxidizes. So if you scratch it, then you've removed that oxidation layer to allow it to further oxidize at that spot. Rust is just iron oxidation.
  • Spunjji - Friday, October 19, 2012 - link

    It is not normal for them to scratch so damn easily. Furthermore, you might notice that other manufacturers (say, HTC?) take steps to harden the surfaces of their devices to avoid this kind of problem.
  • name99 - Wednesday, October 17, 2012 - link

    So you're basically
    (a) upset that Apple fans buy products based on how they look
    (b) upset that Apple fans's don't care enough about how products look to care about this
    ???

    The true sign of the demented mind --- that it can happily hold two contradictory opinions at once.
  • steven75 - Wednesday, October 17, 2012 - link

    Would you buy a car that gets nicks and scratches from normal usage?

    Um yes, everyone does. I guess all cars should be recalled!
  • Spunjji - Friday, October 19, 2012 - link

    Would you buy a car that gets nicks and scratches from simply driving down the street? No, you wouldn't. Stop distorting the argument for an easy victory, it makes for extremely aggravating reading.
  • doobydoo - Saturday, October 20, 2012 - link

    And what evidence do you have that the equivalent of 'driving down the street' with an iPhone causes scratching?
  • ltcommanderdata - Tuesday, October 16, 2012 - link

    Any final MHz rating on the GPU? Given Apple tends to use a 4:1 clock speed ratio between the CPU and GPU, the SGX543MP3 being up to 325MHz would make sense. The SGX543MP2 seemed to be clocked at 200MHz in the iPhone 4S and 250MHz in the iPad 2 and Apple said the iPad 2012 has a 2x faster GPU, so the SGX543MP4 in the A5X likely is also at 250MHz. A SGX543MP3 at 325MHz vs a SGX543MP4 at 250MHz would seem to explain the results seen in the benchmarks.

    A few corrections, on page 11 the GLBenchmark 2.5 - Triangle Texture Test - Fragment Lit (Offscreen 180p) is missing the iPad 2012 result.

    In iPhone 5 Device Conclusions on page 22, you write "Going back to the old 4:3 aspect ratio iPhones feels extremely claustrophobic now", but it should be 3:2.
  • daar - Tuesday, October 16, 2012 - link

    The in-depth tech info was nice, but would have preferred it in a second post. As an engineer, while I can appreciate the advances made with the new SoC and the depth of the effort went into researching all the aspects of the phone, I also think for most purposes, the length is counterproductive when the majority of readers are looking for indicators of whether the phone is worth an upgrade. Even without the tech explanation though, the review unnaturally lacked the concise detail I'm used to at AT.

    In some ways, it sort of came across that the tech explanation was a long worded way of making excuses for the iPhone 5's faults and direct comparisons to superior implementations were ignored. Simple example would be the camera, where praise was given about how they cut the size, that it looked good, explanation of the purple tint and so forth. If say, Samsung had released a phone with such issues, I'd expect the review to mention the sloppiness of it, esp with rivals such as the One X having a 2.0f lens (I quite enjoyed the One X/SG3 review comparison from AT). The excuse that the lack of innovation in the new iOS being that the aim of the phone is like that of an appliance whereas Android phones aiming to be PC's is baffling; the concept of a smartphone was a versatile device to aid in our daily lives not reach a point of some ambiguity called an appliance.
  • darwinosx - Tuesday, October 16, 2012 - link

    That was a lot of words to say nothing besides bragging that you are an engineer. Nobody cares.
  • kyuu - Tuesday, October 16, 2012 - link

    What nobody cares about are your rabid attacks on any comment that has even the slightest critique of an Apple product.

Log in

Don't have an account? Sign up now