Inside the Beast(s)

When the POWER8 was first launched, the specs were mind boggling. The processor could decode up to 8 instructions, issue 8 instructions, and execute up to 10 and all this at clockspeed up to 4.5 GHz. The POWER8 is thus an 8-way superscalar out of order processor. Now consider that

  1. The complexity of an architecture generally scales quadratically with the number of "ways" (hardware parallelism)
  2. Intel's most advanced architecture today - Skylake - is 5-way

and you know this is a bold move. If you superficially look at what kind of parallelism can be found in software, it starts to look like a suicidal move. Indeed on average, most modern CPU compute on average 2 instructions per clockcycle when running spam filtering (perlbench), video encoding (h264.ref) and protein sequence analyses (hmmer). Those are the SPEC CPU2006 integer benchmarks with the highest Instruction Per Clockcycle (IPC) rate. Server workloads are much worse: IPC of 0.8 and less are not an exception.

It is clear that simply widening a design will not bring good results, so IBM chose to run up to 8 threads simultaneously on their core. But running lots of threads is not without risk: you can end up with a throughput processor which delivers very poor performance in a wide range of applications that need that single threaded speed from time to time.

The picture below shows the wide superscalar architecture of the IBM POWER8. The image is taken from the white paper "IBM POWER8 processor core architecture", written by B. Shinharoy and many others.

The POWER8+ will have very similar microarchitecture. Since it might have to face a Skylake based Xeon, we thought it would be interesting to compare the POWER8 with both Haswell/Broadwell as Skylake.

The second picture is a very simplified architecture plan that we adapted from an older Intel Powerpoint presentation about the Haswell architecture, to show the current Skylake architecture. The adaptations were based on the latest Intel optimization manuals. The Intel diagram is much simpler than the POWER8's but that is simply because I was not as diligent as the people at IBM.

It is above our heads to compare the different branch prediction systems, but both Intel and IBM combine several different branch predictors to choose a branch. Both make use of a very large (16 K entries) global branch history table. Both processors scan 32 bytes in advance for branches. In case of IBM this is exactly 8 instructions. In case of Intel this is twice as much as it can fetch in one cycle (16 Bytes).

On the POWER8, data is fetched from the L2-cache and then predecoded into the L1-cache. Predecoding includes adding branch, exception, and grouping. This makes sure that predecoding is out the way before the actual computing ("Von Neuman Cycle") starts.

In Intel Haswell/Skylake, instructions are only predecoded after they are fetched. Predecoding performs macro-op fusion: fusing two x86 instructions together to save decode bandwidth. Intel's Skylake has 5 decoders and up to 5 µop instructions are sent down the pipelines. The current Xeon based upon Broadwell has 4 decoders and is limited to 4 instructions per clock. Those decoded instructions are sent into a µ-op cache, which can contain up to 1536 instructions (8-way), about 100 bits wide. The hitrate of the µop cache is estimated at 80-90% and up to 6 µops can be dispatched in that case. So in some situations, Skylake can run 6 instructions in parallel but as far as we understand it cannot sustain it all the time. Haswell/Broadwell are limited to 4. The µop cache can - most of the time - reduce the branch misprediction penalty from 19 to 14.

Back to the POWER8. Eight instructions are sent to the IBM POWER8 fetch buffer, where up 128 instructions can be held for two thread(s). A single thread can only use half of that buffer (64 instructions). This method of allocation gives each of two threads as much resources as one (i.e. no sharing), which is one of the key design philosophies for the POWER8 architecture.

Just like in the x86 world, the decoding unit breaks down the more complex RISC instructions into simpler internal instructions. Just like any modern Intel CPU, the opposite is also possible: the POWER8 is capable of fusing some combinations of 2 adjacent instructions into one instruction. Saving internal bandwidth and eliminating branches is one of the way this kind of fusion increases performances.

Contrary to the Intel's unified queue, the IBM POWER has 3 different issue queues: branch, condition register, and the "Load/Store/FP/Integer" queue. The first two can issue one instruction per clock, the latter can send off 8 instructions, for a combined total of 10 instructions per cycle. Intel's Haswell-Skylake cores can issue 8 µops per cycle. So both the POWER8 and Intel CPU have more than ample issue and execution resources for single threaded code. More than one thread is needed to really make use of all those resources.

Notice the difference in focus though. The Intel CPU has half of the load units (2), but each unit has twice the bandwidth (256 bit/cycle). The POWER8 has twice the amount of load units (4), but less bandwidth per unit (128 bit per cycle). Intel went for high AVX (HPC) performance, IBM's focus was on feeding 2 to 8 server threads. Just like the Intel units, the LSUs have Address Generation Units (AGUs). But contrary to Intel, the LSUs are also capable of doing simple integer calculations. That kind of massive integer crunching power would be a total waste on the Intel chip, but it is necessary if you want to run 8 threads on one core.

A POWER8 for Everyone Comparing with Intel's best
Comments Locked

