The AMD FX (Bulldozer) Scheduling Hotfixes Tested
by Anand Lal Shimpi on January 27, 2012 12:47 PM ESTThe basic building block of Bulldozer is the dual-core module, pictured below. AMD wanted better performance than simple SMT (ala Hyper Threading) would allow but without resorting to full duplication of resources we get in a traditional dual core CPU. The result is a duplication of integer execution resources and L1 caches, but a sharing of the front end and FPU. AMD still refers to this module as being dual-core, although it's a departure from the more traditional definition of the word. In the early days of multi-core x86 processors, dual-core designs were simply two single core processors stuck on the same package. Today we still see simple duplication of identical cores in a single processor, but moving forward it's likely that we'll see more heterogenous multi-core systems. AMD's Bulldozer architecture may be unusual, but it challenges the conventional definition of a core in a way that we're probably going to face one way or another in the not too distant future.
A four-module, eight-core Bulldozer
The bigger issue with Bulldozer isn't one of core semantics, but rather how threads get scheduled on those cores. Ideally, threads with shared data sets would get scheduled on the same module, while threads that share no data would be scheduled on separate modules. The former allows more efficient use of a module's L2 cache, while the latter guarantees each thread has access to all of a module's resources when there's no tangible benefit to sharing.
This ideal scenario isn't how threads are scheduled on Bulldozer today. Instead of intelligent core/module scheduling based on the memory addresses touched by a thread, Windows 7 currently just schedules threads on Bulldozer in order. Starting from core 0 and going up to core 7 in an eight-core FX-8150, Windows 7 will schedule two threads on the first module, then move to the next module, etc... If the threads happen to be working on the same data, then Windows 7's scheduling approach makes sense. If the threads scheduled are working on different data sets however, Windows 7's current treatment of Bulldozer is suboptimal.
AMD and Microsoft have been working on a patch to Windows 7 that improves scheduling behavior on Bulldozer. The result are two hotfixes that should both be installed on Bulldozer systems. Both hotfixes require Windows 7 SP1, they will refuse to install on a pre-SP1 installation.
The first update simply tells Windows 7 to schedule all threads on empty modules first, then on shared cores. The second hotfix increases Windows 7's core parking latency if there are threads that need scheduling. There's a performance penalty you pay to sleep/wake a module, so if there are threads waiting to be scheduled they'll have a better chance to be scheduled on an unused module after this update.
Note that neither hotfix enables the most optimal scheduling on Bulldozer. Rather than being thread aware and scheduling dependent threads on the same module and independent threads across separate modules, the updates simply move to a better default cause of scheduling on modules first. This should improve performance in most cases but there's a chance that some workloads will see a performance reduction. AMD tells me that it's still working with OS vendors (read: Microsoft) to better optimize for Bulldozer. If I had to guess I'd say that we may see the next big step forward with Windows 8.
AMD was pretty honest when it described the performance gains FX owners can expect to see from this update. In its own blog post on the topic AMD tells users to expect a 1 - 2% gain on average across most applications. Without any big promises I wasn't expecting the Bulldozer vs. Sandy Bridge standings to change post-update, but I wanted to run some tests just to be sure.
The Test
Motherboard: | ASUS P8Z68-V Pro (Intel Z68) ASUS Crosshair V Formula (AMD 990FX) |
Hard Disk: | Intel X25-M SSD (80GB) Crucial RealSSD C300 |
Memory: | 2 x 4GB G.Skill Ripjaws X DDR3-1600 9-9-9-20 |
Video Card: | ATI Radeon HD 5870 (Windows 7) |
Video Drivers: | AMD Catalyst 11.10 Beta (Windows 7) |
Desktop Resolution: | 1920 x 1200 |
OS: | Windows 7 x64 SP1 w/ BD Hotfixes |
79 Comments
View All Comments
Ammaross - Friday, January 27, 2012 - link
The FX-series chips have been shown to be RAM-dependant as well. Strangling these things with 1600MHz RAM when AMD themselves recommend a minimum of 1866MHz for these chips, but recommend 2166MHz RAM.Anand, perhaps you should show charts that demonstrate whether you're able to repeat these claimed results?
tipoo - Friday, January 27, 2012 - link
I didn't know they recommended 2166. Separate article on Bulldozer memory scaling, perhaps? ;)CUEngineer - Friday, January 27, 2012 - link
I hate how press and AMD try to play off that a bulldozer module is like a dual core or similar to SMT... IT IS NOT.Its simple, there is a single Front end in the module to fetch instructions, this defines the module to be a single "core".... adding integer pipes and making the pipe wider or adding more execution units is simply super scaler architecture they are trying to make wider...
Id like to see their performance analysis because i the ROI is gone when you make your core too wide and thats what they did and they get tremedously underutilized and waste power... GG AMD.
silverblue - Saturday, January 28, 2012 - link
I thought the defining property of a "core" was its integer execution hardware?KonradK - Friday, January 27, 2012 - link
"You can either do two 128-bit operations at once, or one 256-bit operation at once, on a single module. "This means also that two 128bit operations from one thread may be executed at once (as long second does not depend on result of first).
So ultimately benefits of Bulldozer's architecture are no more and no less than benefits than comes from any Hyper-Threading.
Two threads may run on one core at its full speed as long as any of them does not utilize execution units in more than 50% (that is true for not well optimized, and some other specific, programs).
They will not run faster than the same threads running on separate cores.
descendency - Friday, January 27, 2012 - link
The problem here is that the scheduling isn't the problem.It's the single core (per clock) performance. This thing is more expensive than a 2500k and yet has to compete with it.
In all honesty, if you are looking for a gaming PC that is still decent in other apps, I'd recommend a 1050T and spend the savings on a better GPU. With an AM3+ motherboard, you can wait for AMD to fix the hardware.
saneblane - Friday, January 27, 2012 - link
I don't need it, I run i5 2500. It's kind of amazing that people are still confused about whether bulldozer on the desktop failed. If you are one of those people who think that Bulldozer is worth the money, then you deserve to buy it. Denying the truth just makes all of you look stupid. Bulldozer only manage to bulldoze itself, sales figures doesn't matter to me, because I am not AMD nor do I have stock invested in them, so sales figures is irrelevant to most people except AMD, and stock holders. It's because of people like you that kiss AMD's ass for all of the there highend failures, that even to this day Amd doesn't see the need to improve themselves because people would buy whatever they make. What a bunch of fools you all are.Flunk - Saturday, January 28, 2012 - link
I think his point is more that while this does improve bulldozer performance a little bit, it doesn't do anything to make it anywhere near competitive with Intel's offerings. Therefore the product is fairly useless.bji - Saturday, January 28, 2012 - link
As always, people neglect price when they describe product merits. Bulldozer is not a "fairly useless" product because it competes well with Intel CPUs in its price range. No, it does not compete with high end Intel CPUs, but those are not in its price range. AMD has no choice but to price the part so that its value proposition is comparable to Intel parts of the same performance, otherwise the part would not sell. This may make AMD less money but for the consumer, it is a fine CPU in its price range.Ratman6161 - Saturday, January 28, 2012 - link
Just checked NewEgg and an 8150 is $40 more expensive than a 2500K and $30 less than a 2600K. -so if falls right in between on price.Looking at the benchmarks, if gaming is not your primary concern then on a performance basis, the 8150 competes roughly with the 2500K. If gaming is your primary concern then the 2500K is the clear winner on performance.
So best case the 2500K and 8150 are evenly matched and worst case the 8150 gets trounced. So it has no business being priced $40 higher. To me, to be competitive it needs to be the same to lower price than a 2500K. And if you are someone willing to spend $40 more, you might as will just go $70 more for the 2600K.
So I just can't see how anyone can say it compares favorably with the Intel products in its price range.