What does the "3.40GHz" mean?
Nothing, it's just a text string put in the CPU by the manufacturer. Your CPU's name is "Intel(R) Core(TM) i5-4670 CPU @ 3.40GHz". Intel generally puts the "advertised" speed (the highest speed all cores can run at all the time under typical cooling conditions and default settings) there.
Is my computer run in power saving mode? Or my CPU support something like turbo mode?
The core speed drops when the CPU is not under load to keep the CPU cooler. These CPUs do have a turbo mode that is limited by temperature, so keeping the CPU cool when it's not under load helps to leave more room for upping the clock when it is under load. Your CPU can turbo up to 3.8GHz at default settings.
Intel CPUs haven't had an FSB in a long time. All Core i3/i5/i7 CPUs have an integrated memory controller.
This is known as heterogeneous multiprocessing (HMP) and is widely adopted by mobile devices. In ARM-based devices which implement big.LITTLE, the processor contains cores with different performance and power profiles, e.g. some cores run fast but draw lots of power (faster architecture and/or higher clocks) while others are energy-efficient but slow (slower architecture and/or lower clocks). This is useful because power usage tends to increase disproportionately as you increase performance once you get past a certain point. The idea here is to get performance when you need it and battery life when you don't.
On desktop platforms, power consumption is much less of an issue so this is not truly necessary. Most applications expect each core to have similar performance characteristics, and scheduling processes for HMP systems is much more complex than scheduling for traditional SMP systems. (Windows 10 technically has support for HMP, but it's mainly intended for mobile devices that use ARM big.LITTLE.)
Also, most desktop and laptop processors today are not thermally or electrically limited to the point where some cores need to run faster than others even for short bursts. We've basically hit a wall on how fast we can make individual cores, so replacing some cores with slower ones won't allow the remaining cores to run faster.
While there are a few desktop processors that have one or two cores capable of running faster than the others, this capability is currently limited to certain very high-end Intel processors (as Turbo Boost Max Technology 3.0) and only involves a slight gain in performance for those cores that can run faster.
While it is certainly possible to design a traditional x86 processor with both large, fast cores and smaller, slower cores to optimize for heavily-threaded workloads, this would add considerable complexity to the processor design and applications are unlikely to properly support it.
Take a hypothetical processor with two fast Kaby Lake (7th-generation Core) cores and eight slow Goldmont (Atom) cores. You'd have a total of 10 cores, and heavily-threaded workloads optimized for this kind of processor may see a gain in performance and efficiency over a normal quad-core Kaby Lake processor. However, the different types of cores have wildly different performance levels, and the slow cores don't even support some of the instructions the fast cores support, like AVX. (ARM avoids this issue by requiring both the big and LITTLE cores to support the same instructions.)
Again, most Windows-based multithreaded applications assume that every core has the same or nearly the same level of performance and can execute the same instructions, so this kind of asymmetry is likely to result in less-than-ideal performance, perhaps even crashes if it uses instructions not supported by the slow cores. While Intel could modify the slow cores to add advanced instruction support so that all cores can execute all instructions, this would not resolve issues with software support for heterogeneous processors.
A different approach to application design, closer to what you're probably thinking about in your question, would use the GPU for acceleration of highly parallel portions of applications. This can be done using APIs like OpenCL and CUDA. As for a single-chip solution, AMD promotes hardware support for GPU acceleration in its APUs, which combine a traditional CPU and a high-performance integrated GPU onto the same chip, as Heterogeneous System Architecture, though this has not seen much industry uptake outside of a few specialized applications.
Best Answer
This one is a bit vague since there is not one clock speed on the motherboard. There are several. E.g. the PCI bus runs at 66MHz or 33MHz. PCIe runs at several speeds. Ram IO at several speeds. Most of the time these are derived or synchronised to one base clock.
When people used to talk about bus speed on the motherboard they usually meant a clock which was used to talk to the CPU's FrontSideBus.
E.g. A Klamath CPU (pentium 2) would run at 233Mhz.
What you call 'motherboard clock' would be 66MHz.
Back then increasing that clock yielded performance gains in all four items. If one of them could not keep up the system would not work.
Since then things have changed. The design is much more modular.
It is determine by testing how fast a CPU can work reliably. And then labeling it as such.
E.g. I produce a 1000 pentium-1's chips and and test them I may find that:
If I need more CPUs marked -120 and I got a surplus from the 133 bin then some get moved.
The key point however is that the CPU has no speed of its own. It is tested and guaranteed to work with a specific multiplier and a specific bus speed. It may work if these are exceeded. It may not. And if you set these values lower it will simply run slower.
Back in ye old days the person buying the CPU had to jumper the motherboard correctly.
E.g. for a pentium 1 120MHz you would jumper the motherboards main clock for 60MHz, set the jumpers for a x2 multiplier, and select the right voltage. On boot the CPU would read the multiplier and act accordingly.
If you made an error (e.g. by setting the jumper to indicate a 1½ multiplier) then it would simply run at a different speed. If it was slower then that was no problem. If it was faster then it might not work at all (but sometimes you got lucky).
Some people tried to maximise performance of their CPU by doing their own testing. Often you could gain some speed by playing with bus speed, multiplier and voltages. Equally often people pushed their CPU too far and it ran unstable.
This is not a problem. As an overclocker you know what you are doing.
However some shops also relabeled chips and sold their CPU as rater for a higher speed. I think this was the main reason why Intel started locking their multiplier maximum.
No, most of the time the CPU is configured for one specific multiplier.
The speed it is sold as it expected base clock time that multiplier. (You can often lower the multiplier though. This results in a lower speed but also in lower power usage).
No. It will start at 24. Either because it is locked at 24x, or because it reads you BIOS and finds that that auto configured itself for a 24 multiplier.
If you try to set a higher multiplier then the CPU will mostly ignore that.
(Exception: unlocked CPU's which as sold as black editions.)
Speeds on the motherboards are important. They are also more or less the same for all same generation boards.
No, it would not archive the same speed. It would just run slower.