Performance problems with gunzip
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
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.deHi 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.deHi 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
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_CACHEwhich buildscommon/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
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_CACHEwhich buildscommon/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.deQuoted 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
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