124 Comments

View All Comments

  • nobodyblog - Thursday, July 21, 2016 - link

    Please correct this error, you are saying you are comparing with BEST Intel can provide, but you did address Xeon for workloads need Xeon Phi Knight Landing which is a standalone CPU, too. If you choose correctly, the benchmark will be sooo different.
    IBM Power 8 is 90 GB/s, while Intel's Xeon phi knight landing (as 7290F) has a bandwidth of 400 GB/s.
    IBM power 8 does above 600 gflops single precision and above 300 gflops double precision FLOPs, this is *10 in Xeon phi 7290F.
    Specint: xeon phi is 1500 vs 1700 for power 8
    Power and Price aside....

    Thanks!
  • LukaP - Thursday, July 21, 2016 - link

    If we start comparing different product categories, why not bring the GP100 into this as well. It will deliver 10TFLOPS of single precision and can be had for much less than any of these. But then again, there is the same caveat as the Xeon Phi. You cant actually run an OS on it, you need a host CPU and then you dispatch kernels onto the accelerator. Even if its a socketed version.
  • smilingcrow - Thursday, July 21, 2016 - link

    You can boot from newer Xeon Phi; either current or the next generation due maybe this year!
  • LukaP - Thursday, July 21, 2016 - link

    Oh really? :o that is neat, though not sure if that useful, since even highly parallel tasks usually have some IPC dependent components...

    Anyways have you got a source for that, would love to read more
  • Drumsticks - Thursday, July 21, 2016 - link

    I'm a verification intern on the Phi team right now, and you can indeed boot Knight's Landing! Anandtech mentions it here: http://www.anandtech.com/show/9802/supercomputing-...
  • nobodyblog - Friday, July 22, 2016 - link

    Then you can add another xeon phi to above statistics... Xeon Phi KL is a CPU like other CPUs it does everything as mentioned even its specint is comparable, not so bad...

    Thanks!
  • tipoo - Friday, July 22, 2016 - link

    Xeon Phi is x86, but it's GPU-like in nature, massively parallel for performance with low per-core performance. The IBM Power8 and other Xeons compete in highly parallel spaces like banking, but where single thread performance also still matters. Can't compare them.
  • nobodyblog - Friday, July 22, 2016 - link

    Xeon Phi Knight Landing has 3 times more single thread performance than silvermont (& knight corner).. I don't think it is so bad...
    The comparison is truly so, see the benchmarks, they say specint for example, or anything parallel performance, additionally, you can use a Xeon high performance with a xeon phi, there is nothing that prevents you. The benchmark is not about Database performance or parsing or anything similar, it is about this article, I don't say xeon phi is currently better positioned than xeon in these uses... But IBM's Power is not so, too, it has lots of core and lots of threads which is usable only in massive parallel uses...

    Thanks!
  • nobodyblog - Friday, July 22, 2016 - link

    On the IBM server, numactl was used to physically bind the 2, 4, or 8 copies of SPEC CPU to the first 2, 4, or 8 threads of the first core. On the Intel server, the 2 copy benchmark was bound to the first core. It is not single thread, it is a trick IBM uses to cheat in benchmarks, it is 425% percents slower than xeon in single thread.

    Thanks!
  • jospoortvliet - Tuesday, July 26, 2016 - link

    The benchmarks here pit one core against one core. The IBM cores can run 1, 2, 4 or 8 threads on a single core, the Intel does 1 or 2. The 425%, not sure where that number comes from, but it isn't what shows out of these benchmarks.

    The benchmarks show, as described by Johan:
    In single thread, the IBM does about 13% less work than the Intel core. In 2-thread mode, the IBM does about 20% more than the intel across the two threads. The intel doesn't do more than 2 threads, the IBM can and does then, on average, 43% more work across the eight threads than the Intel does with its two.

    So Intel is single-thread master here, IBM is throughput king. Now if you have a HEAVILY threaded workload, with hundreds of threads and little latency requirements for each, Knights Landing or a GPU is a better choice, with their hundreds of cores. If latency is important and you can afford to use two to four threads per core the IBM performs best. If latency is everything, you keep it at 1 thread per core and the Intel Xeon is the best performer.

    That is entirely ignoring cost, of course, both Intel and IBM have high and low cost solutions with their downsides and benefits. This set of benchmarks simply pitted one core against another, entirely ignoring the differences in core count (IBM 10, Intel 22) and price (Intel orders of magnitude more expensive). You'll always have to look at a bigger picture: how many cores do you get for your dollar and what are your requirements.

    Performance/watt, the Intel probably wins in all area's, at least if the system is idle frequently. Without idle the IBM might be not that bad, perf/power wise.

    The big take-away from this article is, though, that IBM has built a system which can be quite price-competitive with Intel in the lower-high end market. To really be able to make a choice, we'd probably need a benchmark of two price-equivalent systems. I bet the workload would make a huge difference in who wins the price/performance fight.

Log in

Don't have an account? Sign up now