> The compiler writer always knows exactly how big each operand > is, how many components it has, and which ones are needed. A > vector instruction set will be the simplest ISA for software > developers.
As someone who deals extensively with the low-level details of programming various ISAs, I disagree. In practice most SIMD ISAs are a PITA to generate efficient code for. If you're not careful you end up with dozens of bizarre corner case instructions, or spending as much time shuffling data around as you do actual computations. Expanding fixed length short vector expressions (i.e. shaders) into scalar code is trivial. It's only when you start dealing with multi-dimensional variable size/stride/bound arrays (i.e. full blown Fortran 90) that things start getting hairy. By that time you've already got a proper compiler, and getting decent efficiency out of a SIMD ISA actually even harder. Remember that we've got *lots* of very similar threads to play with. Many of the techniques used on single-threaded[1] general purpose CPUs/applications are detrimental to overall performance in this environment. Paul [1] Most "multicore" CPUs still fall into this category. _______________________________________________ Open-graphics mailing list [email protected] http://lists.duskglow.com/mailman/listinfo/open-graphics List service provided by Duskglow Consulting, LLC (www.duskglow.com)
