The Architecture

We'll start, logically, at the front end of a Bulldozer module. The fetch and decode logic in each module is shared by both integer cores. The role this logic plays is to fetch the next instruction in the thread being executed, decode the x86 instruction into AMD's own internal format, and pass the decoded instruction onto the scheduling hardware for execution.

AMD widened the K8 front end with Bulldozer. Each module is now able to fetch and decode up to four x86 instructions from a single thread in parallel. Each of the four decoders are equally capable. Remembering that each Bulldozer module appears as two cores, the front end can only pick 4 instructions to fetch and decode from a single thread at a time. A single Bulldozer module can switch between threads as often as every clock.

Decode hardware isn't very expensive on its own, but duplicating it four times across multiple cores quickly adds up. Although decode width has increased for a single core, multi-core Bulldozer configurations can actually be at a disadvantage compared to previous AMD architectures. Let's look at the table below to understand why:

Front End Comparison
  AMD Phenom II AMD FX Intel Core i7
Instruction Decode Width 3-wide 4-wide 4-wide
Single Core Peak Decode Rate 3 instructions 4 instructions 4 instructions
Dual Core Peak Decode Rate 6 instructions 4 instructions 8 instructions
Quad Core Peak Decode Rate 12 instructions 8 instructions 16 instructions
Six/Eight Core Peak Decode Rate 18 instructions (6C) 16 instructions 24 instructions (6C)

For a single instruction thread, Bulldozer offers more front end bandwidth than its predecessor. The front end is wider and just as capable so this makes sense. But note what happens when we scale up core count.

Since fetch and decode hardware is shared per module, and AMD counts each module as two cores, given an equivalent number of cores the old Phenom II actually offers a higher peak instruction fetch/decode rate than the FX. The theory is obviously that the situations where you're fetch/decode bound are infrequent enough to justify the sharing of hardware. AMD is correct for the most part. Many instructions can take multiple cycles to decode, and by switching between threads each cycle the pipelined front end hardware can be more efficiently utilized. It's only in unusually bursty situations where the front end can become a limit.

Compared to Intel's Core architecture however, AMD is at a disadvantage here. In the high-end offerings where Intel enables Hyper Threading, AMD has zero advantage as Intel can weave in instructions from two threads every clock. It's compared to the non-HT enabled Core CPUs that the advantage isn't so clear. Intel maintains a higher instantaneous decode bandwidth per clock, however overall decoder utilization could go down as a result of only being able to fill each fetch queue from a single thread.

After the decoders AMD enables certain operations to be fused together and treated as a single operation down the rest of the pipeline. This is similar to what Intel calls micro-ops fusion, a technology first introduced in its Banias CPU in 2003. Compare + branch, test + branch and some other operations can be fused together after decode in Bulldozer—effectively widening the execution back end of the CPU. This wasn't previously possible in Phenom II and obviously helps increase IPC.

A Decoupled Branch Predictor

AMD didn't disclose too much about the configuration of the branch predictor hardware in Bulldozer, but it is quick to point out one significant improvement: the branch predictor is now significantly decoupled from the processor's front end.

The role of the branch predictor is to intercept branch instructions and predict their target address, rather than allowing for tons of cycles to go by until the branch target is known for sure. Branches are predicted based on historical data. The more data you have, and the better your branch predictors are tuned to your workload, the more accurate your predictions can be. Accurate branch prediction is particularly important in architectures with deep pipelines as a mispredict causes more instructions to be flushed out of the pipe. Bulldozer introduces a significantly deeper pipeline than its predecessor (more on this later), and thus branch prediction improvements are necessary.

