[U-Boot] Very slow mtest on i.MX6UL over dual-die DDR3 (two chip selects)
Hector Palacios
hector.palacios at digi.com
Thu May 18 14:43:41 UTC 2017
Hi Fabio,
On 05/17/2017 11:08 PM, Fabio Estevam wrote:
> Hi Hector,
>
> On Wed, May 17, 2017 at 5:50 AM, Palacios, Hector
> <Hector.Palacios at digi.com> wrote:
>
>> The code is on Github [1] (well, not the dual-die DDR3 yet) but there isn't much to see for this issue other than:
>
> I looked at your code and I see:
>
> int dram_init(void)
> {
> gd->ram_size = ((ulong)CONFIG_DDR_MB * SZ_1M);
>
> return 0;
> }
>
> which may be worth investigating.
>
> Take a look in this same function at
> board/freescale/mx53loco/mx53loco.c and also in
> include/configs/mx53loco.h (hint: we pass #define CONFIG_NR_DRAM_BANKS
> 2).
In case I wasn't clear, I don't have any memory mapping problems. I have one single
DDR chip, which internally uses two dies and two chip selects. Setting
CONFIG_NR_DRAM_BANKS to 1 (and full size) or 2 (and half size) in U-Boot doesn't make
any difference in terms of performance.
Additional investigation showed the following:
NXP DDR stress test takes the same time to complete (successfully) in both variants
(single-die with one chip select and 1GB density per CS, and dual-die with two chip
select and 512MB per CS)
The slow memory access is global in U-Boot, not limited to 'mtest' command. A memory
copy command for 256M (time cp.l 90000000 80000000 4000000) takes:
- 1.304s on the single-die DDR3
- 15.866 seconds on the dual-die DDR3
Note that both data/instuction cache are ON on both devices, and that I'm only
exercising the lower memory (only CS0 on the dual-die chip) to avoid potential issues
or delays between changing from CS0 to CS1.
I also verified that configuring the MMDC0 for using only one CS on the dual-die DDR3
chip (and only half the size), does not help. This DDR is still performing slowly in
U-Boot, but I can't find the reason why.
Thanks for your help, anyway.
--
Hector Palacios
More information about the U-Boot
mailing list