Skip to contentSkip to conversation

Performance problems with gunzip

U-Boot A. Geisreiter 3 participants 8 messages Jan 22, 2010 – Jan 25, 2010

lore
Share & tools
lore
#0 lore raw

Hello,

I try to unzip a WinCE kernel with the U-Boot gunzip routine. It is working, but it takes roughly 1min to uncompress a 10MB zip file.
I am working with a PXA270 platform. What could be the reason for the worst performance?

Thanks,
Andreas

#1 lore raw

Hi Andreas,

Quoted 4 lines

I try to unzip a WinCE kernel with the U-Boot gunzip routine. It is working, but it takes roughly 1min to uncompress a 10MB zip file.
I am working with a PXA270 platform. What could be the reason for the worst performance?

Very likely the disabled instruction and data caches. Not that I know for sure, but I'm pretty confident that either both or at least the data cache is not enabled per default.

There was some discussion about enabling them, but the work never got done IIRC.

Cheers
Detlev

Signature · 6 lines
Mit einem Leben wie dem meinen, Doktor - wer braucht da noch Traeume?
                                            - Alex Portnoy
--
DENX Software Engineering GmbH,      MD: Wolfgang Denk & Detlev Zundel
HRB 165235 Munich,  Office: Kirchenstr.5, D-82194 Groebenzell, Germany
Phone: (+49)-8142-66989-40 Fax: (+49)-8142-66989-80 Email: dzu at denx.de
#2 lore raw

Hi Detlev,

thanks for the fast response. How do I enable data caches?

Regards,
Andreas

-----Urspr?ngliche Nachricht-----
Von: Detlev Zundel [mailto:dzu at denx.de]
Gesendet: Freitag, 22. Januar 2010 15:45
An: A. Geisreiter
Cc: u-boot at lists.denx.de
Betreff: Re: [U-Boot] Performance problems with gunzip

Hi Andreas,

Quoted 1 line

I try to unzip a WinCE kernel with the U-Boot gunzip routine. It is

working,

Quoted 2 lines

but it takes roughly 1min to uncompress a 10MB zip file.
I am working with a PXA270 platform. What could be the reason for the

worst

Quoted 1 line

performance?

Very likely the disabled instruction and data caches. Not that I know for sure, but I'm pretty confident that either both or at least the data cache is not enabled per default.

There was some discussion about enabling them, but the work never got done IIRC.

Cheers
Detlev

Signature · 6 lines
Mit einem Leben wie dem meinen, Doktor - wer braucht da noch Traeume?
                                            - Alex Portnoy
--
DENX Software Engineering GmbH,      MD: Wolfgang Denk & Detlev Zundel
HRB 165235 Munich,  Office: Kirchenstr.5, D-82194 Groebenzell, Germany
Phone: (+49)-8142-66989-40 Fax: (+49)-8142-66989-80 Email: dzu at denx.de
#3 lore raw

Hi Andreas,

Quoted 1 line

thanks for the fast response. How do I enable data caches?

I fear this is not as easy as flipping a bit in a register. Depending on the platform caches tend to be tied to the MMU, so enabling the caches require setting up correct data structures for the MMU to work. That's the non-trivial work.

Apart from that, there is CONFIG_CMD_CACHE which builds common/cmd_cache.c. I see that at least two PXA250 platforms enable this, so maybe simply try that?

Moreover, a quick qoogle showed that the (non-mainline) Gumstix verdex (PXA270) U-Boot port has a dcache command:

http://docwiki.gumstix.org/index.php/U-Boot

Maybe you can reap the code from their repository. If you do, please post it here ;)

Cheers
Detlev

Signature · 6 lines
There are three kinds of people in the world; those who can count and
those who can't.
--
DENX Software Engineering GmbH,      MD: Wolfgang Denk & Detlev Zundel
HRB 165235 Munich,  Office: Kirchenstr.5, D-82194 Groebenzell, Germany
Phone: (+49)-8142-66989-40 Fax: (+49)-8142-66989-80 Email: dzu at denx.de
#4 lore raw
Quoted 4 lines

I fear this is not as easy as flipping a bit in a register. Depending on the platform caches tend to be tied to the MMU, so enabling the caches require setting up correct data structures for the MMU to work. That's the non-trivial work.

