detonator said:
Interesting material you're writing. Only 1 question. If 64 bits gives a better bandwidth, why not use 256 bits internal processing? Or maybe even higher, to reduce even more calculation errors. I mean with all of the technical possibilities of today, what is the maximum limit for internal processing?
The problem has to do with the internal bit depth of the CPU and FPU (floating point) processing core. Up until very recently most CPUs, at least in the consumer world of Windows and Macs - UNIX boxes have had 64-bit processors for nearly 2 decades, have all been 32-bit processors. Most instructions and calculations for the CPU are stored in registers that are 32-bits in length, and as a result the calculations will be constrained by the bit depth of the internal registers. It's actually a physical limitation of the CPU architecture. In the mid to late 90s Intel introduced MMX with the first Pentiums which started to address some of the 32-bit addressing limitations, and AMD followed suit with 3DNow and SSE a couple of years later. By adding additional registers that can store up to 64 bits of data, the stage was set to break the 32 bit barrier.
What was interesting in this architecture, though, is that the FPU actually used an 80 bit register for floating point calculation. The problem, of course, was that the software used to run on those CPUs, including the OS itself, was still based on a 32 bit architecture. So all of the initial DAW applications were built around a 32 bit digital mixing bus because that's what the system architecture and compiler supported at the hardware level. If you wanted to support a higher bit depth in your application, you had to custom develop your own kernel level driver to perform the calculations by manipulating the CPU registers directly and in effect circumventing the compiler routines altogether. This is what Creamware did in 1997 with the release of their TripleDat application which took full advantage of the entire 80 bit register of the internal FPU in their audio engine. They coded it in assembly and interfaced directly with the CPU.
So to break the 32 bit barrier required fundamental changes in both the hardware layer and software layer. That's why many applications did not offer 64 bit internal mixing busses even though the CPUs and hardware could support it. It really did require a complete rewrite of the audio engine for the DAW because the calculation algorithms all had to be ported from 32 bit calculation routines to 64 bit ones. As a developer I can tell you this is no trivial task. Even if the engine were successfully migrated and stabilized, you had the bigger problem of interfacing to external plugins, like DirectX and VST which were still using 32 bits. So without a strategy and a translation layer to convert to/from 32 and 64 bits, bad things could happen with the audio, including digital artifacts, clicks, pops and even application crashes. Ah, the good old days. I don't miss them.
As far as the theoretical maximum bit depth that could be supported, it is really a function of the CPU registers. I suppose you could custom develop an algorithm to go beyond the physical CPU register storage, but that would certainly increase the calculations required to get the result, and in the end could result in an increase in latency, which would result in lower track counts. So you see everything becomes a tradeoff at some point. The increased bit depth would come at a price that may not be worth it when compared to the benefit received. I suppose at some point the increased resolution becomes so great that even trained ears would have a hard time perceiving a difference. And then it would become unimportant and not worth investing the R&D dollars to solve a problem that has no practical application.
I hope this hasn't been too overly technical, and I suspect I may have lost many of you in the process. Hopefully you can see that going to higher bit levels of resolution is not without its issues. Although it may be technically possible from a hardware layer, and I believe the latest generation of CPUs now have internal registers capable of storing 128 and possibly even 256 bits of data, the software will still have to play catch up to take advantage of it. If interoperability were not an issue, then it could be done much quicker, but unfortunately no application vendor has the luxury of developing in a vacuum, not even Microsoft. And especially in the audio world where there are literally thousands of plugins that provide crucial processing for effects and such, it's critical that any updates to the audio engine not break access to third party plugins and applications that have not migrated to a higher bit depth resolution.