A couple of weeks ago at MWC, Qualcomm announced its Snapdragon 801 which was positioned as a speed bump for the next wave of flagship smartphones. Qualcomm touted a 2.5GHz CPU frequency (up from 2.3GHz with Snapdragon 800), as well as increased GPU, ISP and memory interface speeds. Samsung announced immediate support for the new Snapdragon 801 with the Galaxy S 5, as did Sony with the Xperia Z2. Unfortunately this is where confusion set in. The Galaxy S 5 was advertised as a Snapdragon 801 with a 2.5GHz CPU clock, while the Xperia Z2 claimed the same Snapdragon 801 branding but with a 2.3GHz CPU clock - the same frequency as a Snapdragon 800. If it's not CPU frequency that separates a Snapdragon 800 from an 801, what does? The answer, as it turns out, is a little more complex. The table below should help explain it all:

Snapdragon 800/801 Breakdown
  SoC Version Model Max CPU Frequency Max GPU Frequency ISP eMMC DSDA Memory IF
MSM8974VV v2 S800 2.2GHz 450MHz 320MHz 4.5 N 800MHz
MSM8974AA v2 S800 2.3GHz 450MHz 320MHz 4.5 N 800MHz
MSM8974AB v2 S800 2.3GHz 550MHz 320MHz 4.5 N 933MHz
MSM8974AA v3 S801 2.3GHz 450MHz 320MHz 5.0 Y 800MHz
MSM8974AB v3 S801 2.3GHz 578MHz 465MHz 5.0 Y 933MHz
MSM8974AC v3 S801 2.5GHz 578MHz 465MHz 5.0 Y 933MHz

The Snapdragon 800 brand applies to an internal Qualcomm model number of MSM8974. The MSM8974 has four Krait 400 CPU cores, an Adreno 330 GPU, dual-ISP, 64-bit wide memory interface and a 9x25 Cat 4 LTE modem. It turns out there are two different silicon revisions of this SoC: version 2 and 3. The Snapdragon 800 v2 silicon was made available in three different flavors: VV, AA and AB. The difference between all three MSM8974 v2 variants was CPU and GPU frequency. This isn't an unusual practice at all as there's bound to be a distribution of operating frequencies for any design. Better bins end up as higher clocked parts, while others get tested and pass at lower frequencies. OEMs can pay more for the faster bins if they want.

In the case of v2 silicon, you could end up with silicon that ran its CPU cores up to 2.2GHz or 2.3GHz. Only the AB variant saw its max GPU frequency climb to 550MHz. The rest of the specs remain identical between all v2 silicon (-AB does get access to faster DRAM). Note that I'm using the marketing frequencies here for CPUs and not the actual frequencies. For whatever reason the OEMs choose to round up to the nearest 100MHz when quoting CPU speeds (2.2GHz is actually 2.15GHz, 2.3GHz is actually 2.26GHz and 2.5GHz is actually 2.45GHz). That's a battle for another day.

Over time it's possible to squeeze more out of a given process and that's exactly what Qualcomm did with MSM8974 v3. This newer silicon revision used improvements on the process side (process push of 28nm HPm) to push frequencies even higher. The options are now 2.3GHz and 2.5GHz on the CPU side. Just like with v2, v3 silicon offers three different variants. Unlike the situation with v2, v3 sees increases in CPU, GPU and ISP operating frequencies depending on which bin an OEM orders. Note that the increases in ISP frequency are substantial. If my math is correct, the Snapdragon 801 should be able to push almost as many pixels through its ISP as the forthcoming 805.

The other major difference is that v3 silicon enables support for eMMC 5.0.

In short, there are two different versions of MSM8974 silicon. Version 3 adds eMMC 5.0 support and hardware dual-sim, dual-active (DS-DA). All variants of v3 silicon can carry the Snapdragon 801 branding, while all v2 variants are Snapdragon 800s.

Putting it in Perspective

