Quote:
Originally Posted by Galmok
The 4870 apparently retrains its memory controller every time a new ram speed is setup. In stead it should store the previous ram speed parameters and just use those instead of relearning. Maybe this is impossible, I don't know. According to the GDDR5 data sheets, the GDDR5 ram can train itself to compensate for uneven path length (nice feature) and that training may be unavoidable.
|
Reusing old training values after reclocking to previous settings is likely not possible. With GDDR5, the RAM chips and the memory controller are both constantly, but transparently, adjusting the the signal training parameters based on the current conditions. Any old training settings from some time in the past would be potentially of little value.
One possible solution would be for the GPU to compute new training values for the memory controller and the RAM from the values currently in use before changing the clock speed and using these computed values. However, with a 256 bit data path, values for 256 data signal traces, plus 16 inversion signal traces, and doubled, since the devices on both sides would need new training settings ends up coming out to 544 values. I may have missed so signals that would also need retraining. Depending on the math necessary to figure these values, good luck. The inversion signals I mentioned probably have another name, but they are signal traces that run with the usual data traces and are used to indicate if all of the data sent with it should be inverted, i.e. 0's changed to 1's and 1's changed to 0's. The idea is to keep as much of the data sent at one time to be 0's, which improves signal quality and can keep costs down by requiring less on-die termination on the RAM and memory controller.
Another random idea might be to turn off some number, or even all, of the memory chips, while the card is in 2D mode. Turning off several of the memory chips would require a board designed to turn off individual memory banks, which is somewhat nontrivial. This would also require that the GPU be designed to be capable of running on only part of its local memory or run only on system memory, when needed. Of course, whether Aero would still run acceptably in such a mode is another matter. Also, when the memory was turned back on a delay would occur as retraining would need to occur as expected.
Yet another option to power savings would be to downclock the memory one memory bank at a time. There are four 64-bit memory banks on the 4870 IIRC, the RV670, the R580, and the R520 had eight 32-bit banks. For the 512MB 4870, there are two 32-bit GDDR5 chips which add up to 128MB together. At any rate before downclocking, the contents of the memory bank could be copied to main memory, so its availability to the GPU and CPU, and its contents were not affected. Then, the memory chips in the bank could be downclocked and the controller and chips then retrained. Next, the current contents of the memory that was originally located there could be copied back. Not surprisingly, this would require some redesign of the GPU so that each memory bank could be reclocked individually. I am no expert, but it potentially it might require each bank to be able to select one of two adjustable clock speeds and thus only one new clock generator on die would be needed.