Sign in to follow this  

Multicore Processors what is wrong with people?

This topic is 4582 days old which is more than the 365 day threshold we allow for new replies. Please post a new topic.

If you intended to correct an error in the post then please contact us.

Recommended Posts

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?

Share this post


Link to post
Share on other sites
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.

Share this post


Link to post
Share on other sites
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.

Share this post


Link to post
Share on other sites

This topic is 4582 days old which is more than the 365 day threshold we allow for new replies. Please post a new topic.

If you intended to correct an error in the post then please contact us.

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

Sign in to follow this