The G5 Meets the UAD-1 (Again) & UAD-1 with Wavelab
The G5 Meets the UAD-1 (Again)
by James Cigler
We here at UA can't get enough of the G5, and we don't think you got enough of it in our March "Support Report," so we sat down with our Mac software engineer, Jim Wintermyre, and asked him for some technical answers to a few of your more frequently asked G5-related questions.
Okay Jim, I read your March "Support Report" article, I've read the user forums, and I talked to James on the phone, but I'm still not sure exactly why the AMD-8131 chipset is causing a problem for the UAD-1.
The AMD-8131 PCI-X controller doesn't seem to "play nice" with certain devices that employ bus-mastered DMA, including the UAD-1. What is DMA? In simple terms, DMA is just a faster way to transfer data (audio samples in the UAD-1 case) between the host application and a hardware device. The CPU is not involved in the data transfer, so it can spend its time performing other tasks. In other words, DMA is a good thing. The issue with the AMD-8131 and the UAD-1 is that DMA transactions from the host to the UAD-1 card either take way too long, or fail completely. Different hardware devices use different PCI bus arbitration logic, which is why some devices are affected and others are not.
That makes sense, but have you guys done anything to fix it?
Yes. To work around this issue, we added the AMD-8131 DMA mode setting in the UAD-1 Meter Configuration window. When this setting is activated, we do not use DMA for data transfers from the host to the UAD-1 card. (DMA transfers in the other direction work correctly.) But the alternative to using DMA for data transfer is to get the CPU involved and have it do the transfer. This explains some of the behavior that is different with UAD-1 plug-ins running on the G5 with 8131 mode on, vs. running on a G4 with 8131 mode off.
First, the DSP load per plug-in, as displayed on the UAD-1 Meter, is actually lower on a G5 with 8131 mode on. However, the host CPU load per UAD-1 plug-in is higher, because the CPU is now involved in the data transfer. This load is not displayed in the UAD-1 Meter, and may not be accurately displayed in the host application's CPU meter, since the data transfer is taking place at the kernel level. This leads to one issue that some G5 users have run into: When running several UAD-1 plug-ins, you may experience dropouts, even though the host CPU meter and the UAD-1 Meter would seem to indicate that you still have plenty of headroom. What is happening here is that the additional "hidden" load-due to the non-DMA data transfers-is adding up to the point where the host is fully loaded, even though the host CPU meter might indicate that it is not.
So this is why I have more problems running a lot of lower-DSP plug-ins, and not while running a few higher-DSP plug-ins?
Exactly. Since this "hidden load" is due to the data transfer, it follows that this issue is more prevalent if you are running several low-DSP plug-ins. For example, imagine having an EX-1 on each track of a 32-track mix.
On the other hand, this issue is not so much a factor if you are using fewer high-DSP plug-ins. As an extreme example, load up three Nigel plug-ins on a single card at 44.1 k (with 8131 Mode enabled), which should easily put you at 90% or so on the UAD-1 with no problems. This explains why some users have noted issues when loading the UAD-1 to a certain percentage, while other users do not have the same problem when loading the UAD-1 to a higher percentage. The problem is not the UAD-1 DSP load, but the amount of data transfer, i.e. the total number of UAD-1 plug-ins.
How can I figure out just how many UAD-1 plug-ins I can run on my G5?
As a test for data-transfer load, we like to use the ModFilter plug-in in our in-house tests. If you load up the ModFilter and then disable it by using the On button in the plug-in UI itself--not whatever method the host provides for bypassing the plug-in entirely--then almost all of the load is due to data transfer; basically no actual DSP is being done. This way, you can conduct controlled tests for how many plug-in streams you can run. This is how we test performance on various machines. For reference, a single UAD-1 maxes out at 256 audio streams, which corresponds to 64 stereo-disabled ModFilters (two streams to the card and two streams back per plug-in). You can easily reach this amount on most G4 machines. For comparison, on our dual 2.0 G5 test machine, we can run about 38 of these plugs before dropouts occur, and this is because of the data-transfer issue described above.
And how about with non-AMD-8131 machines?
The new dual and single 1.8 G5 machines do not use the AMD-8131 PCI-X controller, so this makes these machines similar to G4s in terms of PCI behavior with the UAD-1. In tests with the dual 1.8 G5, we were able to max out a single card with 64 ModFilters. With 2 cards, we got better performance than on our previous "gold standard" machine, the dual 1G G4 Quicksilver. We have not yet tested the current single 1.8 G5, but expect UAD-1 performance to be similar to what we see on the dual 1.8.
What about those of us who do have G5s with the AMD-8131 chipsets?
We are continuing to work with Apple to improve the situation. With each UAD-1 release, we have incrementally been improving G5 support, and we hope to have an even better solution in the future. In the meantime, the UAD-1 will still work in these machines, and being aware of the limitations described above will help you get the most out of the card.
I've read a lot about Magma chassis on the user forums. What's the deal there?
Yes, one other option is to look at a PCI expansion chassis, such as those by Magma (http://www.magma.com). Some inherent advantages of using an expansion chassis are that you can use the same card(s) with your desktop and laptop machines, and you can actually install up to four cards--the G5s only contain three PCI slots.
Additionally, the expansion chassis isolates the UAD-1 from the AMD-8131, which means that you can disable AMD-8131 DMA mode when using an expansion chassis. However, this will not necessarily get you better performance. The difference is that when 8131 mode is off, the DMA transactions take much longer than they do in a G4. We suspect this is due to the expansion chassis having its own issues dealing with the AMD-8131. The practical result is that if you have 8131 mode off, then your UAD-1 DSP load per UAD-1 plug-in will be higher than expected. If you have 8131 mode on, then your host CPU load per UAD-1 plug-in will be higher than expected. In performing the disabled ModFilter test described above, we were able to run more UAD-1 plug-ins with 8131 mode off, but the host load was about twice as high as with 8131 mode on. So, if you need a lot of host headroom to run host-based plugs in addition to UAD-1 plugs, you probably want to turn 8131 mode off. If you want to run as many UAD-1 plugs as possible, you might be better of with 8131 mode ON.
What about the new G5's that just came out?
We have not yet been able to test with these new machines. However, based on the specs, we believe that the single 1.8/dual 2.0 G5's will behave similarly to the previous dual 1.8 in terms of UAD-1 performance (i.e. no 8131), and that the new dual 2.3/2.7 G5's will behave similarly to the previous dual 2.0/2.5 (i.e. has 8131)."
You wouldn't happen to have links to block diagrams of the G5 would you, for us Mac geeks?
Funny you should ask. On the following pages, if you click on the Architecture link, and then the Block Diagram and Buses link, you can check out the actual system block diagram for each G5.
Additionally, here are links for the specs of the various G5 machines (except the original dual 1.8), including part numbers:
Known Wavelab Issues:
For more information, check out the Plate 140 technical bulletins page.