|
I suppose this goes mainly to Sean and FollowTheMusic. Everybody else: run for the hills. As far as whether hardware, software, chicken or egg came first, I don't really know. In the days of the 224, I was still a working musician (another discussion for another day--preferably involving Lagavulin). I've never talked with either Dave or Barry about it. But I'd suspect that hardware came along rather quickly, based on some knowledge of university research. The earliest stuff (ever look inside a Delta-T 101?) was mainly discrete logic. The 200 was a bit more integrated, and by the 480 the processor was down to a module card. That was refined into the Lexichip-1 (whose first appearance was in the LXP-1). Lots of our competitors were working on integrated silicon at the time, and I'd guess most of it was pretty similar. The math needs of reverbs were fairly simple, but you needed aggressive address-generation. My first days in engineering were centered around signal processors used for seismography and medical imaging. We made processors based on bit-slice engines (2901s. This will be on the test). In retrospect it's amazing how similar the requirements were.
As far as the ADI tools go, I can say this much (sorry but there are trade secrets I won't go into): Efficient use of these DSPs depends in part on understanding how the chip designers expect the chips to be used. This is not always the way that audio designers have done things. If you're willing to change the way you work, you can get some nice efficiencies with the help of the tools. This comes with absolutely no sacrifice in terms of audio. I recently recoded some SHARC modules for another Harman group, just as a test. The original code was very good--I was just applying a different philosophy. Using C++, I was able to generate code that performed better than their hand-tweaked assembly on the same part. And I didn't even know that part particularly well.
The main difference between TigerSHARC and SHARC is busses. The part I've used (TS-101) has 3 busses to separate banks of internal memory. Each bus is 128-bits (there's another 32/64 bus to SDRAM). If you're careful with data placement and data alignment (and yes, I'm a liberal user of pragmas), you can chew through tons of memory. And that is the primary need of a verb. The compiler automatically vectorize a lot of things for you if you set it up correctly. The regular SHARCs and Blackfins are great at numeric stuff, but they suffer some bottlenecks if you're trying to deal with large FIRs or other memory-intensive operations. You can end up with a lot of pipeline stalls: a lot of those FLOPs go to waste.
And don't worry Sean. The Reds aren't getting the 480 unless they buy it on eBay like everybody else!
|