What does all of this mean? Let's first talk about the non-frequency related benefits of MSM8974 v3. eMMC 5.0 adds some new features as well as increases the maximum interface speed from 200MB/s in eMMC 4.5 to 400MB/s. As high end smartphones and tablets start using faster internal storage, having eMMC 5.0 support will be necessary to enable faster transfer speeds. SanDisk's recently announced iNAND Extreme update promises 300MB/s sequential read performance for 32GB+ devices. On a smartphone equipped with USB 3 that means you could feasibly copy large movies or files off of your smartphone at up to 300MB/s. Without eMMC 5.0 support you'd be limited to somewhere south of 200MB/s.

DSDA support matters to specific regions, and for those areas the benefit is obvious.

Supporting faster LPDDR3 means more available memory bandwidth for all of the big consumers on the SoC. I'd expect improvements in high end 3D gaming performance, and potentially certain camera/imaging workloads. Remember that all parts of the SoC have to share that tiny interface to main memory, so more memory bandwidth definitely doesn't hurt.

On the frequency side, the gains are pretty easy to understand. The higher peak CPU speed will translate into faster web page and application loads. Higher GPU frequency will allow for smoother frame rates in 3D games, and the faster ISP frequency can enable quicker processing of camera sensor output. You can also look at the benefits of these things from the perspective of lowering power consumption. Tasks can now complete in less time, allowing these individual IP blocks to quickly move down to lower power states and increase battery life.

Comments Locked

30 Comments