In both Phenom II and Bulldozer, branches are predicted in the front end of the pipe alongside the fetch hardware. In Phenom II however, any stall in the fetch pipeline (e.g. fetching an instruction that wasn't in cache) would stop the whole pipeline including future branch predictions. Bulldozer decouples the branch prediction hardware from the fetch pipeline by way of a prediction queue. If there's a stall in the fetch pipeline, Bulldozer's branch prediction hardware is allowed to run ahead and continue making future predictions until the prediction queue is full.

We'll get to the effectiveness of this approach shortly.

Scheduling and Execution Improvements

As with Sandy Bridge, AMD migrated to a physical register file architecture with Bulldozer. Data is now only stored in one location (the physical register file) and is tracked via pointers back to the PRF as operations make their way through the execution engine. This is a move to save power as copying data around a chip is hardly power efficient.

The buffers and queues that feed into the execution engines of the chip are all larger on Bulldozer than they were on Phenom II. Larger data structures allows for better instruction level parallelism when trying to execute operations out of order. In other words, the issue hardware in Bulldozer is beefier than its predecessor.

Unfortunately where AMD took one step forward in issue hardware, it does a bit of a shuffle when it comes to execution resources themselves. Let's start with the positive: Bulldozer's integer execution cores.

Integer Execution

Each Bulldozer module features two fully independent integer cores. Each core has its own integer scheduler, register file and 16KB L1 data cache. The integer schedulers are both larger than their counterparts in the Phenom II.

The biggest change here is each integer core now has two ports instead of three. A single integer core features two AGU/ALU ports, compared to three in the previous design. AMD claims the third ALU/AGU pair went mostly unused in Phenom II, and as a result it's been removed from Bulldozer.

With larger structures feeding into the integer cores, AMD should be able to have an easier time of making use of the integer units than in previous designs. AMD could, in theory, execute more integer operations per core in Phenom II however AMD claims the architecture was typically bound elsewhere.

The Shared FP Core

A single Bulldozer module has a single shared FP core for use by up to two threads. If there's only a single FP thread available, it is given full access to the FP execution hardware, otherwise the resources are shared between the two threads.

Compared to a quad-core Phenom II, AMD's eight-core (quad-module) FX sees no drop in floating point execution resources. AMD's architecture has always had independent scheduling for integer and floating point instructions, and we see the same number of execution ports between Phenom II cores and FX modules. Just as is the case with the integer cores, the shared FP core in a Bulldozer module has larger scheduling hardware in front of it than the FPU in Phenom II.

The problem is AMD had to increase the functionality of its FPU with the move to Bulldozer. The Phenom II architecture lacks SSE4 and AVX support, both of which were added in Bulldozer. Furthermore, AMD chose Bulldozer as the architecture to include support for fused multiply-add instructions (FMA). Enabling FMA support also increases the relative die area of the FPU. So while the throughput of Bulldozer's FPU hasn't increased over K8, its capabilities have. Unfortunately this means that peak FP throughput running x87/SSE2/3 workloads remains unchanged compared to the previous generation. Bulldozer will only be faster if newer SSE, AVX or FMA instructions are used, or if its clock speed is significantly higher than Phenom II.

Looking at our Cinebench 11.5 multithreaded workload we see the perfect example of this performance shuffle:

Cinebench 11.5—Multi-Threaded

Despite a 9% higher base clock speed (more if you include turbo core), a 3.6GHz 8-core Bulldozer is only able to outperform a 3.3GHz 6-core Phenom II by less than 2%. Heavily threaded floating point workloads may not see huge gains on Bulldozer compared to their 6-core predecessors.

There's another issue. Bulldozer, at least at launch, won't have to simply outperform its quad-core predecessor. It will need to do better than a six-core Phenom II. In this comparison unfortunately, the Phenom II has the definite throughput advantage. The Phenom II X6 can execute 50% more SSE2/3 and x87 FP instructions than a Bulldozer based FX.

Since the release of the Phenom II X6, AMD's major advantage has been in heavily threaded workloads—particularly floating point workloads thanks to the sheer number of resources available per chip. Bulldozer actually takes a step back in this regard and as a result, you will see some of those same workloads perform worse, if not the same as the outgoing Phenom II X6.

Compared to Sandy Bridge, Bulldozer only has two advantages in FP performance: FMA support and higher 128-bit AVX throughput. There's very little code available today that uses AMD's FMA instruction, while the 128-bit AVX advantage is tangible.

Cache Hierarchy and Memory Subsystem

Each integer core features its own dedicated L1 data cache. The shared FP core sends loads/stores through either of the integer cores, similar to how it works in Phenom II although there are two integer cores to deal with now instead of just one. Bulldozer enables fully out-of-order loads and stores, an improvement over Phenom II putting it on parity with current Intel architectures. The L1 instruction cache is shared by the entire bulldozer module, as is the L2 cache.

The instruction cache is a large 64KB 2-way set associative cache, similar in size to the Phenom II's L1 cache but obviously shared by more "cores". A four-core Phenom II would have 256KB of total L1 I-Cache, while a four core Bulldozer will have half of that. The L1 data caches are also significantly smaller than Bulldozer's predecessor. While Phenom II offered a 64KB L1 D-Cache per core, Bulldozer only offers 16KB per integer core.

The L2 cache is much larger than what we saw in multi-core Phenom II designs however. Each Bulldozer module has a private 2MB L2 cache.

There's a single 8MB L3 cache that's shared among all Bulldozer modules on a chip. In its first incarnation, AMD has no plans to offer a desktop part without an L3 cache. However AMD indicated that the L3 cache was only really useful in server workloads and we might expect future Bulldozer derivatives (ahem, Trinity?) to forgo the L3 cache entirely as a result.

Cache accesses require more clocks in Bulldozer, due to a combination of size and AMD's desire to make Bulldozer a very high clock speed part...

Introduction The Pursuit of Clock Speed
Comments Locked

430 Comments

View All Comments

  • Pipperox - Saturday, October 15, 2011 - link

    With a 40-50% gain Bulldozer would be even ahead of Ivy Bridge.. and what comes next.

    Or are we still talking about SuperPI?
    Or games run at 640x480 lowest quality settings?

    The fact is, almost all single threaded applications are old and they run already super fast on ANY cpu and the difference can be seen only in benchmarks.

    All recent performance demanding applications are properly multithreaded, and Bulldozer there is competitive with i5 2500 and occasionally with i7 2600 (and with a 10% boost Bulldozer would be competitive with i7 2600).

    And this will become more and more the standard one year from now.

    Sure Bulldozer has not met the enthusiasts' expectations, it doesn't perform as people would expect an "octacore" (but it's not, it's just a quad with a different form of hyperthreading and "clever" marketing) and it doesn't deserve the FX moniker.

    But still it's the most competitive CPU AMD has launched in years, perhaps with the exception of Zacate.
  • nirmv - Saturday, October 15, 2011 - link

    Not all applications are heaviliy multi-threaded, there is still need to improve single thread performance.
    And even for those few loads that are competitive in performance, they do it with twice the power draw.

    See here from xbitlabs review :
    http://www.xbitlabs.com/images/cpu/amd-fx-8150/pow...
  • Pipperox - Sunday, October 16, 2011 - link

    But increasing single threaded performance has a cost, on die space and circuit complexity.
    Bulldozer has a huge die just because it has enormous caches (8MB L2 vs 1Mb on SandyBridge) which probably will turn useful on server workloads (but that's just a guess).
    By looking at the die shot, you'd get a 40% die area reduction with "normal" caches.
    So AMD engineers decided to drop single threaded performance improvements in favor of higher multithreaded scalability and higher clock speed scalability.

    We'll see if in the long run this will pay off.

    I agree power consumption doesn't look good in comparison with Intel, but it does look good in comparison to Thuban.

    This is the first released silicon of Bulldozer.. i expect power consumption to improve with newer steppings and silicon process tuning.

    That being said, Intel has the best silicon process in the whole industry.
    AMD can't compete with that.
    But i'd guess that at lower clock speeds (like in server), AMD's power consumption will improve a lot.
    Looks like with the FX AMD tried to push their current silicon to the maximum which they could (within the 125W TDP which is sort of an industry standard).
  • LiveandEnjoyLife - Friday, October 14, 2011 - link

    Some people are missing the point. At this stage in the game, processor speed is a moot point beyond benchmarks. AMD and Intel make very fast CPUs in relation to what gamers and every day users use them for. Intel CPUs are blazing fast and AMD CPUs are fast. The average Joe does need more than a dual-core CPU. If you were going to actually do something that would require heavy multi-threading, then it comes down to the efficiency the app to make use of the cores and the ability to use hyperthreading. If you wanted the most performance for a mult-threaded application, you would pick more physical cores over virtual cores. So for most of use it comes down to bang for buck.

    8 cores is better than 2, 4, or 6 for true multi-threaded capable applications.
    For speed tests Intel wins hands down.

    If you were sitting next to someone playing a game and all things were the same except CPU, you would not be able to tell which machine is running what CPU. However you would notice if one costs significantly more than the other.

    That is my 4 cents.
  • 7Enigma - Friday, October 14, 2011 - link

    Hi Anand,

    Great review but there is a text error when referring to pass one vs. pass two of the benchmark mentioned in the Subject line. You said:

    "The standings don't change too much in the second pass, the frame rates are simply higher across the board. The FX-8150 is an x86 transcoding beast though, roughly equalling Intel's Core i7 2600K. Although not depicted here, the performance using the AMD XOP codepath was virtually identical to the AVX results."

    But the graph clearly shows a complete flip-flop from first pass to second pass. When I look closely it appears you ordered the text and graphs differently and were referring to if you had the non-AVX and AVX-enabled graphs next to each other instead of in separate sections. Basically the text and graphs don't match up.

    HTH
  • Iketh - Friday, October 14, 2011 - link

    You're an utter retard. The reason they're sold out is newegg advertised these nicely all over their site, including the front page, with "World's first 8-core desktop processor."

    There are plenty of reasons to purchase these processors aside from their performance and that's ok. But the majority bought them thinking they're gonna "rock", and those are the ones "showing intelligence." Same goes to you for thinking the majority is well-informed/intelligent.

    What's even worse, the 8-core version for sale is the 3.1ghz, not the 3.6 tested in this review. I'm seriously LOL'ing...

    How many did Newegg have in stock anyhow? Wouldn't that figure matter regarding your ignorant comment?
  • rcrossw - Friday, October 14, 2011 - link

    I have used AMD products for years. I use Intel at work. So to me there is no real difference between the two for what Business and the Average Computer user want or expect.
    Does it run, does it do the work I require of it, and do my programs and Network Access
    work well and are reliable?

    Intel indeed has incredible Processors, fast and reliable, and in the high end - expensive.

    AMD is Low and Mid range - with processors that the average person can afford. Who is the most innovative - both. Today Intel has been , now I think the user needs to give this New X86-64 Architecture a chance.

    I have a Asus M5A99x EVO with an FX6100 installed. The only problem I have had is having to upgrade the BIOS to accept the new Processor. So far I have had the Processor to 4.2 Ghz. Though AIDA 64 caused a BOD on one test. At 3.8 Ghz runs like a champ. Stil
    working back to as close as I can get to 4.2 on Air.

    After three years I have retired my old Phenon II Tri Core 720 for this, and it works for me.
    I am not an extreme gamer, etc. But test it your self, before being too overly critical.

    Does it work for me.

    As an aside, next a SSD for faster response.

    For those interested:

    Asus M5A99x MB BIOS 0810 ( Newest)
    AMD FX 6100 at 3.8 ghz
    Corsair Vengeance 1600 - 16 gigs
    HIS Radeon HD 6850
    Windows 7 Ulimate 64
    HPLP2475W Monitor at 1920x1200 DP
    WD 500 SATA
    WD 1001 SATA
    LG H20L BD-R
    Plextor DVDR
    Enermax 620 Liberty PS - I know old but works.

    Thanks
  • davbran - Saturday, October 15, 2011 - link

    I have been having a hard time writing a comment on this topic without drawing fire from trolls.

    This review is hogwash without more information.

    If the hardware is the same on all test machines, apart from the CPUs, then there is no wonder the performance was so bad. 6 Cores are going to utilize, and I am just pulling a number out of my ... hat, 4gb of RAM more efficiently than an 8 core using simple kitchen math. No need to break out the slide rules. It's a known fact, to most, that the big bottleneck in the multicore/multiprocessor world is memory. Mind you that's if we are factoring in that all the code that was used for testing purposes was written with multi-threading in mind.

    You just can't compare apples to bananas in this manner.
  • silverblue - Saturday, October 15, 2011 - link

    Each to their own. I thought it was a pretty good review, and Anand certainly held back from slating AMD to hell.
  • Iketh - Sunday, October 16, 2011 - link

    LOLLLLL

Log in

Don't have an account? Sign up now