Not that difficult, either. You just need to fill the top-level page table for 1MB sections (4096 sections = 16k bytes, which must be aligned on a 16k boundary).

Quoted 3 lines

Apart from that, there is CONFIG_CMD_CACHE which builds common/cmd_cache.c. I see that at least two PXA250 platforms enable this, so maybe simply try that?

I think it's always disabled on arm, for the mmu reason.

Quoted 2 lines

Maybe you can reap the code from their repository. If you do, please post it here ;)

Or I can cook an RFC patch later, after redoing the 8815 patches. I was just considering trying it these days, as I've done the same on another straight-on-iron project and it's not that difficult.

/alessandro

#5 lore raw

Hi Alessandro,

Quoted 6 lines
Quoted 4 lines

I fear this is not as easy as flipping a bit in a register. Depending on the platform caches tend to be tied to the MMU, so enabling the caches require setting up correct data structures for the MMU to work. That's the non-trivial work.

Not that difficult, either.

I never said it was difficult, only non-trivial :)

Quoted 7 lines

You just need to fill the top-level page table for 1MB sections (4096 sections = 16k bytes, which must be aligned on a 16k boundary).

Quoted 3 lines

Apart from that, there is CONFIG_CMD_CACHE which builds common/cmd_cache.c. I see that at least two PXA250 platforms enable this, so maybe simply try that?

Quoted 8 lines

I think it's always disabled on arm, for the mmu reason.

Quoted 2 lines

Maybe you can reap the code from their repository. If you do, please post it here ;)

Or I can cook an RFC patch later, after redoing the 8815 patches. I was just considering trying it these days, as I've done the same on another straight-on-iron project and it's not that difficult.

I am looking forward to something like this for a long time now and I'm sure other people will value it too, so thanks in advance!
Detlev

Signature · 7 lines
Sometimes I lie awake at night and I ask, "Why me?", then a voice
answers  "Nothing personal,  your name just happened to come up."
           -- Charlie Brown 
--
DENX Software Engineering GmbH,      MD: Wolfgang Denk & Detlev Zundel
HRB 165235 Munich,  Office: Kirchenstr.5, D-82194 Groebenzell, Germany
Phone: (+49)-8142-66989-40 Fax: (+49)-8142-66989-80 Email: dzu at denx.de
#6 lore raw
Quoted 1 line

I never said it was difficult, only non-trivial :)

Not trivial, actually.

Quoted 2 lines

I am looking forward to something like this for a long time now and I'm sure other people will value it too, so thanks in advance!

It's still not working, but _I_ am working on it again after the weekend.

/alessandro

#7 lore raw
In reply to Detlev Zundel

Hi Detlev,

thanks for the help. I have tried CONFIG_CMD_CACHE but this doesn't work, because dcache_enable() is not implemented for PXA.

Then I tried to get the U-Boot source code for Gumstix verdex project, but I can't find it. Where can I download this?

Regards,
Andreas

-----Urspr?ngliche Nachricht-----
Von: Detlev Zundel [mailto:dzu at denx.de]
Gesendet: Freitag, 22. Januar 2010 16:20
An: A. Geisreiter
Cc: u-boot at lists.denx.de
Betreff: Re: AW: [U-Boot] Performance problems with gunzip

Hi Andreas,

Quoted 1 line

thanks for the fast response. How do I enable data caches?

I fear this is not as easy as flipping a bit in a register. Depending on the platform caches tend to be tied to the MMU, so enabling the caches require setting up correct data structures for the MMU to work. That's the non-trivial work.

Apart from that, there is CONFIG_CMD_CACHE which builds common/cmd_cache.c. I see that at least two PXA250 platforms enable this, so maybe simply try that?

Moreover, a quick qoogle showed that the (non-mainline) Gumstix verdex (PXA270) U-Boot port has a dcache command:

http://docwiki.gumstix.org/index.php/U-Boot

Maybe you can reap the code from their repository. If you do, please post it here ;)

Cheers
Detlev

Signature · 6 lines
There are three kinds of people in the world; those who can count and
those who can't.
--
DENX Software Engineering GmbH,      MD: Wolfgang Denk & Detlev Zundel
HRB 165235 Munich,  Office: Kirchenstr.5, D-82194 Groebenzell, Germany
Phone: (+49)-8142-66989-40 Fax: (+49)-8142-66989-80 Email: dzu at denx.de