Q:

Difference between multi-core processors

I am confused with "multi-core" processors concept.
Some multi-core processors, link ARM A9/x86, we run uni-OS, like linux/windows. Every core works well.
But others, link TI's C6678, we run a linux on core pac0, and run sys/bios on every other core pacs, they communicate through syslink.
What's the architecture difference between these multi-core processors?

A:

What you see here is the main difference between AMP and SMP systems.
X86 usually is a SMP-system, all Cores are equal, have access to the same peripherals and can access each others memory and cache. The cache ist kept coherent between the cores, so every core has the same view of the memory all the time. Communication between the cores (processes running on those cores) will usually just be done by memory structures like semaphores and mutexes. To make that work the chip designers have to incorporate a lot of logic.
AMP is a totally different beast. The cores usually have their own "view" of the memory, meaning that the cache does not get synchronized between the cores. This simplifies the design of the chip a lot, but makes communication via memory problematic. So usually every core will run it's own processes, some might run a whole OS, others just a bare metal system, you'll also find configurations where part of the system runs Linux and other parts run VXWorks or something else.
AMP is usually used if the task can be split up very well. Take a router which functions a small PBX and an iptv settop-box for example. One core might run linux with a firewall, just routing away all day long. The next core runs vxworks and a PBX-application and a third core decodes the tv-stream and sends it out. The routing core will have to distribute the incoming data between the two other cores and the lan but thats about all the interaction there is.
In general, the features provided by SMP do not come for free. First, they'll increase the price of the product. Second, the cache synchronization is very costly in term of cycles.
So in the end you'll have to use an architecture which fits your needs.

