Speed suggestion

Apr 5, 2009 at 11:35 PM

One suggestion I have that could make singularity much more notable is if singularity supported using s graphics card's stream processors as threads - sort of a gpu-smp, so a you could have a computer with hundreds or eventually thousands of system threads to enhance performance. The difference between what I'm suggesting from the current implementation in operating systems that support it is that it would be automatic, and also built inside the kernel.

I wouldn't know specifically how to manage such a feature, but i think it would fit right in with a a fault tolerant operating system built in managed code, as it would be a system where each application/driver could have it's own soomewhat dedicated thread(s).

Apr 24, 2009 at 2:15 AM
Nice idea , since these CPUs and threads are massively floating point optimized , I also note both AMD and Intel are producing Gpus on chip now ( or putting the dies next to each other). Hence it will be big  soon.

Im no expert but issues I can think of.

1) Scheduling - you really want to identify threads which are floating point /Arithmetic heavy. Not much point sending simple stuff to a GPU and copying the data to and from memory.
2) These threads really need their own data so it can be copied to the GPU (with todays non memory share GPUs) , or run on low end Gpus which share memory.
3) Compilation - as the code is running on a different CPU it needs a different compiler etc at the moment only have ARM/x86/x64 . This is the big bit the rest is pretty easy.
4) I know no OS at the moment which can handle 2 different CPU's at the kernel level .Its an interesting concept though and very worthy of some research.  Issues here are scheduling , you need a seperate scheduler for each type of CPU and as mentioned threads need to be selected to run based on some criteria.

Regards,

Ben
Apr 24, 2009 at 2:48 PM
Have a look at the document SDN30 Multicore singularity its exactly what they talk about and also offloading the network stack to the NIC , and using the IO controller as a CPU to run disk caching...