esp32 P4 performance
Posted: Fri Aug 30, 2024 11:46 pm
Yesterday ive been playing a bit with P4-2121 matrix panel and just as exercise i decided to write a simple bigbanging driver for it. Nothing fancy, just simplest i could do.
I have few of those, so i connected 4 in chain and it can run with 46-48fps. A single panel can run with around 250fps.
Then i decided to compare with "old" esp32 S3 and with 4 panels it can run with 42fps.
You can imagine my surprise when i saw 334fps with single panel. Its not only 2 times faster than expected, but also it is significant faster than P4.
- S3 running with 240MHz clock
- P4 running with 360MHz clock
- both are using internal memory
After reviewing result i decided to check one more thing and here are the results:
- P4 with internal memory, with and w/o DMA - 250fps
- S3 with internal memory, with DMA - 334fps
- S3 with internal memory, w/o DMA - 250fps
Couple more tests later:
- is it that native CPU clock on S3 is 160MHz and when we are using 240MHz it can be considered as overclocking?
- because with 160MHz on S3 i have expected 250fps with and w/o DMA memory buffer, which is weird it is the same as on 360MHz P4, but its different story
Another couple tests later:
- looks like limitation in my previous tests was the speed esp32 can set GPIO pins level, after adding loop to copy memory 100x i get better test results
- after all P4 is faster than S3 about 2.5 times, which is expected comparing CPU clock speed (160 vs 360) and other parameters
Conclusion:
- it is weird that overclocked S3 to 240mhz is almost as fast as P4 with clock 360mhz
- overclocking S3 has significant impact on GPIO pins when using DMA memory buffers
- hopefully we can have similar impact on P4 when we have a chance to run it with 400MHz, which espressif "promised" us
I have few of those, so i connected 4 in chain and it can run with 46-48fps. A single panel can run with around 250fps.
Then i decided to compare with "old" esp32 S3 and with 4 panels it can run with 42fps.
You can imagine my surprise when i saw 334fps with single panel. Its not only 2 times faster than expected, but also it is significant faster than P4.
- S3 running with 240MHz clock
- P4 running with 360MHz clock
- both are using internal memory
After reviewing result i decided to check one more thing and here are the results:
- P4 with internal memory, with and w/o DMA - 250fps
- S3 with internal memory, with DMA - 334fps
- S3 with internal memory, w/o DMA - 250fps
Code: Select all
panel = (hub75 *)heap_caps_calloc(ROW_SIZE * COL_SIZE * PANELS_H * 4, 4, MALLOC_CAP_DMA | MALLOC_CAP_INTERNAL);
panel = (hub75 *)heap_caps_calloc(ROW_SIZE * COL_SIZE * PANELS_H * 4, 4, MALLOC_CAP_INTERNAL);
- is it that native CPU clock on S3 is 160MHz and when we are using 240MHz it can be considered as overclocking?
- because with 160MHz on S3 i have expected 250fps with and w/o DMA memory buffer, which is weird it is the same as on 360MHz P4, but its different story
Another couple tests later:
- looks like limitation in my previous tests was the speed esp32 can set GPIO pins level, after adding loop to copy memory 100x i get better test results
- after all P4 is faster than S3 about 2.5 times, which is expected comparing CPU clock speed (160 vs 360) and other parameters
Conclusion:
- it is weird that overclocked S3 to 240mhz is almost as fast as P4 with clock 360mhz
- overclocking S3 has significant impact on GPIO pins when using DMA memory buffers
- hopefully we can have similar impact on P4 when we have a chance to run it with 400MHz, which espressif "promised" us