| > Doesn't this also depend on how directly a sound card can be
> "approached". I know in Windows there is all this crap (called layers)
> you have to deal with, which DirectX tries to deal with. And we now
> have DMA, which is nothing new of course, and which is another more
> direct road to your devices. Unix is probably much better at that
> (i.e., accessing devices directly) and Linux should be, I presume. Has
> anyone any experience with BeOs in this regard?
I presume it's a mixture of
- compiler specificy: the SGI -Ofast= option tunes the
optimization exactly to the processor I'm running on as opposed
to gcc, which is much more broadly processor "architecture"-oriented;
without optimization my Indy maxes out at about 30 oscillators (!)
- bus transfer rates: SGIs need high-bandwidth buses for video streaming,
whereas your garden variety Intel motherboard runs on 33 MHz,
no matter what speed the CPU is clocked at--at least last time
I checked.
- secondary cache for data and instructions
- primary instruction cache
- processor architecture: the MIPS is 64 bits wide, whereas the
Pentium is still a 32-bit processor
- registers: i forgot how many registers a Pentium has, but the old
r4k MIPS series have some 36-odd 64-bit all-purpose registers
- audio subsystem integration: the IRIX audio driver runs at a
very high priority and passes some processing on to an audio
DSP controller, so no time is wasted making the CPU copy buffers;
on the other hand, audio buffers are *ring buffers* on the SGI
(as opposed to double buffering schemes), which increase the
overhead a bit if im not mistaken.
Most of the performance gain depends on the compiler, though.
|