View All Comments

  • xTRICKYxx - Monday, March 10, 2014 - link

    Thank you for this article. Now I'm frustrated with Qualcomm's naming schemes.
  • blanarahul - Tuesday, March 11, 2014 - link

    So, Z2 has 8974AB v3 and S5 is using 8974AC v3.

    One question. Why in the world does the 8974AB v3 exists?? Is 190 MHz that huge a difference??
  • blanarahul - Tuesday, March 11, 2014 - link

    I know that the main difference b/w 8974VV v2 and 8974 AA v2 wasn't of 110 MHz but of voltages and power efficiency. So I guess the same difference applies to 8974AA v3 and 8974AB v3 as well with 8974AC v3 being an overclocked 8974AB v3.

    Stupid Qualcomm. Was it really hard to just call it 8975 and get away with it??
  • jerrylzy - Tuesday, March 11, 2014 - link

    Actually there's never a 550MHz 8974ab in the market. All 8974abs' GPUs are clocked at 578MHz.

    Qualcomm's naming is a total mess. It's so confusing.

    Here are the source codes:

    "
    static struct pvs_table pvs_v2[NUM_PVS_REVS][NUM_SPEED_BINS][NUM_PVS] __initdata = {
    /* 8974v2 2.0GHz Parts */
    [0][0][0] = { acpu_freq_tbl_2g_pvs0, sizeof(acpu_freq_tbl_2g_pvs0) },
    [0][0][1] = { acpu_freq_tbl_2g_pvs1, sizeof(acpu_freq_tbl_2g_pvs1) },
    [0][0][2] = { acpu_freq_tbl_2g_pvs2, sizeof(acpu_freq_tbl_2g_pvs2) },
    [0][0][3] = { acpu_freq_tbl_2g_pvs3, sizeof(acpu_freq_tbl_2g_pvs3) },
    [0][0][4] = { acpu_freq_tbl_2g_pvs4, sizeof(acpu_freq_tbl_2g_pvs4) },
    [0][0][5] = { acpu_freq_tbl_2g_pvs5, sizeof(acpu_freq_tbl_2g_pvs5) },
    [0][0][6] = { acpu_freq_tbl_2g_pvs6, sizeof(acpu_freq_tbl_2g_pvs6) },
    [0][0][7] = { acpu_freq_tbl_2g_pvs6, sizeof(acpu_freq_tbl_2g_pvs6) },

    /* 8974v2 2.3GHz Parts */
    [0][1][0] = { acpu_freq_tbl_2p3g_pvs0, sizeof(acpu_freq_tbl_2p3g_pvs0) },
    [0][1][1] = { acpu_freq_tbl_2p3g_pvs1, sizeof(acpu_freq_tbl_2p3g_pvs1) },
    [0][1][2] = { acpu_freq_tbl_2p3g_pvs2, sizeof(acpu_freq_tbl_2p3g_pvs2) },
    [0][1][3] = { acpu_freq_tbl_2p3g_pvs3, sizeof(acpu_freq_tbl_2p3g_pvs3) },
    [0][1][4] = { acpu_freq_tbl_2p3g_pvs4, sizeof(acpu_freq_tbl_2p3g_pvs4) },
    [0][1][5] = { acpu_freq_tbl_2p3g_pvs5, sizeof(acpu_freq_tbl_2p3g_pvs5) },
    [0][1][6] = { acpu_freq_tbl_2p3g_pvs6, sizeof(acpu_freq_tbl_2p3g_pvs6) },
    [0][1][7] = { acpu_freq_tbl_2p3g_pvs6, sizeof(acpu_freq_tbl_2p3g_pvs6) },

    /* 8974v2 2.2GHz Parts */
    [0][2][0] = { acpu_freq_tbl_2p2g_pvs0, sizeof(acpu_freq_tbl_2p2g_pvs0) },
    [0][2][1] = { acpu_freq_tbl_2p2g_pvs1, sizeof(acpu_freq_tbl_2p2g_pvs1) },
    [0][2][2] = { acpu_freq_tbl_2p2g_pvs2, sizeof(acpu_freq_tbl_2p2g_pvs2) },
    [0][2][3] = { acpu_freq_tbl_2p2g_pvs3, sizeof(acpu_freq_tbl_2p2g_pvs3) },
    [0][2][4] = { acpu_freq_tbl_2p2g_pvs4, sizeof(acpu_freq_tbl_2p2g_pvs4) },
    [0][2][5] = { acpu_freq_tbl_2p2g_pvs5, sizeof(acpu_freq_tbl_2p2g_pvs5) },
    [0][2][6] = { acpu_freq_tbl_2p2g_pvs6, sizeof(acpu_freq_tbl_2p2g_pvs6) },
    [0][2][7] = { acpu_freq_tbl_2p2g_pvs6, sizeof(acpu_freq_tbl_2p2g_pvs6) },
    };

    static struct pvs_table pvs_pro[NUM_PVS_REVS][NUM_SPEED_BINS][NUM_PVS] __initdata = {
    /* 2.0 GHz is not used on 8974Pro */
    [0][0][0] = { acpu_freq_tbl_2g_pvs0, sizeof(acpu_freq_tbl_2g_pvs0) },
    [0][0][1] = { acpu_freq_tbl_2g_pvs1, sizeof(acpu_freq_tbl_2g_pvs1) },
    [0][0][2] = { acpu_freq_tbl_2g_pvs2, sizeof(acpu_freq_tbl_2g_pvs2) },
    [0][0][3] = { acpu_freq_tbl_2g_pvs3, sizeof(acpu_freq_tbl_2g_pvs3) },
    [0][0][4] = { acpu_freq_tbl_2g_pvs4, sizeof(acpu_freq_tbl_2g_pvs4) },
    [0][0][5] = { acpu_freq_tbl_2g_pvs5, sizeof(acpu_freq_tbl_2g_pvs5) },
    [0][0][6] = { acpu_freq_tbl_2g_pvs6, sizeof(acpu_freq_tbl_2g_pvs6) },
    [0][0][7] = { acpu_freq_tbl_2g_pvs6, sizeof(acpu_freq_tbl_2g_pvs6) },

    /* 8974Pro AB 2.3GHz */
    [0][1][0] = { pro_rev0_2p3g_pvs0, sizeof(pro_rev0_2p3g_pvs0) },
    [0][1][1] = { pro_rev0_2p3g_pvs1, sizeof(pro_rev0_2p3g_pvs1) },
    [0][1][2] = { pro_rev0_2p3g_pvs2, sizeof(pro_rev0_2p3g_pvs2) },
    [0][1][3] = { pro_rev0_2p3g_pvs3, sizeof(pro_rev0_2p3g_pvs3) },
    [0][1][4] = { pro_rev0_2p3g_pvs4, sizeof(pro_rev0_2p3g_pvs4) },
    [0][1][5] = { pro_rev0_2p3g_pvs5, sizeof(pro_rev0_2p3g_pvs5) },
    [0][1][6] = { pro_rev0_2p3g_pvs6, sizeof(pro_rev0_2p3g_pvs6) },
    [0][1][7] = { pro_rev0_2p3g_pvs6, sizeof(pro_rev0_2p3g_pvs6) },

    /* 2.2GHz is not used on 8974Pro */
    [0][2][0] = { acpu_freq_tbl_2p2g_pvs0, sizeof(acpu_freq_tbl_2p2g_pvs0) },
    [0][2][1] = { acpu_freq_tbl_2p2g_pvs1, sizeof(acpu_freq_tbl_2p2g_pvs1) },
    [0][2][2] = { acpu_freq_tbl_2p2g_pvs2, sizeof(acpu_freq_tbl_2p2g_pvs2) },
    [0][2][3] = { acpu_freq_tbl_2p2g_pvs3, sizeof(acpu_freq_tbl_2p2g_pvs3) },
    [0][2][4] = { acpu_freq_tbl_2p2g_pvs4, sizeof(acpu_freq_tbl_2p2g_pvs4) },
    [0][2][5] = { acpu_freq_tbl_2p2g_pvs5, sizeof(acpu_freq_tbl_2p2g_pvs5) },
    [0][2][6] = { acpu_freq_tbl_2p2g_pvs6, sizeof(acpu_freq_tbl_2p2g_pvs6) },
    [0][2][7] = { acpu_freq_tbl_2p2g_pvs6, sizeof(acpu_freq_tbl_2p2g_pvs6) },

    /* 8974Pro AC 2.5GHz */
    [0][3][0] = { pro_rev0_2p5g_pvs0, sizeof(pro_rev0_2p5g_pvs0) },
    [0][3][1] = { pro_rev0_2p5g_pvs1, sizeof(pro_rev0_2p5g_pvs1) },
    [0][3][2] = { pro_rev0_2p5g_pvs2, sizeof(pro_rev0_2p5g_pvs2) },
    [0][3][3] = { pro_rev0_2p5g_pvs3, sizeof(pro_rev0_2p5g_pvs3) },
    [0][3][4] = { pro_rev0_2p5g_pvs4, sizeof(pro_rev0_2p5g_pvs4) },
    [0][3][5] = { pro_rev0_2p5g_pvs5, sizeof(pro_rev0_2p5g_pvs5) },
    [0][3][6] = { pro_rev0_2p5g_pvs6, sizeof(pro_rev0_2p5g_pvs6) },
    [0][3][7] = { pro_rev0_2p5g_pvs6, sizeof(pro_rev0_2p5g_pvs6) },

    /* 8974Pro AB 2.3GHz */
    [1][1][0] = { pro_rev1_2p3g_pvs0, sizeof(pro_rev1_2p3g_pvs0) },
    [1][1][1] = { pro_rev1_2p3g_pvs1, sizeof(pro_rev1_2p3g_pvs1) },
    [1][1][2] = { pro_rev1_2p3g_pvs2, sizeof(pro_rev1_2p3g_pvs2) },
    [1][1][3] = { pro_rev1_2p3g_pvs3, sizeof(pro_rev1_2p3g_pvs3) },
    [1][1][4] = { pro_rev1_2p3g_pvs4, sizeof(pro_rev1_2p3g_pvs4) },
    [1][1][5] = { pro_rev1_2p3g_pvs5, sizeof(pro_rev1_2p3g_pvs5) },
    [1][1][6] = { pro_rev1_2p3g_pvs6, sizeof(pro_rev1_2p3g_pvs6) },
    [1][1][7] = { pro_rev1_2p3g_pvs7, sizeof(pro_rev1_2p3g_pvs7) },
    [1][1][8] = { pro_rev1_2p3g_pvs8, sizeof(pro_rev1_2p3g_pvs8) },
    [1][1][9] = { pro_rev1_2p3g_pvs9, sizeof(pro_rev1_2p3g_pvs9) },
    [1][1][10] = { pro_rev1_2p3g_pvs10, sizeof(pro_rev1_2p3g_pvs10) },
    [1][1][11] = { pro_rev1_2p3g_pvs11, sizeof(pro_rev1_2p3g_pvs11) },
    [1][1][12] = { pro_rev1_2p3g_pvs12, sizeof(pro_rev1_2p3g_pvs12) },
    [1][1][13] = { pro_rev1_2p3g_pvs13, sizeof(pro_rev1_2p3g_pvs13) },
    [1][1][14] = { pro_rev1_2p3g_pvs14, sizeof(pro_rev1_2p3g_pvs14) },
    [1][1][15] = { pro_rev1_2p3g_pvs15, sizeof(pro_rev1_2p3g_pvs15) },

    /* 8974Pro AC 2.5GHz */
    [1][3][0] = { pro_rev1_2p5g_pvs0, sizeof(pro_rev1_2p5g_pvs0) },
    [1][3][1] = { pro_rev1_2p5g_pvs1, sizeof(pro_rev1_2p5g_pvs1) },
    [1][3][2] = { pro_rev1_2p5g_pvs2, sizeof(pro_rev1_2p5g_pvs2) },
    [1][3][3] = { pro_rev1_2p5g_pvs3, sizeof(pro_rev1_2p5g_pvs3) },
    [1][3][4] = { pro_rev1_2p5g_pvs4, sizeof(pro_rev1_2p5g_pvs4) },
    [1][3][5] = { pro_rev1_2p5g_pvs5, sizeof(pro_rev1_2p5g_pvs5) },
    [1][3][6] = { pro_rev1_2p5g_pvs6, sizeof(pro_rev1_2p5g_pvs6) },
    [1][3][7] = { pro_rev1_2p5g_pvs7, sizeof(pro_rev1_2p5g_pvs7) },
    [1][3][8] = { pro_rev1_2p5g_pvs8, sizeof(pro_rev1_2p5g_pvs8) },
    [1][3][9] = { pro_rev1_2p5g_pvs9, sizeof(pro_rev1_2p5g_pvs9) },
    [1][3][10] = { pro_rev1_2p5g_pvs10, sizeof(pro_rev1_2p5g_pvs10) },
    [1][3][11] = { pro_rev1_2p5g_pvs11, sizeof(pro_rev1_2p5g_pvs11) },
    [1][3][12] = { pro_rev1_2p5g_pvs12, sizeof(pro_rev1_2p5g_pvs12) },
    [1][3][13] = { pro_rev1_2p5g_pvs13, sizeof(pro_rev1_2p5g_pvs13) },
    [1][3][14] = { pro_rev1_2p5g_pvs14, sizeof(pro_rev1_2p5g_pvs14) },
    [1][3][15] = { pro_rev1_2p5g_pvs15, sizeof(pro_rev1_2p5g_pvs15) },

    "
    So:
    1. 8974Pro = 8974ab/ac.
    2. There are revised and non-revised 8974Pro.
    3. No S800 8974ab or S801 8974aa.

    The difference between the revised and non-revised ones is the binnings and voltage tables: the revised s801 chips have 16 binnings and non-revised ones have 8 binnings.

    I think Anand can use these source codes to clear up the confusion.
  • keshav - Thursday, August 28, 2014 - link

    Where did you get the codes from
  • Fidelator - Wednesday, March 12, 2014 - link

    Higher GPU clock, eMMC 5.0, faster ISP, did you even read the article?
  • kenansadhu - Monday, March 10, 2014 - link

    Considering Samsung always boast about any minor increase they have over the competition, I'm curious about their decision not to say the S5 has S801 in them. I think, there are 2 possible explanation for this:

    1. They don't want the S5 to look better than the Note 3 (make sense, cause probably they decided to put 2GB of RAM on the S5 for this reason)

    2. They are past gimmicks and want the actual performance to do the talking (unlikely, but will be one of the best things that happened to samsung)
  • dylan522p - Tuesday, March 11, 2014 - link

    They did talk about it having a S801......
  • TenshiNo - Tuesday, March 11, 2014 - link

    That's *probably* "burst" transfer rate, not sustained. Even still, you have to remember that transfer rate also very dependent on what the device is plugged into. The 5400RPM in your average laptop is not going to be able to compete with the speeds of your mobile device's NAND memory.
  • TenshiNo - Tuesday, March 11, 2014 - link

    Um.... sorry about that. For some reason, it posted my reply to the wrong message. Weird...

Log in

Don't have an account? Sign up now