Multicore Processors what is wrong with people?
If you take a look at http://www.gotw.ca/publications/concurrency-ddj.htm or pretty much anywhere else where they talk about the possibilities of the multicore route for concurrency, you'll notice something...
They say "multicore", and say that one thread can run on each core, sure. But they always, always, seem to assume that all cores will be running threads from only one process at once.
I've gotta ask; how stupid is that?
Delegate one core to be the "master"; it and it alone can receive interrupts and messages from the system, and it can send messages to the other "slave" cores, as well as control what messages the slave cores may send to the system. Set up the master core to run the kernel and handle the message pump, and "loan" thread time to the slaves for slices of time. When the time runs out, the slave pauses, shouts a message back to the master saying "I'm done for now", and the master can loan some other thread some time on the idle slave.
Discuss?
I don't really understand what point you're trying to make. Dedicating an entire core to running system services that normally take approximately 1% or less of a uniprocessor system's time is wasteful at best. Absurd at worst.
What really is misleading about multicore, such as hyperthreading, is the performance advantage. The media would have you believe that with two cores you'll run applications twice as fast. Simply untrue. Sure, most of us know that, but the general public does not.
Also it might not be advisable to move processes from core to core in all situations. If cores have their own data and instruction caches then moving the process will completely invalidate it.
AND the system that you're describing is more like the cooperative multitasking kernel that was implemented in Windows 3.x instead of the preemptive kernels used in most multitasking operating systems now.
What really is misleading about multicore, such as hyperthreading, is the performance advantage. The media would have you believe that with two cores you'll run applications twice as fast. Simply untrue. Sure, most of us know that, but the general public does not.
Also it might not be advisable to move processes from core to core in all situations. If cores have their own data and instruction caches then moving the process will completely invalidate it.
AND the system that you're describing is more like the cooperative multitasking kernel that was implemented in Windows 3.x instead of the preemptive kernels used in most multitasking operating systems now.
I'm not really sure what you're getting at here... Of course everyone knows that in reality each core will be running threads from multiple processes on any modern operating system, but when talking about writing a single application that's not particularly relevant to the problem at hand. In a single application the pattern of having a single 'master' thread that schedules jobs and hands them out to a pool of 'worker' threads is a very common and well known pattern, it's one of the standard models for taking advantage of multiple processors. It's usually implemented with threads rather than processes on shared memory systems because the overhead for multiple communicating threads is considerably less than the overhead for multiple communicating processes.
This topic is closed to new replies.
Advertisement
Popular Topics
Advertisement