JF_Aidan_Pryde
Regular
Shader programs are going to get longer and ever more complicated. They will require loops, branches and lots of FLOPS to compute. However, each pixel can be computed independently of any other. This allows the parallelism that allows hardware acceleration.
Currently GPUs have multiple pipelines to exploit this parallelism. CPUs have been poor at this due to their single threaded nature resulting in lower throughput. However, new designs may be changing this.
Sun's Niagara and Sony's Cell are probably the best examples. Both are designed for maximum throughput.
Niagara is a chip with 8 cores where each runs four independent threads. This makes it a 32 threaded CPU. Cell is also tailored for massive concurrent execution.
Intel and AMD are both migrating to multi-cored, multi-threaded design.
So the main question -- what differs a 32 pipeline GPU to a 32-threaded CPU?
Suppose the CPU did not have to take care of the OS and other apps, but took all its time to do shader math, it can be viewed essentially as 32 fully programmable pipelines. Perhaps a few fold slower, but nothing like the difference between a Pentium and a Voodoo for texture mapped graphics.
Does it make sense to map shaders to multi-cored CPU threads?
Does it make sense to map general programs to GPU pipelines?
Like to hear your thoughts.
Currently GPUs have multiple pipelines to exploit this parallelism. CPUs have been poor at this due to their single threaded nature resulting in lower throughput. However, new designs may be changing this.
Sun's Niagara and Sony's Cell are probably the best examples. Both are designed for maximum throughput.
Niagara is a chip with 8 cores where each runs four independent threads. This makes it a 32 threaded CPU. Cell is also tailored for massive concurrent execution.
Intel and AMD are both migrating to multi-cored, multi-threaded design.
So the main question -- what differs a 32 pipeline GPU to a 32-threaded CPU?
Suppose the CPU did not have to take care of the OS and other apps, but took all its time to do shader math, it can be viewed essentially as 32 fully programmable pipelines. Perhaps a few fold slower, but nothing like the difference between a Pentium and a Voodoo for texture mapped graphics.
Does it make sense to map shaders to multi-cored CPU threads?
Does it make sense to map general programs to GPU pipelines?
Like to hear your thoughts.