On Sat, 26 Apr 2014 22:46:49 +0300
Siarhei Siamashka <[email protected]> wrote:

> I have also implemented a simplified software simulation (let's put
> it under GPLv2 license for clarity) of this whole process:
> 
> #!/usr/bin/env ruby

[...]

And the output of this simulation script:

1920x1080-32@60Hz, dram_freq=360MHz : forward read    = 1503 MB/s
1920x1080-32@60Hz, dram_freq=360MHz : forward write   =  500 MB/s (*)
1920x1080-32@60Hz, dram_freq=360MHz : backwards write = 1503 MB/s
-
1920x1080-32@60Hz, dram_freq=384MHz : forward read    = 1537 MB/s
1920x1080-32@60Hz, dram_freq=384MHz : forward write   =  511 MB/s (*)
1920x1080-32@60Hz, dram_freq=384MHz : backwards write = 1537 MB/s
-
1920x1080-32@60Hz, dram_freq=408MHz : forward read    = 1909 MB/s
1920x1080-32@60Hz, dram_freq=408MHz : forward write   =  501 MB/s (*)
1920x1080-32@60Hz, dram_freq=408MHz : backwards write = 1507 MB/s
-
1920x1080-32@60Hz, dram_freq=432MHz : forward read    = 2070 MB/s
1920x1080-32@60Hz, dram_freq=432MHz : forward write   =  511 MB/s (*)
1920x1080-32@60Hz, dram_freq=432MHz : backwards write = 1817 MB/s
-
1920x1080-32@60Hz, dram_freq=456MHz : forward read    = 2324 MB/s
1920x1080-32@60Hz, dram_freq=456MHz : forward write   =  503 MB/s (*)
1920x1080-32@60Hz, dram_freq=456MHz : backwards write = 2124 MB/s
-
1920x1080-32@60Hz, dram_freq=480MHz : forward read    = 2560 MB/s
1920x1080-32@60Hz, dram_freq=480MHz : forward write   =  511 MB/s (*)
1920x1080-32@60Hz, dram_freq=480MHz : backwards write = 2335 MB/s
-
1920x1080-32@56Hz, dram_freq=360MHz : forward read    = 1441 MB/s
1920x1080-32@56Hz, dram_freq=360MHz : forward write   =  479 MB/s (*)
1920x1080-32@56Hz, dram_freq=360MHz : backwards write = 1441 MB/s
-
1920x1080-32@56Hz, dram_freq=384MHz : forward read    = 1797 MB/s
1920x1080-32@56Hz, dram_freq=384MHz : forward write   =  472 MB/s (*)
1920x1080-32@56Hz, dram_freq=384MHz : backwards write = 1419 MB/s
-
1920x1080-32@56Hz, dram_freq=408MHz : forward read    = 2022 MB/s
1920x1080-32@56Hz, dram_freq=408MHz : forward write   =  466 MB/s (*)
1920x1080-32@56Hz, dram_freq=408MHz : backwards write = 1780 MB/s
-
1920x1080-32@56Hz, dram_freq=432MHz : forward read    = 2202 MB/s
1920x1080-32@56Hz, dram_freq=432MHz : forward write   =  476 MB/s (*)
1920x1080-32@56Hz, dram_freq=432MHz : backwards write = 2013 MB/s
-
1920x1080-32@56Hz, dram_freq=456MHz : forward read    = 2470 MB/s
1920x1080-32@56Hz, dram_freq=456MHz : forward write   =  470 MB/s (*)
1920x1080-32@56Hz, dram_freq=456MHz : backwards write = 2354 MB/s
-
1920x1080-32@56Hz, dram_freq=480MHz : forward read    = 3258 MB/s
1920x1080-32@56Hz, dram_freq=480MHz : forward write   = 1858 MB/s
1920x1080-32@56Hz, dram_freq=480MHz : backwards write = 3258 MB/s
-
1920x1080-32@50Hz, dram_freq=360MHz : forward read    = 1725 MB/s
1920x1080-32@50Hz, dram_freq=360MHz : forward write   =  426 MB/s (*)
1920x1080-32@50Hz, dram_freq=360MHz : backwards write = 1514 MB/s
-
1920x1080-32@50Hz, dram_freq=384MHz : forward read    = 1957 MB/s
1920x1080-32@50Hz, dram_freq=384MHz : forward write   =  423 MB/s (*)
1920x1080-32@50Hz, dram_freq=384MHz : backwards write = 1789 MB/s
-
1920x1080-32@50Hz, dram_freq=408MHz : forward read    = 2210 MB/s
1920x1080-32@50Hz, dram_freq=408MHz : forward write   =  421 MB/s (*)
1920x1080-32@50Hz, dram_freq=408MHz : backwards write = 2106 MB/s
-
1920x1080-32@50Hz, dram_freq=432MHz : forward read    = 2932 MB/s
1920x1080-32@50Hz, dram_freq=432MHz : forward write   = 1672 MB/s
1920x1080-32@50Hz, dram_freq=432MHz : backwards write = 2932 MB/s
-
1920x1080-32@50Hz, dram_freq=456MHz : forward read    = 2918 MB/s
1920x1080-32@50Hz, dram_freq=456MHz : forward write   =  416 MB/s (*)
1920x1080-32@50Hz, dram_freq=456MHz : backwards write = 2920 MB/s
-
1920x1080-32@50Hz, dram_freq=480MHz : forward read    = 2906 MB/s
1920x1080-32@50Hz, dram_freq=480MHz : forward write   = 2068 MB/s
1920x1080-32@50Hz, dram_freq=480MHz : backwards write = 2908 MB/s

These simulated results happen to pretty accurately resemble the
results from the Table 1 and the Table 2 at:
    
http://ssvb.github.io/2013/06/27/fullhd-x11-desktop-performance-of-the-allwinner-a10.html

The numbers are only representing the upper limit for the speed. There
are surely other limiting factors (AXI clock frequency, etc.), which
don't allow to reach the theoretical maximum.

If there is any undocumented knob to increase the DEBE DMA burst size,
that would very likely resolve the problem. Another interesting thing
is that PRECHARGE/ACTIVATE latency is critical. Higher DRAM clock speed
only helps indirectly by reducing this latency.

And by the way, the DEBE in Allwinner A20 does not seem to be affected.
Only Allwinner A10 suffers from these FullHD troubles.

-- 
Best regards,
Siarhei Siamashka

-- 
You received this message because you are subscribed to the Google Groups 
"linux-sunxi" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to [email protected].
For more options, visit https://groups.google.com/d/optout.

Reply via email to