Originally posted by scem0
Forgive me for my lack of microprocessor knowledge, but what
exactly is multicore, and what are the advantages of it (and
disadvantages, if any)?
Multi-core means that on the CPU itself there are two (or more) identical "cores". Essentially, this is easier to understand from the viewpoint of starting with a dual-CPU machine, then making those two CPU's share more and more (share the same FSB, as G4s do already, and also share L3 and L2 cache and perhaps even som processor registers).
[Note: "FSB == "Front Side Bus", the communications line between the CPU itself and the "System Controller" (on a Mac) or "North Bridge" (on a PC, which is attached to the "South Bridge" to form the "Chipset"); the System Controller/Chipset also has communications lines to memory (the memory bus), add-in cards (the PCI bus), video (the AGP bus), and external peripherals (via ports, which usually flows through the PCI bus even if they're physically attached to the motherboard). On the G4 the main performance bottleneck in most cases is the speed of the FSB, which means that only so much information from memory or peripherals can get to the CPU to be processed and leads the processor to be "information starved".]
Compared to multi-processor machines, the multi-core idea has some advantages and of course disadvantages:
1) it is cheaper to make one CPU with two cores than two CPUs
2) the motherboard architecture is simpler for a dual-core CPU than two individual CPUs (especially if the CPUs don't share an FSB, which is why Xeon multi-proc motherboards are more expensive than G4 multi-proc motherboards)
3) it is faster to share data between two cores than it is to share data between two separate CPUs (between cores the data just has to be bumped out to L2 cache then read from there by the other CPU; between CPUs the data has to go out on the already-restricted FSB to main memory, then be read back from main memory over the FSB to the second CPU - this is a major performance hit as you can imagine!)
4) Dual CPUs get more L2/L3 cache in total, but
since some data is duplicated between the two sets of cache, the cache is used less effectively overall.
5) HOWEVER, dual-core CPUs take up more die space than an equivalently designed single-core CPU (which increases their cost), and if you don't sell a single-core variant then if one core is "bad you have to toss the entire chip in the garbage.
6) ALSO, dual-core CPUs concentrate their heat generation far more than dual-CPUs would, making thermal management more difficult, more expensive, and more error-prone. On the other hand, dual-cores can also dissipate their heat generation across the area of the single CPU more efficiently than a single-core CPU can (sounds like I'm contradicting myself, but I'm not ... really!

) When one core "heats up" its, say, floating point unit, it can fairly easily swap tasks with the other CPU (which is hopefully not busy hammering the floating point unit as well) and let its fpu cool off for a cycle or two ... "core hopping" is transparent to the application and fairly consequence-free as both cores share the same cache; swapping tasks between two discrete CPUs would cost far more than it would be worth in general.
7) Finally, a dual-core chip means that both cores share a single pipeline to memory, which is good if you can make that pipeline twice as fat/fast as the single-core pipelines would be, but often such is not possible. With a true SMP (Symettric Multi-Processing) system, each processor has its own pipeline to the systerm controller and thence to memory; this makes information starvation on the core much less likely; multi-cored chips make information starvation for each core
more likely.
Should we want dual cores in a consumer CPU? I think so. The advantages far outweigh the disadvantages. The advantages are far more significant on large-scle server farms (especially the more frugal use of the FSB and cache), but still play heavily on the desktop.
Will we get dual cores in the 970? I've only heard "no". The 980 is supposedly going to feature multiple cores, but Intel might beat us to the multi-core-on-the-desktop punch ...
Edit: SMT? What exactly is that? Sorry, again, for asking so many
questions, but I just don't know about microprocessors, but I am
very interested to learn.
SMT: Simultaneous Multi-Threading. Intel calls it "HyperThreading". It's one CPU acting like two (or, more precisely, like one and a half or one and a quarter). Basically, while one "thread" of an application is occupying a group of registers and, say 2 floating point processing units, a second thread of an application can come in and use the other registers, the integer processing units, and the other floating point units if it needs to, both at the same time. Thus, the CPU is effectively doing two things at the same time for two unrelated threads.
Here's a good primer on SMT and general threading from ars technica:
http://www.arstechnica.com/paedia/h/hyperthreading/hyperthreading-1.html