Bulldozer certainly muddied the way cores are counted. Technically you can call it 8-cores or 4-cores and both would be right. Integer heavy parallel workload, it will behave like 8-cores. Everything else, it's more like 4-cores. Very slow one at that.
Back in the days I was a slow adopter to the increasing number of cores. I did not feel that dual-core was worth the cost (price, lower frequencies, potentially a new board, more power requirement) when it was first introduced. Same thing when quad-cores were out. Sure I bought them to see for myself but for me the benefit was minimal.
Then I realized the clear trend (moar cores!) and decided to make the most out of my hardware, which means that I started doing more than one thing on my systems simultaneously. Somewhere on the line virtualization was introduced to me, and it forever changed my computing habit. The benefits and posibilities of virtual systems, even for single users, are so sweet.
So when I looked at Bulldozer, I wanted to know whether it's going to be useful for me. Turned out, it is not. For my computing need, CMT is just as useless as SMT (Hyperthreading). I don't know if it's something AMD can fix with software/OS makers in the future, but the scheduling issue caused by sharing resources is not something I'd like to deal with on my desktop. My virtual systems have processor affinities assigned to them exclusively.
Sometimes I see reviews like
this and facepalm. Admittedly it's a fair comparison, but at the same time a useless one. Nobody is going to play games while encoding video. Better way to use your extra cores is to manually tie their duties (heavy ones like encoding or VMs) to them. Encoding usually takes long time. VMs will always stay up. Your gaming session is likely to be longer than 30 minutes.
Assigning affinities to them takes only a few seconds, and suddenly your multitasking becomes much more pleasant.
I'm digressing but the point is that the Bulldozer is more of a quad-core to me than a octal-core. For example, I wouldn't want to tie core 6/7 to a VM and suffer abysmal performance, nor do I want to tie core 4/5/6/7 just to avoid the performance penalty since that leaves me only half of the resources for everything else. (If I use 4/6, then thread-hopping/scheduling will be inevitable)