Forum Discussion
LWH2F Throughput
Hi,
For completeness I'm adding some additional measurements (I've already sent them to Altera via E-Mail).
The following tests were made using the LWH2F or H2F bridge with a clock rate of 200 MHz. The width of the H2F bridge is 128 bit. The tests are run from CPU 2 (A76). I've measured the write throughput.
lwh2f kernel driver ioremap *ptr=i 18.5 MB/s
lwh2f kernel driver ioremap memcpy 69.9 MB/s
lwh2f kernel driver ioremap_wc memcpy 205.1 MB/s
lwh2f kernel driver ioremap_cache memcpy [kernel panic]
lwh2f userspace (O_SYNC) memcpy 68.2 MB/s
lwh2f userspace (no O_SYNC) memcpy 68.3 MB/s
h2f kernel driver ioremap memcpy 72.2 MB/s
h2f kernel driver ioremap_wc memcpy 258.0 MB/s
h2f kernel driver ioremap_cache memcpy [kernel panic]
h2f userspace (no O_SYNC) memcpy 73.6 MB/s
The ioremap_* variants should result in the following flags:
cached arm64 flags
ioremap no device memory, nGnRE
ioremap_wc no normal memory
ioremap_cache yes normal memory
- ioremap_wc is much faster than ioremap(). The performance improvements is due to longer bursts (4 cycle bursts, see below). Still, there is a long latency between requests (around 250ns), the requests are not pipelined, and the bursts aren't as long as they could be (According to the TRM max burst length is 16 for LWH2F and 8 for H2F).
- The theoretical throughput is 800 MB/s for LWH2f and 3200 MB/s for H2F. Above measurements show significantly lower throughput.
Kind Regards,
Eric Opitz
----
Write CPU2 (A76) H2F ioremap_wc